From 2e784e23903934a362dc52e3cd2c8ed742a64557 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 21 Jul 2014 21:12:43 +0000 Subject: Clist_mw moved to deprecated git-svn-id: http://svn.miranda-ng.org/main/trunk@9914 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Clist_mw/clist_mw_10.vcxproj | 249 --- plugins/Clist_mw/clist_mw_10.vcxproj.filters | 122 - plugins/Clist_mw/clist_mw_12.vcxproj | 252 --- plugins/Clist_mw/clist_mw_12.vcxproj.filters | 122 - plugins/Clist_mw/res/1.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/2.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/3.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/4.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/5.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/6.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/7.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/8.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/Miranda.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/Version.rc | 38 - plugins/Clist_mw/res/addgoupp.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/delete.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/globus.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/icon1.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/icon2.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/mirandaclassic.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/notick.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/notick1.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/rename.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/resource.rc | 530 ----- plugins/Clist_mw/res/sendmail.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/res/sms.ico | Bin 1150 -> 0 bytes plugins/Clist_mw/src/BkgrCfg.cpp | 310 --- plugins/Clist_mw/src/BkgrCfg.h | 18 - plugins/Clist_mw/src/CLUIFrames/cluiframes.cpp | 2860 ------------------------ plugins/Clist_mw/src/CLUIFrames/cluiframes.h | 120 - plugins/Clist_mw/src/CLUIFrames/framesmenu.cpp | 122 - plugins/Clist_mw/src/CLUIFrames/statusbar.cpp | 497 ---- plugins/Clist_mw/src/Version.h | 14 - plugins/Clist_mw/src/clc.cpp | 319 --- plugins/Clist_mw/src/clc.h | 148 -- plugins/Clist_mw/src/clcfonts.cpp | 117 - plugins/Clist_mw/src/clcidents.cpp | 307 --- plugins/Clist_mw/src/clcitems.cpp | 685 ------ plugins/Clist_mw/src/clcopts.cpp | 548 ----- plugins/Clist_mw/src/clcpaint.cpp | 662 ------ plugins/Clist_mw/src/clcutils.cpp | 289 --- plugins/Clist_mw/src/clist.h | 55 - plugins/Clist_mw/src/clistmenus.cpp | 62 - plugins/Clist_mw/src/clistmod.cpp | 133 -- plugins/Clist_mw/src/clistopts.cpp | 237 -- plugins/Clist_mw/src/clistsettings.cpp | 340 --- plugins/Clist_mw/src/clisttray.cpp | 263 --- plugins/Clist_mw/src/clui.cpp | 765 ------- plugins/Clist_mw/src/cluiopts.cpp | 373 --- plugins/Clist_mw/src/cluiservices.cpp | 176 -- plugins/Clist_mw/src/commonheaders.cpp | 29 - plugins/Clist_mw/src/commonheaders.h | 116 - plugins/Clist_mw/src/contact.cpp | 178 -- plugins/Clist_mw/src/groupmenu.cpp | 566 ----- plugins/Clist_mw/src/init.cpp | 225 -- plugins/Clist_mw/src/keyboard.cpp | 67 - plugins/Clist_mw/src/resource.h | 642 ------ plugins/Clist_mw/src/stdafx.cpp | 18 - 58 files changed, 12574 deletions(-) delete mode 100644 plugins/Clist_mw/clist_mw_10.vcxproj delete mode 100644 plugins/Clist_mw/clist_mw_10.vcxproj.filters delete mode 100644 plugins/Clist_mw/clist_mw_12.vcxproj delete mode 100644 plugins/Clist_mw/clist_mw_12.vcxproj.filters delete mode 100644 plugins/Clist_mw/res/1.ico delete mode 100644 plugins/Clist_mw/res/2.ico delete mode 100644 plugins/Clist_mw/res/3.ico delete mode 100644 plugins/Clist_mw/res/4.ico delete mode 100644 plugins/Clist_mw/res/5.ico delete mode 100644 plugins/Clist_mw/res/6.ico delete mode 100644 plugins/Clist_mw/res/7.ico delete mode 100644 plugins/Clist_mw/res/8.ico delete mode 100644 plugins/Clist_mw/res/Miranda.ico delete mode 100644 plugins/Clist_mw/res/Version.rc delete mode 100644 plugins/Clist_mw/res/addgoupp.ico delete mode 100644 plugins/Clist_mw/res/delete.ico delete mode 100644 plugins/Clist_mw/res/globus.ico delete mode 100644 plugins/Clist_mw/res/icon1.ico delete mode 100644 plugins/Clist_mw/res/icon2.ico delete mode 100644 plugins/Clist_mw/res/mirandaclassic.ico delete mode 100644 plugins/Clist_mw/res/notick.ico delete mode 100644 plugins/Clist_mw/res/notick1.ico delete mode 100644 plugins/Clist_mw/res/rename.ico delete mode 100644 plugins/Clist_mw/res/resource.rc delete mode 100644 plugins/Clist_mw/res/sendmail.ico delete mode 100644 plugins/Clist_mw/res/sms.ico delete mode 100644 plugins/Clist_mw/src/BkgrCfg.cpp delete mode 100644 plugins/Clist_mw/src/BkgrCfg.h delete mode 100644 plugins/Clist_mw/src/CLUIFrames/cluiframes.cpp delete mode 100644 plugins/Clist_mw/src/CLUIFrames/cluiframes.h delete mode 100644 plugins/Clist_mw/src/CLUIFrames/framesmenu.cpp delete mode 100644 plugins/Clist_mw/src/CLUIFrames/statusbar.cpp delete mode 100644 plugins/Clist_mw/src/Version.h delete mode 100644 plugins/Clist_mw/src/clc.cpp delete mode 100644 plugins/Clist_mw/src/clc.h delete mode 100644 plugins/Clist_mw/src/clcfonts.cpp delete mode 100644 plugins/Clist_mw/src/clcidents.cpp delete mode 100644 plugins/Clist_mw/src/clcitems.cpp delete mode 100644 plugins/Clist_mw/src/clcopts.cpp delete mode 100644 plugins/Clist_mw/src/clcpaint.cpp delete mode 100644 plugins/Clist_mw/src/clcutils.cpp delete mode 100644 plugins/Clist_mw/src/clist.h delete mode 100644 plugins/Clist_mw/src/clistmenus.cpp delete mode 100644 plugins/Clist_mw/src/clistmod.cpp delete mode 100644 plugins/Clist_mw/src/clistopts.cpp delete mode 100644 plugins/Clist_mw/src/clistsettings.cpp delete mode 100644 plugins/Clist_mw/src/clisttray.cpp delete mode 100644 plugins/Clist_mw/src/clui.cpp delete mode 100644 plugins/Clist_mw/src/cluiopts.cpp delete mode 100644 plugins/Clist_mw/src/cluiservices.cpp delete mode 100644 plugins/Clist_mw/src/commonheaders.cpp delete mode 100644 plugins/Clist_mw/src/commonheaders.h delete mode 100644 plugins/Clist_mw/src/contact.cpp delete mode 100644 plugins/Clist_mw/src/groupmenu.cpp delete mode 100644 plugins/Clist_mw/src/init.cpp delete mode 100644 plugins/Clist_mw/src/keyboard.cpp delete mode 100644 plugins/Clist_mw/src/resource.h delete mode 100644 plugins/Clist_mw/src/stdafx.cpp (limited to 'plugins/Clist_mw') diff --git a/plugins/Clist_mw/clist_mw_10.vcxproj b/plugins/Clist_mw/clist_mw_10.vcxproj deleted file mode 100644 index a5df001f7f..0000000000 --- a/plugins/Clist_mw/clist_mw_10.vcxproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Clist_mw - {56997126-0098-407A-94E1-7C5748C1C9EF} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - Use - commonheaders.h - Level3 - EditAndContinue - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - $(ProfileDir)..\..\bin10\lib - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - Use - commonheaders.h - Level3 - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - commonheaders.h - Level3 - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - true - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - commonheaders.h - Level3 - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - true - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - ..\commonheaders.h - - - ..\commonheaders.h - - - ..\commonheaders.h - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/Clist_mw/clist_mw_10.vcxproj.filters b/plugins/Clist_mw/clist_mw_10.vcxproj.filters deleted file mode 100644 index c117a63633..0000000000 --- a/plugins/Clist_mw/clist_mw_10.vcxproj.filters +++ /dev/null @@ -1,122 +0,0 @@ - - - - - {6c881602-dfa1-45ce-8613-13d8c6bd3ad5} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {56b79972-29f3-40b1-bf23-ccffb8791acd} - h;hpp;hxx;hm;inl - - - {a32ba414-7a6a-4ff3-9127-2fba358accda} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/Clist_mw/clist_mw_12.vcxproj b/plugins/Clist_mw/clist_mw_12.vcxproj deleted file mode 100644 index 45ddd741c8..0000000000 --- a/plugins/Clist_mw/clist_mw_12.vcxproj +++ /dev/null @@ -1,252 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Clist_mw - {56997126-0098-407A-94E1-7C5748C1C9EF} - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - Use - commonheaders.h - Level3 - EditAndContinue - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - $(ProfileDir)..\..\bin12\lib - false - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - Use - commonheaders.h - Level3 - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - commonheaders.h - Level3 - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - true - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - commonheaders.h - Level3 - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include;..\..\include\msapi - - - comctl32.lib;UxTheme.lib;shlwapi.lib;%(AdditionalDependencies) - type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) - true - true - true - 0x6590000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - ..\commonheaders.h - - - ..\commonheaders.h - - - ..\commonheaders.h - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/Clist_mw/clist_mw_12.vcxproj.filters b/plugins/Clist_mw/clist_mw_12.vcxproj.filters deleted file mode 100644 index c117a63633..0000000000 --- a/plugins/Clist_mw/clist_mw_12.vcxproj.filters +++ /dev/null @@ -1,122 +0,0 @@ - - - - - {6c881602-dfa1-45ce-8613-13d8c6bd3ad5} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {56b79972-29f3-40b1-bf23-ccffb8791acd} - h;hpp;hxx;hm;inl - - - {a32ba414-7a6a-4ff3-9127-2fba358accda} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/Clist_mw/res/1.ico b/plugins/Clist_mw/res/1.ico deleted file mode 100644 index df6c8fc04e..0000000000 Binary files a/plugins/Clist_mw/res/1.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/2.ico b/plugins/Clist_mw/res/2.ico deleted file mode 100644 index ce05d2b327..0000000000 Binary files a/plugins/Clist_mw/res/2.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/3.ico b/plugins/Clist_mw/res/3.ico deleted file mode 100644 index 4bdb2b9e8a..0000000000 Binary files a/plugins/Clist_mw/res/3.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/4.ico b/plugins/Clist_mw/res/4.ico deleted file mode 100644 index 712f0b3905..0000000000 Binary files a/plugins/Clist_mw/res/4.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/5.ico b/plugins/Clist_mw/res/5.ico deleted file mode 100644 index 4ab50eafd3..0000000000 Binary files a/plugins/Clist_mw/res/5.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/6.ico b/plugins/Clist_mw/res/6.ico deleted file mode 100644 index 35629e8cd2..0000000000 Binary files a/plugins/Clist_mw/res/6.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/7.ico b/plugins/Clist_mw/res/7.ico deleted file mode 100644 index cdb11c58bd..0000000000 Binary files a/plugins/Clist_mw/res/7.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/8.ico b/plugins/Clist_mw/res/8.ico deleted file mode 100644 index 4489d84723..0000000000 Binary files a/plugins/Clist_mw/res/8.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/Miranda.ico b/plugins/Clist_mw/res/Miranda.ico deleted file mode 100644 index db8dc77c09..0000000000 Binary files a/plugins/Clist_mw/res/Miranda.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/Version.rc b/plugins/Clist_mw/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/Clist_mw/res/Version.rc +++ /dev/null @@ -1,38 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - -#include "afxres.h" -#include "..\src\version.h" - -VS_VERSION_INFO VERSIONINFO - FILEVERSION __FILEVERSION_STRING - PRODUCTVERSION __FILEVERSION_STRING - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x0L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "FileDescription", __DESCRIPTION - VALUE "InternalName", __PLUGIN_NAME - VALUE "LegalCopyright", __COPYRIGHT - VALUE "OriginalFilename", __FILENAME - VALUE "ProductName", __PLUGIN_NAME - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END diff --git a/plugins/Clist_mw/res/addgoupp.ico b/plugins/Clist_mw/res/addgoupp.ico deleted file mode 100644 index 539c32fcd9..0000000000 Binary files a/plugins/Clist_mw/res/addgoupp.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/delete.ico b/plugins/Clist_mw/res/delete.ico deleted file mode 100644 index 3770daf2fc..0000000000 Binary files a/plugins/Clist_mw/res/delete.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/globus.ico b/plugins/Clist_mw/res/globus.ico deleted file mode 100644 index dbf58aeb04..0000000000 Binary files a/plugins/Clist_mw/res/globus.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/icon1.ico b/plugins/Clist_mw/res/icon1.ico deleted file mode 100644 index cad0e2a5cc..0000000000 Binary files a/plugins/Clist_mw/res/icon1.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/icon2.ico b/plugins/Clist_mw/res/icon2.ico deleted file mode 100644 index 8ee933d416..0000000000 Binary files a/plugins/Clist_mw/res/icon2.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/mirandaclassic.ico b/plugins/Clist_mw/res/mirandaclassic.ico deleted file mode 100644 index 0c8d999e70..0000000000 Binary files a/plugins/Clist_mw/res/mirandaclassic.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/notick.ico b/plugins/Clist_mw/res/notick.ico deleted file mode 100644 index 2a78c302df..0000000000 Binary files a/plugins/Clist_mw/res/notick.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/notick1.ico b/plugins/Clist_mw/res/notick1.ico deleted file mode 100644 index 0ba1d546f3..0000000000 Binary files a/plugins/Clist_mw/res/notick1.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/rename.ico b/plugins/Clist_mw/res/rename.ico deleted file mode 100644 index 90848f1179..0000000000 Binary files a/plugins/Clist_mw/res/rename.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/resource.rc b/plugins/Clist_mw/res/resource.rc deleted file mode 100644 index f3337f2f52..0000000000 --- a/plugins/Clist_mw/res/resource.rc +++ /dev/null @@ -1,530 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Ðóññêèé (Ðîññèÿ) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_GLOBUS ICON "globus.ico" -IDI_SMS ICON "sms.ico" -IDI_ICQC1 ICON "1.ico" -IDI_ICQC2 ICON "2.ico" -IDI_ICQC3 ICON "3.ico" -IDI_ICQC4 ICON "4.ico" -IDI_ICQC5 ICON "5.ico" -IDI_ICQC6 ICON "6.ico" -IDI_ICQC7 ICON "7.ico" -IDI_ICQC8 ICON "8.ico" -IDI_EMAIL ICON "sendmail.ico" -IDI_NEWGROUP2 ICON "addgoupp.ico" -IDI_RENAME ICON "rename.ico" -IDI_DELETE ICON "delete.ico" -IDI_NOTICK ICON "..\\..\\..\\src\\res\\check_off.ico" -IDI_TICK ICON "..\\..\\..\\src\\res\\check_on.ico" -IDI_BLANK ICON "..\\..\\..\\src\\res\\_blank.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Cursor -// - -IDC_HYPERLINKHAND CURSOR "..\\..\\..\\src\\res\\cursor_hyperlink.cur" -IDC_DROP CURSOR "..\\..\\..\\src\\res\\cursor_drag_copy.cur" -IDC_DROPUSER CURSOR "..\\..\\..\\src\\res\\cursor_drop_user.cur" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_OPT_CLCBKG2 DIALOGEX 0, 0, 234, 164 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Settings",IDC_STATIC,4,19,226,141 - LTEXT "Background color:",IDC_BC_STATIC,12,35,72,8,NOT WS_GROUP - CONTROL "",IDC_BKGCOLOUR,"ColourPicker",WS_TABSTOP,84,34,32,10 - LTEXT "Selection color:",IDC_SC_STATIC,12,51,72,8 - CONTROL "",IDC_SELCOLOUR,"ColourPicker",WS_TABSTOP,84,50,32,10 - CONTROL "Use background bitmap",IDC_BITMAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,68,161,10 - EDITTEXT IDC_FILENAME,22,82,184,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_BROWSE,208,82,15,11 - CONTROL "Stretch to width",IDC_STRETCHH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,99,98,10 - CONTROL "Stretch to height",IDC_STRETCHV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,99,101,10 - CONTROL "Tile horizontally",IDC_TILEH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,112,98,10 - CONTROL "Tile vertically",IDC_TILEV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,125,98,10 - CONTROL "Scroll with text",IDC_SCROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,125,100,10 - CONTROL "Stretch proportionally",IDC_PROPORTIONAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,112,101,10 - CONTROL "Tile vertically according to Row Height",IDC_TILEVROWH, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,140,205,10 - COMBOBOX IDC_BKGRLIST,4,5,226,155,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP -END - -IDD_OPT_GENMENU DIALOGEX 0, 0, 306, 241 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "Tree1",IDC_MENUITEMS,"SysTreeView32",TVS_SHOWSELALWAYS | WS_DISABLED | WS_BORDER | WS_TABSTOP,155,15,134,200 - CONTROL "Tree2",IDC_MENUOBJECTS,"SysTreeView32",TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,10,15,119,80 - LTEXT "Warning!\r\nThis MenuObject not support user defined options.",IDC_NOTSUPPORTWARNING,10,110,130,31,NOT WS_VISIBLE - GROUPBOX "MenuObjects",IDC_STATIC,5,5,133,95 - GROUPBOX "MenuItems",IDC_STATIC,148,5,147,215 - PUSHBUTTON "InsertSeparator",IDC_INSERTSEPARATOR,90,146,54,14,WS_DISABLED - LTEXT "Service:",IDC_STATIC,0,166,27,8 - EDITTEXT IDC_GENMENU_SERVICE,29,164,115,14,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Name:",IDC_STATIC,0,183,28,8 - EDITTEXT IDC_GENMENU_CUSTOMNAME,29,180,116,14,ES_AUTOHSCROLL | WS_DISABLED - PUSHBUTTON "Set",IDC_GENMENU_SET,128,196,17,14,WS_DISABLED - PUSHBUTTON "Default",IDC_GENMENU_DEFAULT,77,196,43,14,WS_DISABLED -END - -IDD_DELETECONTACT DIALOGEX 0, 0, 284, 90 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Delete Contact" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "No",IDNO,162,38,65,14 - PUSHBUTTON "Yes",IDYES,54,38,65,14 - CONTROL "Hide from list only, in order to keep their history and ignore/visibility settings",IDC_HIDE, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,65,270,9 - LTEXT "Use Options->Contacts->Ignore to unhide contacts.",IDC_STATIC,20,78,257,8 - CONTROL "Are you sure you want to delete %s?",IDC_TOPLINE,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,7,7,270,8 - LTEXT "This will erase all history and settings for this contact!",IDC_STATIC,7,18,239,14 -END - -IDD_OPT_CLIST DIALOGEX 0, 0, 314, 232 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "Hide offline users",IDC_HIDEOFFLINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,17,124,10 - CONTROL "Hide empty groups",IDC_HIDEEMPTYGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,33,124,10 - CONTROL "Disable groups",IDC_DISABLEGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,50,124,10 - CONTROL "Ask before deleting contacts",IDC_CONFIRMDELETE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,67,124,10 - CONTROL "Always on top",IDC_ONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,84,124,10 - CONTROL "Hide contact list after it has been idle for",IDC_AUTOHIDE, - "Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,10,100,124,22 - EDITTEXT IDC_HIDETIME,54,109,30,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_HIDETIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,75,108,10,14 - LTEXT "seconds",IDC_STAUTOHIDESECS,87,111,47,8 - CONTROL "Sort contacts by name",IDC_SORTBYNAME,"Button",BS_AUTORADIOBUTTON | WS_GROUP,153,14,151,10 - CONTROL "Sort contacts by status",IDC_SORTBYSTATUS,"Button",BS_AUTORADIOBUTTON,153,38,151,10 - CONTROL "Sort contacts by protocol",IDC_SORTBYPROTO,"Button",BS_AUTORADIOBUTTON,153,51,151,10 - CONTROL "Single click interface",IDC_ONECLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,82,151,10 - CONTROL "Always show status in tooltip",IDC_ALWAYSSTATUS,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,151,95,151,11 - CONTROL "Disable icon blinking",IDC_DISABLEBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,108,151,9 - EDITTEXT IDC_BLINKTIME,153,122,35,12,ES_NUMBER - LTEXT "ms, delay between icon blinking",IDC_STATIC,203,124,102,8 - CONTROL "Show",IDC_DONTCYCLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,155,97,10 - COMBOBOX IDC_PRIMARYSTATUS,107,153,78,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "icon when statuses differ",IDC_STATIC,189,155,116,8,NOT WS_GROUP - CONTROL "Cycle icons every",IDC_CYCLE,"Button",BS_AUTORADIOBUTTON,10,170,97,10 - EDITTEXT IDC_CYCLETIME,107,170,30,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_CYCLETIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,137,168,11,14 - LTEXT "seconds, when statuses differ",IDC_STATIC,154,172,151,8,NOT WS_GROUP - CONTROL "Show multiple icons",IDC_MULTITRAY,"Button",BS_AUTORADIOBUTTON,9,184,98,10 - CONTROL "Only when statuses differ",IDC_ALWAYSMULTI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,184,198,10 - GROUPBOX "Contact list",IDC_STCLISTGROUP,2,2,135,139 - GROUPBOX "System tray icon",IDC_STATIC,143,71,169,70 - GROUPBOX "System tray icon when using multiple protocols",IDC_STATIC,2,142,310,57 - GROUPBOX "Contact list sorting",IDC_STATIC,143,2,169,69,WS_GROUP - CONTROL "Spin5",IDC_BLINKSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,177,109,11,12 - CONTROL "Don't move offline user to bottom",IDC_NOOFFLINEMOVE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,168,26,142,10 - CONTROL "Pin to desktop",IDC_ONDESKTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,120,125,15 - CONTROL "Disable icon blinking",IDC_ICONBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,84,97,10 - GROUPBOX "Rows",IDC_STATIC,2,199,174,31 - LTEXT "Row height:",IDC_STATIC,10,213,65,8 - EDITTEXT IDC_ROWHEIGHT,77,211,40,13,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_ROWHEIGHTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,97,210,10,14 - LTEXT "pixels",IDC_STATIC,112,213,62,8 - CONTROL "Gamma correction",IDC_GAMMACORRECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,211,95,10 -END - -IDD_OPT_CLUI DIALOGEX 0, 0, 314, 232 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Window",IDC_STWINDOWGROUP,4,4,305,121 - CONTROL "Always on top",IDC_ONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,18,128,10 - CONTROL "Tool style main window",IDC_TOOLWND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,32,128,10 - CONTROL "Minimize to tray",IDC_MIN2TRAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,46,128,10 - CONTROL "Hide contact list after it has been idle for",IDC_AUTOHIDE, - "Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,141,18,162,10 - EDITTEXT IDC_HIDETIME,151,33,30,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_HIDETIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,172,32,10,14 - LTEXT "seconds",IDC_STATIC01,186,35,56,8 - CONTROL "Automatically resize window to height of list",IDC_AUTOSIZE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,141,55,162,10 - LTEXT "maximum",IDC_STATIC21,151,71,45,8 - EDITTEXT IDC_MAXSIZEHEIGHT,197,69,31,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_MAXSIZESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,218,68,10,14 - LTEXT "% of screen",IDC_STATIC22,230,71,69,8 - CONTROL "Size upwards",IDC_AUTOSIZEUPWARD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,86,147,10 - LTEXT "Title bar text:",IDC_STATIC,12,106,51,8 - GROUPBOX "Translucency options",IDC_STATIC,4,130,191,80 - CONTROL "Fade contact list in/out",IDC_FADEINOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,140,163,10 - CONTROL "Transparent contact list",IDC_TRANSPARENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,152,151,9 - LTEXT "Inactive opacity:",IDC_STATIC11,23,165,67,8 - CONTROL "Slider2",IDC_TRANSINACTIVE,"msctls_trackbar32",TBS_TOP | TBS_NOTICKS | WS_TABSTOP,95,164,70,11 - LTEXT "Active opacity:",IDC_STATIC12,23,181,67,8 - CONTROL "Slider2",IDC_TRANSACTIVE,"msctls_trackbar32",TBS_TOP | TBS_NOTICKS | WS_TABSTOP,95,179,70,11 - LTEXT "000%",IDC_INACTIVEPERC,165,164,25,8,SS_NOPREFIX - LTEXT "000%",IDC_ACTIVEPERC,165,184,25,8,SS_NOPREFIX - CONTROL "Show menu bar",IDC_SHOWMAINMENU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,60,128,10 - CONTROL "Easy move",IDC_CLIENTDRAG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,74,128,10 - CONTROL "Show title bar",IDC_SHOWCAPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,88,128,10 - CONTROL "If window is partially covered, bring to front instead of hiding",IDC_BRINGTOFRONT, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,141,102,162,16 - EDITTEXT IDC_TITLETEXT,63,104,72,12,ES_AUTOHSCROLL - CONTROL "Enable drop shadow (restart required)",IDC_DROPSHADOW, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,194,138,10 -END - -IDD_OPT_CLC DIALOGEX 0, 0, 314, 251 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Items",IDC_STATIC,2,2,310,114 - CONTROL "Show divider between online and offline contacts",IDC_DIVIDERONOFF, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,13,179,10 - CONTROL "Hot track items as mouse passes over",IDC_TRACKSELECT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,28,179,10 - CONTROL "Disable drag and drop of items",IDC_DISABLEDRAGDROP, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,43,179,10 - CONTROL "Disable rename of items by clicking twice",IDC_NOTEDITLABELS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,58,179,10 - CONTROL "Show selection even when list is not focused",IDC_SHOWSELALWAYS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,73,179,10 - CONTROL "Make selection highlight translucent",IDC_NOTNOTRANSLUCENTSEL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,88,179,10 - LTEXT "'Hide offline' means to hide:",IDC_STATIC,191,10,112,8 - CONTROL "Tree1",IDC_HIDEOFFLINEOPTS,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_NONEVENHEIGHT | WS_BORDER | WS_TABSTOP,191,20,112,80 - GROUPBOX "Groups",IDC_STATIC,2,120,148,121 - CONTROL "Draw a line alongside group names",IDC_LINEWITHGROUPS, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,129,131,16 - CONTROL "Show counts of number of contacts in a group",IDC_SHOWGROUPCOUNTS, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,147,131,16 - CONTROL "Hide group counts when there are none online",IDC_HIDECOUNTSWHENEMPTY, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,165,131,16 - CONTROL "Sort groups alphabetically",IDC_SORTGROUPSALPHA,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,183,131,16 - CONTROL "Quicksearch in open groups only",IDC_QUICKSEARCHVISONLY, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,201,131,16 - LTEXT "Indent groups by:",IDC_STATIC,11,221,67,8 - EDITTEXT IDC_GROUPINDENT,78,219,31,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_GROUPINDENTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,95,215,10,14 - LTEXT "pixels",IDC_STATIC,112,221,36,8 - GROUPBOX "Visual",IDC_STATIC,156,120,156,121 - CONTROL "Scroll list smoothly",IDC_NOTNOSMOOTHSCROLLING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,130,139,10 - LTEXT "Time:",IDC_STATIC11,174,144,42,8 - EDITTEXT IDC_SMOOTHTIME,216,142,31,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_SMOOTHTIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,237,137,10,14 - LTEXT "milliseconds",IDC_STATIC12,250,140,56,8,SS_CENTERIMAGE - LTEXT "Left margin:",IDC_STATIC,165,180,52,8 - EDITTEXT IDC_LEFTMARGIN,215,180,31,12,ES_RIGHT | ES_NUMBER - CONTROL "Spin1",IDC_LEFTMARGINSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,180,10,14 - LTEXT "pixels",IDC_STATIC,250,180,54,8 - CONTROL "Gray out entire list when:",IDC_GREYOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,195,139,10 - CONTROL "Tree1",IDC_GREYOUTOPTS,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_NONEVENHEIGHT | WS_BORDER | WS_TABSTOP,165,205,139,30 - CONTROL "Dim idle contacts",IDC_IDLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,102,153,10 - CONTROL "Hide vertical scrollbar",IDC_NOSCROLLBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,160,140,10 -END - -IDD_OPT_CLCBKG DIALOGEX 0, 0, 235, 151 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Contact list background",IDC_STATIC,4,4,227,141 - LTEXT "Background color:",IDC_STATIC,12,20,72,8,NOT WS_GROUP - CONTROL "",IDC_BKGCOLOUR,"ColourPicker",WS_TABSTOP,84,19,32,10 - LTEXT "Selection color:",IDC_STATIC,12,36,72,8 - CONTROL "",IDC_SELCOLOUR,"ColourPicker",WS_TABSTOP,84,35,32,10 - CONTROL "Use background bitmap",IDC_BITMAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,53,161,10 - EDITTEXT IDC_FILENAME,22,67,184,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_BROWSE,208,67,15,11 - CONTROL "Stretch to width",IDC_STRETCHH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,84,100,10 - CONTROL "Stretch to height",IDC_STRETCHV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,84,101,10 - CONTROL "Tile horizontally",IDC_TILEH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,97,93,10 - CONTROL "Tile vertically",IDC_TILEV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,110,85,10 - CONTROL "Scroll with text",IDC_SCROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,110,100,10 - CONTROL "Stretch proportionally",IDC_PROPORTIONAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,97,101,10 - CONTROL "Tile vertically according to Row Height",IDC_TILEVROWH, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,125,205,10 -END - -IDD_OPT_META_CLC DIALOGEX 0, 0, 259, 97 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "Use 'Meta' protocol icons for metacontacts",IDC_META, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,13,233,10 - CONTROL "Avoid double click expand",IDC_METADBLCLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,29,233,10 - CONTROL "Hide all extra icons for subcontacts",IDC_METASUBEXTRA, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,45,233,10 - GROUPBOX "Metacontacts supporting",-1,2,2,252,90 - CONTROL "Ignore empty extra icons places (arrange to right)",IDC_METASUBEXTRA_IGN, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,75,233,10 - CONTROL "Hide offline subcontacts",IDC_METASUB_HIDEOFFLINE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,60,233,10 -END - -IDD_OPT_SBAR DIALOGEX 0, 0, 178, 211 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Status bar",IDC_STATIC,4,4,170,201 - CONTROL "Show status bar",IDC_SHOWSBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,17,152,10 - CONTROL "Show icons",IDC_SHOWICON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,35,142,10 - CONTROL "Show protocol names",IDC_SHOWPROTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,47,142,10 - CONTROL "Show status text",IDC_SHOWSTATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,59,142,10 - CONTROL "Right click opens status menu",IDC_RIGHTSTATUS,"Button",BS_AUTORADIOBUTTON,20,111,142,10 - CONTROL "Right click opens Miranda menu",IDC_RIGHTMIRANDA,"Button",BS_AUTORADIOBUTTON,20,122,142,10 - CONTROL "Make sections equal width",IDC_EQUALSECTIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,141,142,10 - CONTROL "",IDC_BKGCOLOUR,"ColourPicker",WS_TABSTOP,100,175,32,10 - LTEXT "Background color:",IDC_STATIC,20,175,72,8,NOT WS_GROUP - PUSHBUTTON "-",IDC_DEFBKCOLOR,135,175,6,10 - CONTROL "Show size grip",IDC_SHOWSIZEGRIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,72,142,10 - CONTROL "Show bevel effect on panels",IDC_SBPANELBEVEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,86,107,10 - CONTROL "Use connecting icon",IDC_USECONNECTINGICON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,97,82,10 - CONTROL "Use new drawer for status bar",IDC_USEOWNERDRAW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,160,142,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_OPT_CLCBKG2, DIALOG - BEGIN - BOTTOMMARGIN, 149 - END - - IDD_DELETECONTACT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 277 - TOPMARGIN, 7 - BOTTOMMARGIN, 85 - END - - IDD_OPT_CLIST, DIALOG - BEGIN - LEFTMARGIN, 2 - RIGHTMARGIN, 312 - VERTGUIDE, 10 - VERTGUIDE, 107 - TOPMARGIN, 2 - BOTTOMMARGIN, 204 - HORZGUIDE, 182 - HORZGUIDE, 196 - END - - IDD_OPT_CLUI, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 309 - VERTGUIDE, 13 - VERTGUIDE, 23 - VERTGUIDE, 112 - VERTGUIDE, 141 - VERTGUIDE, 151 - VERTGUIDE, 175 - VERTGUIDE, 242 - VERTGUIDE, 246 - TOPMARGIN, 4 - BOTTOMMARGIN, 228 - HORZGUIDE, 18 - HORZGUIDE, 39 - HORZGUIDE, 75 - HORZGUIDE, 180 - HORZGUIDE, 196 - END - - IDD_OPT_CLC, DIALOG - BEGIN - LEFTMARGIN, 2 - RIGHTMARGIN, 312 - VERTGUIDE, 11 - VERTGUIDE, 164 - VERTGUIDE, 216 - TOPMARGIN, 2 - BOTTOMMARGIN, 249 - HORZGUIDE, 145 - HORZGUIDE, 163 - HORZGUIDE, 222 - END - - IDD_OPT_CLCBKG, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 231 - VERTGUIDE, 12 - VERTGUIDE, 22 - VERTGUIDE, 122 - TOPMARGIN, 4 - BOTTOMMARGIN, 147 - HORZGUIDE, 24 - HORZGUIDE, 40 - HORZGUIDE, 73 - HORZGUIDE, 89 - HORZGUIDE, 102 - HORZGUIDE, 115 - END - - IDD_OPT_META_CLC, DIALOG - BEGIN - LEFTMARGIN, 2 - RIGHTMARGIN, 257 - VERTGUIDE, 11 - VERTGUIDE, 244 - TOPMARGIN, 2 - BOTTOMMARGIN, 92 - END - - IDD_OPT_SBAR, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 174 - VERTGUIDE, 12 - VERTGUIDE, 22 - VERTGUIDE, 164 - TOPMARGIN, 4 - BOTTOMMARGIN, 207 - HORZGUIDE, 33 - HORZGUIDE, 73 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include \r\n" - "#include \r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDR_CLISTMENU MENU -BEGIN - POPUP "&Main menu" - BEGIN - MENUITEM SEPARATOR - MENUITEM "E&xit", ID_ICQ_EXIT - END - POPUP "&Status" - BEGIN - MENUITEM "&Offline\tCtrl+0", ID_STATUS_OFFLINE, CHECKED - MENUITEM "On&line\tCtrl+1", ID_STATUS_ONLINE - MENUITEM "&Away\tCtrl+2", ID_STATUS_AWAY - MENUITEM "&NA\tCtrl+3", ID_STATUS_NA - MENUITEM "Occ&upied\tCtrl+4", ID_STATUS_OCCUPIED - MENUITEM "&DND\tCtrl+5", ID_STATUS_DND - MENUITEM "&Free for chat\tCtrl+6", ID_STATUS_FREECHAT - MENUITEM "&Invisible\tCtrl+7", ID_STATUS_INVISIBLE - MENUITEM "On the &phone\tCtrl+8", ID_STATUS_ONTHEPHONE - MENUITEM "Out to &lunch\tCtrl+9", ID_STATUS_OUTTOLUNCH - END -END - -IDR_CONTEXT MENU -BEGIN - POPUP "Tray" - BEGIN - MENUITEM "&Hide/Show", ID_TRAY_HIDE - MENUITEM SEPARATOR - MENUITEM "E&xit", ID_TRAY_EXIT - END - POPUP "Nowhere" - BEGIN - MENUITEM "&New group", POPUP_NEWGROUP - MENUITEM SEPARATOR - MENUITEM "&Hide offline users", POPUP_HIDEOFFLINE - MENUITEM "Hide &offline users out here", POPUP_HIDEOFFLINEROOT - MENUITEM "Hide &empty groups", POPUP_HIDEEMPTYGROUPS - MENUITEM "Disable &groups", POPUP_DISABLEGROUPS - MENUITEM SEPARATOR - MENUITEM "Hide Miranda", POPUP_HIDEMIRANDA - END - POPUP "Group" - BEGIN - MENUITEM "&New subgroup", POPUP_NEWSUBGROUP - MENUITEM "&Hide offline users in here", POPUP_GROUPHIDEOFFLINE - MENUITEM SEPARATOR - MENUITEM "&Rename group", POPUP_RENAMEGROUP - MENUITEM "&Delete group", POPUP_DELETEGROUP - END -END - -#endif // Ðóññêèé (Ðîññèÿ) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/Clist_mw/res/sendmail.ico b/plugins/Clist_mw/res/sendmail.ico deleted file mode 100644 index 461ecc9557..0000000000 Binary files a/plugins/Clist_mw/res/sendmail.ico and /dev/null differ diff --git a/plugins/Clist_mw/res/sms.ico b/plugins/Clist_mw/res/sms.ico deleted file mode 100644 index 6d6ff2162b..0000000000 Binary files a/plugins/Clist_mw/res/sms.ico and /dev/null differ diff --git a/plugins/Clist_mw/src/BkgrCfg.cpp b/plugins/Clist_mw/src/BkgrCfg.cpp deleted file mode 100644 index 8895bacbaa..0000000000 --- a/plugins/Clist_mw/src/BkgrCfg.cpp +++ /dev/null @@ -1,310 +0,0 @@ - -#include "commonheaders.h" - -#define DEFAULT_BKCOLOUR GetSysColor(COLOR_3DFACE) -#define DEFAULT_USEBITMAP 0 -#define DEFAULT_BKBMPUSE CLB_STRETCH -#define DEFAULT_SELBKCOLOUR GetSysColor(COLOR_HIGHLIGHT) - - -extern HINSTANCE g_hInst; - -char **bkgrList = NULL; -int bkgrCount = 0; -HANDLE hEventBkgrChanged; - -#define M_BKGR_UPDATE (WM_USER+10) -#define M_BKGR_SETSTATE (WM_USER+11) -#define M_BKGR_GETSTATE (WM_USER+12) - -#define M_BKGR_BACKCOLOR 0x01 -#define M_BKGR_SELECTCOLOR 0x02 -#define M_BKGR_ALLOWBITMAPS 0x04 -#define M_BKGR_STRETCH 0x08 -#define M_BKGR_TILE 0x10 - -#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) -static const int bitmapRelatedControls[] = { - IDC_FILENAME,IDC_BROWSE,IDC_STRETCHH,IDC_STRETCHV,IDC_TILEH,IDC_TILEV, - IDC_SCROLL,IDC_PROPORTIONAL,IDC_TILEVROWH -}; -struct BkgrItem -{ - BYTE changed; - BYTE useBitmap; - COLORREF bkColor, selColor; - char filename[MAX_PATH]; - WORD flags; -}; -struct BkgrData -{ - struct BkgrItem *item; - int indx; - int count; -}; -static INT_PTR CALLBACK DlgProcBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - struct BkgrData *dat = (struct BkgrData *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - switch (msg) - { - case WM_INITDIALOG: - { - int indx; - HWND hList = GetDlgItem(hwndDlg, IDC_BKGRLIST); - TranslateDialogDefault(hwndDlg); - - dat = (struct BkgrData*)mir_alloc(sizeof(struct BkgrData)); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)dat); - dat->count = bkgrCount; - dat->item = (struct BkgrItem*)mir_alloc(sizeof(struct BkgrItem)*dat->count); - dat->indx = CB_ERR; - for (indx = 0; indx < dat->count; indx++) - { - char *module = bkgrList[indx] + strlen(bkgrList[indx]) + 1; - int jndx; - - dat->item[indx].changed = FALSE; - dat->item[indx].useBitmap = db_get_b(NULL,module, "UseBitmap", DEFAULT_USEBITMAP); - dat->item[indx].bkColor = db_get_dw(NULL,module, "BkColour", DEFAULT_BKCOLOUR); - dat->item[indx].selColor = db_get_dw(NULL,module, "SelBkColour", DEFAULT_SELBKCOLOUR); - { - DBVARIANT dbv; - if ( !db_get_s(NULL,module,"BkBitmap",&dbv)) - { - int retval = PathToAbsolute(dbv.pszVal, dat->item[indx].filename); - if ( !retval || retval == CALLSERVICE_NOTFOUND) - lstrcpynA(dat->item[indx].filename, dbv.pszVal, MAX_PATH); - mir_free(dbv.pszVal); - } - else - *dat->item[indx].filename = 0; - } - dat->item[indx].flags = db_get_w(NULL,module,"BkBmpUse", DEFAULT_BKBMPUSE); - jndx = SendMessageA(hList, CB_ADDSTRING, 0, (LPARAM)Translate(bkgrList[indx])); - SendMessage(hList, CB_SETITEMDATA, jndx, indx); - } - SendMessage(hList, CB_SETCURSEL, 0, 0); - PostMessage(hwndDlg, WM_COMMAND, MAKEWPARAM(IDC_BKGRLIST, CBN_SELCHANGE), 0); - SHAutoComplete(GetDlgItem(hwndDlg, IDC_FILENAME), 1); - return TRUE; - } - case WM_DESTROY: - if (dat) - { - if (dat->item) mir_free(dat->item); - mir_free(dat); - } - - return TRUE; - - case M_BKGR_GETSTATE: - { - int indx = wParam; - if (indx == CB_ERR || indx >= dat->count) break; - indx = SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETITEMDATA, indx, 0); - - dat->item[indx].useBitmap = IsDlgButtonChecked(hwndDlg,IDC_BITMAP); - dat->item[indx].bkColor = SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR,0,0); - dat->item[indx].selColor = SendDlgItemMessage(hwndDlg, IDC_SELCOLOUR, CPM_GETCOLOUR,0,0); - GetDlgItemTextA(hwndDlg, IDC_FILENAME, dat->item[indx].filename, sizeof(dat->item[indx].filename)); - { - WORD flags = 0; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHH)) flags |= CLB_STRETCHH; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHV)) flags |= CLB_STRETCHV; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEH)) flags |= CLBF_TILEH; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEV)) flags |= CLBF_TILEV; - if (IsDlgButtonChecked(hwndDlg,IDC_SCROLL)) flags |= CLBF_SCROLL; - if (IsDlgButtonChecked(hwndDlg,IDC_PROPORTIONAL)) flags |= CLBF_PROPORTIONAL; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEVROWH)) flags |= CLBF_TILEVTOROWHEIGHT; - dat->item[indx].flags = flags; - } - break; - } - case M_BKGR_SETSTATE: - { - int indx = wParam; - int flags = dat->item[indx].flags; - if (indx == CB_ERR || indx >= dat->count) break; - indx = SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETITEMDATA, indx, 0); - - CheckDlgButton(hwndDlg, IDC_BITMAP, dat->item[indx].useBitmap?BST_CHECKED:BST_UNCHECKED); - - SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_SETDEFAULTCOLOUR, 0, DEFAULT_BKCOLOUR); - SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_SETCOLOUR, 0, dat->item[indx].bkColor); - SendDlgItemMessage(hwndDlg, IDC_SELCOLOUR, CPM_SETDEFAULTCOLOUR, 0, DEFAULT_SELBKCOLOUR); - SendDlgItemMessage(hwndDlg, IDC_SELCOLOUR, CPM_SETCOLOUR, 0, dat->item[indx].selColor); - SetDlgItemTextA(hwndDlg, IDC_FILENAME, dat->item[indx].filename); - - CheckDlgButton(hwndDlg,IDC_STRETCHH, flags&CLB_STRETCHH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_STRETCHV,flags&CLB_STRETCHV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEH,flags&CLBF_TILEH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEV,flags&CLBF_TILEV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_SCROLL,flags&CLBF_SCROLL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_PROPORTIONAL,flags&CLBF_PROPORTIONAL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEVROWH,flags&CLBF_TILEVTOROWHEIGHT?BST_CHECKED:BST_UNCHECKED); - - SendMessage(hwndDlg, M_BKGR_UPDATE, 0,0); - break; - } - case M_BKGR_UPDATE: - { - int isChecked = IsDlgButtonChecked(hwndDlg,IDC_BITMAP); - int indx; - for (indx = 0; indx < ARRAY_SIZE(bitmapRelatedControls); indx++) - EnableWindow(GetDlgItem(hwndDlg, bitmapRelatedControls[indx]),isChecked); - break; - } - case WM_COMMAND: - if (LOWORD(wParam) == IDC_BROWSE) { - char str[MAX_PATH]; - OPENFILENAMEA ofn = {0}; - char filter[512]; - - GetDlgItemTextA(hwndDlg,IDC_FILENAME, str, sizeof(str)); - ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; - ofn.hwndOwner = hwndDlg; - ofn.hInstance = NULL; - CallService(MS_UTILS_GETBITMAPFILTERSTRINGS, sizeof(filter), (LPARAM)filter); - ofn.lpstrFilter = filter; - ofn.lpstrFile = str; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - ofn.nMaxFile = sizeof(str); - ofn.nMaxFileTitle = MAX_PATH; - ofn.lpstrDefExt = "bmp"; - if ( !GetOpenFileNameA(&ofn)) break; - SetDlgItemTextA(hwndDlg, IDC_FILENAME, str); - } - else if (LOWORD(wParam) == IDC_FILENAME && HIWORD(wParam) != EN_CHANGE) - break; - - if (LOWORD(wParam) == IDC_BITMAP) - SendMessage(hwndDlg, M_BKGR_UPDATE, 0,0); - if (LOWORD(wParam) == IDC_FILENAME && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - if (LOWORD(wParam) == IDC_BKGRLIST) { - if (HIWORD(wParam) == CBN_SELCHANGE) { - SendMessage(hwndDlg, M_BKGR_GETSTATE, dat->indx, 0); - SendMessage(hwndDlg, M_BKGR_SETSTATE, dat->indx = SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETCURSEL, 0,0), 0); - } - return 0; - } - { - int indx = SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETCURSEL, 0,0); - if (indx != CB_ERR && indx < dat->count) { - indx = SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETITEMDATA, indx, 0); - dat->item[indx].changed = TRUE; - - } - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0,0); - } - break; - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) - { - case 0: - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - int indx; - SendMessage(hwndDlg, M_BKGR_GETSTATE, SendDlgItemMessage(hwndDlg, IDC_BKGRLIST, CB_GETCURSEL, 0,0), 0); - for (indx = 0; indx < dat->count; indx++) - if (dat->item[indx].changed) - { - char *module = bkgrList[indx] + strlen(bkgrList[indx]) + 1; - db_set_b(NULL, module, "UseBitmap", (BYTE)dat->item[indx].useBitmap); - { - COLORREF col; - - if ((col = dat->item[indx].bkColor) == DEFAULT_BKCOLOUR) - db_unset(NULL, module, "BkColour"); - else - db_set_dw(NULL, module, "BkColour", col); - - if ((col = dat->item[indx].selColor) == DEFAULT_SELBKCOLOUR) - db_unset(NULL, module, "SelBkColour"); - else - db_set_dw(NULL, module, "SelBkColour", col); - } - { - char str[MAX_PATH]; - int retval = PathToAbsolute(dat->item[indx].filename, str); - if ( !retval || retval == CALLSERVICE_NOTFOUND) - db_set_s(NULL, module, "BkBitmap", dat->item[indx].filename); - else - db_set_s(NULL, module, "BkBitmap", str); - } - db_set_w(NULL, module, "BkBmpUse", dat->item[indx].flags); - dat->item[indx].changed = FALSE; - NotifyEventHooks(hEventBkgrChanged, (WPARAM)module, 0); - } - return TRUE; - } - } - break; - } - break; - } - return FALSE; -} - -static INT_PTR BkgrCfg_Register(WPARAM wParam, LPARAM lParam) -{ - char *szSetting = (char *)wParam; - char *value, *tok; - size_t len = strlen(szSetting) + 1; - - value = (char *)mir_alloc(len + 4); // add room for flags (DWORD) - memcpy(value, szSetting, len); - tok = strchr(value, '/'); - if (tok == NULL) { - mir_free(value); - return 1; - } - *tok = 0; - *(DWORD*)(value + len) = lParam; - - bkgrList = (char **)mir_realloc(bkgrList, sizeof(char*)*(bkgrCount+1)); - bkgrList[bkgrCount] = value; - bkgrCount++; - - return 0; -} - -int OnOptionsInit(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.hInstance = g_hInst; - odp.pszGroup = LPGEN("Customize"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLCBKG2); - odp.pszTitle = LPGEN("Backgrounds"); - odp.pfnDlgProc = DlgProcBkgOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - return 0; -} - -int BGModuleLoad() -{ - HookEvent(ME_OPT_INITIALISE, OnOptionsInit); - - CreateServiceFunction(MS_BACKGROUNDCONFIG_REGISTER, BkgrCfg_Register); - - hEventBkgrChanged = CreateHookableEvent(ME_BACKGROUNDCONFIG_CHANGED); - return 0; -} - -int BGModuleUnload(void) -{ - if (bkgrList != NULL) - { - int indx; - for (indx = 0; indx < bkgrCount; indx++) - if (bkgrList[indx] != NULL) - mir_free(bkgrList[indx]); - mir_free(bkgrList); - } - DestroyHookableEvent(hEventBkgrChanged); - - return 0; -} diff --git a/plugins/Clist_mw/src/BkgrCfg.h b/plugins/Clist_mw/src/BkgrCfg.h deleted file mode 100644 index a47b53a603..0000000000 --- a/plugins/Clist_mw/src/BkgrCfg.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Register of plugin's user -// -// wParam = (WPARAM)szSetting - string that describes a user -// format: Category/ModuleName, -// eg: "Contact list background/CLUI", -// "Status bar background/StatusBar" -// lParam = (LPARAM)dwFlags -// -#define MS_BACKGROUNDCONFIG_REGISTER "BkgrCfg/Register" - -// -// Notification about changed background -// wParam = ModuleName -// lParam = 0 -#define ME_BACKGROUNDCONFIG_CHANGED "BkgrCfg/Changed" - -#define CLBF_TILEVTOROWHEIGHT 0x0100 diff --git a/plugins/Clist_mw/src/CLUIFrames/cluiframes.cpp b/plugins/Clist_mw/src/CLUIFrames/cluiframes.cpp deleted file mode 100644 index 129bd2e794..0000000000 --- a/plugins/Clist_mw/src/CLUIFrames/cluiframes.cpp +++ /dev/null @@ -1,2860 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -extern HINSTANCE g_hInst; - -//we use dynamic frame list, -//but who wants so huge number of frames ?? -#define MAX_FRAMES 16 - -#define UNCOLLAPSED_FRAME_SIZE 0 -#define DEFAULT_TITLEBAR_HEIGHT 20 - -//legacy menu support -#define frame_menu_lock 1 -#define frame_menu_visible 2 -#define frame_menu_showtitlebar 3 -#define frame_menu_floating 4 -static int UpdateTBToolTip(int framepos); -INT_PTR CLUIFrameSetFloat(WPARAM wParam, LPARAM lParam); -int CLUIFrameResizeFloatingFrame(int framepos); -extern int InitFramesMenus(void); -int GapBetweenTitlebar; - -LOGFONTA TitleBarLogFont = {0}; - -boolean FramesSysNotStarted = TRUE; - -static int sortfunc(const void *a,const void *b) -{ - SortData *sd1,*sd2; - sd1 = (SortData *)a; - sd2 = (SortData *)b; - if (sd1->order > sd2->order){return(1);} - if (sd1->order < sd2->order){return(-1);} - //if (sd1->order == sd2->order){return 0;} - return 0; -} - -//static FRAMEWND Frames[MAX_FRAMES]; -static FRAMEWND *Frames = NULL; - -static int nFramescount = 0; -static int alclientFrame = -1;//for fast access to frame with alclient properties -static int NextFrameId = 100; - -HFONT TitleBarFont; -static int TitleBarH = DEFAULT_TITLEBAR_HEIGHT; -static boolean resizing = FALSE; - -// menus -static HANDLE contMIVisible,contMITitle,contMITBVisible,contMILock,contMIColl,contMIFloating; -static HANDLE contMIAlignRoot; -static HANDLE contMIAlignTop,contMIAlignClient,contMIAlignBottom; -static HANDLE contMIBorder; -static HGENMENU MainMIRoot = (HGENMENU)-1; - -// others -static int ContactListHeight; -static int LastStoreTick = 0; - -static int lbypos = -1; -static int oldframeheight = -1; -static int curdragbar = -1; -static CRITICAL_SECTION csFrameHook; - -static BOOLEAN CLUIFramesFitInSize(void); -static int RemoveItemFromList(int pos,FRAMEWND **lpFrames,int *FrameItemCount); -HWND hWndExplorerToolBar; -static int GapBetweenFrames = 1; - -static int RemoveItemFromList(int pos,FRAMEWND **lpFrames,int *FrameItemCount) -{ - memcpy(&((*lpFrames)[pos]),&((*lpFrames)[pos+1]),sizeof(FRAMEWND)*(*FrameItemCount-pos-1)); - (*FrameItemCount)--; - (*lpFrames) = (FRAMEWND*)realloc((*lpFrames),sizeof(FRAMEWND)*(*FrameItemCount)); - return 0; -} - -static int id2pos(int id) -{ - if (FramesSysNotStarted) - return -1; - - for (int i=0;idockOpt.hwndLeft == NULL && pThumbLeft->dockOpt.hwndRight == NULL ) { - pThumbRight->dockOpt.hwndLeft = pThumbLeft->ContainerWnd; - pThumbLeft->dockOpt.hwndRight = pThumbRight->ContainerWnd; - } -} - -static void UndockThumbs( FRAMEWND *pThumb1, FRAMEWND *pThumb2 ) -{ - if ( pThumb1 == NULL || pThumb2 == NULL ) - return; - - if ( pThumb1->dockOpt.hwndRight == pThumb2->ContainerWnd ) - pThumb1->dockOpt.hwndRight = NULL; - - if ( pThumb1->dockOpt.hwndLeft == pThumb2->ContainerWnd ) - pThumb1->dockOpt.hwndLeft = NULL; - - if ( pThumb2->dockOpt.hwndRight == pThumb1->ContainerWnd ) - pThumb2->dockOpt.hwndRight = NULL; - - if ( pThumb2->dockOpt.hwndLeft == pThumb1->ContainerWnd ) - pThumb2->dockOpt.hwndLeft = NULL; -} - -BOOLEAN bMoveTogether; - -static void PositionThumb( FRAMEWND *pThumb, short nX, short nY ) -{ - FRAMEWND *pCurThumb = &Frames[0]; - FRAMEWND *pDockThumb = pThumb; - FRAMEWND fakeMainWindow; - FRAMEWND fakeTaskBarWindow; - RECT rc; - RECT rcThumb; - RECT rcOld; - SIZE sizeScreen; - int nNewX; - int nNewY; - int nOffs = 10; - int nWidth; - int nHeight; - POINT pt; - RECT rcLeft; - RECT rcTop; - RECT rcRight; - RECT rcBottom; - BOOL bDocked; - BOOL bDockedLeft; - BOOL bDockedRight; - BOOL bLeading; - int frmidx = 0; - - if ( pThumb == NULL ) - return; - - sizeScreen.cx = GetSystemMetrics( SM_CXSCREEN ); - sizeScreen.cy = GetSystemMetrics( SM_CYSCREEN ); - - // Get thumb dimnsions - GetWindowRect( pThumb->ContainerWnd, &rcThumb ); - nWidth = rcThumb.right - rcThumb.left; - nHeight = rcThumb.bottom - rcThumb.top; - - // Docking to the edges of the screen - nNewX = nX < nOffs ? 0 : nX; - nNewX = nNewX > ( sizeScreen.cx - nWidth - nOffs ) ? ( sizeScreen.cx - nWidth ) : nNewX; - nNewY = nY < nOffs ? 0 : nY; - nNewY = nNewY > ( sizeScreen.cy - nHeight - nOffs ) ? ( sizeScreen.cy - nHeight ) : nNewY; - - bLeading = pThumb->dockOpt.hwndRight != NULL; - - if ( bMoveTogether ) { - UndockThumbs( pThumb, FindFrameByWnd( pThumb->dockOpt.hwndLeft )); - GetWindowRect( pThumb->ContainerWnd, &rcOld ); - } - - memset(&fakeMainWindow,0,sizeof(fakeMainWindow)); - fakeMainWindow.ContainerWnd = pcli->hwndContactList; - fakeMainWindow.floating = TRUE; - - memset(&fakeTaskBarWindow,0,sizeof(fakeTaskBarWindow)); - fakeTaskBarWindow.ContainerWnd = hWndExplorerToolBar; - fakeTaskBarWindow.floating = TRUE; - - while( pCurThumb != NULL ) { - if (pCurThumb->floating) { - if ( pCurThumb != pThumb ) { - GetWindowRect( pThumb->ContainerWnd, &rcThumb ); - OffsetRect( &rcThumb, nX - rcThumb.left, nY - rcThumb.top ); - - GetWindowRect( pCurThumb->ContainerWnd, &rc ); - - // These are rects we will dock into - rcLeft.left = rc.left - nOffs; - rcLeft.top = rc.top - nOffs; - rcLeft.right = rc.left + nOffs; - rcLeft.bottom = rc.bottom + nOffs; - - rcTop.left = rc.left - nOffs; - rcTop.top = rc.top - nOffs; - rcTop.right = rc.right + nOffs; - rcTop.bottom = rc.top + nOffs; - - rcRight.left = rc.right - nOffs; - rcRight.top = rc.top - nOffs; - rcRight.right = rc.right + nOffs; - rcRight.bottom = rc.bottom + nOffs; - - rcBottom.left = rc.left - nOffs; - rcBottom.top = rc.bottom - nOffs; - rcBottom.right = rc.right + nOffs; - rcBottom.bottom = rc.bottom + nOffs; - - - bDockedLeft = FALSE; - bDockedRight = FALSE; - - // Upper-left - pt.x = rcThumb.left; - pt.y = rcThumb.top; - bDocked = FALSE; - - if ( PtInRect( &rcRight, pt )) { - nNewX = rc.right; - bDocked = TRUE; - } - - if ( PtInRect( &rcBottom, pt )) { - nNewY = rc.bottom; - if ( PtInRect( &rcLeft, pt )) - nNewX = rc.left; - } - - if ( PtInRect( &rcTop, pt )) { - nNewY = rc.top; - bDockedLeft = bDocked; - } - - // Upper-right - pt.x = rcThumb.right; - pt.y = rcThumb.top; - bDocked = FALSE; - - if ( !bLeading && PtInRect( &rcLeft, pt )) { - if ( !bDockedLeft ) { - nNewX = rc.left - nWidth; - bDocked = TRUE; - } - else if ( rc.right == rcThumb.left ) - bDocked = TRUE; - } - - if ( PtInRect( &rcBottom, pt )) { - nNewY = rc.bottom; - if ( PtInRect( &rcRight, pt )) - nNewX = rc.right - nWidth; - } - - if ( !bLeading && PtInRect( &rcTop, pt )) { - nNewY = rc.top; - bDockedRight = bDocked; - } - - if ( bMoveTogether ) { - if ( bDockedRight ) - DockThumbs( pThumb, pCurThumb, TRUE ); - - if ( bDockedLeft ) - DockThumbs( pCurThumb, pThumb, FALSE ); - } - - // Lower-left - pt.x = rcThumb.left; - pt.y = rcThumb.bottom; - - if ( PtInRect( &rcRight, pt )) - nNewX = rc.right; - - if ( PtInRect( &rcTop, pt )) { - nNewY = rc.top - nHeight; - if ( PtInRect( &rcLeft, pt )) - nNewX = rc.left; - } - - // Lower-right - pt.x = rcThumb.right; - pt.y = rcThumb.bottom; - - if ( !bLeading && PtInRect( &rcLeft, pt )) - nNewX = rc.left - nWidth; - - if ( !bLeading && PtInRect( &rcTop, pt )) { - nNewY = rc.top - nHeight; - if ( PtInRect( &rcRight, pt )) - nNewX = rc.right - nWidth; - } - } - } - - frmidx++; - if (pCurThumb->ContainerWnd = fakeTaskBarWindow.ContainerWnd){break;} - if (pCurThumb->ContainerWnd = fakeMainWindow.ContainerWnd){ - pCurThumb = &fakeTaskBarWindow;continue;} - if (frmidx = nFramescount){ - pCurThumb = &fakeMainWindow;continue; - } - - pCurThumb = &Frames[frmidx]; - } - - // Adjust coords once again - nNewX = nNewX < nOffs ? 0 : nNewX; - nNewX = nNewX > ( sizeScreen.cx - nWidth - nOffs ) ? ( sizeScreen.cx - nWidth ) : nNewX; - nNewY = nNewY < nOffs ? 0 : nNewY; - nNewY = nNewY > ( sizeScreen.cy - nHeight - nOffs ) ? ( sizeScreen.cy - nHeight ) : nNewY; - - SetWindowPos( pThumb->ContainerWnd, HWND_TOPMOST, nNewX, nNewY, 0, 0, SWP_NOSIZE | SWP_NOZORDER ); - - // OK, move all docked thumbs - if ( bMoveTogether ) { - pDockThumb = FindFrameByWnd( pDockThumb->dockOpt.hwndRight ); - PositionThumb( pDockThumb, (short)( nNewX + nWidth ), (short)nNewY ); - } -} - -////////// - -void GetBorderSize(HWND hwnd,RECT *rect) -{ - RECT wr,cr; - POINT pt1,pt2; - - GetWindowRect(hwnd,&wr); - GetClientRect(hwnd,&cr); - pt1.y = cr.top;pt1.x = cr.left; - pt2.y = cr.bottom;pt2.x = cr.right; - - ClientToScreen(hwnd,&pt1); - ClientToScreen(hwnd,&pt2); - - cr.top = pt1.y;cr.left = pt1.x; - cr.bottom = pt2.y;cr.right = pt2.x; - - rect->top = cr.top-wr.top; - rect->left = cr.left-wr.left; - rect->right = wr.right-cr.right; - rect->bottom = wr.bottom-cr.bottom; -} - -//append string -char __inline *AS(char *str,const char *setting,char *addstr) -{ - if (str != NULL) { - strcpy(str,setting); - strcat(str,addstr); - } - return str; -} - -int DBLoadFrameSettingsAtPos(int pos,int Frameid) -{ - char sadd[15]; - char buf[255]; - - _itoa(pos,sadd,10); - - //boolean - Frames[Frameid].collapsed = db_get_b(0,CLUIFrameModule,AS(buf,"Collapse",sadd),Frames[Frameid].collapsed); - - Frames[Frameid].Locked = db_get_b(0,CLUIFrameModule,AS(buf,"Locked",sadd),Frames[Frameid].Locked); - Frames[Frameid].visible = db_get_b(0,CLUIFrameModule,AS(buf,"Visible",sadd),Frames[Frameid].visible); - Frames[Frameid].TitleBar.ShowTitleBar = db_get_b(0,CLUIFrameModule,AS(buf,"TBVisile",sadd),Frames[Frameid].TitleBar.ShowTitleBar); - - Frames[Frameid].height = db_get_w(0,CLUIFrameModule,AS(buf,"Height",sadd),Frames[Frameid].height); - Frames[Frameid].HeightWhenCollapsed = db_get_w(0,CLUIFrameModule,AS(buf,"HeightCollapsed",sadd),0); - Frames[Frameid].align = db_get_w(0,CLUIFrameModule,AS(buf,"Align",sadd),Frames[Frameid].align); - - Frames[Frameid].FloatingPos.x = DBGetContactSettingRangedWord(0,CLUIFrameModule,AS(buf,"FloatX",sadd),100,0,1024); - Frames[Frameid].FloatingPos.y = DBGetContactSettingRangedWord(0,CLUIFrameModule,AS(buf,"FloatY",sadd),100,0,1024); - Frames[Frameid].FloatingSize.x = DBGetContactSettingRangedWord(0,CLUIFrameModule,AS(buf,"FloatW",sadd),100,0,1024); - Frames[Frameid].FloatingSize.y = DBGetContactSettingRangedWord(0,CLUIFrameModule,AS(buf,"FloatH",sadd),100,0,1024); - - Frames[Frameid].floating = db_get_b(0,CLUIFrameModule,AS(buf,"Floating",sadd),0); - Frames[Frameid].order = db_get_w(0,CLUIFrameModule,AS(buf,"Order",sadd),0); - - Frames[Frameid].UseBorder = db_get_b(0,CLUIFrameModule,AS(buf,"UseBorder",sadd),Frames[Frameid].UseBorder); - - return 0; -} - -int DBStoreFrameSettingsAtPos(int pos,int Frameid) -{ - char sadd[16]; - char buf[255]; - - _itoa(pos,sadd,10); - - db_set_ts(0,CLUIFrameModule,AS(buf,"Name",sadd),Frames[Frameid].name); - //boolean - db_set_b(0,CLUIFrameModule,AS(buf,"Collapse",sadd),(BYTE)btoint(Frames[Frameid].collapsed)); - db_set_b(0,CLUIFrameModule,AS(buf,"Locked",sadd),(BYTE)btoint(Frames[Frameid].Locked)); - db_set_b(0,CLUIFrameModule,AS(buf,"Visible",sadd),(BYTE)btoint(Frames[Frameid].visible)); - db_set_b(0,CLUIFrameModule,AS(buf,"TBVisile",sadd),(BYTE)btoint(Frames[Frameid].TitleBar.ShowTitleBar)); - - db_set_w(0,CLUIFrameModule,AS(buf,"Height",sadd),(WORD)Frames[Frameid].height); - db_set_w(0,CLUIFrameModule,AS(buf,"HeightCollapsed",sadd),(WORD)Frames[Frameid].HeightWhenCollapsed); - db_set_w(0,CLUIFrameModule,AS(buf,"Align",sadd),(WORD)Frames[Frameid].align); - //FloatingPos - db_set_w(0,CLUIFrameModule,AS(buf,"FloatX",sadd),(WORD)Frames[Frameid].FloatingPos.x); - db_set_w(0,CLUIFrameModule,AS(buf,"FloatY",sadd),(WORD)Frames[Frameid].FloatingPos.y); - db_set_w(0,CLUIFrameModule,AS(buf,"FloatW",sadd),(WORD)Frames[Frameid].FloatingSize.x); - db_set_w(0,CLUIFrameModule,AS(buf,"FloatH",sadd),(WORD)Frames[Frameid].FloatingSize.y); - - db_set_b(0,CLUIFrameModule,AS(buf,"Floating",sadd),(BYTE)btoint(Frames[Frameid].floating)); - db_set_b(0,CLUIFrameModule,AS(buf,"UseBorder",sadd),(BYTE)btoint(Frames[Frameid].UseBorder)); - db_set_w(0,CLUIFrameModule,AS(buf,"Order",sadd),(WORD)Frames[Frameid].order); - //db_set_s(0,CLUIFrameModule,AS(buf,"TBName",sadd),Frames[Frameid].TitleBar.tbname); - return 0; -} - -int LocateStorePosition(int Frameid,int maxstored) -{ - if (Frames[Frameid].name == NULL) - return -1; - - for (int i=0; i < maxstored; i++) { - char settingname[255]; - mir_snprintf(settingname, sizeof(settingname), "Name%d",i); - LPTSTR frmname = db_get_tsa(0,CLUIFrameModule,settingname); - if (frmname == NULL) - continue; - - if (lstrcmpi(frmname,Frames[Frameid].name) == 0) { - mir_free(frmname); - return i; - } - mir_free(frmname); - } - return -1; -} - -int CLUIFramesLoadFrameSettings(int Frameid) -{ - if (Frameid < 0 || Frameid >= nFramescount) - return -1; - - int maxstored = db_get_w(0,CLUIFrameModule,"StoredFrames",-1); - if (maxstored == -1) - return 0; - - int storpos = LocateStorePosition(Frameid,maxstored); - if (storpos == -1) - return 0; - - DBLoadFrameSettingsAtPos(storpos,Frameid); - return 0; -} - -int CLUIFramesStoreFrameSettings(int Frameid) -{ - if (Frameid < 0 || Frameid >= nFramescount) - return -1; - - int maxstored = db_get_w(0,CLUIFrameModule,"StoredFrames",-1); - if (maxstored == -1) - maxstored = 0; - - int storpos = LocateStorePosition(Frameid,maxstored); - if (storpos == -1) { - storpos = maxstored; - maxstored++; - } - - DBStoreFrameSettingsAtPos(storpos,Frameid); - db_set_w(0,CLUIFrameModule,"StoredFrames",(WORD)maxstored); - //ulockfrm(); - return 0; -} - -int CLUIFramesStoreAllFrames() -{ - lockfrm(); - for (int i=0;i= 0 && pos < nFramescount) { - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_NAME|CMIF_CHILDPOPUP|CMIF_TCHAR; - mi.ptszName = Frames[pos].TitleBar.tbname ? Frames[pos].TitleBar.tbname : Frames[pos].name; - ModifyMItem((WPARAM)contMITitle,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].visible) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIVisible,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].Locked) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMILock,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].TitleBar.ShowTitleBar) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMITBVisible,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].floating) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIFloating,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if ((Frames[pos].UseBorder)) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIBorder,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].align&alTop) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIAlignTop,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].align&alClient) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIAlignClient,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].align&alBottom) mi.flags |= CMIF_CHECKED; - ModifyMItem((WPARAM)contMIAlignBottom,(LPARAM)&mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].collapsed) mi.flags |= CMIF_CHECKED; - if ((!Frames[pos].visible)||(Frames[pos].Locked)||(pos == CLUIFramesGetalClientFrame())) mi.flags |= CMIF_GRAYED; - ModifyMItem((WPARAM)contMIColl,(LPARAM)&mi); - } - ulockfrm(); - return 0; -} - -INT_PTR CLUIFramesModifyMainMenuItems(WPARAM wParam, LPARAM lParam) -{ - lockfrm(); - - int pos = id2pos(wParam); - if (pos >= 0 && pos < nFramescount) { - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_NAME|CMIF_CHILDPOPUP|CMIF_TCHAR; - mi.ptszName = Frames[pos].TitleBar.tbname ? Frames[pos].TitleBar.tbname : Frames[pos].name; - Menu_ModifyItem(Frames[pos].MenuHandles.MITitle, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].visible) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIVisible, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].Locked) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MILock, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].TitleBar.ShowTitleBar) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MITBVisible, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].floating) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIFloating, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if ((Frames[pos].UseBorder)) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIBorder, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP|((Frames[pos].align&alClient)?CMIF_GRAYED:0); - if (Frames[pos].align&alTop) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIAlignTop, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].align&alClient) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIAlignClient, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP|((Frames[pos].align&alClient)?CMIF_GRAYED:0); - if (Frames[pos].align&alBottom) mi.flags |= CMIF_CHECKED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIAlignBottom, &mi); - - mi.flags = CMIM_FLAGS|CMIF_CHILDPOPUP; - if (Frames[pos].collapsed) mi.flags |= CMIF_CHECKED; - if ((!Frames[pos].visible)||Frames[pos].Locked||(pos == CLUIFramesGetalClientFrame())) mi.flags |= CMIF_GRAYED; - Menu_ModifyItem(Frames[pos].MenuHandles.MIColl, &mi); - } - ulockfrm(); - return 0; -} - -//hiword(wParam) = frameid,loword(wParam) = flag -INT_PTR CLUIFramesGetFrameOptions(WPARAM wParam, LPARAM lParam) -{ - if (FramesSysNotStarted) return 0; - - lockfrm(); - int pos = id2pos(HIWORD(wParam)); - if (pos < 0 || pos >= nFramescount) { - ulockfrm(); - return -1; - } - - INT_PTR retval; - - switch(LOWORD(wParam)) { - case FO_FLAGS: - retval = 0; - if (Frames[pos].visible) retval |= F_VISIBLE; - if ( !Frames[pos].collapsed) retval |= F_UNCOLLAPSED; - if (Frames[pos].Locked) retval |= F_LOCKED; - if (Frames[pos].TitleBar.ShowTitleBar) retval |= F_SHOWTB; - if (Frames[pos].TitleBar.ShowTitleBarTip) retval |= F_SHOWTBTIP; - if ( !(GetWindowLongPtr(Frames[pos].hWnd,GWL_STYLE)&WS_BORDER)) retval |= F_NOBORDER; - break; - - case FO_NAME: - retval = (INT_PTR)Frames[pos].name; - break; - - case FO_TBNAME: - retval = (INT_PTR)Frames[pos].TitleBar.tbname; - break; - - case FO_TBTIPNAME: - retval = (INT_PTR)Frames[pos].TitleBar.tooltip; - break; - - case FO_TBSTYLE: - retval = GetWindowLongPtr(Frames[pos].TitleBar.hwnd,GWL_STYLE); - break; - - case FO_TBEXSTYLE: - retval = GetWindowLongPtr(Frames[pos].TitleBar.hwnd,GWL_EXSTYLE); - break; - - case FO_ICON: - retval = (INT_PTR)Frames[pos].TitleBar.hicon; - break; - - case FO_HEIGHT: - retval = (INT_PTR)Frames[pos].height; - break; - - case FO_ALIGN: - retval = (INT_PTR)Frames[pos].align; - break; - case FO_FLOATING: - retval = (INT_PTR)Frames[pos].floating; - break; - default: - retval = -1; - break; - } - ulockfrm(); - return retval; -} - -//hiword(wParam) = frameid,loword(wParam) = flag -INT_PTR CLUIFramesSetFrameOptions(WPARAM wParam, LPARAM lParam) -{ - lockfrm(); - int pos = id2pos(HIWORD(wParam)); - if (pos<0||pos>=nFramescount) { - ulockfrm(); - return -1; - } - - INT_PTR retval; // value to be returned - - switch(LOWORD(wParam) & ~FO_UNICODETEXT) { - case FO_FLAGS:{ - int flag = lParam; - LONG_PTR style; - - Frames[pos].dwFlags = flag; - Frames[pos].visible = FALSE; - if (flag&F_VISIBLE) Frames[pos].visible = TRUE; - - Frames[pos].collapsed = TRUE; - if (flag&F_UNCOLLAPSED) Frames[pos].collapsed = FALSE; - - Frames[pos].Locked = FALSE; - if (flag&F_LOCKED) Frames[pos].Locked = TRUE; - - Frames[pos].UseBorder = TRUE; - if (flag&F_NOBORDER) Frames[pos].UseBorder = FALSE; - - Frames[pos].TitleBar.ShowTitleBar = FALSE; - if (flag&F_SHOWTB) Frames[pos].TitleBar.ShowTitleBar = TRUE; - - Frames[pos].TitleBar.ShowTitleBarTip = FALSE; - if (flag&F_SHOWTBTIP) Frames[pos].TitleBar.ShowTitleBarTip = TRUE; - - SendMessage(Frames[pos].TitleBar.hwndTip,TTM_ACTIVATE,(WPARAM)Frames[pos].TitleBar.ShowTitleBarTip,0); - - style = GetWindowLongPtr(Frames[pos].hWnd,GWL_STYLE); - style |= WS_BORDER; - if (flag&F_NOBORDER) {style &= (~WS_BORDER);} - SetWindowLongPtr(Frames[pos].hWnd,GWL_STYLE,(LONG_PTR)style); - ulockfrm(); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - return 0; - } - - case FO_NAME: - if (lParam == 0) {ulockfrm(); return -1;} - mir_free(Frames[pos].name); - Frames[pos].name = mir_tstrdup((LPTSTR)lParam); - ulockfrm(); - return 0; - - case FO_TBNAME: - if (lParam == 0) {ulockfrm(); return(-1);} - mir_free(Frames[pos].TitleBar.tbname); - Frames[pos].TitleBar.tbname = mir_tstrdup((LPTSTR)lParam); - ulockfrm(); - if (Frames[pos].floating&&(Frames[pos].TitleBar.tbname != NULL)){SetWindowText(Frames[pos].ContainerWnd,Frames[pos].TitleBar.tbname);} - return 0; - - case FO_TBTIPNAME: - if (lParam == 0) {ulockfrm(); return(-1);} - mir_free(Frames[pos].TitleBar.tooltip); - Frames[pos].TitleBar.tooltip = mir_tstrdup((LPTSTR)lParam); - UpdateTBToolTip(pos); - ulockfrm(); - return 0; - - case FO_TBSTYLE: - SetWindowLongPtr(Frames[pos].TitleBar.hwnd,GWL_STYLE,lParam); - ulockfrm(); - return 0; - - case FO_TBEXSTYLE: - SetWindowLongPtr(Frames[pos].TitleBar.hwnd,GWL_EXSTYLE,lParam); - ulockfrm(); - return 0; - - case FO_ICON: - Frames[pos].TitleBar.hicon = (HICON)lParam; - ulockfrm(); - return 0; - - case FO_HEIGHT: - if (lParam<0) {ulockfrm(); return -1;} - retval = Frames[pos].height; - Frames[pos].height = lParam; - if ( !CLUIFramesFitInSize()) Frames[pos].height = retval; - retval = Frames[pos].height; - ulockfrm(); - - return retval; - - case FO_FLOATING: - if (lParam<0) {ulockfrm(); return -1;} - - { - int id = Frames[pos].id; - Frames[pos].floating = !(lParam); - ulockfrm(); - - CLUIFrameSetFloat(id,1);//lparam = 1 use stored width and height - return wParam; - } - - case FO_ALIGN: - if ( !(lParam&alTop || lParam&alBottom || lParam&alClient)) { - OutputDebugStringA("Wrong align option \r\n"); - return (-1); - } - - if ((lParam&alClient)&&(CLUIFramesGetalClientFrame()>=0)) { //only one alClient frame possible - alclientFrame = -1;//recalc it - ulockfrm(); - return -1; - } - Frames[pos].align = lParam; - - ulockfrm(); - return 0; - } - ulockfrm(); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - return -1; -} - -//wparam = lparam = 0 -static INT_PTR CLUIFramesShowAll(WPARAM wParam, LPARAM lParam) -{ - for (int i=0;ihwndContactList,0); - return 0; -} - -//wparam = lparam = 0 -INT_PTR CLUIFramesShowAllTitleBars(WPARAM wParam, LPARAM lParam) -{ - for (int i=0;ihwndContactList,0); - return 0; -} - -//wparam = lparam = 0 -INT_PTR CLUIFramesHideAllTitleBars(WPARAM wParam, LPARAM lParam) -{ - for (int i=0;ihwndContactList,0); - return 0; -} - -//wparam = frameid -INT_PTR CLUIFramesShowHideFrame(WPARAM wParam, LPARAM lParam) -{ - lockfrm(); - int pos = id2pos(wParam); - if ( pos >= 0 && (int)pos < nFramescount) - Frames[pos].visible = !Frames[pos].visible; - if (Frames[pos].floating) - CLUIFrameResizeFloatingFrame(pos); - ulockfrm(); - - if ( !Frames[pos].floating) - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - return 0; -} - -//wparam = frameid -INT_PTR CLUIFramesShowHideFrameTitleBar(WPARAM wParam, LPARAM lParam) -{ - lockfrm(); - int pos = id2pos(wParam); - if ( pos >= 0 && (int)pos < nFramescount) - Frames[pos].TitleBar.ShowTitleBar = !Frames[pos].TitleBar.ShowTitleBar; - - ulockfrm(); - - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - return 0; -} - -//wparam = frameid -//lparam = -1 up ,1 down -INT_PTR CLUIFramesMoveUpDown(WPARAM wParam, LPARAM lParam) -{ - int pos,i,curpos,curalign,v,tmpval; - - lockfrm(); - pos = id2pos(wParam); - if (pos >= 0 &&(int)pos < nFramescount) { - SortData *sd; - curpos = Frames[pos].order; - curalign = Frames[pos].align; - v = 0; - sd = (SortData*)malloc(sizeof(SortData)*nFramescount); - memset(sd,0,sizeof(SortData)*nFramescount); - for (i=0; i < nFramescount; i++) { - if (Frames[i].floating||(!Frames[i].visible)||(Frames[i].align != curalign)) - continue; - - sd[v].order = Frames[i].order; - sd[v].realpos = i; - v++; - } - if (v == 0) { - ulockfrm(); - return 0; - } - qsort(sd,v,sizeof(SortData),sortfunc); - for (i=0; i < v; i++) { - if (sd[i].realpos == pos) { - if (lParam == -1) { - if (i >= v-1) - break; - - tmpval = Frames[sd[i+1].realpos].order; - Frames[sd[i+1].realpos].order = Frames[pos].order; - Frames[pos].order = tmpval; - break; - } - if (lParam == +1) { - if (i < 1) - break; - - tmpval = Frames[sd[i-1].realpos].order; - Frames[sd[i-1].realpos].order = Frames[pos].order; - Frames[pos].order = tmpval; - break; - } - } - } - - free(sd); - CLUIFramesStoreFrameSettings(pos); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - } - ulockfrm(); - return 0; -} - -//wparam = frameid -//lparam = alignment -INT_PTR CLUIFramesSetAlign(WPARAM wParam, LPARAM lParam) -{ - CLUIFramesSetFrameOptions(MAKEWPARAM(FO_ALIGN,wParam),lParam); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - return 0; -} - -INT_PTR CLUIFramesSetAlignalTop(WPARAM wParam, LPARAM lParam) -{ - return CLUIFramesSetAlign(wParam,alTop); -} - -INT_PTR CLUIFramesSetAlignalBottom(WPARAM wParam, LPARAM lParam) -{ - return CLUIFramesSetAlign(wParam,alBottom); -} - -INT_PTR CLUIFramesSetAlignalClient(WPARAM wParam, LPARAM lParam) -{ - return CLUIFramesSetAlign(wParam,alClient); -} - -//wparam = frameid -INT_PTR CLUIFramesLockUnlockFrame(WPARAM wParam, LPARAM lParam) -{ - lockfrm(); - int pos = id2pos(wParam); - if (pos >= 0 && (int)pos < nFramescount) { - Frames[pos].Locked = !Frames[pos].Locked; - CLUIFramesStoreFrameSettings(pos); - } - ulockfrm(); - return 0; -} - -//wparam = frameid -INT_PTR CLUIFramesSetUnSetBorder(WPARAM wParam, LPARAM lParam) -{ - int oldflags; - - lockfrm(); - int FrameId = id2pos(wParam); - if (FrameId == -1) { - ulockfrm(); - return -1; - } - - boolean flt = oldflags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,wParam),0); - if (oldflags & F_NOBORDER) - oldflags &= (~F_NOBORDER); - else - oldflags |= F_NOBORDER; - - HWND hw = Frames[FrameId].hWnd; - RECT rc; - GetWindowRect(hw, &rc); - - ulockfrm(); - CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,wParam),oldflags); - - SetWindowPos(hw,0,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_DRAWFRAME); - return 0; -} - -//wparam = frameid -INT_PTR CLUIFramesCollapseUnCollapseFrame(WPARAM wParam, LPARAM lParam) -{ - int FrameId; - - lockfrm(); - FrameId = id2pos(wParam); - if (FrameId >= 0 && FrameId < nFramescount) { - int oldHeight; - - // do not collapse/uncollapse client/locked/invisible frames - if (Frames[FrameId].align == alClient&&!(Frames[FrameId].Locked||(!Frames[FrameId].visible)||Frames[FrameId].floating)) { - RECT rc; - if (CallService(MS_CLIST_DOCKINGISDOCKED,0,0)) { - ulockfrm(); - return 0; - } - if ( db_get_b(NULL,"CLUI","AutoSize",0)) { - ulockfrm(); - return 0; - } - - GetWindowRect(pcli->hwndContactList, &rc); - - if (Frames[FrameId].collapsed == TRUE) { - rc.bottom -= rc.top; - rc.bottom -= Frames[FrameId].height; - Frames[FrameId].HeightWhenCollapsed = Frames[FrameId].height; - Frames[FrameId].collapsed = FALSE; - } - else { - rc.bottom -= rc.top; - rc.bottom += Frames[FrameId].HeightWhenCollapsed; - Frames[FrameId].collapsed = TRUE; - } - - SetWindowPos(pcli->hwndContactList,NULL,0,0,rc.right-rc.left,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE); - - CLUIFramesStoreAllFrames(); - ulockfrm(); - return 0; - } - - if (Frames[FrameId].Locked||(!Frames[FrameId].visible)) - return 0; - - oldHeight = Frames[FrameId].height; - - // if collapsed, uncollapse - if (Frames[FrameId].collapsed == TRUE) { - Frames[FrameId].HeightWhenCollapsed = Frames[FrameId].height; - Frames[FrameId].height = UNCOLLAPSED_FRAME_SIZE; - Frames[FrameId].collapsed = FALSE; - } - // if uncollapsed, collapse - else { - Frames[FrameId].height = Frames[FrameId].HeightWhenCollapsed; - Frames[FrameId].collapsed = TRUE; - } - - if ( !Frames[FrameId].floating) { - if ( !CLUIFramesFitInSize()) { - //cant collapse,we can resize only for height2*UNCOLLAPSED_FRAME_SIZE) { - oldHeight = Frames[alfrm].height-UNCOLLAPSED_FRAME_SIZE; - Frames[FrameId].collapsed = TRUE; - } - } - else { - int i,sumheight = 0; - for (i=0; i < nFramescount; i++) { - if ((Frames[i].align != alClient)&&(!Frames[i].floating)&&(Frames[i].visible)&&(!Frames[i].needhide)) { - sumheight += (Frames[i].height)+(TitleBarH*btoint(Frames[i].TitleBar.ShowTitleBar))+2; - return FALSE; - } - - if (sumheight>ContactListHeight-0-2) - Frames[FrameId].height = (ContactListHeight-0-2)-sumheight; - } - } - - Frames[FrameId].height = oldHeight; - - if (Frames[FrameId].collapsed == FALSE) { - if (Frames[FrameId].floating) - SetWindowPos(Frames[FrameId].ContainerWnd,HWND_TOP,0,0,Frames[FrameId].wndSize.right-Frames[FrameId].wndSize.left+6,Frames[FrameId].height+DEFAULT_TITLEBAR_HEIGHT+4,SWP_SHOWWINDOW|SWP_NOMOVE); - - ulockfrm(); - return -1; - } - } - } - - ulockfrm(); - - if ( !Frames[FrameId].floating) - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - else { - //SetWindowPos(Frames[FrameId].hWnd,HWND_TOP,0,0,Frames[FrameId].wndSize.right-Frames[FrameId].wndSize.left,Frames[FrameId].height,SWP_SHOWWINDOW|SWP_NOMOVE); - RECT contwnd; - GetWindowRect(Frames[FrameId].ContainerWnd,&contwnd); - contwnd.top = contwnd.bottom-contwnd.top;//height - contwnd.left = contwnd.right-contwnd.left;//width - - contwnd.top -= (oldHeight-Frames[FrameId].height);//newheight - SetWindowPos(Frames[FrameId].ContainerWnd,HWND_TOP,0,0,contwnd.left,contwnd.top,SWP_SHOWWINDOW|SWP_NOMOVE); - } - CLUIFramesStoreAllFrames(); - return 0; - } - else return -1; - - ulockfrm(); - return 0; -} - -static int CLUIFramesLoadMainMenu() -{ - if (MainMIRoot != (HGENMENU)-1) { - CallService(MS_CLIST_REMOVEMAINMENUITEM,(WPARAM)MainMIRoot,0); - MainMIRoot = (HGENMENU)-1; - } - - // create root menu - CLISTMENUITEM mi = { sizeof(mi) }; - mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_FRAME); - mi.flags = CMIF_ROOTPOPUP; - mi.position = 3000090000; - mi.pszPopupName = (char*)-1; - mi.pszName = LPGEN("Frames"); - mi.pszService = 0; - MainMIRoot = Menu_AddMainMenuItem(&mi); - - // create frames menu - int separator = 3000200000; - for (int i=0; i < nFramescount; i++) { - mi.hIcon = Frames[i].TitleBar.hicon; - mi.flags = CMIF_CHILDPOPUP | CMIF_ROOTPOPUP | CMIF_TCHAR; - mi.position = separator; - mi.hParentMenu = MainMIRoot; - mi.ptszName = Frames[i].TitleBar.tbname ? Frames[i].TitleBar.tbname : Frames[i].name; - mi.pszService = 0; - Frames[i].MenuHandles.MainMenuItem = Menu_AddMainMenuItem(&mi); - CLUIFramesCreateMenuForFrame(Frames[i].id,(int)Frames[i].MenuHandles.MainMenuItem,separator,Menu_AddMainMenuItem); - CLUIFramesModifyMainMenuItems(Frames[i].id,0); - //NotifyEventHooks(hPreBuildFrameMenuEvent,i,(LPARAM)Frames[i].MenuHandles.MainMenuItem); - CallService(MS_CLIST_FRAMEMENUNOTIFY,(WPARAM)Frames[i].id,(LPARAM)Frames[i].MenuHandles.MainMenuItem); - separator++; - } - - separator += 100000; - - // create "show all frames" menu - mi.hIcon = NULL; - mi.flags = CMIF_CHILDPOPUP; - mi.position = separator++; - mi.hParentMenu = MainMIRoot; - mi.pszName = LPGEN("Show all frames"); - mi.pszService = MS_CLIST_FRAMES_SHOWALLFRAMES; - Menu_AddMainMenuItem(&mi); - - // create "show all titlebars" menu - mi.hIcon = NULL; - mi.position = separator++; - mi.hParentMenu = MainMIRoot; - mi.flags = CMIF_CHILDPOPUP; - mi.pszName = LPGEN("Show all title bars"); - mi.pszService = MS_CLIST_FRAMES_SHOWALLFRAMESTB; - Menu_AddMainMenuItem(&mi); - - // create "hide all titlebars" menu - mi.hIcon = NULL; - mi.position = separator++; - mi.hParentMenu = MainMIRoot; - mi.flags = CMIF_CHILDPOPUP; - mi.pszName = LPGEN("Hide all title bars"); - mi.pszService = MS_CLIST_FRAMES_HIDEALLFRAMESTB; - Menu_AddMainMenuItem(&mi); - return 0; -} - -static HFONT CLUILoadTitleBarFont() -{ - char facename[] = "MS Shell Dlg"; - HFONT hfont; - LOGFONT logfont; - memset(&logfont,0,sizeof(logfont)); - memcpy(logfont.lfFaceName,facename,sizeof(facename)); - logfont.lfWeight = FW_NORMAL; - logfont.lfHeight = -10; - hfont = CreateFontIndirect(&logfont); - return hfont; -} - -static int UpdateTBToolTip(int framepos) -{ - TOOLINFO ti = { 0 }; - ti.cbSize = sizeof(ti); - ti.lpszText = Frames[framepos].TitleBar.tooltip; - ti.hinst = g_hInst; - ti.uFlags = TTF_IDISHWND|TTF_SUBCLASS ; - ti.uId = (UINT_PTR)Frames[framepos].TitleBar.hwnd; - - return SendMessage(Frames[framepos].TitleBar.hwndTip, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti); -} - -//wparam = (CLISTFrame*)clfrm -INT_PTR CLUIFramesAddFrame(WPARAM wParam, LPARAM lParam) -{ - int retval; - LONG_PTR style; - CLISTFrame *clfrm = (CLISTFrame *)wParam; - - if (pcli->hwndContactList == 0) return -1; - if (FramesSysNotStarted) return -1; - if (clfrm->cbSize != sizeof(CLISTFrame)) return -1; - if ( !(TitleBarFont)) TitleBarFont = CLUILoadTitleBarFont(); - - lockfrm(); - if (nFramescount>=MAX_FRAMES) { ulockfrm(); return -1;} - Frames = (FRAMEWND*)realloc(Frames,sizeof(FRAMEWND)*(nFramescount+1)); - - memset(&Frames[nFramescount],0,sizeof(FRAMEWND)); - Frames[nFramescount].id = NextFrameId++; - Frames[nFramescount].align = clfrm->align; - Frames[nFramescount].hWnd = clfrm->hWnd; - Frames[nFramescount].height = clfrm->height; - Frames[nFramescount].TitleBar.hicon = clfrm->hIcon; - Frames[nFramescount].floating = FALSE; - - //override tbbtip - //clfrm->Flags != F_SHOWTBTIP; - // - if ( db_get_b(0,CLUIFrameModule,"RemoveAllBorders",0) == 1) - clfrm->Flags |= F_NOBORDER; - - Frames[nFramescount].dwFlags = clfrm->Flags; - - if (clfrm->name == NULL||((clfrm->Flags&F_UNICODE) ? lstrlenW(clfrm->wname) : lstrlenA(clfrm->name)) == 0) { - Frames[nFramescount].name = (LPTSTR)malloc(255 * sizeof(TCHAR)); - GetClassName(Frames[nFramescount].hWnd,Frames[nFramescount].name,255); - } - else Frames[nFramescount].name = (clfrm->Flags&F_UNICODE) ? mir_u2t(clfrm->wname) : mir_a2t(clfrm->name); - - if (IsBadCodePtr((FARPROC)clfrm->TBname) || clfrm->TBname == NULL - || ((clfrm->Flags&F_UNICODE) ? lstrlenW(clfrm->TBwname) : lstrlenA(clfrm->TBname)) == 0) - Frames[nFramescount].TitleBar.tbname = mir_tstrdup(Frames[nFramescount].name); - else - Frames[nFramescount].TitleBar.tbname = (clfrm->Flags&F_UNICODE) ? mir_u2t(clfrm->TBwname) : mir_a2t(clfrm->TBname); - Frames[nFramescount].needhide = FALSE; - Frames[nFramescount].TitleBar.ShowTitleBar = (clfrm->Flags&F_SHOWTB?TRUE:FALSE); - Frames[nFramescount].TitleBar.ShowTitleBarTip = (clfrm->Flags&F_SHOWTBTIP?TRUE:FALSE); - - Frames[nFramescount].collapsed = clfrm->Flags & F_UNCOLLAPSED ? FALSE:TRUE; - Frames[nFramescount].Locked = clfrm->Flags & F_LOCKED ? TRUE : FALSE; - Frames[nFramescount].visible = clfrm->Flags & F_VISIBLE ? TRUE : FALSE; - - Frames[nFramescount].UseBorder = (clfrm->Flags&F_NOBORDER)?FALSE:TRUE; - - // create frame - Frames[nFramescount].TitleBar.hwnd = CreateWindow(CLUIFrameTitleBarClassName,Frames[nFramescount].name, - ( db_get_b(0,CLUIFrameModule,"RemoveAllTitleBarBorders",0)?0:WS_BORDER) |WS_CHILD|WS_CLIPCHILDREN| - (Frames[nFramescount].TitleBar.ShowTitleBar?WS_VISIBLE:0)| WS_CLIPCHILDREN, - 0,0,0,0,pcli->hwndContactList,NULL,g_hInst,NULL); - SetWindowLongPtr(Frames[nFramescount].TitleBar.hwnd,GWLP_USERDATA,Frames[nFramescount].id); - - Frames[nFramescount].TitleBar.hwndTip = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, - WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - pcli->hwndContactList, NULL, g_hInst, NULL); - - SetWindowPos(Frames[nFramescount].TitleBar.hwndTip, HWND_TOPMOST,0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - - TOOLINFO ti = { 0 }; - ti.cbSize = sizeof(ti); - ti.lpszText = _T(""); - ti.hinst = g_hInst; - ti.uFlags = TTF_IDISHWND|TTF_SUBCLASS ; - ti.uId = (UINT_PTR)Frames[nFramescount].TitleBar.hwnd; - SendMessage(Frames[nFramescount].TitleBar.hwndTip,TTM_ADDTOOL,0,(LPARAM)&ti); - - SendMessage(Frames[nFramescount].TitleBar.hwndTip,TTM_ACTIVATE,(WPARAM)Frames[nFramescount].TitleBar.ShowTitleBarTip,0); - - Frames[nFramescount].oldstyles = GetWindowLongPtr(Frames[nFramescount].hWnd,GWL_STYLE); - Frames[nFramescount].TitleBar.oldstyles = GetWindowLongPtr(Frames[nFramescount].TitleBar.hwnd,GWL_STYLE); - //Frames[nFramescount].FloatingPos.x = - - retval = Frames[nFramescount].id; - Frames[nFramescount].order = nFramescount+1; - nFramescount++; - - CLUIFramesLoadFrameSettings(id2pos(retval)); - style = GetWindowLongPtr(Frames[nFramescount-1].hWnd,GWL_STYLE); - style &= (~WS_BORDER); - style |= ((Frames[nFramescount-1].UseBorder)?WS_BORDER:0); - SetWindowLongPtr(Frames[nFramescount-1].hWnd,GWL_STYLE,style); - - if (Frames[nFramescount-1].order == 0){Frames[nFramescount-1].order = nFramescount;} - ulockfrm(); - - alclientFrame = -1;//recalc it - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - - if (Frames[nFramescount-1].floating) { - Frames[nFramescount-1].floating = FALSE; - CLUIFrameSetFloat(retval,1);//lparam = 1 use stored width and height - } - - return retval; -} - -static INT_PTR CLUIFramesRemoveFrame(WPARAM wParam, LPARAM lParam) -{ - if (FramesSysNotStarted) - return -1; - - lockfrm(); - int pos = id2pos(wParam); - - if (pos<0||pos>nFramescount){ulockfrm();return(-1);} - - mir_free(Frames[pos].name); - mir_free(Frames[pos].TitleBar.tbname); - mir_free(Frames[pos].TitleBar.tooltip); - - DestroyWindow(Frames[pos].hWnd); - Frames[pos].hWnd = (HWND)-1; - DestroyWindow(Frames[pos].TitleBar.hwnd); - Frames[pos].TitleBar.hwnd = (HWND)-1; - DestroyWindow(Frames[pos].ContainerWnd); - Frames[pos].ContainerWnd = (HWND)-1; - DestroyMenu(Frames[pos].TitleBar.hmenu); - - RemoveItemFromList(pos,&Frames,&nFramescount); - - ulockfrm(); - InvalidateRect(pcli->hwndContactList,NULL,TRUE); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - InvalidateRect(pcli->hwndContactList,NULL,TRUE); - - return 0; -} - - -int CLUIFramesForceUpdateTB(const FRAMEWND *Frame) -{ - if (Frame->TitleBar.hwnd != 0) - RedrawWindow(Frame->TitleBar.hwnd,NULL,NULL,RDW_ALLCHILDREN|RDW_UPDATENOW|RDW_ERASE|RDW_INVALIDATE|RDW_FRAME); - return 0; -} - -int CLUIFramesForceUpdateFrame(const FRAMEWND *Frame) -{ - if (Frame->hWnd != 0) { - RedrawWindow(Frame->hWnd,NULL,NULL,RDW_UPDATENOW|RDW_FRAME|RDW_ERASE|RDW_INVALIDATE); - UpdateWindow(Frame->hWnd); - } - if (Frame->floating) { - if (Frame->ContainerWnd != 0) - RedrawWindow(Frame->ContainerWnd,NULL,NULL,RDW_UPDATENOW|RDW_ALLCHILDREN|RDW_ERASE|RDW_INVALIDATE|RDW_FRAME); - } - return 0; -} - -int CLUIFrameMoveResize(const FRAMEWND *Frame) -{ - //int b; - // we need to show or hide the frame? - if (Frame->visible&&(!Frame->needhide)) { - ShowWindow(Frame->hWnd,SW_SHOW); - ShowWindow(Frame->TitleBar.hwnd,Frame->TitleBar.ShowTitleBar == TRUE?SW_SHOW:SW_HIDE); - } - else { - ShowWindow(Frame->hWnd,SW_HIDE); - ShowWindow(Frame->TitleBar.hwnd,SW_HIDE); - return 0; - } - - // set frame position - SetWindowPos(Frame->hWnd,NULL,Frame->wndSize.left,Frame->wndSize.top, - Frame->wndSize.right-Frame->wndSize.left, - Frame->wndSize.bottom-Frame->wndSize.top,SWP_NOZORDER|SWP_NOREDRAW); - - // set titlebar position - if (Frame->TitleBar.ShowTitleBar) - SetWindowPos(Frame->TitleBar.hwnd,NULL,Frame->wndSize.left,Frame->wndSize.top-TitleBarH-GapBetweenTitlebar, - Frame->wndSize.right-Frame->wndSize.left, - TitleBarH,SWP_NOZORDER|SWP_NOREDRAW ); - - return 0; -} - -BOOLEAN CLUIFramesFitInSize(void) -{ - int sumheight = 0; - int tbh = 0; // title bar height - - int clientfrm = CLUIFramesGetalClientFrame(); - if (clientfrm != -1) - tbh = TitleBarH*btoint(Frames[clientfrm].TitleBar.ShowTitleBar); - - for (int i=0;iContactListHeight-tbh-2) - return FALSE; - } - } - return TRUE; -} - -int CLUIFramesGetMinHeight() -{ - int i,tbh,clientfrm,sumheight = 0; - RECT border; - int allbord = 0; - if (pcli->hwndContactList == NULL) return 0; - lockfrm(); - - // search for alClient frame and get the titlebar's height - tbh = 0; - clientfrm = CLUIFramesGetalClientFrame(); - if (clientfrm != -1) - tbh = TitleBarH*btoint(Frames[clientfrm].TitleBar.ShowTitleBar); - - for (i=0; i < nFramescount; i++) { - if ((Frames[i].align != alClient)&&(Frames[i].visible)&&(!Frames[i].needhide)&&(!Frames[i].floating)) { - RECT wsize; - - GetWindowRect(Frames[i].hWnd,&wsize); - sumheight += (wsize.bottom-wsize.top)+(TitleBarH*btoint(Frames[i].TitleBar.ShowTitleBar))+3; - } - } - ulockfrm(); - GetBorderSize(pcli->hwndContactList,&border); - return (sumheight+border.top+border.bottom+allbord+tbh+3); -} - -int CLUIFramesResize(const RECT newsize) -{ - int sumheight = 9999999,newheight; - int prevframe,prevframebottomline; - int tbh,curfrmtbh; - int drawitems; - int clientfrm; - int i,j; - int sepw = GapBetweenFrames; - SortData *sdarray; - - GapBetweenTitlebar = (int)db_get_dw(NULL,"CLUIFrames","GapBetweenTitleBar",1); - GapBetweenFrames = db_get_dw(NULL,"CLUIFrames","GapBetweenFrames",1); - TitleBarH = db_get_dw(NULL,"CLUIFrames","TitleBarH",DEFAULT_TITLEBAR_HEIGHT); - - if (nFramescount < 1) - return 0; - - newheight = newsize.bottom-newsize.top; - - // search for alClient frame and get the titlebar's height - tbh = 0; - clientfrm = CLUIFramesGetalClientFrame(); - if (clientfrm != -1) - tbh = (TitleBarH+GapBetweenTitlebar)*btoint(Frames[clientfrm].TitleBar.ShowTitleBar); - - for (i=0; i < nFramescount; i++) { - if ( !Frames[i].floating) { - Frames[i].needhide = FALSE; - Frames[i].wndSize.left = 0; - Frames[i].wndSize.right = newsize.right-0; - } - } - - //sorting stuff - sdarray = (SortData*)malloc(sizeof(SortData)*nFramescount); - if (sdarray == NULL){return(-1);} - for (i=0;i(newheight-tbh)&&drawitems>0) { - sumheight = 0; - drawitems = 0; - for (i=0;inewheight-tbh) { - sumheight -= (Frames[i].height)+curfrmtbh+sepw; - Frames[i].needhide = TRUE; - drawitems--; - break; - } - } - } - } - - prevframe = -1; - prevframebottomline = 0; - for (j = 0;jnewheight){ - //prevframebottomline -= Frames[i].height+(curfrmtbh+1); - //Frames[i].needhide = TRUE; - } - } - } - - if (sumheightnewheight) { - //prevframebottomline -= Frames[i].height+(tbh+1); - //Frames[i].needhide = TRUE; - } - break; - } - } - } - - //newheight - prevframebottomline = newheight+sepw; - //prevframe = -1; - for (j = nFramescount-1;j>=0;j--) { - //move all alBottom frames - i = sdarray[j].realpos; - if ((Frames[i].visible)&&(!Frames[i].floating)&&(!Frames[i].needhide)&&(Frames[i].align == alBottom)) { - curfrmtbh = (TitleBarH+GapBetweenTitlebar)*btoint(Frames[i].TitleBar.ShowTitleBar); - - Frames[i].wndSize.bottom = prevframebottomline-sepw; - Frames[i].wndSize.top = Frames[i].wndSize.bottom-Frames[i].height-(Frames[i].UseBorder?2:0); - Frames[i].prevvisframe = prevframe; - prevframe = i; - prevframebottomline = Frames[i].wndSize.top/*-1*/-curfrmtbh; - if (prevframebottomline>newheight) { - - } - } - } - - if (sdarray != NULL) { - free(sdarray); - sdarray = NULL; - } - - for (i=0;ihwndContactList,0); return 0;} - if (lParam&FU_FMPOS) CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,1); - lockfrm(); - int pos = id2pos(wParam); - if (pos < 0 || pos >= nFramescount) { ulockfrm(); return -1;} - if (lParam & FU_TBREDRAW) CLUIFramesForceUpdateTB(&Frames[pos]); - if (lParam & FU_FMREDRAW) CLUIFramesForceUpdateFrame(&Frames[pos]); - ulockfrm(); - - return 0; -} - -int CLUIFramesOnClistResize(WPARAM wParam, LPARAM lParam) -{ - RECT nRect,rcStatus; - int tick,i; - - if (FramesSysNotStarted) return -1; - lockfrm(); - - GetClientRect(pcli->hwndContactList,&nRect); - - rcStatus.top = rcStatus.bottom = 0; - - nRect.bottom -= nRect.top; - nRect.bottom -= (rcStatus.bottom-rcStatus.top); - nRect.right -= nRect.left; - nRect.left = 0; - nRect.top = 0; - ContactListHeight = nRect.bottom; - - tick = GetTickCount(); - - CLUIFramesResize(nRect); - - for (i=0; i < nFramescount; i++) { - CLUIFramesForceUpdateFrame(&Frames[i]); - CLUIFramesForceUpdateTB(&Frames[i]); - } - - //resizing = FALSE; - ulockfrm(); - tick = GetTickCount()-tick; - - if (pcli->hwndContactList != 0) InvalidateRect(pcli->hwndContactList,NULL,TRUE); - if (pcli->hwndContactList != 0) UpdateWindow(pcli->hwndContactList); - - Sleep(0); - - //dont save to database too many times - if (GetTickCount() - LastStoreTick > 1000) { - CLUIFramesStoreAllFrames(); - LastStoreTick = GetTickCount(); - } - return 0; -} - -static HBITMAP hBmpBackground; -static int backgroundBmpUse; -static COLORREF bkColour; -static COLORREF SelBkColour; -boolean AlignCOLLIconToLeft; //will hide frame icon - -int OnFrameTitleBarBackgroundChange(WPARAM wParam, LPARAM lParam) -{ - DBVARIANT dbv; - - AlignCOLLIconToLeft = db_get_b(NULL,"FrameTitleBar","AlignCOLLIconToLeft",0); - - bkColour = db_get_dw(NULL,"FrameTitleBar","BkColour",CLCDEFAULT_BKCOLOUR); - //SelBkColour = db_get_dw(NULL,"FrameTitleBar","SelBkColour",0); - - if (hBmpBackground) {DeleteObject(hBmpBackground); hBmpBackground = NULL;} - if ( db_get_b(NULL,"FrameTitleBar","UseBitmap",CLCDEFAULT_USEBITMAP)) { - if ( !db_get(NULL,"FrameTitleBar","BkBitmap",&dbv)) { - hBmpBackground = (HBITMAP)CallService(MS_UTILS_LOADBITMAP,0,(LPARAM)dbv.pszVal); - mir_free(dbv.pszVal); - } - } - backgroundBmpUse = db_get_w(NULL,"FrameTitleBar","BkBmpUse",CLCDEFAULT_BKBMPUSE); - - CLUIFramesOnClistResize(0,0); - return 0; -} - -void DrawBackGroundTTB(HWND hwnd,HDC mhdc) -{ - HDC hdcMem,hdc; - RECT clRect,*rcPaint; - - int yScroll = 0; - int y; - PAINTSTRUCT paintst = {0}; - HBITMAP hBmpOsb,hOldBmp; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - int grey = 0; - HFONT oFont; - HBRUSH hBrushAlternateGrey = NULL; - - HFONT hFont; - - //InvalidateRect(hwnd,0,FALSE); - - hFont = (HFONT)SendMessage(hwnd,WM_GETFONT,0,0); - - if (mhdc) { - hdc = mhdc; - rcPaint = NULL; - } - else { - hdc = BeginPaint(hwnd,&paintst); - rcPaint = &(paintst.rcPaint); - } - - GetClientRect(hwnd,&clRect); - if (rcPaint == NULL) rcPaint = &clRect; - if (rcPaint->right-rcPaint->left == 0||rcPaint->top-rcPaint->bottom == 0) rcPaint = &clRect; - y = -yScroll; - hdcMem = CreateCompatibleDC(hdc); - hBmpOsb = CreateBitmap(clRect.right,clRect.bottom,1,GetDeviceCaps(hdc,BITSPIXEL),NULL); - hOldBmp = (HBITMAP)SelectObject(hdcMem,hBmpOsb); - oFont = (HFONT)SelectObject(hdcMem,hFont); - SetBkMode(hdcMem,TRANSPARENT); - { - HBRUSH hBrush = CreateSolidBrush(bkColour); - HBRUSH hoBrush = (HBRUSH)SelectObject(hdcMem,hBrush); - FillRect(hdcMem,rcPaint,hBrush); - SelectObject(hdcMem,hoBrush); - DeleteObject(hBrush); - if (hBmpBackground) { - BITMAP bmp; - HDC hdcBmp; - int x,y; - int maxx,maxy; - int destw,desth; - - GetObject(hBmpBackground,sizeof(bmp),&bmp); - hdcBmp = CreateCompatibleDC(hdcMem); - SelectObject(hdcBmp,hBmpBackground); - y = backgroundBmpUse&CLBF_SCROLL?-yScroll:0; - maxx = backgroundBmpUse&CLBF_TILEH?clRect.right:1; - maxy = backgroundBmpUse&CLBF_TILEV?maxy = rcPaint->bottom:y+1; - switch(backgroundBmpUse&CLBM_TYPE) { - case CLB_STRETCH: - if (backgroundBmpUse&CLBF_PROPORTIONAL) { - if (clRect.right*bmp.bmHeighttop-desth) continue; - for (x = 0;xleft,rcPaint->top,rcPaint->right-rcPaint->left,rcPaint->bottom-rcPaint->top,hdcMem,rcPaint->left,rcPaint->top,SRCCOPY); - - SelectObject(hdcMem,hOldBmp); - SelectObject(hdcMem,oFont); - DeleteObject(hBmpOsb); - DeleteDC(hdcMem); - paintst.fErase = FALSE; - //DeleteObject(hFont); - if ( !mhdc) - EndPaint(hwnd,&paintst); -} - -static int DrawTitleBar(HDC dc,RECT rect,int Frameid) -{ - HDC paintDC = dc; - - HDC hdcMem = CreateCompatibleDC(paintDC); - HBITMAP hBmpOsb = CreateBitmap(rect.right,rect.bottom,1,GetDeviceCaps(paintDC,BITSPIXEL),NULL); - HBITMAP hoBmp = (HBITMAP)SelectObject(hdcMem,hBmpOsb); - - HFONT hoTTBFont = (HFONT)SelectObject(hdcMem,TitleBarFont); - SetBkMode(hdcMem,TRANSPARENT); - - HBRUSH hBack = GetSysColorBrush(COLOR_3DFACE); - HBRUSH hoBrush = (HBRUSH)SelectObject(hdcMem,hBack); - - lockfrm(); - - int pos = id2pos(Frameid); - if (pos >= 0 && pos < nFramescount) { - GetClientRect(Frames[pos].TitleBar.hwnd,&Frames[pos].TitleBar.wndSize); - - //set font charset - HFONT hf = (HFONT)GetStockObject(DEFAULT_GUI_FONT); - if (TitleBarLogFont.lfHeight != 0) - hf = CreateFontIndirectA(&TitleBarLogFont); - - HFONT oFont = (HFONT)SelectObject(hdcMem,hf); - - DrawBackGroundTTB(Frames[pos].TitleBar.hwnd,hdcMem); - //hFront = CreateSolidPe (SelBkColour); - //SelectObject(hdcMem,hFront); - SelBkColour = db_get_dw(NULL,"CLUIFrames","FramesTitleBarFontCol",0); - if (SelBkColour) SetTextColor(hdcMem,SelBkColour); - - if ( !AlignCOLLIconToLeft) { - - if (Frames[pos].TitleBar.hicon != NULL) { - //(TitleBarH>>1)-(GetSystemMetrics(SM_CXSMICON)>>1) - DrawIconEx(hdcMem,2,((TitleBarH>>1)-(GetSystemMetrics(SM_CYSMICON)>>1)),Frames[pos].TitleBar.hicon,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL); - TextOut(hdcMem,GetSystemMetrics(SM_CYSMICON)+4,0,Frames[pos].TitleBar.tbname,lstrlen(Frames[pos].TitleBar.tbname)); - } - else - TextOut(hdcMem,2,0,Frames[pos].TitleBar.tbname,lstrlen(Frames[pos].TitleBar.tbname)); - } - else - TextOut(hdcMem,GetSystemMetrics(SM_CXSMICON)+2,0,Frames[pos].TitleBar.tbname,lstrlen(Frames[pos].TitleBar.tbname)); - - if ( !AlignCOLLIconToLeft) - DrawIconEx(hdcMem,Frames[pos].TitleBar.wndSize.right-GetSystemMetrics(SM_CXSMICON)-2,((TitleBarH>>1)-(GetSystemMetrics(SM_CXSMICON)>>1)),Frames[pos].collapsed?LoadSkinnedIcon(SKINICON_OTHER_GROUPOPEN):LoadSkinnedIcon(SKINICON_OTHER_GROUPSHUT),GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL); - else - DrawIconEx(hdcMem,0,((TitleBarH>>1)-(GetSystemMetrics(SM_CXSMICON)>>1)),Frames[pos].collapsed?LoadSkinnedIcon(SKINICON_OTHER_GROUPOPEN):LoadSkinnedIcon(SKINICON_OTHER_GROUPSHUT),GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL); - - DeleteObject(hf); - SelectObject(hdcMem,oFont); - } - ulockfrm(); - - BitBlt(paintDC,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,hdcMem,rect.left,rect.top,SRCCOPY); - - SelectObject(hdcMem,hoBmp); - SelectObject(hdcMem,hoBrush); - SelectObject(hdcMem,hoTTBFont); - DeleteDC(hdcMem); - DeleteObject(hBack); - DeleteObject(hBmpOsb); - return 0; -} - -//for old multiwindow -#define MPCF_CONTEXTFRAMEMENU 3 -POINT ptOld; -short nLeft = 0; -short nTop = 0; - -LRESULT CALLBACK CLUIFrameTitleBarProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - RECT rect; - int Frameid,Framemod,direction; - int xpos,ypos; - - Frameid = (GetWindowLongPtr(hwnd,GWLP_USERDATA)); - memset(&rect,0,sizeof(rect)); - - switch(msg) { - case WM_CREATE: - SendMessage(hwnd,WM_SETFONT,(WPARAM)TitleBarFont,0); - return FALSE; - - case WM_MEASUREITEM: - return CallService(MS_CLIST_MENUMEASUREITEM,wParam,lParam); - - case WM_DRAWITEM: - return CallService(MS_CLIST_MENUDRAWITEM,wParam,lParam); - - case WM_ENABLE: - if (hwnd != 0) InvalidateRect(hwnd,NULL,FALSE); - return 0; - - case WM_COMMAND: - if ( CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(LOWORD(wParam),0), Frameid)) - break; - - if (HIWORD(wParam) == 0) { //mouse events for self created menu - int framepos = id2pos(Frameid); - if (framepos == -1) - break; - - switch(LOWORD(wParam)) { - case frame_menu_lock: - Frames[framepos].Locked = !Frames[framepos].Locked; - break; - case frame_menu_visible: - Frames[framepos].visible = !Frames[framepos].visible; - break; - case frame_menu_showtitlebar: - Frames[framepos].TitleBar.ShowTitleBar = !Frames[framepos].TitleBar.ShowTitleBar; - break; - case frame_menu_floating: - CLUIFrameSetFloat(Frameid,0); - break; - } - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - } - break; - - case WM_RBUTTONDOWN: - { - HMENU hmenu; - POINT pt; - GetCursorPos(&pt); - - if (ServiceExists(MS_CLIST_MENUBUILDFRAMECONTEXT)) - hmenu = (HMENU)CallService(MS_CLIST_MENUBUILDFRAMECONTEXT,Frameid,0); - else { - //legacy menu support - int framepos = id2pos(Frameid); - lockfrm(); - if (framepos == -1){ulockfrm();break;} - hmenu = CreatePopupMenu(); - - AppendMenu(hmenu,MF_STRING|MF_DISABLED|MF_GRAYED,15,Frames[framepos].name); - AppendMenu(hmenu,MF_SEPARATOR,16,_T("")); - - if (Frames[framepos].Locked) - {AppendMenu(hmenu,MF_STRING|MF_CHECKED,frame_menu_lock,TranslateT("Lock frame"));} - else{AppendMenu(hmenu,MF_STRING,frame_menu_lock,TranslateT("Lock frame"));} - - if (Frames[framepos].visible) - {AppendMenu(hmenu,MF_STRING|MF_CHECKED,frame_menu_visible,TranslateT("Visible"));} - else{AppendMenu(hmenu,MF_STRING,frame_menu_visible,TranslateT("Visible"));} - - if (Frames[framepos].TitleBar.ShowTitleBar) - {AppendMenu(hmenu,MF_STRING|MF_CHECKED,frame_menu_showtitlebar,TranslateT("Show title bar"));} - else{AppendMenu(hmenu,MF_STRING,frame_menu_showtitlebar,TranslateT("Show title bar"));} - - if (Frames[framepos].floating) - {AppendMenu(hmenu,MF_STRING|MF_CHECKED,frame_menu_floating,TranslateT("Floating"));} - else{AppendMenu(hmenu,MF_STRING,frame_menu_floating,TranslateT("Floating"));} - - ulockfrm(); - } - - TrackPopupMenu(hmenu,TPM_LEFTALIGN,pt.x,pt.y,0,hwnd,0); - DestroyMenu(hmenu); - } - break; - - case WM_LBUTTONDBLCLK: - Framemod = -1; - lbypos = -1;oldframeheight = -1;ReleaseCapture(); - CallService(MS_CLIST_FRAMES_UCOLLFRAME,Frameid,0); - lbypos = -1;oldframeheight = -1;ReleaseCapture(); - break; - - case WM_LBUTTONUP: - if (GetCapture() != hwnd) - break; - curdragbar = -1;lbypos = -1;oldframeheight = -1;ReleaseCapture(); - break; - - case WM_LBUTTONDOWN: - { - int framepos = id2pos(Frameid); - if (framepos == -1) - break; - - lockfrm(); - if (Frames[framepos].floating) - { - POINT pt; - GetCursorPos(&pt); - Frames[framepos].TitleBar.oldpos = pt; - } - - if (( !(wParam & MK_CONTROL)) && Frames[framepos].Locked && (!(Frames[framepos].floating))) { - if ( db_get_b(NULL,"CLUI","ClientAreaDrag",0)) { - POINT pt; - //pt = nm->pt; - GetCursorPos(&pt); - return SendMessage(GetParent(hwnd), WM_SYSCOMMAND, SC_MOVE|HTCAPTION,MAKELPARAM(pt.x,pt.y)); - } - } - - if (Frames[framepos].floating) { - RECT rc; - GetCursorPos(&ptOld); - //ClientToScreen(hwnd,&ptOld); - GetWindowRect( hwnd, &rc ); - - nLeft = (short)rc.left; - nTop = (short)rc.top; - } - ulockfrm(); - SetCapture(hwnd); - } - break; - - case WM_MOUSEMOVE: - { - POINT pt,pt2; - RECT wndr; - int pos; - - char TBcapt[255]; - - lockfrm(); - pos = id2pos(Frameid); - - if (pos != -1) { - int oldflags; - mir_snprintf(TBcapt, SIZEOF(TBcapt), "%s - h:%d, vis:%d, fl:%d, fl:(%d,%d,%d,%d),or: %d", - Frames[pos].name, Frames[pos].height, Frames[pos].visible, Frames[pos].floating, - Frames[pos].FloatingPos.x, Frames[pos].FloatingPos.y, - Frames[pos].FloatingSize.x, Frames[pos].FloatingSize.y, - Frames[pos].order); - - oldflags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,Frames[pos].id),0); - if ( !(oldflags & F_SHOWTBTIP)) - oldflags |= F_SHOWTBTIP; - } - - ulockfrm(); - - if (wParam & MK_LBUTTON) { - RECT rcMiranda; - RECT rcwnd,rcOverlap; - POINT newpt,ofspt,curpt,newpos; - //if (GetCapture() != hwnd){break;} - //curdragbar = -1;lbypos = -1;oldframeheight = -1;ReleaseCapture(); - lockfrm(); - pos = id2pos(Frameid); - if (Frames[pos].floating) { - - GetCursorPos(&curpt); - rcwnd.bottom = curpt.y+5; - rcwnd.top = curpt.y; - rcwnd.left = curpt.x; - rcwnd.right = curpt.x+5; - - GetWindowRect(pcli->hwndContactList, &rcMiranda ); - //GetWindowRect( Frames[pos].ContainerWnd, &rcwnd ); - //IntersectRect( &rcOverlap, &rcwnd, &rcMiranda ) - if (IsWindowVisible(pcli->hwndContactList) &&IntersectRect( &rcOverlap, &rcwnd, &rcMiranda )) { - int id = Frames[pos].id; - ulockfrm(); - - ofspt.x = 0;ofspt.y = 0; - ClientToScreen(Frames[pos].TitleBar.hwnd,&ofspt); - ofspt.x = curpt.x-ofspt.x;ofspt.y = curpt.y-ofspt.y; - - CLUIFrameSetFloat(id,0); - newpt.x = 0;newpt.y = 0; - ClientToScreen(Frames[pos].TitleBar.hwnd,&newpt); - SetCursorPos(newpt.x+ofspt.x,newpt.y+ofspt.y); - GetCursorPos(&curpt); - lockfrm(); - Frames[pos].TitleBar.oldpos = curpt; - ulockfrm(); - return 0; - } - } - else { - int id = Frames[pos].id; - - GetCursorPos(&curpt); - rcwnd.bottom = curpt.y+5; - rcwnd.top = curpt.y; - rcwnd.left = curpt.x; - rcwnd.right = curpt.x+5; - - GetWindowRect(pcli->hwndContactList, &rcMiranda ); - - if ( !IntersectRect( &rcOverlap, &rcwnd, &rcMiranda )) { - ulockfrm(); - GetCursorPos(&curpt); - GetWindowRect( Frames[pos].hWnd, &rcwnd ); - rcwnd.left = rcwnd.right-rcwnd.left; - rcwnd.top = rcwnd.bottom-rcwnd.top; - newpos.x = curpt.x;newpos.y = curpt.y; - if (curpt.x>=(rcMiranda.right-1)){newpos.x = curpt.x+5;} - if (curpt.x<=(rcMiranda.left+1)){newpos.x = curpt.x-(rcwnd.left)-5;} - - if (curpt.y>=(rcMiranda.bottom-1)){newpos.y = curpt.y+5;} - if (curpt.y<=(rcMiranda.top+1)){newpos.y = curpt.y-(rcwnd.top)-5;} - - - ofspt.x = 0;ofspt.y = 0; - //ClientToScreen(Frames[pos].TitleBar.hwnd,&ofspt); - GetWindowRect(Frames[pos].TitleBar.hwnd,&rcwnd); - ofspt.x = curpt.x-ofspt.x;ofspt.y = curpt.y-ofspt.y; - - Frames[pos].FloatingPos.x = newpos.x; - Frames[pos].FloatingPos.y = newpos.y; - CLUIFrameSetFloat(id,0); - //SetWindowPos(Frames[pos].ContainerWnd,0,newpos.x,newpos.y,0,0,SWP_NOSIZE); - - lockfrm(); - newpt.x = 0;newpt.y = 0; - ClientToScreen(Frames[pos].TitleBar.hwnd,&newpt); - - GetWindowRect( Frames[pos].hWnd, &rcwnd ); - SetCursorPos(newpt.x+(rcwnd.right-rcwnd.left)/2,newpt.y+(rcwnd.bottom-rcwnd.top)/2); - GetCursorPos(&curpt); - - Frames[pos].TitleBar.oldpos = curpt; - ulockfrm(); - - return 0; - } - } - ulockfrm(); - } - - if (wParam & MK_LBUTTON) { - int newh = -1,prevold; - - if (GetCapture() != hwnd){break;} - - lockfrm(); - pos = id2pos(Frameid); - - if (Frames[pos].floating) { - GetCursorPos(&pt); - if ((Frames[pos].TitleBar.oldpos.x != pt.x)||(Frames[pos].TitleBar.oldpos.y != pt.y)) { - - pt2 = pt; - ScreenToClient(hwnd,&pt2); - GetWindowRect(Frames[pos].ContainerWnd,&wndr); - - int dX,dY; - POINT ptNew; - - ptNew.x = pt.x; - ptNew.y = pt.y; - //ClientToScreen( hwnd, &ptNew ); - - dX = ptNew.x - ptOld.x; - dY = ptNew.y - ptOld.y; - - nLeft += (short)dX; - nTop += (short)dY; - - if ( !(wParam & MK_CONTROL)) - PositionThumb( &Frames[pos], nLeft, nTop ); - else - SetWindowPos( Frames[pos].ContainerWnd, - HWND_TOPMOST, - nLeft, - nTop, - 0, - 0, - SWP_NOSIZE | SWP_NOZORDER ); - - ptOld = ptNew; - - pt.x = nLeft; - pt.y = nTop; - Frames[pos].TitleBar.oldpos = pt; - } - - ulockfrm(); - return 0; - } - - if (Frames[pos].prevvisframe != -1) { - GetCursorPos(&pt); - - if ((Frames[pos].TitleBar.oldpos.x == pt.x)&&(Frames[pos].TitleBar.oldpos.y == pt.y)) { - ulockfrm(); - break; - } - - ypos = rect.top+pt.y;xpos = rect.left+pt.x; - Framemod = -1; - - if (Frames[pos].align == alBottom) { - direction = -1; - Framemod = pos; - } - else { - direction = 1; - Framemod = Frames[pos].prevvisframe; - } - if (Frames[Framemod].Locked) {ulockfrm();break;} - if (curdragbar != -1&&curdragbar != pos) {ulockfrm();break;} - - if (lbypos == -1) { - curdragbar = pos; - lbypos = ypos; - oldframeheight = Frames[Framemod].height; - SetCapture(hwnd); - {ulockfrm();break;} - } - - newh = oldframeheight+direction*(ypos-lbypos); - if (newh > 0) { - prevold = Frames[Framemod].height; - Frames[Framemod].height = newh; - if ( !CLUIFramesFitInSize()) { - Frames[Framemod].height = prevold; - ulockfrm(); - return TRUE; - } - Frames[Framemod].height = newh; - if (newh > 3) - Frames[Framemod].collapsed = TRUE; - } - Frames[pos].TitleBar.oldpos = pt; - } - ulockfrm(); - if (newh > 0) - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList, 0); - break; - } - curdragbar = -1;lbypos = -1;oldframeheight = -1;ReleaseCapture(); - } - break; - - case WM_PRINTCLIENT: - if (lParam & PRF_CLIENT) { - GetClientRect(hwnd,&rect); - DrawTitleBar((HDC)wParam,rect,Frameid); - } - - case WM_PAINT: - { - HDC paintDC; - PAINTSTRUCT paintStruct; - - //GetClientRect(hwnd,&rect); - paintDC = BeginPaint(hwnd, &paintStruct); - rect = paintStruct.rcPaint; - DrawTitleBar(paintDC,rect,Frameid); - EndPaint(hwnd, &paintStruct); - } - return 0; - - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - } - return TRUE; -} - -int CLUIFrameResizeFloatingFrame(int framepos) -{ - int width,height; - RECT rect; - - if ( !Frames[framepos].floating){return 0;} - if (Frames[framepos].ContainerWnd == 0){return 0;} - GetClientRect(Frames[framepos].ContainerWnd,&rect); - - width = rect.right-rect.left; - height = rect.bottom-rect.top; - - Frames[framepos].visible?ShowWindow(Frames[framepos].ContainerWnd,SW_SHOW):ShowWindow(Frames[framepos].ContainerWnd,SW_HIDE); - - if (Frames[framepos].TitleBar.ShowTitleBar) { - ShowWindow(Frames[framepos].TitleBar.hwnd,SW_SHOW); - Frames[framepos].height = height-DEFAULT_TITLEBAR_HEIGHT; - - SetWindowPos(Frames[framepos].TitleBar.hwnd,HWND_TOP,0,0,width,DEFAULT_TITLEBAR_HEIGHT,SWP_SHOWWINDOW|SWP_DRAWFRAME); - SetWindowPos(Frames[framepos].hWnd,HWND_TOP,0,DEFAULT_TITLEBAR_HEIGHT,width,height-DEFAULT_TITLEBAR_HEIGHT,SWP_SHOWWINDOW); - } - else { - Frames[framepos].height = height; - ShowWindow(Frames[framepos].TitleBar.hwnd,SW_HIDE); - SetWindowPos(Frames[framepos].hWnd,HWND_TOP,0,0,width,height,SWP_SHOWWINDOW); - } - - if (Frames[framepos].ContainerWnd != 0) - UpdateWindow(Frames[framepos].ContainerWnd); - - GetWindowRect(Frames[framepos].hWnd,&Frames[framepos].wndSize); - return 0; -} - -static int CLUIFrameOnMainMenuBuild(WPARAM wParam, LPARAM lParam) -{ - CLUIFramesLoadMainMenu(); - return 0; -} - -LRESULT CALLBACK CLUIFrameContainerWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - RECT rect = { 0 }; - int Frameid = (GetWindowLongPtr(hwnd,GWLP_USERDATA)); - - switch(msg) { - case WM_CREATE: - { - lockfrm(); - int framepos = id2pos(Frameid); - ulockfrm(); - } - return 0; - - case WM_GETMINMAXINFO: - { - int framepos; - MINMAXINFO minmax; - - lockfrm(); - framepos = id2pos(Frameid); - if (framepos<0||framepos>=nFramescount){ulockfrm();break;} - if ( !Frames[framepos].minmaxenabled){ulockfrm();break;} - if (Frames[framepos].ContainerWnd == 0){ulockfrm();break;} - - if (Frames[framepos].Locked) { - RECT rct; - - GetWindowRect(hwnd,&rct); - ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = rct.right-rct.left; - ((LPMINMAXINFO)lParam)->ptMinTrackSize.y = rct.bottom-rct.top; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.x = rct.right-rct.left; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.y = rct.bottom-rct.top; - } - - memset(&minmax,0,sizeof(minmax)); - if (SendMessage(Frames[framepos].hWnd,WM_GETMINMAXINFO,0,(LPARAM)&minmax) == 0) { - RECT border; - int tbh = TitleBarH*btoint(Frames[framepos].TitleBar.ShowTitleBar); - GetBorderSize(hwnd,&border); - if (minmax.ptMaxTrackSize.x != 0&&minmax.ptMaxTrackSize.y != 0){ - ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = minmax.ptMinTrackSize.x; - ((LPMINMAXINFO)lParam)->ptMinTrackSize.y = minmax.ptMinTrackSize.y; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.x = minmax.ptMaxTrackSize.x+border.left+border.right; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.y = minmax.ptMaxTrackSize.y+tbh+border.top+border.bottom; - } - } - else { - ulockfrm(); - return(DefWindowProc(hwnd, msg, wParam, lParam)); - } - - ulockfrm(); - } - - case WM_MOVE: - { - lockfrm(); - int framepos = id2pos(Frameid); - - if (framepos<0||framepos>=nFramescount){ulockfrm();break;} - if (Frames[framepos].ContainerWnd == 0){ulockfrm();return 0;} - - RECT rect; - GetWindowRect(Frames[framepos].ContainerWnd,&rect); - Frames[framepos].FloatingPos.x = rect.left; - Frames[framepos].FloatingPos.y = rect.top; - Frames[framepos].FloatingSize.x = rect.right-rect.left; - Frames[framepos].FloatingSize.y = rect.bottom-rect.top; - - CLUIFramesStoreFrameSettings(framepos); - ulockfrm(); - } - return 0; - - case WM_SIZE: - { - lockfrm(); - int framepos = id2pos(Frameid); - - if (framepos<0||framepos>=nFramescount){ulockfrm();break;} - if (Frames[framepos].ContainerWnd == 0){ulockfrm();return 0;} - CLUIFrameResizeFloatingFrame(framepos); - - RECT rect; - GetWindowRect(Frames[framepos].ContainerWnd,&rect); - Frames[framepos].FloatingPos.x = rect.left; - Frames[framepos].FloatingPos.y = rect.top; - Frames[framepos].FloatingSize.x = rect.right-rect.left; - Frames[framepos].FloatingSize.y = rect.bottom-rect.top; - - CLUIFramesStoreFrameSettings(framepos); - ulockfrm(); - } - return 0; - - case WM_CLOSE: - DestroyWindow(hwnd); - break; - - case WM_DESTROY: - return 0; - } - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -static HWND CreateContainerWindow(HWND parent,int x,int y,int width,int height) -{ - return(CreateWindowA("FramesContainer","aaaa",WS_POPUP|WS_THICKFRAME,x,y,width,height,parent,0,g_hInst,0)); -} - -INT_PTR CLUIFrameSetFloat(WPARAM wParam, LPARAM lParam) -{ - HWND hwndtmp, hwndtooltiptmp; - FRAMEWND *frame; - int pos; - - lockfrm(); - - pos = id2pos(wParam); - if (pos < 0 || pos > nFramescount) { - ulockfrm(); - return 0; - } - - frame = &Frames[pos]; - - //parent = GetParent(Frames[wParam].hWnd); - if (frame->floating) { - SetParent(frame->hWnd,pcli->hwndContactList); - SetParent(frame->TitleBar.hwnd,pcli->hwndContactList); - frame->floating = FALSE; - DestroyWindow(frame->ContainerWnd); - frame->ContainerWnd = NULL; - } - else { - RECT recttb,rectw,border; - LONG_PTR temp; - int neww,newh; - BOOLEAN locked; - - frame->oldstyles = GetWindowLongPtr(frame->hWnd,GWL_STYLE); - frame->TitleBar.oldstyles = GetWindowLongPtr(frame->TitleBar.hwnd,GWL_STYLE); - locked = frame->Locked; - frame->Locked = FALSE; - frame->minmaxenabled = FALSE; - - GetWindowRect(frame->hWnd,&rectw); - GetWindowRect(frame->TitleBar.hwnd,&recttb); - if ( !frame->TitleBar.ShowTitleBar) - recttb.top = recttb.bottom = recttb.left = recttb.right = 0; - - frame->ContainerWnd = CreateContainerWindow(pcli->hwndContactList,frame->FloatingPos.x,frame->FloatingPos.y,10,10); - - SetParent(frame->hWnd,frame->ContainerWnd); - SetParent(frame->TitleBar.hwnd,frame->ContainerWnd); - - GetBorderSize(frame->ContainerWnd,&border); - - SetWindowLongPtr(frame->ContainerWnd, GWLP_USERDATA, frame->id); - if ((lParam == 1)) { - if ((frame->FloatingPos.x != 0)&&(frame->FloatingPos.y != 0)) { - if (frame->FloatingPos.x<20){frame->FloatingPos.x = 40;} - if (frame->FloatingPos.y<20){frame->FloatingPos.y = 40;} - - SetWindowPos(frame->ContainerWnd,HWND_TOPMOST,frame->FloatingPos.x,frame->FloatingPos.y,frame->FloatingSize.x,frame->FloatingSize.y,SWP_HIDEWINDOW); - } - else SetWindowPos(frame->ContainerWnd,HWND_TOPMOST,120,120,140,140,SWP_HIDEWINDOW); - } - else { - neww = rectw.right-rectw.left+border.left+border.right; - newh = (rectw.bottom-rectw.top)+(recttb.bottom-recttb.top)+border.top+border.bottom; - if (neww<20){neww = 40;} - if (newh<20){newh = 40;} - if (frame->FloatingPos.x<20){frame->FloatingPos.x = 40;} - if (frame->FloatingPos.y<20){frame->FloatingPos.y = 40;} - - SetWindowPos(frame->ContainerWnd,HWND_TOPMOST,frame->FloatingPos.x,frame->FloatingPos.y,neww,newh,SWP_HIDEWINDOW); - } - - SetWindowText(frame->ContainerWnd,frame->TitleBar.tbname); - - temp = GetWindowLongPtr(frame->ContainerWnd,GWL_EXSTYLE); - temp |= WS_EX_TOOLWINDOW | WS_EX_TOPMOST ; - SetWindowLongPtr(frame->ContainerWnd,GWL_EXSTYLE,temp); - - frame->floating = TRUE; - frame->Locked = locked; - } - - CLUIFramesStoreFrameSettings(pos); - frame->minmaxenabled = TRUE; - hwndtooltiptmp = frame->TitleBar.hwndTip; - - hwndtmp = frame->ContainerWnd; - ulockfrm(); - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList, 0); - SendMessage(hwndtmp,WM_SIZE,0,0); - - SetWindowPos(hwndtooltiptmp, HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE | SWP_NOSIZE ); - return 0; -} - -static int CLUIFrameOnFontChange(WPARAM wParam, LPARAM lParam) -{ - FontID fid = {0}; - fid.cbSize = sizeof(fid); - memset(&TitleBarLogFont,0,sizeof(TitleBarLogFont)); - - strcpy(fid.group,LPGEN("Frames")); - strcpy(fid.name,LPGEN("TitleBarFont")); - strcpy(fid.dbSettingsGroup,"CLUIFrames"); - strcpy(fid.prefix,"FramesTitleBarFont"); - - CallService(MS_FONT_GET,(WPARAM)&fid,(LPARAM)&TitleBarLogFont); - CLUIFramesOnClistResize(0,0); - return 0; -} - -static void CLUIRegisterFonts() -{ - FontID fid = {0}; - fid.cbSize = sizeof(fid); - strcpy(fid.group, LPGEN("Frames")); - strcpy(fid.name, LPGEN("TitleBarFont")); - strcpy(fid.dbSettingsGroup, "CLUIFrames"); - strcpy(fid.prefix, "FramesTitleBarFont"); - FontRegister(&fid); - - CLUIFrameOnFontChange(0,0); - - HookEvent(ME_FONT_RELOAD,CLUIFrameOnFontChange); -} - -static int CLUIFrameOnModulesLoad(WPARAM wParam, LPARAM lParam) -{ - CLUIFramesLoadMainMenu(); - CLUIFramesCreateMenuForFrame(-1,-1,000010000,Menu_AddContextFrameMenuItem); - CLUIRegisterFonts(); - return 0; -} - -static int CLUIFrameOnModulesUnload(WPARAM wParam, LPARAM lParam) -{ - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIVisible, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMITitle, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMITBVisible, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMILock, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIColl, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIFloating, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIAlignRoot, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIAlignTop, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIAlignClient, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIAlignBottom, 0 ); - CallService(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, ( LPARAM )contMIBorder, 0 ); - return 0; -} - -int LoadCLUIFramesModule(void) -{ - WNDCLASS wndclass; - wndclass.style = CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW ; - wndclass.lpfnWndProc = CLUIFrameTitleBarProc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = 0; - wndclass.hInstance = g_hInst; - wndclass.hIcon = NULL; - wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); - wndclass.hbrBackground = NULL; - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = CLUIFrameTitleBarClassName; - RegisterClass(&wndclass); - - //container helper - WNDCLASS cntclass; - cntclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW | CS_DROPSHADOW; - cntclass.lpfnWndProc = CLUIFrameContainerWndProc; - cntclass.cbClsExtra = 0; - cntclass.cbWndExtra = 0; - cntclass.hInstance = g_hInst; - cntclass.hIcon = NULL; - cntclass.hCursor = LoadCursor(NULL, IDC_ARROW); - cntclass.hbrBackground = NULL; - cntclass.lpszMenuName = NULL; - cntclass.lpszClassName = _T("FramesContainer"); - RegisterClass(&cntclass); - //end container helper - - GapBetweenFrames = db_get_dw(NULL,"CLUIFrames","GapBetweenFrames",1); - - nFramescount = 0; - InitializeCriticalSection(&csFrameHook); - InitFramesMenus(); - - HookEvent(ME_SYSTEM_MODULESLOADED,CLUIFrameOnModulesLoad); - HookEvent(ME_CLIST_PREBUILDFRAMEMENU,CLUIFramesModifyContextMenuForFrame); - HookEvent(ME_CLIST_PREBUILDMAINMENU,CLUIFrameOnMainMenuBuild); - - CreateServiceFunction(MS_CLIST_FRAMES_ADDFRAME,CLUIFramesAddFrame); - CreateServiceFunction(MS_CLIST_FRAMES_REMOVEFRAME,CLUIFramesRemoveFrame); - - CreateServiceFunction(MS_CLIST_FRAMES_SETFRAMEOPTIONS,CLUIFramesSetFrameOptions); - CreateServiceFunction(MS_CLIST_FRAMES_GETFRAMEOPTIONS,CLUIFramesGetFrameOptions); - CreateServiceFunction(MS_CLIST_FRAMES_UPDATEFRAME,CLUIFramesUpdateFrame); - - CreateServiceFunction(MS_CLIST_FRAMES_SHFRAMETITLEBAR,CLUIFramesShowHideFrameTitleBar); - CreateServiceFunction(MS_CLIST_FRAMES_SHOWALLFRAMESTB,CLUIFramesShowAllTitleBars); - CreateServiceFunction(MS_CLIST_FRAMES_HIDEALLFRAMESTB,CLUIFramesHideAllTitleBars); - CreateServiceFunction(MS_CLIST_FRAMES_SHFRAME,CLUIFramesShowHideFrame); - CreateServiceFunction(MS_CLIST_FRAMES_SHOWALLFRAMES,CLUIFramesShowAll); - - CreateServiceFunction(MS_CLIST_FRAMES_ULFRAME,CLUIFramesLockUnlockFrame); - CreateServiceFunction(MS_CLIST_FRAMES_UCOLLFRAME,CLUIFramesCollapseUnCollapseFrame); - CreateServiceFunction(MS_CLIST_FRAMES_SETUNBORDER,CLUIFramesSetUnSetBorder); - - CreateServiceFunction(CLUIFRAMESSETALIGN,CLUIFramesSetAlign); - CreateServiceFunction(CLUIFRAMESMOVEUPDOWN,CLUIFramesMoveUpDown); - - CreateServiceFunction(CLUIFRAMESSETALIGNALTOP,CLUIFramesSetAlignalTop); - CreateServiceFunction(CLUIFRAMESSETALIGNALCLIENT,CLUIFramesSetAlignalClient); - CreateServiceFunction(CLUIFRAMESSETALIGNALBOTTOM,CLUIFramesSetAlignalBottom); - - CreateServiceFunction("Set_Floating",CLUIFrameSetFloat); - hWndExplorerToolBar = FindWindowExA(0,0,"Shell_TrayWnd",NULL); - OnFrameTitleBarBackgroundChange(0,0); - FramesSysNotStarted = FALSE; - HookEvent(ME_SYSTEM_PRESHUTDOWN, CLUIFrameOnModulesUnload); - return 0; -} - -int UnLoadCLUIFramesModule(void) -{ - FramesSysNotStarted = TRUE; - - CLUIFramesOnClistResize((WPARAM)pcli->hwndContactList,0); - CLUIFramesStoreAllFrames(); - lockfrm(); - for (int i=0; i < nFramescount; i++) { - DestroyWindow(Frames[i].hWnd); - Frames[i].hWnd = (HWND)-1; - DestroyWindow(Frames[i].TitleBar.hwnd); - Frames[i].TitleBar.hwnd = (HWND)-1; - DestroyWindow(Frames[i].ContainerWnd); - Frames[i].ContainerWnd = (HWND)-1; - DestroyMenu(Frames[i].TitleBar.hmenu); - - mir_free(Frames[i].name); - mir_free(Frames[i].TitleBar.tbname); - mir_free(Frames[i].TitleBar.tooltip); - } - - free(Frames); - Frames = NULL; - nFramescount = 0; - UnregisterClass(CLUIFrameTitleBarClassName,g_hInst); - DeleteObject(TitleBarFont); - ulockfrm(); - DeleteCriticalSection(&csFrameHook); - return 0; -} diff --git a/plugins/Clist_mw/src/CLUIFrames/cluiframes.h b/plugins/Clist_mw/src/CLUIFrames/cluiframes.h deleted file mode 100644 index b38975ea8f..0000000000 --- a/plugins/Clist_mw/src/CLUIFrames/cluiframes.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -Miranda ICQ: the free icq client for MS Windows -Copyright (C) 2000-2 Richard Hughes, Roland Rabien & Tristan Van de Vreede - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#pragma once - -#ifndef _CLUIFRAMES_H_ -#define _CLUIFRAMES_H_ - -int LoadCLUIFramesModule(void); -int UnLoadCLUIFramesModule(void); -int CLUIFramesGetMinHeight(); -int CLUIFramesOnClistResize(WPARAM wParam, LPARAM lParam); - -typedef struct tagProtocolData { - char *RealName; - int protopos; - boolean show; -} ProtocolData; - -typedef struct -{ - int order; - int realpos; -} SortData; - - - - -//============ -#define CLUIFRAMESSETALIGN "CLUIFramesSetAlign" - -#define CLUIFRAMESSETALIGNALTOP "CLUIFramesSetAlignalTop" -#define CLUIFRAMESSETALIGNALCLIENT "CLUIFramesSetAlignalClient" -#define CLUIFRAMESSETALIGNALBOTTOM "CLUIFramesSetAlignalBottom" - -#define CLUIFRAMESMOVEUPDOWN "CLUIFramesMoveUpDown" - -struct FrameMenuHandles -{ - HGENMENU MainMenuItem; - HGENMENU MIVisible, MITitle, MITBVisible, MILock, MIColl, MIFloating, MIAlignRoot; - HGENMENU MIAlignTop, MIAlignClient, MIAlignBottom, MIBorder; -}; - -struct FrameTitleBar -{ - HWND hwnd; - HWND TitleBarbutt; - HWND hwndTip; - - LPTSTR tbname; - LPTSTR tooltip; - HMENU hmenu; - HICON hicon; - - BOOLEAN ShowTitleBar; - BOOLEAN ShowTitleBarTip; - COLORREF BackColour; - int oldstyles; - POINT oldpos; - RECT wndSize; -}; - -struct DockOpt -{ - HWND hwndLeft; - HWND hwndRight; -}; - -struct FRAMEWND -{ - int id; - HWND hWnd; - RECT wndSize; - LPTSTR name; - int align; - int height; - int dwFlags; - BOOLEAN Locked; - BOOLEAN visible; - BOOLEAN needhide; - BOOLEAN collapsed; - int prevvisframe; - int HeightWhenCollapsed; - FrameTitleBar TitleBar; - FrameMenuHandles MenuHandles; - int oldstyles; - BOOLEAN floating; - HWND ContainerWnd; - POINT FloatingPos; - POINT FloatingSize; - BOOLEAN minmaxenabled; - BOOLEAN UseBorder; - int order; - DockOpt dockOpt; -}; - -#define OFFSET_PROTOPOS 200 -#define OFFSET_VISIBLE 400 - -#define CLUIFrameTitleBarClassName _T("CLUIFrameTitleBar") -#define CLUIFrameModule "CLUIFrames" - -#endif diff --git a/plugins/Clist_mw/src/CLUIFrames/framesmenu.cpp b/plugins/Clist_mw/src/CLUIFrames/framesmenu.cpp deleted file mode 100644 index d414bdc2f2..0000000000 --- a/plugins/Clist_mw/src/CLUIFrames/framesmenu.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "../commonheaders.h" - -//========================== Frames -HANDLE hFrameMenuObject; -static HANDLE hPreBuildFrameMenuEvent; - -//contactmenu exec param(ownerdata) -//also used in checkservice -typedef struct{ - char *szServiceName; - int Frameid; - INT_PTR param1; -} FrameMenuExecParam, *lpFrameMenuExecParam; - -INT_PTR FreeOwnerDataFrameMenu(WPARAM wParam, LPARAM lParam) -{ - lpFrameMenuExecParam cmep = (lpFrameMenuExecParam)lParam; - if (cmep != NULL){ - mir_free(cmep->szServiceName); - mir_free(cmep); - } - return 0; -} - -static INT_PTR AddContextFrameMenuItem(WPARAM wParam, LPARAM lParam) -{ - CLISTMENUITEM *mi = (CLISTMENUITEM *)lParam; - - TMO_MenuItem tmi; - if (!pcli->pfnConvertMenu(mi, &tmi)) - return NULL; - - tmi.root = (mi->flags & CMIF_ROOTHANDLE) ? mi->hParentMenu : NULL; - - lpFrameMenuExecParam fmep = (lpFrameMenuExecParam)mir_alloc(sizeof(FrameMenuExecParam)); - if (fmep == NULL) - return 0; - - fmep->szServiceName = mir_strdup(mi->pszService); - fmep->Frameid = mi->popupPosition; - fmep->param1 = (INT_PTR)mi->pszContactOwner; - tmi.ownerdata = fmep; - - return CallService(MO_ADDNEWMENUITEM, (WPARAM)hFrameMenuObject, (LPARAM)&tmi); -} - -static INT_PTR RemoveContextFrameMenuItem(WPARAM wParam, LPARAM lParam) -{ - CallService(MO_REMOVEMENUITEM,wParam,0); - return 0; -} - -//called with: -//wparam - ownerdata -//lparam - lparam from winproc -INT_PTR FrameMenuExecService(WPARAM wParam, LPARAM lParam) -{ - lpFrameMenuExecParam fmep = (lpFrameMenuExecParam)wParam; - if (fmep == NULL) - return -1; - - CallService(fmep->szServiceName, lParam, fmep->param1); - return 0; -} - -//true - ok,false ignore -INT_PTR FrameMenuCheckService(WPARAM wParam, LPARAM lParam) -{ - PCheckProcParam pcpp = (PCheckProcParam)wParam; - if (pcpp == NULL) - return FALSE; - - TMO_MenuItem mi; - if (CallService(MO_GETMENUITEM, (WPARAM)pcpp->MenuItemHandle, (LPARAM)&mi) == 0) { - lpFrameMenuExecParam fmep = (lpFrameMenuExecParam)mi.ownerdata; - if (fmep != NULL) { - //pcpp->wParam - frameid - if (((WPARAM)fmep->Frameid == pcpp->wParam) || fmep->Frameid == -1) - return TRUE; - } - } - return FALSE; -} - -static INT_PTR ContextFrameMenuNotify(WPARAM wParam, LPARAM lParam) -{ - NotifyEventHooks(hPreBuildFrameMenuEvent, wParam, lParam); - return 0; -} - -static INT_PTR BuildContextFrameMenu(WPARAM wParam, LPARAM lParam) -{ - ListParam param = {0}; - param.MenuObjectHandle = hFrameMenuObject; - param.wParam = wParam; - param.lParam = lParam; - - HMENU hMenu = CreatePopupMenu(); - ContextFrameMenuNotify(wParam, -1); - CallService(MO_BUILDMENU, (WPARAM)hMenu, (LPARAM)¶m); - return (INT_PTR)hMenu; -} - -//========================== Frames end - -int InitFramesMenus(void) -{ - CreateServiceFunction("FrameMenuExecService", FrameMenuExecService); - CreateServiceFunction("FrameMenuCheckService", FrameMenuCheckService); - CreateServiceFunction("FrameMenuFreeService", FreeOwnerDataFrameMenu); - - CreateServiceFunction(MS_CLIST_REMOVECONTEXTFRAMEMENUITEM, RemoveContextFrameMenuItem); - CreateServiceFunction("CList/AddContextFrameMenuItem", AddContextFrameMenuItem); - CreateServiceFunction(MS_CLIST_MENUBUILDFRAMECONTEXT, BuildContextFrameMenu); - CreateServiceFunction(MS_CLIST_FRAMEMENUNOTIFY, ContextFrameMenuNotify); - hPreBuildFrameMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDFRAMEMENU); - - // frame menu object - hFrameMenuObject = MO_CreateMenuObject("FrameMenu", LPGEN("Frame menu"), "FrameMenuCheckService", "FrameMenuExecService"); - MO_SetMenuObjectParam(hFrameMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "FrameMenuFreeService"); - return 0; -} diff --git a/plugins/Clist_mw/src/CLUIFrames/statusbar.cpp b/plugins/Clist_mw/src/CLUIFrames/statusbar.cpp deleted file mode 100644 index 9df66c7368..0000000000 --- a/plugins/Clist_mw/src/CLUIFrames/statusbar.cpp +++ /dev/null @@ -1,497 +0,0 @@ -#include "../commonheaders.h" - -extern HINSTANCE g_hInst; -HANDLE hStatusBarShowToolTipEvent,hStatusBarHideToolTipEvent; -boolean canloadstatusbar = FALSE; -HWND helperhwnd = 0; -HANDLE hFrameHelperStatusBar; - -void CluiProtocolStatusChanged(int parStatus, const char* szProto); - -INT_PTR GetConnectingIconService (WPARAM wParam, LPARAM lParam); - -int RecreateStatusBar(HWND); -int UseOwnerDrawStatusBar; - -#define TM_STATUSBAR 23435234 -#define TM_STATUSBARHIDE 23435235 -boolean tooltipshoing; -WNDPROC OldWindowProc = NULL; - - -POINT lastpnt; -RECT OldRc = {0}; -static HBITMAP hBmpBackground; -static int backgroundBmpUse; -static COLORREF bkColour; -extern BYTE showOpts; -int extraspace; - -int OnStatusBarBackgroundChange() -{ - showOpts = db_get_b(NULL,"CLUI","SBarShow",1); - bkColour = db_get_dw(NULL,"StatusBar","BkColour",CLCDEFAULT_BKCOLOUR); - if (hBmpBackground) - DeleteObject(hBmpBackground), hBmpBackground = NULL; - - if ( db_get_b(NULL,"StatusBar","UseBitmap",CLCDEFAULT_USEBITMAP)) { - DBVARIANT dbv; - if ( !db_get_ts(NULL, "StatusBar", "BkBitmap", &dbv)) { - hBmpBackground = (HBITMAP)CallService(MS_UTILS_LOADBITMAPT, 0, (LPARAM)dbv.ptszVal); - db_free(&dbv); - } - } - - backgroundBmpUse = db_get_w(NULL,"StatusBar","BkBmpUse",CLCDEFAULT_BKBMPUSE); - extraspace = db_get_dw(NULL,"StatusBar","BkExtraSpace",0); - - RecreateStatusBar(pcli->hwndContactList); - if (pcli->hwndStatus) InvalidateRect(pcli->hwndStatus,NULL,TRUE); - return 0; -} - - -void DrawDataForStatusBar(LPDRAWITEMSTRUCT dis) -{ - ProtocolData *PD = (ProtocolData *)dis->itemData; - SIZE textSize; - boolean NeedDestroy = FALSE; - - if (PD == NULL || dis->hDC == NULL) - return; - - //clip it - HRGN hrgn = CreateRectRgn(dis->rcItem.left, dis->rcItem.top, dis->rcItem.right, dis->rcItem.bottom); - SelectClipRgn(dis->hDC, hrgn); - - char *szProto = PD->RealName; - int status = CallProtoService(szProto,PS_GETSTATUS,0,0); - SetBkMode(dis->hDC,TRANSPARENT); - int x = dis->rcItem.left+extraspace; - - if (showOpts & 1) { - HICON hIcon; - if ( db_get_b(NULL, "CLUI", "UseConnectingIcon", 1) == 1 && status < ID_STATUS_OFFLINE) { - hIcon = (HICON)GetConnectingIconService((WPARAM)szProto, 0); - if (hIcon) - NeedDestroy = TRUE; - else - hIcon = LoadSkinnedProtoIcon(szProto,status); - } - else hIcon = LoadSkinnedProtoIcon(szProto,status); - - DrawIconEx(dis->hDC,x,(dis->rcItem.top+dis->rcItem.bottom-GetSystemMetrics(SM_CYSMICON))>>1,hIcon,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL); - if (NeedDestroy) DestroyIcon(hIcon); - x += GetSystemMetrics(SM_CXSMICON)+2; - } - else x += 2; - - if (showOpts & 2) { - PROTOACCOUNT *pa = ProtoGetAccount(szProto); - TCHAR szName[64]; - mir_sntprintf(szName, SIZEOF(szName), _T("%s%s"), pa->tszAccountName, showOpts&4 ? _T(" ") : _T("")); - GetTextExtentPoint32(dis->hDC, szName, (int)_tcslen(szName), &textSize); - - TextOut(dis->hDC,x,(dis->rcItem.top+dis->rcItem.bottom-textSize.cy)>>1,szName,lstrlen(szName)); - x += textSize.cx; - } - - if (showOpts & 4) { - TCHAR *szStatus = pcli->pfnGetStatusModeDescription(status, 0); - if ( !szStatus) - szStatus = _T(""); - GetTextExtentPoint32(dis->hDC,szStatus,lstrlen(szStatus),&textSize); - TextOut(dis->hDC,x,(dis->rcItem.top+dis->rcItem.bottom-textSize.cy)>>1,szStatus,lstrlen(szStatus)); - } - SelectClipRgn(dis->hDC, NULL); - DeleteObject(hrgn); -} - -void DrawBackGround(HWND hwnd,HDC mhdc) -{ - HDC hdcMem,hdc; - RECT clRect,*rcPaint; - - int yScroll = 0; - int y; - PAINTSTRUCT paintst = {0}; - HBITMAP hBmpOsb,holdbmp; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - int grey = 0; - HFONT oFont; - HBRUSH hBrushAlternateGrey = NULL; - - HFONT hFont = (HFONT)SendMessage(hwnd,WM_GETFONT,0,0); - if (mhdc) { - hdc = mhdc; - rcPaint = NULL; - } - else { - hdc = BeginPaint(hwnd,&paintst); - rcPaint = &(paintst.rcPaint); - } - - GetClientRect(hwnd,&clRect); - if (rcPaint == NULL) rcPaint = &clRect; - if (rcPaint->right-rcPaint->left == 0||rcPaint->top-rcPaint->bottom == 0) rcPaint = &clRect; - y = -yScroll; - hdcMem = CreateCompatibleDC(hdc); - hBmpOsb = CreateBitmap(clRect.right,clRect.bottom,1,GetDeviceCaps(hdc,BITSPIXEL),NULL); - holdbmp = (HBITMAP)SelectObject(hdcMem,hBmpOsb); - oFont = (HFONT)SelectObject(hdcMem,hFont); - SetBkMode(hdcMem,TRANSPARENT); - { - HBRUSH hBrush = CreateSolidBrush(bkColour); - HBRUSH hoBrush = (HBRUSH)SelectObject(hdcMem,hBrush); - FillRect(hdcMem,rcPaint,hBrush); - SelectObject(hdcMem,hoBrush); - DeleteObject(hBrush); - if (hBmpBackground) { - BITMAP bmp; - int x,y; - int maxx,maxy; - int destw,desth; - - GetObject(hBmpBackground,sizeof(bmp),&bmp); - HDC hdcBmp = CreateCompatibleDC(hdcMem); - HDC holdbackbmp = (HDC)SelectObject(hdcBmp,hBmpBackground); - y = backgroundBmpUse&CLBF_SCROLL?-yScroll:0; - maxx = backgroundBmpUse&CLBF_TILEH?clRect.right:1; - maxy = backgroundBmpUse&CLBF_TILEV?maxy = rcPaint->bottom:y+1; - switch(backgroundBmpUse&CLBM_TYPE) { - case CLB_STRETCH: - if (backgroundBmpUse&CLBF_PROPORTIONAL) { - if (clRect.right*bmp.bmHeighttop-desth) continue; - for (x = 0;xhwndStatus,SB_GETTEXT,(WPARAM)nPanel,0); - if (PD == NULL) - continue; - - SendMessage(hwnd,SB_GETRECT,(WPARAM)nPanel,(LPARAM)&rc); - - rc.top = 0; - rc.left = nPanel*sectwidth+startoffset; - rc.right = rc.left+sectwidth-1; - ds.rcItem = rc; - ds.itemData = (ULONG_PTR)PD; - ds.itemID = nPanel; - - DrawDataForStatusBar(&ds); - } } - - BitBlt(hdc,rcPaint->left,rcPaint->top,rcPaint->right-rcPaint->left,rcPaint->bottom-rcPaint->top,hdcMem,rcPaint->left,rcPaint->top,SRCCOPY); - - SelectObject(hdcMem,holdbmp); - SelectObject(hdcMem,oFont); - DeleteObject(hBmpOsb); - DeleteDC(hdcMem); - paintst.fErase = FALSE; - if ( !mhdc) - EndPaint(hwnd,&paintst); -} - -static LRESULT CALLBACK StatusBarOwnerDrawProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - if (UseOwnerDrawStatusBar) { - switch(uMsg) { - case WM_ERASEBKGND: - return 0; - - case WM_PRINT: - DrawBackGround(hwnd,(HDC)wParam); - return 0; - - case WM_PAINT: - DrawBackGround(hwnd,0); - return 0; - } - } - return mir_callNextSubclass(hwnd, StatusBarOwnerDrawProc, uMsg, wParam, lParam); -} - -LRESULT CALLBACK StatusHelperProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) { - case WM_CREATE: - tooltipshoing = FALSE; - return FALSE; - - case WM_GETMINMAXINFO: - if (pcli->hwndStatus) { - RECT rct; - GetWindowRect(pcli->hwndStatus,&rct); - memset((LPMINMAXINFO)lParam, 0, sizeof(MINMAXINFO)); - ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = 5; - ((LPMINMAXINFO)lParam)->ptMinTrackSize.y = rct.bottom-rct.top; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.x = 1600; - ((LPMINMAXINFO)lParam)->ptMaxTrackSize.y = rct.bottom-rct.top; - return 0; - } - break; - - case WM_NCHITTEST: - case WM_SHOWWINDOW: - if (hFrameHelperStatusBar) { - int res = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLAGS,hFrameHelperStatusBar),0); - db_set_b(0, "CLUI", "ShowSBar", (res & F_VISIBLE) != 0); - } - - if (tooltipshoing){ - NotifyEventHooks(hStatusBarHideToolTipEvent, 0, 0); - tooltipshoing = FALSE; - } - return 0; - - case WM_TIMER: - if (wParam == TM_STATUSBARHIDE) { - KillTimer(hwnd,TM_STATUSBARHIDE); - - if (tooltipshoing){ - NotifyEventHooks(hStatusBarHideToolTipEvent,0,0); - tooltipshoing = FALSE; - } - } - - if (wParam == TM_STATUSBAR) { - KillTimer(hwnd,TM_STATUSBAR); - - POINT pt; - GetCursorPos(&pt); - if (pt.x == lastpnt.x&&pt.y == lastpnt.y) { - RECT rc; - ScreenToClient(pcli->hwndStatus, &pt); - int nParts = SendMessage(pcli->hwndStatus,SB_GETPARTS,0,0); - for (int i = 0;ihwndStatus,SB_GETRECT,i,(LPARAM)&rc); - if (PtInRect(&rc,pt)) { - ProtocolData *PD = (ProtocolData *)SendMessage(pcli->hwndStatus,SB_GETTEXT,i,0); - if (PD == NULL) - return 0; - - NotifyEventHooks(hStatusBarShowToolTipEvent,(WPARAM)PD->RealName,0); - SetTimer(hwnd,TM_STATUSBARHIDE,db_get_w(NULL,"CLUIFrames","HideToolTipTime",5000),0); - tooltipshoing = TRUE; - break; - } - } - } - } - return 0; - - case WM_SETCURSOR: - { - POINT pt; - GetCursorPos(&pt); - if (pt.x == lastpnt.x&&pt.y == lastpnt.y) - return 0; - - lastpnt = pt; - if (tooltipshoing){ - KillTimer(hwnd,TM_STATUSBARHIDE); - NotifyEventHooks(hStatusBarHideToolTipEvent,0,0); - tooltipshoing = FALSE; - } - KillTimer(hwnd,TM_STATUSBAR); - SetTimer(hwnd,TM_STATUSBAR,db_get_w(NULL,"CLC","InfoTipHoverTime",750),0); - } - return 0; - - case WM_NOTIFY: - if (lParam == 0) - return 0; - - if (((LPNMHDR)lParam)->hwndFrom == pcli->hwndStatus) - if (((LPNMHDR)lParam)->code == WM_NCHITTEST) - LPNMMOUSE lpnmmouse = (LPNMMOUSE) lParam; - - case WM_CONTEXTMENU: - KillTimer(hwnd,TM_STATUSBARHIDE); - - if (tooltipshoing) - NotifyEventHooks(hStatusBarHideToolTipEvent,0,0); - - tooltipshoing = FALSE; - - case WM_MEASUREITEM: - case WM_DRAWITEM: - //parent do all work for us - return(SendMessage(pcli->hwndContactList,msg,wParam,lParam)); - - case WM_MOVE: - PostMessage(pcli->hwndStatus,WM_MOVE,wParam,lParam); - - case WM_SIZE: - { - RECT rc; - int b; - if (pcli->hwndStatus != 0) { - GetClientRect(hwnd,&rc); - - b = LOWORD(lParam); - if (b != 0&&(rc.right-rc.left) != (OldRc.right-OldRc.left)) { - OldRc = rc; - if (canloadstatusbar) - if ( db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",0)||db_get_b(NULL,"CLUI","EqualSections",1)) - CluiProtocolStatusChanged(0,0); - } - if (msg == WM_SIZE) PostMessage(pcli->hwndStatus,WM_SIZE,wParam,lParam); - if (pcli->hwndStatus != 0) InvalidateRect(pcli->hwndStatus,NULL,TRUE); - return 0; - } - } - - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - - } - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -HWND CreateStatusHelper(HWND parent) -{ - WNDCLASS wndclass = {0}; - TCHAR pluginname[] = _T("Statushelper"); - - if (GetClassInfo(g_hInst,pluginname,&wndclass) == 0 ) { - wndclass.style = 0; - wndclass.lpfnWndProc = StatusHelperProc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = 0; - wndclass.hInstance = g_hInst; - wndclass.hIcon = NULL; - wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); - wndclass.hbrBackground = (HBRUSH)(COLOR_3DFACE+1); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = pluginname; - RegisterClass(&wndclass); - } - - return(CreateWindow(pluginname,pluginname, - /*WS_THICKFRAME|*/WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN, - 0,0,0,0,parent,NULL,g_hInst,NULL)); -} - -HANDLE CreateStatusBarFrame() -{ - RECT rc; - GetWindowRect(helperhwnd,&rc); - int h = rc.bottom-rc.top; - - CLISTFrame Frame = { 0 }; - Frame.cbSize = sizeof(CLISTFrame); - Frame.hWnd = helperhwnd; - Frame.align = alBottom; - Frame.hIcon = LoadSkinnedIcon(SKINICON_OTHER_FRAME); - Frame.Flags = ( db_get_b(NULL,"CLUI","ShowSBar",1)?F_VISIBLE:0)|F_LOCKED|F_NOBORDER|F_TCHAR; - Frame.height = (h == 0) ? 20 : h; - Frame.tname = _T("Status"); - Frame.TBtname = TranslateT("Status bar"); - hFrameHelperStatusBar = (HANDLE)CallService(MS_CLIST_FRAMES_ADDFRAME,(WPARAM)&Frame,0); - - return hFrameHelperStatusBar; -} - -int RecreateStatusBar(HWND parent) -{ - if (pcli->hwndStatus) { - FreeProtocolData(); - DestroyWindow(pcli->hwndStatus); - } - pcli->hwndStatus = 0; - if (hFrameHelperStatusBar) CallService(MS_CLIST_FRAMES_REMOVEFRAME,(WPARAM)hFrameHelperStatusBar,0); - - helperhwnd = CreateStatusHelper(parent); - UseOwnerDrawStatusBar = db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",0); - - //create the status wnd - pcli->hwndStatus = CreateStatusWindow( - ( db_get_b(0,"CLUI","SBarUseSizeGrip",TRUE) && (!UseOwnerDrawStatusBar)?SBARS_SIZEGRIP:0)| - WS_CHILD | ( db_get_b(NULL,"CLUI","ShowSBar",1)?WS_VISIBLE:0), _T(""), helperhwnd, 0); - - OldWindowProc = (WNDPROC)GetWindowLongPtr(pcli->hwndStatus,GWLP_WNDPROC); - mir_subclassWindow(pcli->hwndStatus, StatusBarOwnerDrawProc); - CreateStatusBarFrame(); - - SetWindowPos(helperhwnd,NULL,1,1,1,1,SWP_NOZORDER); - CluiProtocolStatusChanged(0,0); - CallService(MS_CLIST_FRAMES_UPDATEFRAME,-1,0); - return 0; -} - -HWND CreateStatusBarhWnd(HWND parent) -{ - RecreateStatusBar(parent); - OnStatusBarBackgroundChange(); - - hStatusBarShowToolTipEvent = CreateHookableEvent(ME_CLIST_FRAMES_SB_SHOW_TOOLTIP); - hStatusBarHideToolTipEvent = CreateHookableEvent(ME_CLIST_FRAMES_SB_HIDE_TOOLTIP); - return pcli->hwndStatus; -} diff --git a/plugins/Clist_mw/src/Version.h b/plugins/Clist_mw/src/Version.h deleted file mode 100644 index 961c80eef1..0000000000 --- a/plugins/Clist_mw/src/Version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 9 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 0 - -#include - -#define __PLUGIN_NAME "MultiWindow contact list" -#define __FILENAME "Clist_mw.dll" -#define __DESCRIPTION "Displays contacts, event notifications, protocol status with MW modifications." -#define __AUTHOR "Bethoven" -#define __AUTHOREMAIL "bethoven@mailgate.ru" -#define __AUTHORWEB "http://miranda-ng.org/p/Clist_mw/" -#define __COPYRIGHT "Copyright 2000-2010 Miranda IM project, 2012 Miranda NG project." diff --git a/plugins/Clist_mw/src/clc.cpp b/plugins/Clist_mw/src/clc.cpp deleted file mode 100644 index a3c382c1cc..0000000000 --- a/plugins/Clist_mw/src/clc.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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 DefaultImageListColorDepth = ILC_COLOR32; - -HIMAGELIST himlCListClc; - -static HANDLE hSettingChanged1; - -int BgStatusBarChange(WPARAM wParam, LPARAM lParam); - -int BgClcChange(WPARAM wParam, LPARAM lParam); -int OnFrameTitleBarBackgroundChange(WPARAM wParam, LPARAM lParam); - -void InitDisplayNameCache(SortedList *list); -void FreeDisplayNameCache(SortedList *list); - -void UnloadCLUIModule( void ); - -extern int sortByStatus; -struct ClcContact * hitcontact = NULL; - -extern LRESULT ( CALLBACK *saveContactListControlWndProc )(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -static int stopStatusUpdater = 0; -void StatusUpdaterThread(void*) -{ - int i,curdelay,lastcheck = 0; - MCONTACT hContact = db_find_first(); - - SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST); - - while (!stopStatusUpdater) { - curdelay = db_get_b(hContact,"CList","StatusMsgAutoDelay",15000); - if (curdelay<5000) curdelay = 5000; - - if ((int)(GetTickCount()-lastcheck)>curdelay) - { - lastcheck = GetTickCount(); - if ( db_get_b(hContact,"CList","StatusMsgAuto",0)) { - for (i = 0; i<5; i++) { - if (hContact != NULL) { - ClcCacheEntry *pdnce = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (pdnce && !pdnce->protoNotExists && pdnce->szProto) - CallContactService(hContact, PSS_GETAWAYMSG, 0, 0); - - hContact = db_find_next(hContact); - } - if (hContact == NULL) { - hContact = db_find_first(); - if (hContact == NULL) - break; - } - Sleep(500); - } - } - } - //Sleep( db_get_b(hContact,"CList","StatusMsgAutoDelay",100)); - Sleep(200); - } -} - -HMENU BuildGroupPopupMenu( ClcGroup* group ) -{ - return (HMENU)CallService(MS_CLIST_MENUBUILDSUBGROUP,(WPARAM)group,0); -} - -void SortClcByTimer (HWND hwnd) -{ - KillTimer(hwnd,TIMERID_DELAYEDRESORTCLC); - SetTimer(hwnd,TIMERID_DELAYEDRESORTCLC,db_get_b(NULL,"CLUI","DELAYEDTIMER",200),NULL); -} - -static int ClcSettingChanged(WPARAM hContact, LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; - - if (hContact != NULL && !strcmp(cws->szModule, META_PROTO) && !strcmp(cws->szSetting, "ParentMeta")) - pcli->pfnClcBroadcast(INTM_NAMEORDERCHANGED, 0, 0); - - if (hContact != NULL && !strcmp(cws->szModule, "CList")) { - if (!strcmp(cws->szSetting, "noOffline")) - pcli->pfnClcBroadcast(INTM_NAMEORDERCHANGED, hContact, lParam); - else if (!strcmp(cws->szSetting, "StatusMsg")) - pcli->pfnClcBroadcast(INTM_STATUSMSGCHANGED, hContact, lParam); - } - return 0; -} - -static int ClcModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - CallService(MS_BACKGROUNDCONFIG_REGISTER, (WPARAM)(LPGEN("Status bar background")"/StatusBar"), 0); - CallService(MS_BACKGROUNDCONFIG_REGISTER, (WPARAM)(LPGEN("List background")"/CLC"), 0); - CallService(MS_BACKGROUNDCONFIG_REGISTER, (WPARAM)(LPGEN("Frames title bar background")"/FrameTitleBar"), 0); - HookEvent(ME_BACKGROUNDCONFIG_CHANGED, BgClcChange); - HookEvent(ME_BACKGROUNDCONFIG_CHANGED, BgStatusBarChange); - HookEvent(ME_BACKGROUNDCONFIG_CHANGED, OnFrameTitleBarBackgroundChange); - return 0; -} - -static int ClcShutdown(WPARAM wParam, LPARAM lParam) -{ - UnhookEvent(hSettingChanged1); - UnloadCLUIModule(); - return 0; -} - -LRESULT CALLBACK ContactListControlWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - struct ClcData *dat = (struct ClcData*)GetWindowLongPtr(hwnd, 0); - if (msg >= CLM_FIRST && msg < CLM_LAST) - return pcli->pfnProcessExternalMessages(hwnd, dat, msg, wParam, lParam); - - switch (msg) { - case WM_CREATE: - dat = (struct ClcData*)mir_calloc(sizeof(struct ClcData)); - SetWindowLongPtr(hwnd, 0, (LONG_PTR)dat); - InitDisplayNameCache(&dat->lCLCContactsCache); - break; - - case INTM_ICONCHANGED: - { - int recalcScrollBar = 0, shouldShow; - MCONTACT hSelItem = NULL; - struct ClcContact *selcontact = NULL; - ClcCacheEntry *cacheEntry = GetContactFullCacheEntry(wParam); - - WORD status; - int needsResort = 0; - - char *szProto = cacheEntry->szProto; - if (szProto == NULL) - status = ID_STATUS_OFFLINE; - else - status = cacheEntry->status; - - // this means an offline msg is flashing, so the contact should be shown - shouldShow = (GetWindowLongPtr(hwnd, GWL_STYLE) & CLS_SHOWHIDDEN || !cacheEntry->bIsHidden) && - (!pcli->pfnIsHiddenMode(dat, status) || cacheEntry->noHiddenOffline || pcli->pfnGetContactIcon(wParam) != LOWORD(lParam)); - - ClcContact *contact; - ClcGroup *group; - if (!FindItem(hwnd, dat, wParam, &contact, &group, NULL)) { - if (shouldShow && CallService(MS_DB_CONTACT_IS, wParam, 0)) { - if (dat->selection >= 0 && GetRowByIndex(dat, dat->selection, &selcontact, NULL) != -1) - hSelItem = (MCONTACT)pcli->pfnContactToHItem(selcontact); - AddContactToTree(hwnd, dat, wParam, 0, 0); - needsResort = 1; - recalcScrollBar = 1; - FindItem(hwnd, dat, wParam, &contact, NULL, NULL); - if (contact) { - contact->iImage = (WORD)lParam; - pcli->pfnNotifyNewContact(hwnd, wParam); - dat->needsResort = 1; - } - } - } - else { - //item in list already - DWORD style = GetWindowLongPtr(hwnd, GWL_STYLE); - if (contact->iImage == (WORD)lParam) break; - if (sortByStatus) dat->needsResort = 1; - - if (!shouldShow && !(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { - if (dat->selection >= 0 && GetRowByIndex(dat, dat->selection, &selcontact, NULL) != -1) - hSelItem = (MCONTACT)pcli->pfnContactToHItem(selcontact); - RemoveItemFromGroup(hwnd, group, contact, 0); - recalcScrollBar = 1; - dat->needsResort = 1; - } - else { - int oldflags; - contact->iImage = (WORD)lParam; - oldflags = contact->flags; - if (!pcli->pfnIsHiddenMode(dat, status) || cacheEntry->noHiddenOffline) contact->flags |= CONTACTF_ONLINE; - else contact->flags &= ~CONTACTF_ONLINE; - if (oldflags != contact->flags) - dat->needsResort = 1; - } - } - if (hSelItem) { - ClcGroup *selgroup; - if (FindItem(hwnd, dat, hSelItem, &selcontact, &selgroup, NULL)) - dat->selection = GetRowsPriorTo(&dat->list, selgroup, List_IndexOf((SortedList*)&selgroup->cl, selcontact)); - else - dat->selection = -1; - } - - SortClcByTimer(hwnd); - if (recalcScrollBar) RecalcScrollBar(hwnd, dat); - goto LBL_Exit; - } - case INTM_STATUSMSGCHANGED: - { - DBVARIANT dbv; - - if (!(dat->style & CLS_SHOWSTATUSMESSAGES)) - break; - - ClcContact *contact; - ClcGroup *group; - if (FindItem(hwnd, dat, wParam, &contact, &group, NULL) && contact != NULL) { - contact->flags &= ~CONTACTF_STATUSMSG; - if (!db_get_ts(wParam, "CList", "StatusMsg", &dbv)) { - int j; - if (dbv.ptszVal == NULL || _tcslen(dbv.ptszVal) == 0) break; - lstrcpyn(contact->szStatusMsg, dbv.ptszVal, SIZEOF(contact->szStatusMsg)); - for (j = (int)_tcslen(contact->szStatusMsg) - 1; j >= 0; j--) { - if (contact->szStatusMsg[j] == '\r' || contact->szStatusMsg[j] == '\n' || contact->szStatusMsg[j] == '\t') { - contact->szStatusMsg[j] = ' '; - } - } - db_free(&dbv); - if (contact->szStatusMsg[0] != 0) { - contact->flags |= CONTACTF_STATUSMSG; - dat->needsResort = TRUE; - } - } - } - - InvalidateRect(hwnd, NULL, TRUE); - - SortClcByTimer(hwnd); - RecalcScrollBar(hwnd, dat); - goto LBL_Exit; - } - - case WM_TIMER: - if (wParam == TIMERID_DELAYEDREPAINT) { - KillTimer(hwnd, TIMERID_DELAYEDREPAINT); - InvalidateRect(hwnd, NULL, FALSE); - break; - } - - if (wParam == TIMERID_SUBEXPAND) { - KillTimer(hwnd, TIMERID_SUBEXPAND); - if (hitcontact) { - if (hitcontact->SubExpanded) hitcontact->SubExpanded = 0; else hitcontact->SubExpanded = 1; - db_set_b(hitcontact->hContact, "CList", "Expanded", hitcontact->SubExpanded); - } - hitcontact = NULL; - dat->needsResort = 1; - SortCLC(hwnd, dat, 1); - RecalcScrollBar(hwnd, dat); - break; - } - break; - - case WM_DESTROY: - FreeDisplayNameCache(&dat->lCLCContactsCache); - stopStatusUpdater = 1; - break; - } - - LRESULT res = saveContactListControlWndProc(hwnd, msg, wParam, lParam); - switch (msg) { - case WM_CREATE: - mir_forkthread(StatusUpdaterThread, 0); - break; - } - return res; - -LBL_Exit: - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -int LoadCLCModule(void) -{ - LoadCLUIFramesModule(); - - himlCListClc = (HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST, 0, 0); - - HookEvent(ME_SYSTEM_MODULESLOADED, ClcModulesLoaded); - hSettingChanged1 = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, ClcSettingChanged); - HookEvent(ME_OPT_INITIALISE, ClcOptInit); - HookEvent(ME_SYSTEM_SHUTDOWN, ClcShutdown); - return 0; -} - -///////////////////////////////////////////////////////////////////////////////////////// - -static INT_PTR CLUIGetCapsService(WPARAM wParam, LPARAM lParam) -{ - switch (wParam) { - case CLUICAPS_FLAGS1: - return CLUIF_HIDEEMPTYGROUPS | CLUIF_DISABLEGROUPS | CLUIF_HASONTOPOPTION | CLUIF_HASAUTOHIDEOPTION; - case CLUICAPS_FLAGS2: - return MAKELONG(EXTRA_ICON_COUNT, 1); - } - return 0; -} - -int PreloadCLCModule() -{ - CreateServiceFunction(MS_CLUI_GETCAPS, CLUIGetCapsService); - return 0; -} diff --git a/plugins/Clist_mw/src/clc.h b/plugins/Clist_mw/src/clc.h deleted file mode 100644 index efc13fd87d..0000000000 --- a/plugins/Clist_mw/src/clc.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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 _CLC_H_ -#define _CLC_H_ - -#define CLB_TOPLEFT 0 -#define CLB_STRETCHV 1 -#define CLB_STRETCHH 2 //and tile vertically -#define CLB_STRETCH 3 - -#define CLBM_TYPE 0x00FF - -#define CLBF_TILEH 0x1000 -#define CLBF_TILEV 0x2000 -#define CLBF_PROPORTIONAL 0x4000 -#define CLBF_SCROLL 0x8000 -#define CLBF_TILEVTOROWHEIGHT 0x0100 - -#define FONTID_CONTACTS 0 -#define FONTID_INVIS 1 -#define FONTID_OFFLINE 2 -#define FONTID_NOTONLIST 3 -#define FONTID_GROUPS 4 -#define FONTID_GROUPCOUNTS 5 -#define FONTID_DIVIDERS 6 -#define FONTID_OFFINVIS 7 -#define FONTID_STATUSMSG 8 -#define FONTID_GROUPSCLOSED 9 -#define FONTID_CONTACTSHOVER 10 - -#define TIMERID_DELAYEDREPAINT 16 -#define TIMERID_SUBEXPAND 21 - -#define CONTACTF_STATUSMSG 64 - -#define INTM_STATUSMSGCHANGED (WM_USER+26) - -#define CLS_SHOWSTATUSMESSAGES 0x800 - -#define CLS_EX_MULTICOLUMNALIGNLEFT 0x00001000 - -#define MAXSTATUSMSGLEN 256 - -struct ClcContact : public ClcContactBase -{ - ClcContact *subcontacts; - BYTE SubAllocated; - BYTE SubExpanded; - BYTE isSubcontact; - TCHAR szStatusMsg[MAXSTATUSMSGLEN]; -}; - -struct ClcData : public ClcDataBase -{ - DWORD style; - SortedList lCLCContactsCache; - BYTE doubleClickExpand; - int MetaIgnoreEmptyExtra; -}; - -//clcidents.c -int GetRowsPriorTo(ClcGroup *group,ClcGroup *subgroup,int contactIndex); -int FindItem(HWND hwnd, struct ClcData *dat, DWORD dwItem, struct ClcContact **contact, ClcGroup **subgroup, int *isVisible); -int GetRowByIndex(struct ClcData *dat,int testindex,struct ClcContact **contact,ClcGroup **subgroup); -void ClearRowByIndexCache(); - -//clcitems.c -ClcGroup *AddGroup(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers); -void FreeGroup(ClcGroup *group); -int AddInfoItemToGroup(ClcGroup *group,int flags,const TCHAR *pszText); -void FreeContact(struct ClcContact *p); -void RebuildEntireList(HWND hwnd,struct ClcData *dat); -ClcGroup *RemoveItemFromGroup(HWND hwnd,ClcGroup *group,struct ClcContact *contact,int updateTotalCount); -void DeleteItemFromTree(HWND hwnd, MCONTACT hItem); -void AddContactToTree(HWND hwnd, struct ClcData *dat, MCONTACT hContact, int updateTotalCount, int checkHideOffline); -void SortCLC(HWND hwnd,struct ClcData *dat,int useInsertionSort); -int GetGroupContentsCount(ClcGroup *group,int visibleOnly); -int GetNewSelection(ClcGroup *group,int selection, int direction); -void SaveStateAndRebuildList(HWND hwnd,struct ClcData *dat); - -//clcmsgs.c -LRESULT ProcessExternalMessages(HWND hwnd,struct ClcData *dat,UINT msg,WPARAM wParam, LPARAM lParam); - -//clcutils.c -void RecalcScrollBar(HWND hwnd,struct ClcData *dat); -void BeginRenameSelection(HWND hwnd,struct ClcData *dat); -int HitTest(HWND hwnd,struct ClcData *dat,int testx,int testy,struct ClcContact **contact,ClcGroup **group,DWORD *flags); -void ScrollTo(HWND hwnd,struct ClcData *dat,int desty,int noSmooth); -void LoadClcOptions(HWND hwnd,struct ClcData *dat); - -//clcpaint.c -void PaintClc(HWND hwnd,struct ClcData *dat,HDC hdc,RECT *rcPaint); - -//clcopts.c -int ClcOptInit(WPARAM wParam, LPARAM lParam); - -//clcfiledrop.c -void InitFileDropping(void); -void FreeFileDropping(void); -void RegisterFileDropping(HWND hwnd); -void UnregisterFileDropping(HWND hwnd); - -//cluiservices.c -void FreeProtocolData( void ); - -int GetContactCachedStatus(MCONTACT hContact); -char *GetContactCachedProtocol(MCONTACT hContact); - -#define CLUI_SetDrawerService "CLUI/SETDRAWERSERVICE" -typedef struct { - int cbSize; - char *PluginName; - char *Comments; - char *GetDrawFuncsServiceName; - -} DrawerServiceStruct,*pDrawerServiceStruct ; - -#define CLUI_EXT_FUNC_PAINTCLC 1 - -typedef struct { - int cbSize; - void (*PaintClc)(HWND,struct ClcData *,HDC,RECT *,int ,ClcProtoStatus *,HIMAGELIST); -} ExternDrawer,*pExternDrawer ; - -extern ExternDrawer SED; - -#endif /* _CLC_H_ */ diff --git a/plugins/Clist_mw/src/clcfonts.cpp b/plugins/Clist_mw/src/clcfonts.cpp deleted file mode 100644 index de73ee3600..0000000000 --- a/plugins/Clist_mw/src/clcfonts.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-10 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -struct -{ - const TCHAR *tszName; - int iMask; -} -static clistFontDescr[] = -{ - { LPGENT("Standard contacts"), FIDF_CLASSGENERAL }, - { LPGENT("Online contacts to whom you have a different visibility"), FIDF_CLASSGENERAL }, - { LPGENT("Offline contacts"), FIDF_CLASSGENERAL }, - { LPGENT("Contacts which are 'not on list'"), FIDF_CLASSGENERAL }, - { LPGENT("Groups"), FIDF_CLASSHEADER }, - { LPGENT("Group member counts"), FIDF_CLASSHEADER }, - { LPGENT("Dividers"), FIDF_CLASSSMALL }, - { LPGENT("Offline contacts to whom you have a different visibility"), FIDF_CLASSGENERAL }, - { LPGENT("Status messages"), FIDF_CLASSGENERAL }, - { LPGENT("Group closed"), FIDF_CLASSGENERAL }, - { LPGENT("Hovered contacts"), FIDF_CLASSGENERAL } -}; - -#define CLCDEFAULT_BKCOLOUR GetSysColor(COLOR_3DFACE) -#define CLCDEFAULT_SELTEXTCOLOUR GetSysColor(COLOR_HIGHLIGHTTEXT) - -static int FS_FontsChanged(WPARAM wParam, LPARAM lParam) -{ - pcli->pfnClcOptionsChanged(); - return 0; -} - -void RegisterCListFonts() -{ - FontIDT fontid = { sizeof(fontid) }; - fontid.flags = FIDF_DEFAULTVALID | FIDF_ALLOWREREGISTER | FIDF_APPENDNAME | FIDF_NOAS | FIDF_SAVEPOINTSIZE | FIDF_ALLOWEFFECTS; - strncpy(fontid.dbSettingsGroup, "CLC", sizeof(fontid.dbSettingsGroup)); - _tcsncpy(fontid.group, _T("Contact list"), SIZEOF(fontid.group)); - - HDC hdc = GetDC(NULL); - for (int i = 0; i < SIZEOF(clistFontDescr); i++) { - LOGFONT lf; - pcli->pfnGetFontSetting(i, &lf, &fontid.deffontsettings.colour); - lf.lfHeight = -MulDiv(lf.lfHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72); - - _tcsncpy_s(fontid.deffontsettings.szFace, lf.lfFaceName, _TRUNCATE); - fontid.deffontsettings.charset = lf.lfCharSet; - fontid.deffontsettings.size = (char)lf.lfHeight; - fontid.deffontsettings.style = (lf.lfWeight >= FW_BOLD ? DBFONTF_BOLD : 0) | (lf.lfItalic ? DBFONTF_ITALIC : 0); - - fontid.flags &= ~FIDF_CLASSMASK; - fontid.flags |= clistFontDescr[i].iMask; - - _tcsncpy(fontid.name, clistFontDescr[i].tszName, SIZEOF(fontid.name)); - - char idstr[10]; - mir_snprintf(idstr, SIZEOF(idstr), "Font%d", i); - strncpy(fontid.prefix, idstr, SIZEOF(fontid.prefix)); - fontid.order = i; - FontRegisterT(&fontid); - } - ReleaseDC(NULL, hdc); - - // and colours - ColourIDT colourid = { sizeof(colourid) }; - colourid.order = 0; - strncpy(colourid.dbSettingsGroup, "CLC", sizeof(colourid.dbSettingsGroup)); - - strncpy(colourid.setting, "BkColour", sizeof(colourid.setting)); - _tcsncpy(colourid.name, LPGENT("Background"), SIZEOF(colourid.name)); - _tcsncpy(colourid.group, LPGENT("Contact list"), SIZEOF(colourid.group)); - colourid.defcolour = CLCDEFAULT_BKCOLOUR; - ColourRegisterT(&colourid); - - strncpy(colourid.setting, "SelTextColour", sizeof(colourid.setting)); - _tcsncpy(colourid.name, LPGENT("Selected text"), SIZEOF(colourid.name)); - colourid.order = 1; - colourid.defcolour = CLCDEFAULT_SELTEXTCOLOUR; - ColourRegisterT(&colourid); - - strncpy(colourid.setting, "HotTextColour", sizeof(colourid.setting)); - _tcsncpy(colourid.name, LPGENT("Hottrack text"), SIZEOF(colourid.name)); - colourid.order = 1; - colourid.defcolour = CLCDEFAULT_HOTTEXTCOLOUR; - ColourRegisterT(&colourid); - - strncpy(colourid.setting, "QuickSearchColour", sizeof(colourid.setting)); - _tcsncpy(colourid.name, LPGENT("Quicksearch text"), SIZEOF(colourid.name)); - colourid.order = 1; - colourid.defcolour = CLCDEFAULT_QUICKSEARCHCOLOUR; - ColourRegisterT(&colourid); - - HookEvent(ME_FONT_RELOAD, FS_FontsChanged); -} diff --git a/plugins/Clist_mw/src/clcidents.cpp b/plugins/Clist_mw/src/clcidents.cpp deleted file mode 100644 index c74a2d8bfb..0000000000 --- a/plugins/Clist_mw/src/clcidents.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clc.h" - -/* the CLC uses 3 different ways to identify elements in its list, this file -contains routines to convert between them. - -1) struct ClcContact/ClcGroup pair. Only ever used within the duration -of a single operation, but used at some point in nearly everything -2) index integer. The 0-based number of the item from the top. Only visible -items are counted (ie not closed groups). Used for saving selection and drag -highlight -3) hItem handle. Either the hContact or (hGroup|HCONTACT_ISGROUP). Used -exclusively externally - -1->2: GetRowsPriorTo() -1->3: ContactToHItem() -3->1: FindItem() -2->1: GetRowByIndex() -*/ - -int GetRowsPriorTo(ClcGroup *group,ClcGroup *subgroup,int contactIndex) -{ - int count = 0; - - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) - break; - group->scanIndex++; - continue; - } - - if (group == subgroup && contactIndex == group->scanIndex) - return count; - - count++; - if ((group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) && (group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG)) - count++; - - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP) { - if (group->cl.items[group->scanIndex]->group == subgroup && contactIndex == -1) - return count-1; - if (group->cl.items[group->scanIndex]->group->expanded) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - continue; - } - } - - if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) - count += group->cl.items[group->scanIndex]->SubAllocated*group->cl.items[group->scanIndex]->SubExpanded; - - group->scanIndex++; - } - return -1; -} - -ClcCacheEntry *GetCLCFullCacheEntry(struct ClcData *dat,MCONTACT hContact) -{ - if (hContact == 0) - return NULL; - - ClcCacheEntry dnce; - dnce.hContact = hContact; - ClcCacheEntry *pdnce = (ClcCacheEntry*)List_Find(&dat->lCLCContactsCache,&dnce); - if (pdnce == NULL) { - pdnce = (ClcCacheEntry*)mir_calloc(sizeof(ClcCacheEntry)); - pdnce->hContact = hContact; - - int idx; - List_GetIndex(&dat->lCLCContactsCache,pdnce,&idx); - List_Insert(&dat->lCLCContactsCache,pdnce,idx); - - ClcCacheEntry *pdnce2 = (ClcCacheEntry*)List_Find(&dat->lCLCContactsCache,&dnce);//for check - if (pdnce2->hContact != pdnce->hContact) - return NULL; - - if (pdnce2 != pdnce) - return NULL; - } - - return (pdnce); -} - -void ClearClcContactCache(struct ClcData *dat,MCONTACT hContact) -{ - ClcCacheEntry *cacheEntry; - - if (hContact == INVALID_CONTACT_ID) { - int i,tick; - tick = GetTickCount(); - - for (i = 0;i<(dat->lCLCContactsCache.realCount);i++) { - ClcCacheEntry *pdnce = (ClcCacheEntry *)dat->lCLCContactsCache.items[i]; - pdnce->ClcContact = NULL; - } - tick = GetTickCount()-tick; - { - char buf[256]; - mir_snprintf(buf, SIZEOF(buf), "Clear full cache %d ms\r\n", tick); - OutputDebugStringA(buf); - } - } - if ( !IsHContactGroup(hContact) && !IsHContactInfo(hContact)) { - cacheEntry = GetCLCFullCacheEntry(dat,hContact); - if (cacheEntry != NULL) - cacheEntry->ClcContact = NULL; - } -} - -void SetClcContactCacheItem(struct ClcData *dat, MCONTACT hContact, void *contact) -{ - ClcCacheEntry *cacheEntry; - if ( !IsHContactGroup(hContact) && !IsHContactInfo(hContact)) { - cacheEntry = GetCLCFullCacheEntry(dat,hContact); - if (cacheEntry != NULL) - cacheEntry->ClcContact = contact; - } -} - -int FindItem(HWND hwnd, struct ClcData *dat, DWORD dwItem, struct ClcContact **contact, ClcGroup **subgroup, int *isVisible) -{ - int index = 0, i; - int nowVisible = 1; - ClcGroup *group = &dat->list; - - group->scanIndex = 0; - - if (isVisible == NULL && dwItem != NULL && subgroup == NULL && !IsHContactGroup(dwItem) && !IsHContactInfo(dwItem)) { - //try use cache - ClcCacheEntry *cacheEntry = GetCLCFullCacheEntry(dat, dwItem); - if (cacheEntry != NULL) { - if (cacheEntry->ClcContact == NULL) { - int *isv = {0}; - void *z = {0}; - int ret; - ret = FindItem(hwnd,dat,dwItem,(struct ClcContact ** )&z,(struct ClcGroup** )&isv,NULL); - if (ret == 0) {return 0;} - cacheEntry->ClcContact = (void *)z; - } - - if (cacheEntry->ClcContact != NULL) { - if (contact != NULL) - *contact = (struct ClcContact *)cacheEntry->ClcContact; - - return 1; - } - } - } - - group = &dat->list; - - for (;;) { - if (group->scanIndex == group->cl.count) { - ClcGroup *tgroup; - group = group->parent; - if (group == NULL) - break; - - nowVisible = 1; - for (tgroup = group;tgroup;tgroup = tgroup->parent) - if ( !group->expanded) { - nowVisible = 0; - break; - } - - group->scanIndex++; - continue; - } - if (nowVisible) index++; - if ((IsHContactGroup(dwItem) && group->cl.items[group->scanIndex]->type == CLCIT_GROUP && (dwItem & ~HCONTACT_ISGROUP) == group->cl.items[group->scanIndex]->groupId) || - (IsHContactContact(dwItem) && group->cl.items[group->scanIndex]->type == CLCIT_CONTACT && group->cl.items[group->scanIndex]->hContact == dwItem) || - (IsHContactInfo(dwItem) && group->cl.items[group->scanIndex]->type == CLCIT_INFO && group->cl.items[group->scanIndex]->hContact == (dwItem & ~HCONTACT_ISINFO))) - { - if (isVisible) { - if ( !nowVisible) *isVisible = 0; - else { - if ((index+1)*dat->rowHeightyScroll) *isVisible = 0; - else { - RECT clRect; - GetClientRect(hwnd,&clRect); - if (index*dat->rowHeight>=dat->yScroll+clRect.bottom) *isVisible = 0; - else *isVisible = 1; - } } } - - if (contact) *contact = group->cl.items[group->scanIndex]; - if (subgroup) *subgroup = group; - return 1; - } - - if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT && - group->cl.items[group->scanIndex]->SubAllocated>0) - for (i = 1; i<=group->cl.items[group->scanIndex]->SubAllocated; i++) - if (IsHContactContact(dwItem) && group->cl.items[group->scanIndex]->subcontacts[i-1].hContact == dwItem) { - if (contact) *contact = &group->cl.items[group->scanIndex]->subcontacts[i-1]; - if (subgroup) *subgroup = group; - return 1; - } - - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP) { - ClcGroup* save = group; - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - nowVisible &= group->expanded; - continue; - } - group->scanIndex++; - } - - if (isVisible) *isVisible = FALSE; - if (contact) *contact = NULL; - if (subgroup) *subgroup = NULL; - return 0; -} -#define CacheArrSize 255 -ClcGroup *CacheIndex[CacheArrSize] = {NULL}; -boolean CacheIndexClear = TRUE; -void ClearRowByIndexCache() -{ - if ( !CacheIndexClear) { - memset(CacheIndex,0,sizeof(CacheIndex)); - CacheIndexClear = TRUE; - } -} - -int GetRowByIndex(struct ClcData *dat,int testindex,struct ClcContact **contact,ClcGroup **subgroup) -{ - int index = 0,i; - ClcGroup *group = &dat->list; - - if (testindex < 0) return -1; - - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) break; - group->scanIndex++; - continue; - } - if ((index>0) && (indexcl.items[group->scanIndex]; - if (subgroup) *subgroup = group; - return index; - } - - if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) - if (group->cl.items[group->scanIndex]->SubAllocated) - if (group->cl.items[group->scanIndex]->SubExpanded) { - for (i = 0;icl.items[group->scanIndex]->SubAllocated;i++) { - if ((index>0) && (indexcl.items[group->scanIndex]->subcontacts[i]; - if (subgroup) *subgroup = group; - return index; - } - } - } - - index++; - if ((group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) && (group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG)) - index++; - - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP && group->cl.items[group->scanIndex]->group->expanded) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - continue; - } - group->scanIndex++; - } - return -1; -} diff --git a/plugins/Clist_mw/src/clcitems.cpp b/plugins/Clist_mw/src/clcitems.cpp deleted file mode 100644 index 0e67a18318..0000000000 --- a/plugins/Clist_mw/src/clcitems.cpp +++ /dev/null @@ -1,685 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clc.h" -#include "clist.h" -#include "m_metacontacts.h" - - -extern int ( *saveAddItemToGroup )( ClcGroup *group, int iAboveItem ); -extern int ( *saveAddInfoItemToGroup )(ClcGroup *group,int flags,const TCHAR *pszText); -extern ClcGroup* ( *saveAddGroup )(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers); -extern void (*saveFreeContact)(struct ClcContact *p); -extern void (*saveFreeGroup)(ClcGroup *p); - -//routines for managing adding/removal of items in the list, including sorting - -extern void ClearClcContactCache(struct ClcData *dat,MCONTACT hContact); - -void AddSubcontacts(struct ClcContact * cont) -{ - int subcount,i,j; - ClcCacheEntry *cacheEntry; - cacheEntry = GetContactFullCacheEntry(cont->hContact); - OutputDebugStringA("Proceed AddSubcontacts\r\n"); - subcount = db_mc_getSubCount(cont->hContact); - cont->SubExpanded = db_get_b(cont->hContact,"CList","Expanded",0); - cont->isSubcontact = 0; - cont->subcontacts = (struct ClcContact *) mir_realloc(cont->subcontacts, sizeof(struct ClcContact)*subcount); - cont->SubAllocated = subcount; - i = 0; - for (j = 0; jhContact, j); - cacheEntry = GetContactFullCacheEntry(hsub); - if ( !(db_get_b(NULL,"CLC","MetaHideOfflineSub",1) && db_get_b(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT)) || - cacheEntry->status != ID_STATUS_OFFLINE ) - { - cont->subcontacts[i].hContact = cacheEntry->hContact; - cont->subcontacts[i].iImage = pcli->pfnGetContactIcon(cacheEntry->hContact); - memset(cont->subcontacts[i].iExtraImage, 0xFF, sizeof(cont->subcontacts[i].iExtraImage)); - cont->subcontacts[i].proto = cacheEntry->szProto; - lstrcpyn(cont->subcontacts[i].szText,cacheEntry->tszName,SIZEOF(cont->subcontacts[i].szText)); - cont->subcontacts[i].type = CLCIT_CONTACT; - //cont->flags = 0;//CONTACTF_ONLINE; - cont->subcontacts[i].isSubcontact = 1; - i++; - } - } - cont->SubAllocated = i; - if (i == 0) - mir_free(cont->subcontacts); -} - -void FreeContact(struct ClcContact *p) -{ - if ( p->SubAllocated && !p->isSubcontact) - mir_free(p->subcontacts); - - saveFreeContact( p ); -} - -int AddItemToGroup(ClcGroup *group,int iAboveItem) -{ - iAboveItem = saveAddItemToGroup( group, iAboveItem ); - ClearRowByIndexCache(); - return iAboveItem; -} - -ClcGroup *AddGroup(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers) -{ - ClearRowByIndexCache(); - dat->needsResort = 1; - ClcGroup *result = saveAddGroup( hwnd, dat, szName, flags, groupId, calcTotalMembers); - ClearRowByIndexCache(); - return result; -} - -void FreeGroup(ClcGroup *group) -{ - saveFreeGroup( group ); - ClearRowByIndexCache(); -} - -int AddInfoItemToGroup(ClcGroup *group,int flags,const TCHAR *pszText) -{ - int i = saveAddInfoItemToGroup( group, flags, pszText ); - ClearRowByIndexCache(); - return i; -} - -static struct ClcContact* AddContactToGroup(struct ClcData *dat,ClcGroup *group,ClcCacheEntry *cacheEntry) -{ - char *szProto; - WORD apparentMode; - DWORD idleMode; - MCONTACT hContact; - DBVARIANT dbv; - int i; - int img = -1; - int basicIcon = 0; - - if (cacheEntry == NULL || group == NULL || dat == NULL) - return NULL; - - hContact = cacheEntry->hContact; - - dat->needsResort = 1; - for (i = group->cl.count-1;i>=0;i--) - if (group->cl.items[i]->type != CLCIT_INFO || !(group->cl.items[i]->flags&CLCIIF_BELOWCONTACTS)) break; - i = AddItemToGroup(group,i+1); - group->cl.items[i]->type = CLCIT_CONTACT; - group->cl.items[i]->SubAllocated = 0; - group->cl.items[i]->isSubcontact = 0; - group->cl.items[i]->subcontacts = NULL; - - if (ProtoServiceExists(cacheEntry->szProto, PS_GETADVANCEDSTATUSICON)) - img = ProtoCallService(cacheEntry->szProto, PS_GETADVANCEDSTATUSICON, hContact, 0); - - if (img == -1 || !(LOWORD(img))) - img = pcli->pfnGetContactIcon(hContact); - - group->cl.items[i]->iImage = img; - - cacheEntry = GetContactFullCacheEntry(hContact); - group->cl.items[i]->hContact = hContact; - - //cacheEntry->ClcContact = &(group->cl.items[i]); - //SetClcContactCacheItem(dat,hContact,&(group->cl.items[i])); - - szProto = cacheEntry->szProto; - if (szProto != NULL && !pcli->pfnIsHiddenMode(dat,cacheEntry->status)) - group->cl.items[i]->flags |= CONTACTF_ONLINE; - apparentMode = szProto != NULL?cacheEntry->ApparentMode:0; - if (apparentMode == ID_STATUS_OFFLINE) group->cl.items[i]->flags |= CONTACTF_INVISTO; - else if (apparentMode == ID_STATUS_ONLINE) group->cl.items[i]->flags |= CONTACTF_VISTO; - else if (apparentMode) group->cl.items[i]->flags |= CONTACTF_VISTO|CONTACTF_INVISTO; - if (cacheEntry->NotOnList) group->cl.items[i]->flags |= CONTACTF_NOTONLIST; - idleMode = szProto != NULL?cacheEntry->IdleTS:0; - if (idleMode) group->cl.items[i]->flags |= CONTACTF_IDLE; - - lstrcpyn(group->cl.items[i]->szText,cacheEntry->tszName, SIZEOF(group->cl.items[i]->szText)); - group->cl.items[i]->proto = szProto; - - if (dat->style & CLS_SHOWSTATUSMESSAGES) { - if ( !db_get_ts(hContact, "CList", "StatusMsg", &dbv)) { - int j; - lstrcpyn(group->cl.items[i]->szStatusMsg, dbv.ptszVal, SIZEOF(group->cl.items[i]->szStatusMsg)); - for (j = (int)_tcslen(group->cl.items[i]->szStatusMsg)-1;j>=0;j--) { - if (group->cl.items[i]->szStatusMsg[j] == '\r' || group->cl.items[i]->szStatusMsg[j] == '\n' || group->cl.items[i]->szStatusMsg[j] == '\t') { - group->cl.items[i]->szStatusMsg[j] = ' '; - } - } - db_free(&dbv); - if (group->cl.items[i]->szStatusMsg[0] != 0) { - group->cl.items[i]->flags |= CONTACTF_STATUSMSG; - } - } - } - - ClearRowByIndexCache(); - return group->cl.items[i]; -} - -void AddContactToTree(HWND hwnd, ClcData *dat, MCONTACT hContact, int updateTotalCount, int checkHideOffline) -{ - if (FindItem(hwnd, dat, hContact, NULL, NULL, NULL) == 1) - return; - - ClcCacheEntry *cacheEntry = GetContactFullCacheEntry(hContact); - if (cacheEntry == NULL) - return; - - char *szProto = cacheEntry->szProto; - - dat->needsResort = 1; - ClearRowByIndexCache(); - ClearClcContactCache(dat,hContact); - - WORD status; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - if (style & CLS_NOHIDEOFFLINE) checkHideOffline = 0; - if (checkHideOffline) { - if (szProto == NULL) status = ID_STATUS_OFFLINE; - else status = cacheEntry->status; - } - - ClcGroup *group; - if (lstrlen(cacheEntry->tszGroup) == 0) - group = &dat->list; - else { - group = AddGroup(hwnd,dat,cacheEntry->tszGroup,(DWORD)-1,0,0); - if (group == NULL) { - DWORD groupFlags; - int i; - if ( !(style & CLS_HIDEEMPTYGROUPS)) - return; - - if (checkHideOffline && pcli->pfnIsHiddenMode(dat,status)) { - for (i = 1;;i++) { - TCHAR *szGroupName = pcli->pfnGetGroupName(i, &groupFlags); - if (szGroupName == NULL) - return; //never happens - if ( !lstrcmp(szGroupName,cacheEntry->tszGroup)) - break; - } - if (groupFlags & GROUPF_HIDEOFFLINE) - return; - } - for (i = 1;; i++) { - TCHAR *szGroupName = pcli->pfnGetGroupName(i, &groupFlags); - if (szGroupName == NULL) - return; //never happens - if ( !lstrcmp(szGroupName,cacheEntry->tszGroup)) - break; - size_t len = lstrlen(szGroupName); - if ( !_tcsncmp(szGroupName,cacheEntry->tszGroup,len) && cacheEntry->tszGroup[len] == '\\') - AddGroup(hwnd,dat,szGroupName,groupFlags,i,1); - } - group = AddGroup(hwnd,dat,cacheEntry->tszGroup,groupFlags,i,1); - } - } - - if (checkHideOffline) { - if (pcli->pfnIsHiddenMode(dat,status) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { - if (updateTotalCount) group->totalMembers++; - return; - } - } - - ClcContact *cont = AddContactToGroup(dat, group, cacheEntry); - if (cont && cont->proto) { - cont->SubAllocated = 0; - if (strcmp(cont->proto, META_PROTO) == 0) - AddSubcontacts(cont); - } - if (updateTotalCount) - group->totalMembers++; - ClearRowByIndexCache(); -} - -extern ClcGroup* ( *saveRemoveItemFromGroup )(HWND hwnd,ClcGroup *group,struct ClcContact *contact,int updateTotalCount); - -ClcGroup *RemoveItemFromGroup(HWND hwnd,ClcGroup *group,struct ClcContact *contact,int updateTotalCount) -{ - ClearRowByIndexCache(); - if (contact->type == CLCIT_CONTACT) { - struct ClcData* dat = (struct ClcData*)GetWindowLongPtr(hwnd,0); - ClearClcContactCache(dat,contact->hContact); - } - - group = saveRemoveItemFromGroup(hwnd, group, contact, updateTotalCount); - - ClearRowByIndexCache(); - return group; -} - -void DeleteItemFromTree(HWND hwnd, MCONTACT hItem) -{ - struct ClcContact *contact; - ClcGroup *group; - struct ClcData *dat = (struct ClcData*)GetWindowLongPtr(hwnd,0); - - ClearRowByIndexCache(); - dat->needsResort = 1; - - if (!FindItem(hwnd, dat, hItem, &contact, &group, NULL)) { - DBVARIANT dbv; - int i,nameOffset; - if ( !IsHContactContact(hItem)) return; - ClearClcContactCache(dat,hItem); - - if (db_get_ts(hItem,"CList","Group",&dbv)) return; - - //decrease member counts of all parent groups too - group = &dat->list; - nameOffset = 0; - for (i = 0;;i++) { - if (group->scanIndex == group->cl.count) - break; - - if (group->cl.items[i]->type == CLCIT_GROUP) { - int len = lstrlen(group->cl.items[i]->szText); - if ( !_tcsncmp(group->cl.items[i]->szText,dbv.ptszVal+nameOffset,len) && (dbv.ptszVal[nameOffset+len] == '\\' || dbv.pszVal[nameOffset+len] == '\0')) { - group->totalMembers--; - if (dbv.pszVal[nameOffset+len] == '\0') - break; - } - } - } - mir_free(dbv.pszVal); - } - else RemoveItemFromGroup(hwnd,group,contact,1); - - ClearRowByIndexCache(); -} - - - -void RebuildEntireList(HWND hwnd,struct ClcData *dat) -{ -// char *szProto; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - struct ClcContact * cont; - ClcGroup *group; - //DBVARIANT dbv; - int tick = GetTickCount(); - - ClearRowByIndexCache(); - ClearClcContactCache(dat, INVALID_CONTACT_ID); - - dat->list.expanded = 1; - dat->list.hideOffline = db_get_b(NULL,"CLC","HideOfflineRoot",0); - memset( &dat->list.cl, 0, sizeof( dat->list.cl )); - dat->list.cl.increment = 30; - dat->needsResort = 1; - dat->selection = -1; - { - int i; - TCHAR *szGroupName; - DWORD groupFlags; - - for (i = 1;;i++) { - szGroupName = pcli->pfnGetGroupName(i,&groupFlags); - if (szGroupName == NULL) - break; - - AddGroup(hwnd,dat,szGroupName,groupFlags,i,0); - } - } - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - ClcCacheEntry *cacheEntry; - cont = NULL; - cacheEntry = GetContactFullCacheEntry(hContact); - //cacheEntry->ClcContact = NULL; - ClearClcContactCache(dat,hContact); - if (cacheEntry == NULL) - MessageBoxA(0,"Fail To Get CacheEntry for hContact","!!!!!!!!",0); - - if (style&CLS_SHOWHIDDEN || !cacheEntry->bIsHidden) { - if (lstrlen(cacheEntry->tszGroup) == 0) - group = &dat->list; - else { - group = AddGroup(hwnd,dat,cacheEntry->tszGroup,(DWORD)-1,0,0); - //mir_free(dbv.pszVal); - } - - if (group != NULL) { - group->totalMembers++; - if ( !(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { - if (cacheEntry->szProto == NULL) { - if ( !pcli->pfnIsHiddenMode(dat,ID_STATUS_OFFLINE)||cacheEntry->noHiddenOffline) - cont = AddContactToGroup(dat,group,cacheEntry); - } - else if ( !pcli->pfnIsHiddenMode(dat,cacheEntry->status)||cacheEntry->noHiddenOffline) - cont = AddContactToGroup(dat,group,cacheEntry); - } - else cont = AddContactToGroup(dat,group,cacheEntry); - } - } - if (cont && cont->proto) { - cont->SubAllocated = 0; - if (strcmp(cont->proto, META_PROTO) == 0) - AddSubcontacts(cont); - } - } - - if (style&CLS_HIDEEMPTYGROUPS) { - group = &dat->list; - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) - break; - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP) { - if (group->cl.items[group->scanIndex]->group->cl.count == 0) { - group = RemoveItemFromGroup(hwnd,group,group->cl.items[group->scanIndex],0); - } - else { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - } - continue; - } - group->scanIndex++; - } - } - - SortCLC(hwnd,dat,0); - tick = GetTickCount()-tick; - { - char buf[255]; - //sprintf(buf,"%s %s took %i ms",__FILE__,__LINE__,tick); - mir_snprintf(buf, SIZEOF(buf), "RebuildEntireList %d \r\n", tick); - - OutputDebugStringA(buf); - db_set_dw(0,"CLUI","PF:Last RebuildEntireList Time:",tick); - } -} - - -int GetNewSelection(ClcGroup *group, int selection, int direction) -{ - int lastcount = 0, count = 0;//group->cl.count; - ClcGroup *topgroup = group; - if (selection<0) { - return 0; - } - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) - break; - - group->scanIndex++; - continue; - } - if (count>=selection) return count; - lastcount = count; - count++; - if ((group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) && (group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG)) { - count++; - } - if ( !direction) { - if (count>selection) return lastcount; - } - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP && (group->cl.items[group->scanIndex]->group->expanded)) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - continue; - } - group->scanIndex++; - } - return lastcount; - } - -int GetGroupContentsCount(ClcGroup *group,int visibleOnly) -{ - int count = 0;//group->cl.count; - ClcGroup *topgroup = group; - - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - if (group == topgroup) break; - group = group->parent; - group->scanIndex++; - continue; - } - - count++; - if ((group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) && (group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG)) - count++; - - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP && (!visibleOnly || group->cl.items[group->scanIndex]->group->expanded)) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - continue; - } - group->scanIndex++; - } - return count; -} - -extern void ( *saveSortCLC )(HWND hwnd,struct ClcData *dat,int useInsertionSort); - -void SortCLC(HWND hwnd,struct ClcData *dat,int useInsertionSort) -{ -#ifdef _DEBUG - DWORD tick = GetTickCount(); -#endif - int oldSort = dat->needsResort; - saveSortCLC(hwnd, dat, useInsertionSort); - if ( oldSort ) - ClearRowByIndexCache(); - -#ifdef _DEBUG - { - char buf[255]; - //sprintf(buf,"%s %s took %i ms",__FILE__,__LINE__,tick); - tick = GetTickCount()-tick; - if (tick > 5) { - mir_snprintf(buf, SIZEOF(buf), "SortCLC %d \r\n", tick); - OutputDebugStringA(buf); - db_set_dw(0,"CLUI","PF:Last SortCLC Time:",tick); - } - } -#endif -} - -struct SavedContactState_t -{ - MCONTACT hContact; - WORD iExtraImage[EXTRA_ICON_COUNT]; - int checked; -}; - -struct SavedGroupState_t -{ - int groupId, expanded; -}; - -struct SavedInfoState_t -{ - int parentId; - struct ClcContact contact; -}; - -void SaveStateAndRebuildList(HWND hwnd,struct ClcData *dat) -{ - NMCLISTCONTROL nm; - int i,j; - struct SavedGroupState_t *savedGroup = NULL; - int savedGroupCount = 0,savedGroupAlloced = 0; - struct SavedContactState_t *savedContact = NULL; - int savedContactCount = 0,savedContactAlloced = 0; - struct SavedInfoState_t *savedInfo = NULL; - int savedInfoCount = 0,savedInfoAlloced = 0; - ClcGroup *group; - struct ClcContact *contact; - - int tick = GetTickCount(); - int allocstep = 1024; - pcli->pfnHideInfoTip(hwnd,dat); - KillTimer(hwnd,TIMERID_INFOTIP); - KillTimer(hwnd,TIMERID_RENAME); - pcli->pfnEndRename(hwnd,dat,1); - - group = &dat->list; - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) - break; - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - if (++savedGroupCount>savedGroupAlloced) { - savedGroupAlloced += allocstep; - savedGroup = (struct SavedGroupState_t*)mir_realloc(savedGroup,sizeof(struct SavedGroupState_t)*savedGroupAlloced); - } - savedGroup[savedGroupCount-1].groupId = group->groupId; - savedGroup[savedGroupCount-1].expanded = group->expanded; - continue; - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) { - if (++savedContactCount>savedContactAlloced) { - savedContactAlloced += allocstep; - savedContact = (struct SavedContactState_t*)mir_realloc(savedContact,sizeof(struct SavedContactState_t)*savedContactAlloced); - } - savedContact[savedContactCount-1].hContact = group->cl.items[group->scanIndex]->hContact; - memcpy(savedContact[savedContactCount-1].iExtraImage, group->cl.items[group->scanIndex]->iExtraImage, sizeof(contact->iExtraImage)); - savedContact[savedContactCount-1].checked = group->cl.items[group->scanIndex]->flags & CONTACTF_CHECKED; - if (group->cl.items[group->scanIndex]->SubAllocated>0) - { - int l; - for (l = 0; lcl.items[group->scanIndex]->SubAllocated; l++) - { - if (++savedContactCount>savedContactAlloced) { - savedContactAlloced += allocstep; - savedContact = (struct SavedContactState_t*)mir_realloc(savedContact,sizeof(struct SavedContactState_t)*savedContactAlloced); - } - savedContact[savedContactCount-1].hContact = group->cl.items[group->scanIndex]->subcontacts[l].hContact; - memcpy(savedContact[savedContactCount-1].iExtraImage, group->cl.items[group->scanIndex]->subcontacts[l].iExtraImage, sizeof(contact->iExtraImage)); - savedContact[savedContactCount-1].checked = group->cl.items[group->scanIndex]->subcontacts[l].flags&CONTACTF_CHECKED; - } - } - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_INFO) { - if (++savedInfoCount>savedInfoAlloced) { - savedInfoAlloced += allocstep; - savedInfo = (struct SavedInfoState_t*)mir_realloc(savedInfo,sizeof(struct SavedInfoState_t)*savedInfoAlloced); - } - if (group->parent == NULL) - savedInfo[savedInfoCount-1].parentId = -1; - else - savedInfo[savedInfoCount-1].parentId = group->groupId; - savedInfo[savedInfoCount-1].contact = *group->cl.items[group->scanIndex]; - } - group->scanIndex++; - } - - pcli->pfnFreeGroup(&dat->list); - RebuildEntireList(hwnd,dat); - - group = &dat->list; - group->scanIndex = 0; - for (;;) { - if (group->scanIndex == group->cl.count) { - group = group->parent; - if (group == NULL) - break; - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP) { - group = group->cl.items[group->scanIndex]->group; - group->scanIndex = 0; - for (i = 0;igroupId) { - group->expanded = savedGroup[i].expanded; - break; - } - continue; - } - else if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT) { - for (i = 0;icl.items[group->scanIndex]->hContact) { - memcpy(group->cl.items[group->scanIndex]->iExtraImage, savedContact[i].iExtraImage, sizeof(contact->iExtraImage)); - if (savedContact[i].checked) - group->cl.items[group->scanIndex]->flags |= CONTACTF_CHECKED; - break; - } - if (group->cl.items[group->scanIndex]->SubAllocated>0) - { - for (int l = 0; lcl.items[group->scanIndex]->SubAllocated; l++) - for (i = 0;icl.items[group->scanIndex]->subcontacts[l].hContact) { - memcpy(group->cl.items[group->scanIndex]->subcontacts[l].iExtraImage, savedContact[i].iExtraImage, sizeof(contact->iExtraImage)); - if (savedContact[i].checked) - group->cl.items[group->scanIndex]->subcontacts[l].flags |= CONTACTF_CHECKED; - break; - } - } - } - group->scanIndex++; - } - if (savedGroup) mir_free(savedGroup); - if (savedContact) mir_free(savedContact); - for (i = 0;ilist; - else { - if (!FindItem(hwnd, dat, savedInfo[i].parentId | HCONTACT_ISGROUP, &contact, NULL, NULL)) - continue; - group = contact->group; - } - j = AddInfoItemToGroup(group,savedInfo[i].contact.flags,_T("")); - *group->cl.items[j] = savedInfo[i].contact; - } - if (savedInfo) mir_free(savedInfo); - pcli->pfnRecalculateGroupCheckboxes(hwnd,dat); - - RecalcScrollBar(hwnd,dat); - nm.hdr.code = CLN_LISTREBUILT; - nm.hdr.hwndFrom = hwnd; - nm.hdr.idFrom = GetDlgCtrlID(hwnd); - - - //srand(GetTickCount()); - - tick = GetTickCount()-tick; - { - char buf[255]; - //sprintf(buf,"%s %s took %i ms",__FILE__,__LINE__,tick); - mir_snprintf(buf, SIZEOF(buf), "SaveStateAndRebuildList %d \r\n", tick); - - OutputDebugStringA(buf); - } - ClearRowByIndexCache(); - SendMessage(GetParent(hwnd),WM_NOTIFY,0,(LPARAM)&nm); -} diff --git a/plugins/Clist_mw/src/clcopts.cpp b/plugins/Clist_mw/src/clcopts.cpp deleted file mode 100644 index 2ce7736a7a..0000000000 --- a/plugins/Clist_mw/src/clcopts.cpp +++ /dev/null @@ -1,548 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clc.h" - -#define DBFONTF_BOLD 1 -#define DBFONTF_ITALIC 2 -#define DBFONTF_UNDERLINE 4 - -static INT_PTR CALLBACK DlgProcClcMainOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -static INT_PTR CALLBACK DlgProcClcMetaOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -static INT_PTR CALLBACK DlgProcClcBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -static INT_PTR CALLBACK DlgProcStatusBarBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -int OnStatusBarBackgroundChange(); - -int BgClcChange(WPARAM wParam, LPARAM lParam) -{ - pcli->pfnClcOptionsChanged(); - return 0; -} - -int BgStatusBarChange(WPARAM wParam, LPARAM lParam) -{ - pcli->pfnClcOptionsChanged(); - OnStatusBarBackgroundChange(); - return 0; -} - -int ClcOptInit(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.hInstance = g_hInst; - odp.pszGroup = LPGEN("Contact list"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLC); - odp.pszTitle = LPGEN("List"); - odp.pfnDlgProc = DlgProcClcMainOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - - if (!ServiceExists(MS_BACKGROUNDCONFIG_REGISTER)) { - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLCBKG); - odp.pszTitle = LPGEN("List background"); - odp.pfnDlgProc = DlgProcClcBkgOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - } - - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_META_CLC); - odp.pszTitle = LPGEN("List metacontacts"); - odp.pfnDlgProc = DlgProcClcMetaOpts; - Options_AddPage(wParam, &odp); - - if (!ServiceExists(MS_BACKGROUNDCONFIG_REGISTER)) { - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLCBKG); - odp.pszTitle = LPGEN("Status bar background"); - odp.pfnDlgProc = DlgProcStatusBarBkgOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - } - - return 0; -} - -struct CheckBoxToStyleEx_t { - int id; - DWORD flag; - int not; -} static const checkBoxToStyleEx[] = { - {IDC_DISABLEDRAGDROP,CLS_EX_DISABLEDRAGDROP,0}, - {IDC_NOTEDITLABELS,CLS_EX_EDITLABELS,1}, - {IDC_SHOWSELALWAYS,CLS_EX_SHOWSELALWAYS,0}, - {IDC_TRACKSELECT,CLS_EX_TRACKSELECT,0}, - {IDC_SHOWGROUPCOUNTS,CLS_EX_SHOWGROUPCOUNTS,0}, - {IDC_HIDECOUNTSWHENEMPTY,CLS_EX_HIDECOUNTSWHENEMPTY,0}, - {IDC_DIVIDERONOFF,CLS_EX_DIVIDERONOFF,0}, - {IDC_NOTNOTRANSLUCENTSEL,CLS_EX_NOTRANSLUCENTSEL,1}, - {IDC_LINEWITHGROUPS,CLS_EX_LINEWITHGROUPS,0}, - {IDC_QUICKSEARCHVISONLY,CLS_EX_QUICKSEARCHVISONLY,0}, - {IDC_SORTGROUPSALPHA,CLS_EX_SORTGROUPSALPHA,0}, - {IDC_NOTNOSMOOTHSCROLLING,CLS_EX_NOSMOOTHSCROLLING,1}}; - -struct CheckBoxValues_t { - DWORD style; - TCHAR *szDescr; -}; -static const struct CheckBoxValues_t greyoutValues[] = -{ - {GREYF_UNFOCUS, LPGENT("Not focused") }, - {MODEF_OFFLINE, LPGENT("Offline") }, - {PF2_ONLINE, LPGENT("Online") }, - {PF2_SHORTAWAY, LPGENT("Away") }, - {PF2_LONGAWAY, LPGENT("NA") }, - {PF2_LIGHTDND, LPGENT("Occupied") }, - {PF2_HEAVYDND, LPGENT("DND") }, - {PF2_FREECHAT, LPGENT("Free for chat") }, - {PF2_INVISIBLE, LPGENT("Invisible") }, - {PF2_OUTTOLUNCH, LPGENT("Out to lunch") }, - {PF2_ONTHEPHONE, LPGENT("On the phone") } -}; - -static const struct CheckBoxValues_t offlineValues[] = -{ - {MODEF_OFFLINE, LPGENT("Offline") }, - {PF2_ONLINE, LPGENT("Online") }, - {PF2_SHORTAWAY, LPGENT("Away") }, - {PF2_LONGAWAY, LPGENT("NA") }, - {PF2_LIGHTDND, LPGENT("Occupied") }, - {PF2_HEAVYDND, LPGENT("DND") }, - {PF2_FREECHAT, LPGENT("Free for chat") }, - {PF2_INVISIBLE, LPGENT("Invisible") }, - {PF2_OUTTOLUNCH, LPGENT("Out to lunch") }, - {PF2_ONTHEPHONE, LPGENT("On the phone") } -}; - -static void FillCheckBoxTree(HWND hwndTree,const struct CheckBoxValues_t *values,int nValues,DWORD style) -{ - TVINSERTSTRUCT tvis; - int i; - - tvis.hParent = NULL; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_PARAM|TVIF_TEXT|TVIF_STATE; - for (i = 0;i>12 == 2)) flags |= tvi.lParam; - tvi.hItem = TreeView_GetNextSibling(hwndTree,tvi.hItem); - } - return flags; -} - -static INT_PTR CALLBACK DlgProcClcMetaOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - LPNMHDR t; - t = ((LPNMHDR)lParam); - switch (msg) - { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - - CheckDlgButton(hwndDlg, IDC_META, db_get_b(NULL,"CLC","Meta",0) ? BST_CHECKED : BST_UNCHECKED); /// by FYR - CheckDlgButton(hwndDlg, IDC_METADBLCLK, db_get_b(NULL,"CLC","MetaDoubleClick",0) ? BST_CHECKED : BST_UNCHECKED); /// by FYR - CheckDlgButton(hwndDlg, IDC_METASUBEXTRA, db_get_b(NULL,"CLC","MetaHideExtra",0) ? BST_CHECKED : BST_UNCHECKED); /// by FYR - CheckDlgButton(hwndDlg, IDC_METASUBEXTRA_IGN, db_get_b(NULL,"CLC","MetaIgnoreEmptyExtra",1) ? BST_CHECKED : BST_UNCHECKED); /// by FYR - CheckDlgButton(hwndDlg, IDC_METASUB_HIDEOFFLINE, db_get_b(NULL,"CLC","MetaHideOfflineSub",1) ? BST_CHECKED : BST_UNCHECKED); /// by FYR - return TRUE; - case WM_COMMAND: - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - return TRUE; - case WM_NOTIFY: - - switch(t->idFrom) - { - case 0: - switch (t->code) - { - case PSN_APPLY: - db_set_b(NULL,"CLC","Meta",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_META)); // by FYR - db_set_b(NULL,"CLC","MetaDoubleClick",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_METADBLCLK)); // by FYR - db_set_b(NULL,"CLC","MetaHideExtra",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_METASUBEXTRA)); // by FYR - db_set_b(NULL,"CLC","MetaIgnoreEmptyExtra",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_METASUBEXTRA_IGN)); // by FYR - db_set_b(NULL,"CLC","MetaHideOfflineSub",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_METASUB_HIDEOFFLINE)); // by FYR - pcli->pfnClcOptionsChanged(); - return TRUE; - } - break; - } - break; - } - return FALSE; -} - -static INT_PTR CALLBACK DlgProcClcMainOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_HIDEOFFLINEOPTS),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_HIDEOFFLINEOPTS),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); - { - DWORD exStyle = db_get_dw(NULL,"CLC","ExStyle",pcli->pfnGetDefaultExStyle()); - for (int i = 0;i < SIZEOF(checkBoxToStyleEx); i++) - CheckDlgButton(hwndDlg,checkBoxToStyleEx[i].id,(exStyle&checkBoxToStyleEx[i].flag)^(checkBoxToStyleEx[i].flag*checkBoxToStyleEx[i].not)?BST_CHECKED:BST_UNCHECKED); - - UDACCEL accel[2] = {{0,10},{2,50}}; - SendDlgItemMessage(hwndDlg,IDC_SMOOTHTIMESPIN,UDM_SETRANGE,0,MAKELONG(999,0)); - SendDlgItemMessage(hwndDlg,IDC_SMOOTHTIMESPIN,UDM_SETACCEL,SIZEOF(accel), (LPARAM)&accel ); - SendDlgItemMessage(hwndDlg,IDC_SMOOTHTIMESPIN,UDM_SETPOS,0,MAKELONG(db_get_w(NULL,"CLC","ScrollTime",CLCDEFAULT_SCROLLTIME),0)); - } - CheckDlgButton(hwndDlg,IDC_IDLE,db_get_b(NULL,"CLC","ShowIdle",CLCDEFAULT_SHOWIDLE)?BST_CHECKED:BST_UNCHECKED); - - SendDlgItemMessage(hwndDlg,IDC_LEFTMARGINSPIN,UDM_SETRANGE,0,MAKELONG(64,0)); - SendDlgItemMessage(hwndDlg,IDC_LEFTMARGINSPIN,UDM_SETPOS,0,MAKELONG( db_get_b(NULL,"CLC","LeftMargin",CLCDEFAULT_LEFTMARGIN),0)); - SendDlgItemMessage(hwndDlg,IDC_GROUPINDENTSPIN,UDM_SETRANGE,0,MAKELONG(50,0)); - SendDlgItemMessage(hwndDlg,IDC_GROUPINDENTSPIN,UDM_SETPOS,0,MAKELONG( db_get_b(NULL,"CLC","GroupIndent",CLCDEFAULT_GROUPINDENT),0)); - CheckDlgButton(hwndDlg,IDC_GREYOUT,db_get_dw(NULL,"CLC","GreyoutFlags",CLCDEFAULT_GREYOUTFLAGS)?BST_CHECKED:BST_UNCHECKED); - - - EnableWindow(GetDlgItem(hwndDlg,IDC_SMOOTHTIME),IsDlgButtonChecked(hwndDlg,IDC_NOTNOSMOOTHSCROLLING)); - EnableWindow(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),IsDlgButtonChecked(hwndDlg,IDC_GREYOUT)); - FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),greyoutValues,SIZEOF(greyoutValues),db_get_dw(NULL,"CLC","FullGreyoutFlags",CLCDEFAULT_FULLGREYOUTFLAGS)); - FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_HIDEOFFLINEOPTS),offlineValues,SIZEOF(offlineValues),db_get_dw(NULL,"CLC","OfflineModes",CLCDEFAULT_OFFLINEMODES)); - CheckDlgButton(hwndDlg,IDC_NOSCROLLBAR,db_get_b(NULL,"CLC","NoVScrollBar",0)?BST_CHECKED:BST_UNCHECKED); - return TRUE; - - case WM_VSCROLL: - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_COMMAND: - if (LOWORD(wParam) == IDC_NOTNOSMOOTHSCROLLING) - EnableWindow(GetDlgItem(hwndDlg,IDC_SMOOTHTIME),IsDlgButtonChecked(hwndDlg,IDC_NOTNOSMOOTHSCROLLING)); - if (LOWORD(wParam) == IDC_GREYOUT) - EnableWindow(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),IsDlgButtonChecked(hwndDlg,IDC_GREYOUT)); - if ((LOWORD(wParam) == IDC_LEFTMARGIN || LOWORD(wParam) == IDC_SMOOTHTIME || LOWORD(wParam) == IDC_GROUPINDENT) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case IDC_GREYOUTOPTS: - case IDC_HIDEOFFLINEOPTS: - if (((LPNMHDR)lParam)->code == NM_CLICK) { - TVHITTESTINFO hti; - hti.pt.x = (short)LOWORD(GetMessagePos()); - hti.pt.y = (short)HIWORD(GetMessagePos()); - ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); - if (TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) - if (hti.flags&TVHT_ONITEMSTATEICON) { - TVITEM tvi; - tvi.mask = TVIF_HANDLE|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvi.hItem = hti.hItem; - TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - tvi.iImage = tvi.iSelectedImage = (tvi.iImage == 1) ? 2 : 1; - TreeView_SetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - break; - case 0: - if (((LPNMHDR)lParam)->code == PSN_APPLY) { - int i; - DWORD exStyle = 0; - for (i = 0;i < SIZEOF(checkBoxToStyleEx);i++) - if ((IsDlgButtonChecked(hwndDlg,checkBoxToStyleEx[i].id) == 0) == checkBoxToStyleEx[i].not) - exStyle |= checkBoxToStyleEx[i].flag; - db_set_dw(NULL,"CLC","ExStyle",exStyle); - - DWORD fullGreyoutFlags = MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS)); - db_set_dw(NULL,"CLC","FullGreyoutFlags",fullGreyoutFlags); - if (IsDlgButtonChecked(hwndDlg,IDC_GREYOUT)) - db_set_dw(NULL,"CLC","GreyoutFlags",fullGreyoutFlags); - else - db_set_dw(NULL,"CLC","GreyoutFlags",0); - - db_set_b(NULL,"CLC","ShowIdle",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_IDLE)?1:0)); - db_set_dw(NULL,"CLC","OfflineModes",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_HIDEOFFLINEOPTS))); - db_set_b(NULL,"CLC","LeftMargin",(BYTE)SendDlgItemMessage(hwndDlg,IDC_LEFTMARGINSPIN,UDM_GETPOS,0,0)); - db_set_w(NULL,"CLC","ScrollTime",(WORD)SendDlgItemMessage(hwndDlg,IDC_SMOOTHTIMESPIN,UDM_GETPOS,0,0)); - db_set_b(NULL,"CLC","GroupIndent",(BYTE)SendDlgItemMessage(hwndDlg,IDC_GROUPINDENTSPIN,UDM_GETPOS,0,0)); - db_set_b(NULL,"CLC","NoVScrollBar",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_NOSCROLLBAR)?1:0)); - - pcli->pfnClcOptionsChanged(); - return TRUE; - } - } - break; - - case WM_DESTROY: - ImageList_Destroy(TreeView_GetImageList(GetDlgItem(hwndDlg,IDC_GREYOUTOPTS),TVSIL_NORMAL)); - break; - } - return FALSE; -} - -static INT_PTR CALLBACK DlgProcStatusBarBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg,IDC_BITMAP,db_get_b(NULL,"StatusBar","UseBitmap",CLCDEFAULT_USEBITMAP)?BST_CHECKED:BST_UNCHECKED); - SendMessage(hwndDlg,WM_USER+10,0,0); - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETDEFAULTCOLOUR,0,CLCDEFAULT_BKCOLOUR); - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETCOLOUR,0,db_get_dw(NULL,"StatusBar","BkColour",CLCDEFAULT_BKCOLOUR)); - SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_SETDEFAULTCOLOUR,0,CLCDEFAULT_SELBKCOLOUR); - SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_SETCOLOUR,0,db_get_dw(NULL,"StatusBar","SelBkColour",CLCDEFAULT_SELBKCOLOUR)); - { - DBVARIANT dbv; - if ( !db_get_s(NULL,"StatusBar","BkBitmap",&dbv)) { - SetDlgItemTextA(hwndDlg,IDC_FILENAME,dbv.pszVal); - - char szPath[MAX_PATH]; - if ( PathToAbsolute(dbv.pszVal, szPath)) - SetDlgItemTextA(hwndDlg, IDC_FILENAME, szPath); - - mir_free(dbv.pszVal); - } - - WORD bmpUse = db_get_w(NULL,"StatusBar","BkBmpUse",CLCDEFAULT_BKBMPUSE); - CheckDlgButton(hwndDlg,IDC_STRETCHH,bmpUse&CLB_STRETCHH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_STRETCHV,bmpUse&CLB_STRETCHV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEH,bmpUse&CLBF_TILEH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEV,bmpUse&CLBF_TILEV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_SCROLL,bmpUse&CLBF_SCROLL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_PROPORTIONAL,bmpUse&CLBF_PROPORTIONAL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEVROWH,bmpUse&CLBF_TILEVTOROWHEIGHT?BST_CHECKED:BST_UNCHECKED); - - SHAutoComplete(GetDlgItem(hwndDlg, IDC_FILENAME), 1); - } - return TRUE; - - case WM_USER+10: - EnableWindow(GetDlgItem(hwndDlg,IDC_FILENAME),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_BROWSE),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STRETCHH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STRETCHV),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEV),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SCROLL),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_PROPORTIONAL),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEVROWH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - break; - - case WM_COMMAND: - if (LOWORD(wParam) == IDC_BROWSE) { - char str[MAX_PATH]; - OPENFILENAMEA ofn = {0}; - char filter[512]; - - GetDlgItemTextA(hwndDlg,IDC_FILENAME,str,SIZEOF(str)); - ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; - ofn.hwndOwner = hwndDlg; - ofn.hInstance = NULL; - CallService(MS_UTILS_GETBITMAPFILTERSTRINGS,SIZEOF(filter),(LPARAM)filter); - ofn.lpstrFilter = filter; - ofn.lpstrFile = str; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - ofn.nMaxFile = SIZEOF(str); - ofn.nMaxFileTitle = MAX_PATH; - ofn.lpstrDefExt = "bmp"; - if ( !GetOpenFileNameA(&ofn)) break; - SetDlgItemTextA(hwndDlg,IDC_FILENAME,str); - } - else if (LOWORD(wParam) == IDC_FILENAME && HIWORD(wParam) != EN_CHANGE) break; - if (LOWORD(wParam) == IDC_BITMAP) SendMessage(hwndDlg,WM_USER+10,0,0); - if (LOWORD(wParam) == IDC_FILENAME && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - db_set_b(NULL,"StatusBar","UseBitmap",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - { - COLORREF col; - col = SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_GETCOLOUR,0,0); - if (col == CLCDEFAULT_BKCOLOUR) db_unset(NULL,"StatusBar","BkColour"); - else db_set_dw(NULL,"StatusBar","BkColour",col); - col = SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_GETCOLOUR,0,0); - if (col == CLCDEFAULT_SELBKCOLOUR) db_unset(NULL,"StatusBar","SelBkColour"); - else db_set_dw(NULL,"StatusBar","SelBkColour",col); - - char str[MAX_PATH],strrel[MAX_PATH]; - GetDlgItemTextA(hwndDlg,IDC_FILENAME,str,SIZEOF(str)); - if ( PathToRelative(str, strrel)) - db_set_s(NULL,"StatusBar","BkBitmap",strrel); - else - db_set_s(NULL,"StatusBar","BkBitmap",str); - - WORD flags = 0; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHH)) flags |= CLB_STRETCHH; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHV)) flags |= CLB_STRETCHV; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEH)) flags |= CLBF_TILEH; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEV)) flags |= CLBF_TILEV; - if (IsDlgButtonChecked(hwndDlg,IDC_SCROLL)) flags |= CLBF_SCROLL; - if (IsDlgButtonChecked(hwndDlg,IDC_PROPORTIONAL)) flags |= CLBF_PROPORTIONAL; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEVROWH)) flags |= CLBF_TILEVTOROWHEIGHT; - - db_set_w(NULL,"StatusBar","BkBmpUse",flags); - } - - pcli->pfnClcOptionsChanged(); - OnStatusBarBackgroundChange(); - return TRUE; - } - break; - } - break; - } - return FALSE; -} - -static INT_PTR CALLBACK DlgProcClcBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg,IDC_BITMAP,db_get_b(NULL,"CLC","UseBitmap",CLCDEFAULT_USEBITMAP)?BST_CHECKED:BST_UNCHECKED); - SendMessage(hwndDlg,WM_USER+10,0,0); - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETDEFAULTCOLOUR,0,CLCDEFAULT_BKCOLOUR); - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETCOLOUR,0,db_get_dw(NULL,"CLC","BkColour",CLCDEFAULT_BKCOLOUR)); - SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_SETDEFAULTCOLOUR,0,CLCDEFAULT_SELBKCOLOUR); - SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_SETCOLOUR,0,db_get_dw(NULL,"CLC","SelBkColour",CLCDEFAULT_SELBKCOLOUR)); - { - DBVARIANT dbv; - if ( !db_get_s(NULL,"CLC","BkBitmap",&dbv)) { - SetDlgItemTextA(hwndDlg,IDC_FILENAME,dbv.pszVal); - - char szPath[MAX_PATH]; - if ( PathToAbsolute(dbv.pszVal, szPath)) - SetDlgItemTextA(hwndDlg,IDC_FILENAME,szPath); - - mir_free(dbv.pszVal); - } - } - - { WORD bmpUse = db_get_w(NULL,"CLC","BkBmpUse",CLCDEFAULT_BKBMPUSE); - CheckDlgButton(hwndDlg,IDC_STRETCHH,bmpUse&CLB_STRETCHH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_STRETCHV,bmpUse&CLB_STRETCHV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEH,bmpUse&CLBF_TILEH?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEV,bmpUse&CLBF_TILEV?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_SCROLL,bmpUse&CLBF_SCROLL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_PROPORTIONAL,bmpUse&CLBF_PROPORTIONAL?BST_CHECKED:BST_UNCHECKED); - CheckDlgButton(hwndDlg,IDC_TILEVROWH,bmpUse&CLBF_TILEVTOROWHEIGHT?BST_CHECKED:BST_UNCHECKED); - - } - SHAutoComplete(GetDlgItem(hwndDlg,IDC_FILENAME),1); - return TRUE; - case WM_USER+10: - EnableWindow(GetDlgItem(hwndDlg,IDC_FILENAME),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_BROWSE),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STRETCHH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STRETCHV),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEV),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SCROLL),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_PROPORTIONAL),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TILEVROWH),IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - break; - case WM_COMMAND: - if (LOWORD(wParam) == IDC_BROWSE) { - char str[MAX_PATH]; - OPENFILENAMEA ofn = {0}; - char filter[512]; - - GetDlgItemTextA(hwndDlg,IDC_FILENAME,str,SIZEOF(str)); - ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; - ofn.hwndOwner = hwndDlg; - ofn.hInstance = NULL; - CallService(MS_UTILS_GETBITMAPFILTERSTRINGS,SIZEOF(filter),(LPARAM)filter); - ofn.lpstrFilter = filter; - ofn.lpstrFile = str; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - ofn.nMaxFile = SIZEOF(str); - ofn.nMaxFileTitle = MAX_PATH; - ofn.lpstrDefExt = "bmp"; - if ( !GetOpenFileNameA(&ofn)) break; - SetDlgItemTextA(hwndDlg,IDC_FILENAME,str); - } - else if (LOWORD(wParam) == IDC_FILENAME && HIWORD(wParam) != EN_CHANGE) break; - if (LOWORD(wParam) == IDC_BITMAP) SendMessage(hwndDlg,WM_USER+10,0,0); - if (LOWORD(wParam) == IDC_FILENAME && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - db_set_b(NULL,"CLC","UseBitmap",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_BITMAP)); - { COLORREF col; - col = SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_GETCOLOUR,0,0); - if (col == CLCDEFAULT_BKCOLOUR) db_unset(NULL,"CLC","BkColour"); - else db_set_dw(NULL,"CLC","BkColour",col); - col = SendDlgItemMessage(hwndDlg,IDC_SELCOLOUR,CPM_GETCOLOUR,0,0); - if (col == CLCDEFAULT_SELBKCOLOUR) db_unset(NULL,"CLC","SelBkColour"); - else db_set_dw(NULL,"CLC","SelBkColour",col); - } - { - char str[MAX_PATH],strrel[MAX_PATH]; - GetDlgItemTextA(hwndDlg,IDC_FILENAME,str,SIZEOF(str)); - if ( PathToRelative(str, strrel)) - db_set_s(NULL,"CLC","BkBitmap",strrel); - else - db_set_s(NULL,"CLC","BkBitmap",str); - } - { WORD flags = 0; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHH)) flags |= CLB_STRETCHH; - if (IsDlgButtonChecked(hwndDlg,IDC_STRETCHV)) flags |= CLB_STRETCHV; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEH)) flags |= CLBF_TILEH; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEV)) flags |= CLBF_TILEV; - if (IsDlgButtonChecked(hwndDlg,IDC_SCROLL)) flags |= CLBF_SCROLL; - if (IsDlgButtonChecked(hwndDlg,IDC_PROPORTIONAL)) flags |= CLBF_PROPORTIONAL; - if (IsDlgButtonChecked(hwndDlg,IDC_TILEVROWH)) flags |= CLBF_TILEVTOROWHEIGHT; - - db_set_w(NULL,"CLC","BkBmpUse",flags); - } - - pcli->pfnClcOptionsChanged(); - return TRUE; - } - break; - } - break; - } - return FALSE; -} diff --git a/plugins/Clist_mw/src/clcpaint.cpp b/plugins/Clist_mw/src/clcpaint.cpp deleted file mode 100644 index fef2359bd5..0000000000 --- a/plugins/Clist_mw/src/clcpaint.cpp +++ /dev/null @@ -1,662 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clc.h" - -extern HIMAGELIST himlCListClc; -static BYTE divide3[765] = {255}; -int MetaIgnoreEmptyExtra; -ExternDrawer SED; - -static void ChangeToFont(HDC hdc,struct ClcData *dat,int id,int *fontHeight) -{ - SelectObject(hdc,dat->fontInfo[id].hFont); - SetTextColor(hdc,dat->fontInfo[id].colour); - if (fontHeight) *fontHeight = dat->fontInfo[id].fontHeight; -} - -static void __inline SetHotTrackColour(HDC hdc,struct ClcData *dat) -{ - if (dat->gammaCorrection) { - COLORREF oldCol,newCol; - int oldLum,newLum; - - oldCol = GetTextColor(hdc); - oldLum = (GetRValue(oldCol)*30+GetGValue(oldCol)*59+GetBValue(oldCol)*11)/100; - newLum = (GetRValue(dat->hotTextColour)*30+GetGValue(dat->hotTextColour)*59+GetBValue(dat->hotTextColour)*11)/100; - if (newLum == 0) { - SetTextColor(hdc,dat->hotTextColour); - return; - } - if (newLum>=oldLum+20) { - oldLum += 20; - newCol = RGB(GetRValue(dat->hotTextColour)*oldLum/newLum,GetGValue(dat->hotTextColour)*oldLum/newLum,GetBValue(dat->hotTextColour)*oldLum/newLum); - } - else if (newLum<=oldLum) { - int r,g,b; - r = GetRValue(dat->hotTextColour)*oldLum/newLum; - g = GetGValue(dat->hotTextColour)*oldLum/newLum; - b = GetBValue(dat->hotTextColour)*oldLum/newLum; - if (r>255) { - g += (r-255)*3/7; - b += (r-255)*3/7; - r = 255; - } - if (g>255) { - r += (g-255)*59/41; - if (r>255) r = 255; - b += (g-255)*59/41; - g = 255; - } - if (b>255) { - r += (b-255)*11/89; - if (r>255) r = 255; - g += (b-255)*11/89; - if (g>255) g = 255; - b = 255; - } - newCol = RGB(r,g,b); - } - else newCol = dat->hotTextColour; - SetTextColor(hdc,newCol); - } - else - SetTextColor(hdc,dat->hotTextColour); -} - -static int GetStatusOnlineness(int status) -{ - switch(status) { - case ID_STATUS_FREECHAT: return 110; - case ID_STATUS_ONLINE: return 100; - case ID_STATUS_OCCUPIED: return 60; - case ID_STATUS_ONTHEPHONE: return 50; - case ID_STATUS_DND: return 40; - case ID_STATUS_AWAY: return 30; - case ID_STATUS_OUTTOLUNCH: return 20; - case ID_STATUS_NA: return 10; - case ID_STATUS_INVISIBLE: return 5; - } - return 0; -} - -static int GetGeneralisedStatus(void) -{ - int i,status,thisStatus,statusOnlineness,thisOnlineness; - - status = ID_STATUS_OFFLINE; - statusOnlineness = 0; - - for (i = 0;ihClcProtoCount;i++) { - thisStatus = pcli->clcProto[i].dwStatus; - if (thisStatus == ID_STATUS_INVISIBLE) - return ID_STATUS_INVISIBLE; - - thisOnlineness = GetStatusOnlineness(thisStatus); - if (thisOnlineness > statusOnlineness) { - status = thisStatus; - statusOnlineness = thisOnlineness; - } - } - return status; -} - -static int GetRealStatus(struct ClcContact * contact, int status) -{ - int i; - char *szProto = contact->proto; - if ( !szProto) return status; - for (i = 0;ihClcProtoCount;i++) { - if ( !lstrcmpA(pcli->clcProto[i].szProto,szProto)) { - return pcli->clcProto[i].dwStatus; - } - } - return status; -} - -void InternalPaintClc(HWND hwnd,struct ClcData *dat,HDC hdc,RECT *rcPaint) -{ - HDC hdcMem; - HBITMAP oldbmp; - HBITMAP oldbm; - HFONT oldfont; - RECT clRect; - int y,indent,index,fontHeight, subindex, subident; - struct ClcContact *Drawing; - ClcGroup *group; - HBITMAP hBmpOsb; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - int status = GetGeneralisedStatus(); - int grey = 0,groupCountsFontTopShift; - HBRUSH hBrushAlternateGrey = NULL; - POINT pt; - RECT testrc; - - // yes I know about GetSysColorBrush() - COLORREF tmpbkcolour = dat->bkColour; - - if (dat->greyoutFlags & pcli->pfnClcStatusToPf2(status) || style&WS_DISABLED) grey = 1; - else if (GetFocus() != hwnd && dat->greyoutFlags&GREYF_UNFOCUS) grey = 1; - GetClientRect(hwnd,&clRect); - - if (rcPaint == NULL) rcPaint = &clRect; - //rcPaint = &clRect; - - if (IsRectEmpty(rcPaint)) return; - GetCursorPos(&pt); - ScreenToClient(hwnd,&pt); - - - y = -dat->yScroll; - hdcMem = CreateCompatibleDC(hdc); - hBmpOsb = CreateBitmap(clRect.right,clRect.bottom,1,GetDeviceCaps(hdc,BITSPIXEL),NULL); - oldbmp = (HBITMAP)SelectObject(hdcMem,hBmpOsb); - { - oldfont = (HFONT)SelectObject(hdcMem,dat->fontInfo[FONTID_GROUPS].hFont); - - TEXTMETRIC tm; - GetTextMetrics(hdcMem,&tm); - groupCountsFontTopShift = tm.tmAscent; - SelectObject(hdcMem,dat->fontInfo[FONTID_GROUPCOUNTS].hFont); - GetTextMetrics(hdcMem,&tm); - groupCountsFontTopShift -= tm.tmAscent; - SelectObject(hdcMem,oldfont); - } - - if (style&CLS_GREYALTERNATE) - hBrushAlternateGrey = CreateSolidBrush(GetNearestColor(hdcMem,RGB(GetRValue(tmpbkcolour)-10,GetGValue(tmpbkcolour)-10,GetBValue(tmpbkcolour)-10))); - - ChangeToFont(hdcMem,dat,FONTID_CONTACTS,&fontHeight); - SetBkMode(hdcMem,TRANSPARENT); - - HBRUSH hBrush,hoBrush; - - hBrush = CreateSolidBrush(tmpbkcolour); - hoBrush = (HBRUSH)SelectObject(hdcMem,hBrush); - FillRect(hdcMem,rcPaint,hBrush); - SelectObject(hdcMem,hoBrush); - DeleteObject(hBrush); - if (dat->hBmpBackground) { - BITMAP bmp; - HDC hdcBmp; - int x,y; - int maxx,maxy; - int destw,desth; - - // XXX: Halftone isnt supported on 9x, however the scretch problems dont happen on 98. - SetStretchBltMode(hdcMem, HALFTONE); - - GetObject(dat->hBmpBackground,sizeof(bmp),&bmp); - hdcBmp = CreateCompatibleDC(hdcMem); - oldbm = (HBITMAP)SelectObject(hdcBmp,dat->hBmpBackground); - y = dat->backgroundBmpUse&CLBF_SCROLL?-dat->yScroll:0; - maxx = dat->backgroundBmpUse&CLBF_TILEH?clRect.right:1; - maxy = dat->backgroundBmpUse&CLBF_TILEV?maxy = rcPaint->bottom:y+1; - switch(dat->backgroundBmpUse&CLBM_TYPE) { - case CLB_STRETCH: - if (dat->backgroundBmpUse&CLBF_PROPORTIONAL) { - if (clRect.right*bmp.bmHeightbackgroundBmpUse&CLBF_PROPORTIONAL) { - destw = clRect.right; - desth = destw*bmp.bmHeight/bmp.bmWidth; - } - else { - destw = clRect.right; - desth = bmp.bmHeight; - if (dat->backgroundBmpUse&CLBF_TILEVTOROWHEIGHT) - desth = dat->rowHeight; - } - break; - - case CLB_STRETCHV: - if (dat->backgroundBmpUse&CLBF_PROPORTIONAL) { - desth = clRect.bottom; - destw = desth*bmp.bmWidth/bmp.bmHeight; - } - else { - destw = bmp.bmWidth; - desth = clRect.bottom; - } - break; - - default: //clb_topleft - destw = bmp.bmWidth; - desth = bmp.bmHeight; - if (dat->backgroundBmpUse&CLBF_TILEVTOROWHEIGHT) - desth = dat->rowHeight; - break; - } - - for (;ytop-desth) continue; - for (x = 0;xlist; - group->scanIndex = 0; - indent = 0; - subindex = -1; - for (index = 0;ybottom;) { - if (subindex == -1) - if (group->scanIndex == group->cl.count) { - group = group->parent; - indent--; - if (group == NULL) break; - group->scanIndex++; - continue; - } - - if (y>rcPaint->top-dat->rowHeight ) { - int iImage = -1; - int selected; - int hottrack; - SIZE textSize,countsSize,spaceSize; - int width,checkboxWidth; - char *szCounts; - - if (subindex == -1) { - Drawing = group->cl.items[group->scanIndex]; - subident = 0; - } - else { - Drawing = &(group->cl.items[group->scanIndex]->subcontacts[subindex]); - subident = dat->rowHeight/2; - } - //alternating grey - - selected = index == dat->selection && (dat->showSelAlways || dat->exStyle&CLS_EX_SHOWSELALWAYS || GetFocus() == hwnd) && Drawing->type != CLCIT_DIVIDER; - hottrack = dat->exStyle&CLS_EX_TRACKSELECT && Drawing->type != CLCIT_DIVIDER && dat->iHotTrack == index; - - if (style&CLS_GREYALTERNATE && index&1) { - RECT rc; - rc.top = y; rc.bottom = rc.top+dat->rowHeight; - rc.left = 0; rc.right = clRect.right; - FillRect(hdcMem,&rc,hBrushAlternateGrey); - } - - //setup - if (Drawing->type == CLCIT_GROUP) { - if (Drawing->group->expanded) - ChangeToFont(hdcMem,dat,FONTID_GROUPS,&fontHeight); - else - ChangeToFont(hdcMem,dat,FONTID_GROUPSCLOSED,&fontHeight); - } - else if (Drawing->type == CLCIT_INFO) { - if (Drawing->flags&CLCIIF_GROUPFONT) ChangeToFont(hdcMem,dat,FONTID_GROUPS,&fontHeight); - else ChangeToFont(hdcMem,dat,FONTID_CONTACTS,&fontHeight); - } - else if (Drawing->type == CLCIT_DIVIDER) - ChangeToFont(hdcMem,dat,FONTID_DIVIDERS,&fontHeight); - else if (Drawing->type == CLCIT_CONTACT && (Drawing->flags&CONTACTF_NOTONLIST) && (!Drawing->isSubcontact)) - ChangeToFont(hdcMem,dat,FONTID_NOTONLIST,&fontHeight); - else if ( Drawing->type == CLCIT_CONTACT && - ( - (Drawing->flags&CONTACTF_INVISTO && (!Drawing->isSubcontact) && GetRealStatus(group->cl.items[group->scanIndex], status) != ID_STATUS_INVISIBLE ) - || - (Drawing->flags&CONTACTF_VISTO && (!Drawing->isSubcontact) && GetRealStatus(group->cl.items[group->scanIndex], status) == ID_STATUS_INVISIBLE) - ) - ) - { - // the contact is in the always visible list and the proto is invisible - // the contact is in the always invisible and the proto is in any other mode - ChangeToFont(hdcMem,dat, Drawing->flags&CONTACTF_ONLINE ? FONTID_INVIS:FONTID_OFFINVIS ,&fontHeight); - } - else if (Drawing->type == CLCIT_CONTACT && (!(Drawing->flags&CONTACTF_ONLINE) && (!Drawing->isSubcontact))) - ChangeToFont(hdcMem,dat,FONTID_OFFLINE,&fontHeight); - else - ChangeToFont(hdcMem,dat,FONTID_CONTACTS,&fontHeight); - GetTextExtentPoint32(hdcMem,Drawing->szText,lstrlen(Drawing->szText),&textSize); - width = textSize.cx; - if (Drawing->type == CLCIT_GROUP) { - szCounts = pcli->pfnGetGroupCountsText(dat,group->cl.items[group->scanIndex]); - if (szCounts[0]) { - GetTextExtentPoint32A(hdcMem," ",1,&spaceSize); - ChangeToFont(hdcMem,dat,FONTID_GROUPCOUNTS,&fontHeight); - GetTextExtentPoint32A(hdcMem,szCounts,lstrlenA(szCounts),&countsSize); - width += spaceSize.cx+countsSize.cx; - } - } - - if ((style&CLS_CHECKBOXES && Drawing->type == CLCIT_CONTACT) || - (style&CLS_GROUPCHECKBOXES && Drawing->type == CLCIT_GROUP) || - (Drawing->type == CLCIT_INFO && Drawing->flags&CLCIIF_CHECKBOX)) - checkboxWidth = dat->checkboxSize+2; - else checkboxWidth = 0; - - //background - if (selected) { - // default value - paint on text - int x=dat->leftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace-2+subident; - ImageList_DrawEx(dat->himlHighlight,0,hdcMem,x,y,min(width+5,clRect.right-x),dat->rowHeight,CLR_NONE,CLR_NONE,dat->exStyle&CLS_EX_NOTRANSLUCENTSEL?ILD_NORMAL:ILD_BLEND25); - SetTextColor(hdcMem,dat->selTextColour); - } - else if (hottrack) - SetHotTrackColour(hdcMem,dat); - - //checkboxes - if (checkboxWidth) { - RECT rc; - HANDLE hTheme = OpenThemeData(hwnd,L"BUTTON"); - - rc.left = dat->leftMargin+indent*dat->groupIndent+subident; - rc.right = rc.left+dat->checkboxSize; - rc.top = y+((dat->rowHeight-dat->checkboxSize)>>1); - rc.bottom = rc.top+dat->checkboxSize; - DrawThemeBackground(hTheme, hdcMem, BP_CHECKBOX, Drawing->flags&CONTACTF_CHECKED?(hottrack?CBS_CHECKEDHOT:CBS_CHECKEDNORMAL):(hottrack?CBS_UNCHECKEDHOT:CBS_UNCHECKEDNORMAL), &rc, &rc); - CloseThemeData(hTheme); - } - - //icon - if (Drawing->type == CLCIT_GROUP) - iImage = Drawing->group->expanded?IMAGE_GROUPOPEN:IMAGE_GROUPSHUT; - else if (Drawing->type == CLCIT_CONTACT) - iImage = Drawing->iImage; - if (iImage != -1) { - /*COLORREF colourFg = dat->selBkColour; - int mode = ILD_NORMAL; - if (selected) mode = ILD_SELECTED; - else if (hottrack) {mode = ILD_FOCUS; colourFg = dat->hotTextColour;} - else if (Drawing->type == CLCIT_CONTACT && Drawing->flags&CONTACTF_NOTONLIST) {colourFg = dat->fontInfo[FONTID_NOTONLIST].colour; mode = ILD_BLEND50;} - ImageList_DrawEx(himlCListClc,iImage,hdcMem,dat->leftMargin+indent*dat->groupIndent+checkboxWidth,y+((dat->rowHeight-16)>>1),0,0,CLR_NONE,colourFg,mode); - */ - COLORREF colourFg = dat->selBkColour; - int mode = ILD_NORMAL; - if (hottrack) {colourFg = dat->hotTextColour;} - else if (Drawing->type == CLCIT_CONTACT && Drawing->flags&CONTACTF_NOTONLIST && (!Drawing->isSubcontact)) {colourFg = dat->fontInfo[FONTID_NOTONLIST].colour; mode = ILD_BLEND50;} - if (Drawing->type == CLCIT_CONTACT && dat->showIdle && (Drawing->flags&CONTACTF_IDLE)&& (!Drawing->isSubcontact) && GetRealStatus(group->cl.items[group->scanIndex],ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE) - mode = ILD_SELECTED; - ImageList_DrawEx(himlCListClc,iImage,hdcMem,dat->leftMargin+subident+indent*dat->groupIndent+checkboxWidth,y+((dat->rowHeight-16)>>1),0,0,CLR_NONE,colourFg,mode); - } - - //text - if (Drawing->type == CLCIT_DIVIDER) { - RECT rc; - rc.top = y+(dat->rowHeight>>1); rc.bottom = rc.top+2; - rc.left = dat->leftMargin+indent*dat->groupIndent; - rc.right = rc.left+((clRect.right-rc.left-textSize.cx)>>1)-3; - DrawEdge(hdcMem,&rc,BDR_SUNKENOUTER,BF_RECT); - TextOut(hdcMem,rc.right+3,y+((dat->rowHeight-fontHeight)>>1),Drawing->szText,lstrlen(Drawing->szText)); - rc.left = rc.right+6+textSize.cx; - rc.right = clRect.right; - DrawEdge(hdcMem,&rc,BDR_SUNKENOUTER,BF_RECT); - } - else if (Drawing->type == CLCIT_GROUP) { - RECT rc; - if (szCounts[0]) { - ClcGroup *clcg; - - clcg = (ClcGroup *)Drawing; - - fontHeight = dat->fontInfo[FONTID_GROUPS].fontHeight; - - rc.left = dat->leftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace; - rc.right = min(clRect.right-countsSize.cx,rc.left+textSize.cx+spaceSize.cx); - rc.top = y+((dat->rowHeight-fontHeight)>>1); - rc.bottom = rc.top+textSize.cy; - if (rc.rightgroup->expanded) - { - ChangeToFont(hdcMem,dat,FONTID_GROUPS,&fontHeight); - } - else - { - ChangeToFont(hdcMem,dat,FONTID_GROUPSCLOSED,&fontHeight); - } - - if (selected) - SetTextColor(hdcMem,dat->selTextColour); - else if (hottrack) - SetHotTrackColour(hdcMem,dat); - rc.right--; - ExtTextOut(hdcMem,rc.left,rc.top,ETO_CLIPPED,&rc,Drawing->szText,lstrlen(Drawing->szText),NULL); - } - else TextOut(hdcMem,dat->leftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace,y+((dat->rowHeight-fontHeight)>>1),Drawing->szText,lstrlen(Drawing->szText)); - if (dat->exStyle&CLS_EX_LINEWITHGROUPS) { - //calc if extra icons present - int enabledextraicons = 0; - for (iImage = 0;iImageextraColumnsCount;iImage++) { - if (Drawing->iExtraImage[iImage] == EMPTY_EXTRA_ICON) - continue; - enabledextraicons++; - } - rc.top = y+(dat->rowHeight>>1); rc.bottom = rc.top+2; - rc.left = dat->leftMargin+subident+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace+width+3; - rc.right = clRect.right-1-dat->extraColumnSpacing*enabledextraicons; - if (rc.right-rc.left>1) DrawEdge(hdcMem,&rc,BDR_SUNKENOUTER,BF_RECT); - } - } - else { - RECT rc; - rc.left = dat->leftMargin+subident+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace; - rc.top = y+((dat->rowHeight-fontHeight)>>1); - rc.bottom = rc.top+dat->rowHeight; - rc.right = clRect.right; - if (Drawing->type == CLCIT_CONTACT) - if (hottrack) - ChangeToFont(hdcMem,dat,FONTID_CONTACTSHOVER,&fontHeight); - - DrawText(hdcMem,Drawing->szText,lstrlen(Drawing->szText),&rc,DT_END_ELLIPSIS); - - } - - if (selected) { - if (Drawing->type != CLCIT_DIVIDER) { - SetTextColor(hdcMem,dat->quickSearchColour); - TextOut(hdcMem,dat->leftMargin+subident+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace,y+((dat->rowHeight-fontHeight)>>1),Drawing->szText,lstrlen(dat->szQuickSearch)); - } - } - - if (dat->style&CLS_SHOWSTATUSMESSAGES) - { - // status message - if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT && group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG) { - TCHAR * szText = group->cl.items[group->scanIndex]->szStatusMsg; - RECT rc; - rc.left = dat->leftMargin + indent * dat->groupIndent + checkboxWidth + dat->iconXSpace; - rc.top = y+dat->rowHeight+((dat->rowHeight-fontHeight)>>1); - rc.right = (clRect.right - clRect.left); - rc.bottom = rc.top+dat->rowHeight; - ChangeToFont(hdcMem,dat,FONTID_STATUSMSG,&fontHeight); - //ExtTextOut(hdcMem,rc.left,rc.top,ETO_CLIPPED,&rc,szText,lstrlen(szText),NULL); - DrawText(hdcMem, szText, lstrlen(szText), &rc, DT_SINGLELINE | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP | DT_WORD_ELLIPSIS); - } - } - - if ( !Drawing->isSubcontact || ( db_get_b(NULL,"CLC","MetaHideExtra",0) == 0)) { - - //extra icons - if ( !(style & CLS_EX_MULTICOLUMNALIGNLEFT)) { - int c = dat->extraColumnsCount; - for (iImage = dat->extraColumnsCount-1;iImage>=0;iImage--) { - COLORREF colourFg = dat->selBkColour; - int mode = ILD_NORMAL; - - if (Drawing->iExtraImage[iImage] == EMPTY_EXTRA_ICON) - continue; - - if (selected) mode = ILD_SELECTED; - else if (hottrack) {mode = ILD_FOCUS; colourFg = dat->hotTextColour;} - else if (Drawing->type == CLCIT_CONTACT && Drawing->flags&CONTACTF_NOTONLIST) {colourFg = dat->fontInfo[FONTID_NOTONLIST].colour; mode = ILD_BLEND50;} - { - - } - if (dat->MetaIgnoreEmptyExtra) c--; else c = iImage; - - testrc.left = clRect.right-dat->extraColumnSpacing*(dat->extraColumnsCount-c); - testrc.top = (y+((dat->rowHeight-16)>>1)); - testrc.right = testrc.left+16; - testrc.bottom = testrc.top+16; - if ( !PtInRect(&testrc,pt)) - mode = ILD_NORMAL; - - ImageList_DrawEx(dat->himlExtraColumns,Drawing->iExtraImage[iImage],hdcMem,clRect.right-dat->extraColumnSpacing*(dat->extraColumnsCount-c),y+((dat->rowHeight-16)>>1),0,0,CLR_NONE,colourFg,mode); - } - } - else { - int ic = 0; - for (iImage = 0;iImageextraColumnsCount;iImage++) { - COLORREF colourFg = dat->selBkColour; - int mode = ILD_NORMAL; - int x; - - if (Drawing->iExtraImage[iImage] == EMPTY_EXTRA_ICON) - continue; - - if (hottrack) { - mode = ILD_FOCUS; - colourFg = dat->hotTextColour; - } - else if (Drawing->type == CLCIT_CONTACT && (Drawing->flags & CONTACTF_NOTONLIST)) { - colourFg = dat->fontInfo[FONTID_NOTONLIST].colour; - mode = ILD_BLEND50; - } - - x = (dat->leftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace-2+width); - x += 16; - x = x+dat->extraColumnSpacing*(ic); - if (iImage == dat->extraColumnsCount-1) {x = clRect.right-18;} - ImageList_DrawEx(dat->himlExtraColumns,Drawing->iExtraImage[iImage],hdcMem, - x, - y+((dat->rowHeight-16)>>1),0,0,CLR_NONE,colourFg,mode); - - ic++; - } - } - } - } - index++; - y += dat->rowHeight; - - if (group->cl.items[group->scanIndex]->type == CLCIT_CONTACT && group->cl.items[group->scanIndex]->flags & CONTACTF_STATUSMSG) { - y += dat->rowHeight; - index++; - } - - //increment by subcontacts - if (group->cl.items[group->scanIndex]->subcontacts != NULL && group->cl.items[group->scanIndex]->type != CLCIT_GROUP) - if (group->cl.items[group->scanIndex]->SubExpanded) - if (subindexcl.items[group->scanIndex]->SubAllocated-1) - subindex++; - else subindex = -1; - - if (subindex == -1) { - if (group->cl.items[group->scanIndex]->type == CLCIT_GROUP && group->cl.items[group->scanIndex]->group->expanded) { - group = group->cl.items[group->scanIndex]->group; - indent++; - group->scanIndex = 0; - subindex = -1; - continue; - } - group->scanIndex++; - } - } - if (dat->iInsertionMark != -1) { //insertion mark - HBRUSH hBrush,hoBrush; - POINT pts[8]; - HRGN hRgn; - - pts[0].x = dat->leftMargin; pts[0].y = dat->iInsertionMark*dat->rowHeight-dat->yScroll-4; - pts[1].x = pts[0].x+2; pts[1].y = pts[0].y+3; - pts[2].x = clRect.right-4; pts[2].y = pts[1].y; - pts[3].x = clRect.right-1; pts[3].y = pts[0].y-1; - pts[4].x = pts[3].x; pts[4].y = pts[0].y+7; - pts[5].x = pts[2].x+1; pts[5].y = pts[1].y+2; - pts[6].x = pts[1].x; pts[6].y = pts[5].y; - pts[7].x = pts[0].x; pts[7].y = pts[4].y; - hRgn = CreatePolygonRgn(pts,SIZEOF(pts),ALTERNATE); - hBrush = CreateSolidBrush(dat->fontInfo[FONTID_CONTACTS].colour); - hoBrush = (HBRUSH)SelectObject(hdcMem,hBrush); - FillRgn(hdcMem,hRgn,hBrush); - SelectObject(hdcMem,hoBrush); - DeleteObject(hBrush); - } - if ( !grey) - BitBlt(hdc,rcPaint->left,rcPaint->top,rcPaint->right-rcPaint->left,rcPaint->bottom-rcPaint->top,hdcMem,rcPaint->left,rcPaint->top,SRCCOPY); - //DeleteDC(hdcMem); - if (hBrushAlternateGrey) DeleteObject(hBrushAlternateGrey); - if (grey) { - PBYTE bits; - BITMAPINFOHEADER bmih = {0}; - int i; - int greyRed,greyGreen,greyBlue; - COLORREF greyColour; - bmih.biBitCount = 32; - bmih.biSize = sizeof(bmih); - bmih.biCompression = BI_RGB; - bmih.biHeight = -clRect.bottom; - bmih.biPlanes = 1; - bmih.biWidth = clRect.right; - bits = (PBYTE)mir_alloc(4*bmih.biWidth*-bmih.biHeight); - GetDIBits(hdc,hBmpOsb,0,clRect.bottom,bits,(BITMAPINFO*)&bmih,DIB_RGB_COLORS); - greyColour = GetSysColor(COLOR_3DFACE); - greyRed = GetRValue(greyColour)*2; - greyGreen = GetGValue(greyColour)*2; - greyBlue = GetBValue(greyColour)*2; - if (divide3[0] == 255) { - for (i = 0; i < SIZEOF(divide3); i++) divide3[i] = (i+1)/3; - } - for (i = 4*clRect.right*clRect.bottom-4;i>=0;i -= 4) { - bits[i] = divide3[bits[i]+greyBlue]; - bits[i+1] = divide3[bits[i+1]+greyGreen]; - bits[i+2] = divide3[bits[i+2]+greyRed]; - } - SetDIBitsToDevice(hdc,0,0,clRect.right,clRect.bottom,0,0,0,clRect.bottom,bits,(BITMAPINFO*)&bmih,DIB_RGB_COLORS); - mir_free(bits); - } - SelectObject(hdcMem,oldfont); - SelectObject(hdcMem,oldbmp); - DeleteObject(hBmpOsb); - DeleteDC(hdcMem); -} - -void PaintClc(HWND hwnd,struct ClcData *dat,HDC hdc,RECT *rcPaint) -{ - if (SED.cbSize == sizeof(SED)&&SED.PaintClc != NULL) { - SED.PaintClc(hwnd,dat,hdc,rcPaint,pcli->hClcProtoCount,pcli->clcProto,himlCListClc); - return; - } - InternalPaintClc(hwnd,dat,hdc,rcPaint); -} diff --git a/plugins/Clist_mw/src/clcutils.cpp b/plugins/Clist_mw/src/clcutils.cpp deleted file mode 100644 index 0edfda16ed..0000000000 --- a/plugins/Clist_mw/src/clcutils.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clc.h" - -//loads of stuff that didn't really fit anywhere else - -int HitTest(HWND hwnd,struct ClcData *dat,int testx,int testy,struct ClcContact **contact,ClcGroup **group,DWORD *flags) -{ - struct ClcContact *hitcontact; - ClcGroup *hitgroup; - int hit,indent,width,i,cxSmIcon; - int checkboxWidth, subident,ic = 0; - SIZE textSize; - HDC hdc; - HFONT oldfont; - RECT clRect; - DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE); - - if (flags) *flags = 0; - GetClientRect(hwnd,&clRect); - if (testx<0 || testy<0 || testy>=clRect.bottom || testx>=clRect.right) { - if (flags) { - if (testx<0) *flags |= CLCHT_TOLEFT; - else if (testx>=clRect.right) *flags |= CLCHT_TORIGHT; - if (testy<0) *flags |= CLCHT_ABOVE; - else if (testy>=clRect.bottom) *flags |= CLCHT_BELOW; - } - return -1; - } - if (testxleftMargin) { - if (flags) *flags |= CLCHT_INLEFTMARGIN|CLCHT_NOWHERE; - return -1; - } - hit = GetRowByIndex(dat ,(testy+dat->yScroll)/dat->rowHeight,&hitcontact,&hitgroup); - if (hit == -1) { - if (flags) *flags |= CLCHT_NOWHERE|CLCHT_BELOWITEMS; - return -1; - } - if (contact) *contact = hitcontact; - if (group) *group = hitgroup; - ///////// - if (hitcontact->type == CLCIT_CONTACT && hitcontact->isSubcontact) - subident = dat->rowHeight/2; - else - subident = 0; - - for (indent = 0;hitgroup->parent;indent++,hitgroup = hitgroup->parent); - if (testxleftMargin+indent*dat->groupIndent+subident) { - if (flags) *flags |= CLCHT_ONITEMINDENT; - return hit; - } - checkboxWidth = 0; - if (style&CLS_CHECKBOXES && hitcontact->type == CLCIT_CONTACT) checkboxWidth = dat->checkboxSize+2; - if (style&CLS_GROUPCHECKBOXES && hitcontact->type == CLCIT_GROUP) checkboxWidth = dat->checkboxSize+2; - if (hitcontact->type == CLCIT_INFO && hitcontact->flags&CLCIIF_CHECKBOX) checkboxWidth = dat->checkboxSize+2; - if (testxleftMargin+indent*dat->groupIndent+checkboxWidth+subident) { - if (flags) *flags |= CLCHT_ONITEMCHECK; - return hit; - } - if (testxleftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace+subident) { - if (flags) *flags |= CLCHT_ONITEMICON; - return hit; - } - - hdc = GetDC(hwnd); - GetTextExtentPoint32(hdc,hitcontact->szText,lstrlen(hitcontact->szText),&textSize); - width = textSize.cx; - - cxSmIcon = GetSystemMetrics(SM_CXSMICON); - - for (i=0; i < dat->extraColumnsCount; i++) { - int x; - if (hitcontact->iExtraImage[i] == EMPTY_EXTRA_ICON) - continue; - - if ((style & CLS_EX_MULTICOLUMNALIGNLEFT)) { - x = (dat->leftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace-2+width); - x += 16; - x = x+dat->extraColumnSpacing*(ic); - if (i == dat->extraColumnsCount-1) {x = clRect.right-18;} - } - else { - int ir; - if (dat->MetaIgnoreEmptyExtra) { - ir = 0; - for (int j = i;jextraColumnsCount;j++) - if (hitcontact->iExtraImage[j] != EMPTY_EXTRA_ICON) - ir++; - } - else ir = dat->extraColumnsCount-i; - - x = clRect.right-dat->extraColumnSpacing*ir; - } - ic++; - - if (testx >= x && testx < x + cxSmIcon) { - if (flags) - *flags |= CLCHT_ONITEMEXTRA|(i<<24); - - ReleaseDC(hwnd,hdc); - return hit; - } - } - - if (hitcontact->type == CLCIT_GROUP) - oldfont = (HFONT)SelectObject(hdc,dat->fontInfo[FONTID_GROUPS].hFont); - else - oldfont = (HFONT)SelectObject(hdc,dat->fontInfo[FONTID_CONTACTS].hFont); - - GetTextExtentPoint32(hdc,hitcontact->szText,lstrlen(hitcontact->szText),&textSize); - width = textSize.cx; - if (hitcontact->type == CLCIT_GROUP) { - char *szCounts = pcli->pfnGetGroupCountsText(dat,hitcontact); - if (szCounts[0]) { - GetTextExtentPoint32A(hdc," ",1,&textSize); - width += textSize.cx; - SelectObject(hdc,dat->fontInfo[FONTID_GROUPCOUNTS].hFont); - GetTextExtentPoint32A(hdc,szCounts,lstrlenA(szCounts),&textSize); - width += textSize.cx; - } - } - SelectObject(hdc,oldfont); - ReleaseDC(hwnd,hdc); - if (testxleftMargin+indent*dat->groupIndent+checkboxWidth+dat->iconXSpace+width+4+subident) { - if (flags) *flags |= CLCHT_ONITEMLABEL; - return hit; - } - if (flags) *flags |= CLCHT_NOWHERE; - return -1; -} - -void ScrollTo(HWND hwnd,struct ClcData *dat,int desty,int noSmooth) -{ - DWORD startTick,nowTick; - int oldy = dat->yScroll; - RECT clRect,rcInvalidate; - int maxy,previousy; - - if (dat->iHotTrack != -1 && dat->yScroll != desty) { - pcli->pfnInvalidateItem(hwnd,dat,dat->iHotTrack); - dat->iHotTrack = -1; - ReleaseCapture(); - } - GetClientRect(hwnd,&clRect); - rcInvalidate = clRect; - maxy = dat->rowHeight*GetGroupContentsCount(&dat->list,2)-clRect.bottom; - if (desty>maxy) desty = maxy; - if (desty<0) desty = 0; - if (abs(desty-dat->yScroll)<4) noSmooth = 1; - if ( !noSmooth && dat->exStyle&CLS_EX_NOSMOOTHSCROLLING) noSmooth = 1; - previousy = dat->yScroll; - if ( !noSmooth) { - startTick = GetTickCount(); - for (;;) { - nowTick = GetTickCount(); - if (nowTick>=startTick+dat->scrollTime) break; - dat->yScroll = oldy+(desty-oldy)*(int)(nowTick-startTick)/dat->scrollTime; - if (dat->backgroundBmpUse&CLBF_SCROLL || dat->hBmpBackground == NULL) - ScrollWindowEx(hwnd,0,previousy-dat->yScroll,NULL,NULL,NULL,NULL,SW_INVALIDATE); - else - InvalidateRect(hwnd,NULL,FALSE); - previousy = dat->yScroll; - SetScrollPos(hwnd,SB_VERT,dat->yScroll,TRUE); - UpdateWindow(hwnd); - } - } - dat->yScroll = desty; - if (dat->backgroundBmpUse&CLBF_SCROLL || dat->hBmpBackground == NULL) - ScrollWindowEx(hwnd,0,previousy-dat->yScroll,NULL,NULL,NULL,NULL,SW_INVALIDATE); - else - InvalidateRect(hwnd,NULL,FALSE); - SetScrollPos(hwnd,SB_VERT,dat->yScroll,TRUE); -} - -void RecalcScrollBar(HWND hwnd,struct ClcData *dat) -{ - SCROLLINFO si = {0}; - RECT clRect; - NMCLISTCONTROL nm; - boolean sbar = FALSE; - - GetClientRect(hwnd,&clRect); - - si.cbSize = sizeof(si); - si.fMask = SIF_ALL; - si.nMin = 0; - si.nMax = dat->rowHeight*GetGroupContentsCount(&dat->list,2)-1; - si.nPage = clRect.bottom; - si.nPos = dat->yScroll; - - nm.hdr.code = CLN_LISTSIZECHANGE; - nm.hdr.hwndFrom = hwnd; - nm.hdr.idFrom = GetDlgCtrlID(hwnd); - nm.pt.y = si.nMax; - SendMessage(GetParent(hwnd),WM_NOTIFY,0,(LPARAM)&nm); - - GetClientRect(hwnd,&clRect); - si.cbSize = sizeof(si); - si.fMask = SIF_ALL; - si.nMin = 0; - si.nMax = dat->rowHeight*GetGroupContentsCount(&dat->list,2)-1; - si.nPage = clRect.bottom; - si.nPos = dat->yScroll; - - sbar = (dat->noVScrollbar == 1||(int)si.nPage>si.nMax); - - ShowScrollBar(hwnd,SB_VERT,sbar? FALSE : TRUE); - if ( !sbar) { - if ( GetWindowLongPtr(hwnd,GWL_STYLE)&CLS_CONTACTLIST ) { - if ( dat->noVScrollbar == 0 ) SetScrollInfo(hwnd,SB_VERT,&si,TRUE); - else SetScrollInfo(hwnd,SB_VERT,&si,FALSE); - } - else SetScrollInfo(hwnd,SB_VERT,&si,TRUE); - } - ScrollTo(hwnd,dat,dat->yScroll,1); -} - -void CalcEipPosition( struct ClcData *dat, struct ClcContact *contact, ClcGroup *group, POINT *result) -{ - int indent; - for (indent = 0; group->parent; indent++, group = group->parent); - result->x = indent * dat->groupIndent + dat->iconXSpace - 2; - result->y = dat->selection * dat->rowHeight - dat->yScroll; - - if (contact->type == CLCIT_CONTACT && contact->isSubcontact) - result->x += dat->rowHeight/2; -} - -void GetDefaultFontSetting(int i,LOGFONT *lf,COLORREF *colour) -{ - SystemParametersInfo(SPI_GETICONTITLELOGFONT,sizeof(LOGFONT),lf,FALSE); - *colour = GetSysColor(COLOR_WINDOWTEXT); - switch(i) { - case FONTID_GROUPS: - lf->lfWeight = FW_BOLD; - break; - case FONTID_GROUPCOUNTS: - lf->lfHeight = (int)(lf->lfHeight*.75); - *colour = GetSysColor(COLOR_3DSHADOW); - break; - case FONTID_OFFINVIS: - case FONTID_INVIS: - lf->lfItalic = !lf->lfItalic; - break; - case FONTID_DIVIDERS: - lf->lfHeight = (int)(lf->lfHeight*.75); - break; - case FONTID_NOTONLIST: - *colour = GetSysColor(COLOR_3DSHADOW); - break; -} } - -extern void ( *saveLoadClcOptions )(HWND hwnd,struct ClcData *dat); - -void LoadClcOptions(HWND hwnd,struct ClcData *dat) -{ - int i; - - dat->style = GetWindowLongPtr(hwnd,GWL_STYLE); - dat->MetaIgnoreEmptyExtra = db_get_b(NULL,"CLC","MetaIgnoreEmptyExtra",1); - saveLoadClcOptions( hwnd, dat ); - - for (i = 0; i <= FONTID_MAX; i++) - if (dat->fontInfo[i].fontHeight > dat->rowHeight) - dat->rowHeight = dat->fontInfo[i].fontHeight; -} diff --git a/plugins/Clist_mw/src/clist.h b/plugins/Clist_mw/src/clist.h deleted file mode 100644 index dad33fa285..0000000000 --- a/plugins/Clist_mw/src/clist.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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 _CLIST_H_ -#define _CLIST_H_ - -void LoadContactTree(void); -int ExtIconFromStatusMode(MCONTACT hContact, const char *szProto,int status); -HTREEITEM GetTreeItemByHContact(MCONTACT hContact); -void TrayIconUpdateWithImageList(int iImage,const char *szNewTip,char *szPreferredProto); -void SortContacts(void); -void ChangeContactIcon(MCONTACT hContact,int iIcon,int add); -int GetContactInfosForSort(MCONTACT hContact,char **Proto,TCHAR **Name,int *Status); - -struct ClcCacheEntry : public ClcCacheEntryBase -{ - int noHiddenOffline; - - char *szProto; - boolean protoNotExists; - int status; - - int i; - int ApparentMode; - int NotOnList; - int IdleTS; - void *ClcContact; - BYTE IsExpanded; - boolean isUnknown; -}; - -ClcCacheEntry* GetContactFullCacheEntry(MCONTACT hContact); - -#endif \ No newline at end of file diff --git a/plugins/Clist_mw/src/clistmenus.cpp b/plugins/Clist_mw/src/clistmenus.cpp deleted file mode 100644 index 8a9f96d06f..0000000000 --- a/plugins/Clist_mw/src/clistmenus.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-06 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#pragma hdrstop - -static HMENU hMainMenu, hMainStatusMenu; - -void DestroyTrayMenu(HMENU hMenu) -{ - int i, cnt; - - cnt = GetMenuItemCount(hMenu); - for (i = 0; i < cnt; ++i) { - HMENU hSubMenu = GetSubMenu(hMenu, i); - if (hSubMenu == hMainStatusMenu || hSubMenu == hMainMenu) - RemoveMenu(hMenu, i--, MF_BYPOSITION); - } - DestroyMenu(hMenu); -} - -INT_PTR CloseAction(WPARAM wParam, LPARAM lParam) -{ - if (CallService(MS_SYSTEM_OKTOEXIT, 0, 0)) - DestroyWindow(pcli->hwndContactList); - - return 0; -} - -int InitCustomMenus(void) -{ - CreateServiceFunction("CloseAction", CloseAction); - hMainStatusMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS, 0, 0); - hMainMenu = (HMENU)CallService(MS_CLIST_MENUGETMAIN, 0, 0); - - return 0; -} - -void UninitCustomMenus(void) -{ -} diff --git a/plugins/Clist_mw/src/clistmod.cpp b/plugins/Clist_mw/src/clistmod.cpp deleted file mode 100644 index 869fcfc56c..0000000000 --- a/plugins/Clist_mw/src/clistmod.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -extern int DefaultImageListColorDepth; - -int InitCustomMenus(void); -void UninitCustomMenus(void); -int ContactSettingChanged(WPARAM wParam, LPARAM lParam); -int CListOptInit(WPARAM wParam, LPARAM lParam); -INT_PTR ContactChangeGroup(WPARAM wParam, LPARAM lParam); -INT_PTR HotkeysProcessMessage(WPARAM wParam, LPARAM lParam) { return pcli->pfnHotkeysProcessMessage(wParam, lParam); } -void InitTrayMenus(void); - -HIMAGELIST hCListImages; - -HANDLE hContactIconChangedEvent; -extern BYTE nameOrder[]; - -static HANDLE hSettingChanged, hProtoAckHook; - -int cli_IconFromStatusMode(const char *szProto,int nStatus, MCONTACT hContact) -{ - int result = -1; - if (hContact && szProto) { - char * szActProto = (char*)szProto; - int nActStatus = nStatus; - MCONTACT hActContact = hContact; - if (!db_get_b(NULL, "CLC", "Meta", 0) && !strcmp(szActProto, META_PROTO)) { - // substitute params by mostonline contact datas - MCONTACT hMostOnlineContact = db_mc_getMostOnline(hActContact); - if (hMostOnlineContact && hMostOnlineContact != (MCONTACT)CALLSERVICE_NOTFOUND) { - ClcCacheEntry *cacheEntry = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hMostOnlineContact); - if (cacheEntry && cacheEntry->szProto) { - szActProto = cacheEntry->szProto; - nActStatus = cacheEntry->status; - hActContact = hMostOnlineContact; - } - } - } - - if (ProtoServiceExists(szActProto, PS_GETADVANCEDSTATUSICON)) - result = ProtoCallService(szActProto, PS_GETADVANCEDSTATUSICON, (WPARAM)hActContact, 0); - - // result == -1 means no Advanced icon. LOWORD(result) == 0 happens when Advanced icon returned by ICQ (i.e. no transpot) - if (result == -1 || !(LOWORD(result))) - result = saveIconFromStatusMode(szActProto, nActStatus, NULL); - } - else result = saveIconFromStatusMode(szProto, nStatus, NULL); - return result; -} - -int ExtIconFromStatusMode(MCONTACT hContact, const char *szProto,int status) -{ - return pcli->pfnIconFromStatusMode(szProto,status,hContact); -} - -/////////// End by FYR //////// - -static int ProtocolAck(WPARAM wParam, LPARAM lParam) -{ - ACKDATA *ack = (ACKDATA*)lParam; - if (ack->type == ACKTYPE_AWAYMSG && ack->lParam) { - DBVARIANT dbv; - if ( !db_get_ts(ack->hContact, "CList", "StatusMsg", &dbv)) { - if ( !_tcscmp(dbv.ptszVal, (TCHAR *)ack->lParam)) { - db_free(&dbv); - return 0; - } - db_free(&dbv); - } - if ( db_get_b(NULL,"CList","ShowStatusMsg",0) || db_get_b(ack->hContact,"CList","StatusMsgAuto",0)) - db_set_ts(ack->hContact, "CList", "StatusMsg", (TCHAR *)ack->lParam); - } - - return 0; -} - -static INT_PTR GetStatusMode(WPARAM wParam, LPARAM lParam) -{ - return pcli->currentDesiredStatusMode; -} - -static int ContactListShutdownProc(WPARAM wParam, LPARAM lParam) -{ - UnhookEvent(hProtoAckHook); - UninitCustomMenus(); - return 0; -} - -int LoadContactListModule(void) -{ - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) - db_set_s(hContact, "CList", "StatusMsg", ""); - - hCListImages = (HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST, 0, 0); - DefaultImageListColorDepth = db_get_dw(NULL,"CList","DefaultImageListColorDepth",ILC_COLOR32); - - hProtoAckHook = (HANDLE) HookEvent(ME_PROTO_ACK, ProtocolAck); - HookEvent(ME_OPT_INITIALISE,CListOptInit); - HookEvent(ME_SYSTEM_SHUTDOWN,ContactListShutdownProc); - hSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED,ContactSettingChanged); - hContactIconChangedEvent = CreateHookableEvent(ME_CLIST_CONTACTICONCHANGED); - CreateServiceFunction(MS_CLIST_CONTACTCHANGEGROUP,ContactChangeGroup); - CreateServiceFunction(MS_CLIST_HOTKEYSPROCESSMESSAGE,HotkeysProcessMessage); - CreateServiceFunction(MS_CLIST_GETSTATUSMODE, GetStatusMode); - - InitCustomMenus(); - InitTrayMenus(); - return 0; -} diff --git a/plugins/Clist_mw/src/clistopts.cpp b/plugins/Clist_mw/src/clistopts.cpp deleted file mode 100644 index 490e184230..0000000000 --- a/plugins/Clist_mw/src/clistopts.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clist.h" - -int HotKeysRegister(HWND hwnd); -void HotKeysUnregister(HWND hwnd); -void LoadContactTree(void); -void SortContacts(void); - -static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -int CListOptInit(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.position = -1000000000; - odp.hInstance = g_hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLIST); - odp.pszTitle = LPGEN("Contact list"); - odp.pfnDlgProc = DlgProcGenOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - return 0; -} - -static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_USER+1: - { - MCONTACT hContact = wParam; - DBCONTACTWRITESETTING * ws = (DBCONTACTWRITESETTING *)lParam; - if ( hContact == NULL && ws != NULL && ws->szModule != NULL && ws->szSetting != NULL - && lstrcmpiA(ws->szModule,"CList") == 0 && lstrcmpiA(ws->szSetting,"UseGroups") == 0 - && IsWindowVisible(hwndDlg)) { - CheckDlgButton(hwndDlg,IDC_DISABLEGROUPS,ws->value.bVal == 0); - } - break; - } - case WM_DESTROY: - { - UnhookEvent( (HANDLE)GetWindowLongPtr(hwndDlg,GWLP_USERDATA)); - break; - } - - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)HookEventMessage(ME_DB_CONTACT_SETTINGCHANGED,hwndDlg,WM_USER+1)); - - CheckDlgButton(hwndDlg,IDC_GAMMACORRECT,db_get_b(NULL,"CLC","GammaCorrect",CLCDEFAULT_GAMMACORRECT)?BST_CHECKED:BST_UNCHECKED); - - SendDlgItemMessage(hwndDlg,IDC_ROWHEIGHTSPIN,UDM_SETBUDDY,(WPARAM)GetDlgItem(hwndDlg,IDC_ROWHEIGHT),0); - SendDlgItemMessage(hwndDlg,IDC_ROWHEIGHTSPIN,UDM_SETRANGE,0,MAKELONG(255,0)); - SendDlgItemMessage(hwndDlg,IDC_ROWHEIGHTSPIN,UDM_SETPOS,0,MAKELONG( db_get_b(NULL,"CLC","RowHeight",CLCDEFAULT_ROWHEIGHT),0)); - - CheckDlgButton(hwndDlg, IDC_ONTOP, db_get_b(NULL,"CList","OnTop",SETTING_ONTOP_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_HIDEOFFLINE, db_get_b(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_HIDEEMPTYGROUPS, db_get_b(NULL,"CList","HideEmptyGroups",SETTING_HIDEEMPTYGROUPS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_DISABLEGROUPS, db_get_b(NULL,"CList","UseGroups",SETTING_USEGROUPS_DEFAULT) ? BST_UNCHECKED : BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_SORTBYNAME, - !db_get_b(NULL,"CList","SortByStatus",SETTING_SORTBYSTATUS_DEFAULT) && - !db_get_b(NULL,"CList","SortByProto",SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - - CheckDlgButton(hwndDlg, IDC_SORTBYSTATUS, db_get_b(NULL,"CList","SortByStatus",SETTING_SORTBYSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_NOOFFLINEMOVE, db_get_b(NULL,"CList","NoOfflineBottom",SETTING_NOOFFLINEBOTTOM_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - - CheckDlgButton(hwndDlg, IDC_SORTBYPROTO, db_get_b(NULL,"CList","SortByProto",SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CONFIRMDELETE, db_get_b(NULL,"CList","ConfirmDelete",SETTING_CONFIRMDELETE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_AUTOHIDE, db_get_b(NULL,"CList","AutoHide",SETTING_AUTOHIDE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIME),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIMESPIN),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - { - DWORD caps = CallService(MS_CLUI_GETCAPS,CLUICAPS_FLAGS1,0); - if ( !(caps&CLUIF_HIDEEMPTYGROUPS)) ShowWindow(GetDlgItem(hwndDlg,IDC_HIDEEMPTYGROUPS),SW_HIDE); - if ( !(caps&CLUIF_DISABLEGROUPS)) ShowWindow(GetDlgItem(hwndDlg,IDC_DISABLEGROUPS),SW_HIDE); - if (caps&CLUIF_HASONTOPOPTION) ShowWindow(GetDlgItem(hwndDlg,IDC_ONTOP),SW_HIDE); - if (caps&CLUIF_HASAUTOHIDEOPTION) { - ShowWindow(GetDlgItem(hwndDlg,IDC_AUTOHIDE),SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_HIDETIME),SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_HIDETIMESPIN),SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_STAUTOHIDESECS),SW_HIDE); - } - } - SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_SETRANGE,0,MAKELONG(900,1)); - SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_SETPOS,0,MAKELONG(db_get_w(NULL,"CList","HideTime",SETTING_HIDETIME_DEFAULT),0)); - CheckDlgButton(hwndDlg, IDC_ONECLK, db_get_b(NULL,"CList","Tray1Click",SETTING_TRAY1CLICK_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ALWAYSSTATUS, db_get_b(NULL,"CList","AlwaysStatus",SETTING_ALWAYSSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ALWAYSMULTI, !db_get_b(NULL,"CList","AlwaysMulti",SETTING_ALWAYSMULTI_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_DONTCYCLE, db_get_b(NULL,"CList","TrayIcon",SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_SINGLE ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CYCLE, db_get_b(NULL,"CList","TrayIcon",SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_CYCLE ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_MULTITRAY, db_get_b(NULL,"CList","TrayIcon",SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_DISABLEBLINK, db_get_b(NULL,"CList","DisableTrayFlash",0) == 1 ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ICONBLINK, db_get_b(NULL,"CList","NoIconBlink",0) == 1 ? BST_CHECKED : BST_UNCHECKED ); - - if (IsDlgButtonChecked(hwndDlg,IDC_DONTCYCLE)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIMESPIN),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIME),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_ALWAYSMULTI),FALSE); - } - if (IsDlgButtonChecked(hwndDlg,IDC_CYCLE)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_PRIMARYSTATUS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_ALWAYSMULTI),FALSE); - } - if (IsDlgButtonChecked(hwndDlg,IDC_MULTITRAY)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIMESPIN),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIME),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_PRIMARYSTATUS),FALSE); - } - SendDlgItemMessage(hwndDlg,IDC_CYCLETIMESPIN,UDM_SETRANGE,0,MAKELONG(120,1)); - SendDlgItemMessage(hwndDlg,IDC_CYCLETIMESPIN,UDM_SETPOS,0,MAKELONG(db_get_w(NULL,"CList","CycleTime",SETTING_CYCLETIME_DEFAULT),0)); - { int i,count,item; - PROTOACCOUNT **accs; - DBVARIANT dbv = {DBVT_DELETED}; - db_get_s(NULL,"CList","PrimaryStatus",&dbv); - ProtoEnumAccounts( &count, &accs ); - item = SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_ADDSTRING,0,(LPARAM)TranslateT("Global")); - SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_SETITEMDATA,item,0); - for ( i = 0; i < count; i++ ) { - if ( !IsAccountEnabled(accs[i]) || CallProtoService(accs[i]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0) == 0) - continue; - - item = SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_ADDSTRING,0,(LPARAM)accs[i]->tszAccountName); - SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_SETITEMDATA,item,(LPARAM)accs[i] ); - if ( dbv.type == DBVT_ASCIIZ && !lstrcmpA( dbv.pszVal, accs[i]->szModuleName )) - SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_SETCURSEL,item,0); - } - } - if (-1 == (int)SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_GETCURSEL,0,0)) - SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_SETCURSEL,0,0); - SendDlgItemMessage(hwndDlg,IDC_BLINKSPIN,UDM_SETBUDDY,(WPARAM)GetDlgItem(hwndDlg,IDC_BLINKTIME),0); // set buddy - SendDlgItemMessage(hwndDlg,IDC_BLINKSPIN,UDM_SETRANGE,0,MAKELONG(0x3FFF,250)); - SendDlgItemMessage(hwndDlg,IDC_BLINKSPIN,UDM_SETPOS,0,MAKELONG(db_get_w(NULL,"CList","IconFlashTime",550),0)); - return TRUE; - case WM_VSCROLL: - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDC_AUTOHIDE: - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIME),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIMESPIN),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - break; - case IDC_DONTCYCLE: - case IDC_CYCLE: - case IDC_MULTITRAY: - EnableWindow(GetDlgItem(hwndDlg,IDC_PRIMARYSTATUS),IsDlgButtonChecked(hwndDlg,IDC_DONTCYCLE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIME),IsDlgButtonChecked(hwndDlg,IDC_CYCLE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_CYCLETIMESPIN),IsDlgButtonChecked(hwndDlg,IDC_CYCLE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_ALWAYSMULTI),IsDlgButtonChecked(hwndDlg,IDC_MULTITRAY)); - break; - case IDC_ROWHEIGHT: - if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) return 0; - break; - } - if ((LOWORD(wParam) == IDC_HIDETIME || LOWORD(wParam) == IDC_CYCLETIME) && HIWORD(wParam) != EN_CHANGE) break; - if (LOWORD(wParam) == IDC_PRIMARYSTATUS && HIWORD(wParam) != CBN_SELCHANGE) break; - if ((LOWORD(wParam) == IDC_HIDETIME || LOWORD(wParam) == IDC_CYCLETIME) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; - if (LOWORD(wParam) == IDC_BLINKTIME && HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) return 0; // dont make apply enabled during buddy set crap - - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - db_set_b(NULL,"CList","HideOffline",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_HIDEOFFLINE)); - { - DWORD caps = CallService(MS_CLUI_GETCAPS,CLUICAPS_FLAGS1,0); - if (caps & CLUIF_HIDEEMPTYGROUPS) db_set_b(NULL,"CList","HideEmptyGroups",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_HIDEEMPTYGROUPS)); - if (caps & CLUIF_DISABLEGROUPS) db_set_b(NULL,"CList","UseGroups",(BYTE)!IsDlgButtonChecked(hwndDlg,IDC_DISABLEGROUPS)); - if ( !(caps & CLUIF_HASONTOPOPTION)) { - db_set_b(NULL,"CList","OnTop",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ONTOP)); - SetWindowPos(pcli->hwndContactList,IsDlgButtonChecked(hwndDlg,IDC_ONTOP)?HWND_TOPMOST:HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - } - if ( !(caps & CLUIF_HASAUTOHIDEOPTION)) { - db_set_b(NULL,"CList","AutoHide",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - db_set_w(NULL,"CList","HideTime",(WORD)SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_GETPOS,0,0)); - } - } - db_set_b(NULL,"CList","SortByStatus",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SORTBYSTATUS)); - db_set_b(NULL,"CList","SortByProto",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SORTBYPROTO)); - db_set_b(NULL,"CList","NoOfflineBottom",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_NOOFFLINEMOVE)); - db_set_b(NULL,"CLC","RowHeight",(BYTE)SendDlgItemMessage(hwndDlg,IDC_ROWHEIGHTSPIN,UDM_GETPOS,0,0)); - db_set_b(NULL,"CLC","GammaCorrect",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_GAMMACORRECT)); - - db_set_b(NULL,"CList","ConfirmDelete",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_CONFIRMDELETE)); - db_set_b(NULL,"CList","Tray1Click",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ONECLK)); - db_set_b(NULL,"CList","AlwaysStatus",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ALWAYSSTATUS)); - db_set_b(NULL,"CList","AlwaysMulti",(BYTE)!IsDlgButtonChecked(hwndDlg,IDC_ALWAYSMULTI)); - db_set_b(NULL,"CList","TrayIcon",(BYTE)(IsDlgButtonChecked(hwndDlg,IDC_DONTCYCLE)?SETTING_TRAYICON_SINGLE:(IsDlgButtonChecked(hwndDlg,IDC_CYCLE)?SETTING_TRAYICON_CYCLE:SETTING_TRAYICON_MULTI))); - db_set_w(NULL,"CList","CycleTime",(WORD)SendDlgItemMessage(hwndDlg,IDC_CYCLETIMESPIN,UDM_GETPOS,0,0)); - db_set_w(NULL,"CList","IconFlashTime",(WORD)SendDlgItemMessage(hwndDlg,IDC_BLINKSPIN,UDM_GETPOS,0,0)); - db_set_b(NULL,"CList","DisableTrayFlash",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_DISABLEBLINK)); - db_set_b(NULL,"CList","NoIconBlink", (BYTE)IsDlgButtonChecked(hwndDlg,IDC_ICONBLINK)); - { - int cursel = SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_GETCURSEL,0,0); - PROTOACCOUNT *pa = (PROTOACCOUNT*)SendDlgItemMessage(hwndDlg,IDC_PRIMARYSTATUS,CB_GETITEMDATA,cursel,0); - if ( pa == NULL ) - db_unset(NULL, "CList","PrimaryStatus"); - else - db_set_s(NULL,"CList","PrimaryStatus", pa->szModuleName); - } - pcli->pfnTrayIconIconsChanged(); - LoadContactTree(); /* this won't do job properly since it only really works when changes happen */ - pcli->pfnInitAutoRebuild(pcli->hwndContactTree); /* force reshuffle */ - return TRUE; - } - break; - } - break; - } - return FALSE; -} diff --git a/plugins/Clist_mw/src/clistsettings.cpp b/plugins/Clist_mw/src/clistsettings.cpp deleted file mode 100644 index 01b42ebf6f..0000000000 --- a/plugins/Clist_mw/src/clistsettings.cpp +++ /dev/null @@ -1,340 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "clist.h" - -TCHAR *GetNameForContact(MCONTACT hContact,int flag,boolean *isUnknown); -char *GetProtoForContact(MCONTACT hContact); -int GetStatusForContact(MCONTACT hContact,char *szProto); -TCHAR *UnknownConctactTranslatedName; -extern boolean OnModulesLoadedCalled; -void InvalidateDisplayNameCacheEntryByPDNE(MCONTACT hContact,ClcCacheEntry *pdnce,int SettingType); - -static int handleCompare( ClcCacheEntry* c1, ClcCacheEntry* c2 ) -{ - return (char*)c1->hContact - (char*)c2->hContact; -} - -void InitDisplayNameCache(SortedList *list) -{ - int i, idx; - - memset(list,0,sizeof(SortedList)); - list->sortFunc = (FSortFunc)handleCompare; - list->increment = CallService(MS_DB_CONTACT_GETCOUNT,0,0)+1; - - i = 0; - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - ClcCacheEntry *pdnce = (ClcCacheEntry *)mir_calloc(sizeof(ClcCacheEntry)); - pdnce->hContact = hContact; - InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,0); - List_GetIndex(list,pdnce,&idx); - List_Insert(list,pdnce,idx); - i++; -} } - -void FreeDisplayNameCacheItem(ClcCacheEntry *p) -{ - if ( p->tszName) { mir_free(p->tszName); p->tszName = NULL; } - if ( p->szProto) { mir_free(p->szProto); p->szProto = NULL; } - if ( p->tszGroup) { mir_free(p->tszGroup); p->tszGroup = NULL; } -} - -void FreeDisplayNameCache(SortedList *list) -{ - for (int i = 0; i < list->realCount; i++) { - FreeDisplayNameCacheItem((ClcCacheEntry*)list->items[i] ); - mir_free(list->items[i]); - } - - List_Destroy(list); -} - -void CheckPDNCE(ClcCacheEntry *_pdnce) -{ - ClcCacheEntry *pdnce = (ClcCacheEntry *)_pdnce; - if (pdnce == NULL) - return; - - if (pdnce->szProto == NULL && pdnce->protoNotExists == FALSE) { - pdnce->szProto = GetProtoForContact(pdnce->hContact); - if (pdnce->szProto == NULL) - pdnce->protoNotExists = FALSE; - else { - if (CallService(MS_PROTO_ISPROTOCOLLOADED,0,(LPARAM)pdnce->szProto) == 0) - pdnce->protoNotExists = TRUE; - else { - if ( pdnce->szProto && pdnce->tszName ) { - mir_free(pdnce->tszName); - pdnce->tszName = NULL; - } } } } - - if (pdnce->tszName == NULL) - { - if (pdnce->protoNotExists) - pdnce->tszName = mir_tstrdup(TranslateT("_NoProtocol_")); - else { - if (OnModulesLoadedCalled) - pdnce->tszName = GetNameForContact(pdnce->hContact,0,&pdnce->isUnknown); - else - pdnce->tszName = GetNameForContact(pdnce->hContact,0,NULL); - } - } - else { - if (pdnce->isUnknown&&pdnce->szProto&&pdnce->protoNotExists == TRUE&&OnModulesLoadedCalled) { - pdnce->protoNotExists = FALSE; - mir_free(pdnce->tszName); - pdnce->tszName = GetNameForContact(pdnce->hContact,0,&pdnce->isUnknown); - } } - - if (pdnce->status == 0) - pdnce->status = GetStatusForContact(pdnce->hContact,pdnce->szProto); - - if (pdnce->tszGroup == NULL) - { - DBVARIANT dbv; - - if ( !db_get_ts(pdnce->hContact,"CList","Group",&dbv)) - { - pdnce->tszGroup = mir_tstrdup(dbv.ptszVal); - mir_free(dbv.pszVal); - } - else pdnce->tszGroup = mir_tstrdup( _T("")); - } - - if (pdnce->bIsHidden == -1) - pdnce->bIsHidden = db_get_b(pdnce->hContact,"CList","Hidden",0); - - if (pdnce->noHiddenOffline == -1) - pdnce->noHiddenOffline = db_get_b(pdnce->hContact,"CList","noOffline",0); - - if ( pdnce->IdleTS == -1 ) - pdnce->IdleTS = db_get_dw(pdnce->hContact,pdnce->szProto,"IdleTS",0); - - if (pdnce->ApparentMode == -1) - pdnce->ApparentMode = db_get_w(pdnce->hContact,pdnce->szProto,"ApparentMode",0); - - if (pdnce->NotOnList == -1) - pdnce->NotOnList = db_get_b(pdnce->hContact,"CList","NotOnList",0); - - if (pdnce->IsExpanded == -1) - pdnce->IsExpanded = db_get_b(pdnce->hContact,"CList","Expanded",0); -} - -void InvalidateDisplayNameCacheEntryByPDNE(MCONTACT hContact,ClcCacheEntry *pdnce,int SettingType) -{ - if ( hContact == NULL || pdnce == NULL ) - return; - - if ( SettingType == -1 || SettingType == DBVT_DELETED ) - { - mir_free(pdnce->tszName); - pdnce->tszName = NULL; - mir_free(pdnce->tszGroup); - pdnce->tszGroup = NULL; - - pdnce->bIsHidden = -1; - pdnce->protoNotExists = FALSE; - mir_free(pdnce->szProto); - pdnce->szProto = NULL; - pdnce->status = 0; - pdnce->IdleTS = -1; - pdnce->ApparentMode = -1; - pdnce->NotOnList = -1; - pdnce->isUnknown = FALSE; - pdnce->noHiddenOffline = -1; - pdnce->IsExpanded = -1; - return; - } - - if (SettingType >= DBVT_WCHAR) - { - mir_free(pdnce->tszName); - pdnce->tszName = NULL; - mir_free(pdnce->tszGroup); - pdnce->tszGroup = NULL; - mir_free(pdnce->szProto); - pdnce->szProto = NULL; - return; - } - - // in other cases clear all binary cache - pdnce->bIsHidden = -1; - pdnce->protoNotExists = FALSE; - pdnce->status = 0; - pdnce->IdleTS = -1; - pdnce->ApparentMode = -1; - pdnce->NotOnList = -1; - pdnce->isUnknown = FALSE; - pdnce->noHiddenOffline = -1; - pdnce->IsExpanded = -1; -} - -char *GetContactCachedProtocol(MCONTACT hContact) -{ - ClcCacheEntry *cacheEntry = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (cacheEntry&&cacheEntry->szProto) - return cacheEntry->szProto; - - return NULL; -} - -char *GetProtoForContact(MCONTACT hContact) -{ - return mir_strdup(GetContactProto(hContact)); -} - -int GetStatusForContact(MCONTACT hContact,char *szProto) -{ - int status = ID_STATUS_OFFLINE; - if (szProto) - status = db_get_w((MCONTACT)hContact, szProto, "Status", ID_STATUS_OFFLINE); - - return (status); -} - -TCHAR* GetNameForContact(MCONTACT hContact,int flag,boolean *isUnknown) -{ - TCHAR* result = pcli->pfnGetContactDisplayName(hContact, flag | GCDNF_NOCACHE); - - if (isUnknown) { - if (UnknownConctactTranslatedName == NULL) - UnknownConctactTranslatedName = TranslateT("(Unknown Contact)"); - - *isUnknown = lstrcmp(result ,UnknownConctactTranslatedName) == 0; - } - - return result; -} - -ClcCacheEntry *GetContactFullCacheEntry(MCONTACT hContact) -{ - ClcCacheEntry *cacheEntry = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (cacheEntry != NULL) - return(cacheEntry); - - return NULL; -} - -int GetContactInfosForSort(MCONTACT hContact,char **Proto,TCHAR **Name,int *Status) -{ - ClcCacheEntry *cacheEntry = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (cacheEntry != NULL) - { - if (Proto != NULL) *Proto = cacheEntry->szProto; - if (Name != NULL) *Name = cacheEntry->tszName; - if (Status != NULL) *Status = cacheEntry->status; - } - return 0; -} - -int GetContactCachedStatus(MCONTACT hContact) -{ - ClcCacheEntry *cacheEntry = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (cacheEntry&&cacheEntry->status != 0) return cacheEntry->status; - return 0; -} - -int ContactSettingChanged(WPARAM hContact, LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; - - // Early exit - if (hContact == NULL) - return 0; - - __try - { - ClcCacheEntry *pdnce = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); - if (pdnce == NULL) { - OutputDebugStringA("!!! Very bad pdnce not found."); - return 0; - } - - if (pdnce && pdnce->protoNotExists == FALSE && pdnce->szProto) { - if ( !strcmp(cws->szModule,pdnce->szProto)) { - InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); - - if (cws->value.type == DBVT_WORD && !strcmp(cws->szSetting, "Status")) { - if ( !(pdnce->bIsHidden == 1)) { - - if ( db_get_b(NULL,"CList","ShowStatusMsg",0)||db_get_b(hContact,"CList","StatusMsgAuto",0)) - db_set_s(hContact, "CList", "StatusMsg", ""); - - if ( db_get_b(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT)) { - // User's state is changing, and we are hideOffline-ing - if (cws->value.wVal == ID_STATUS_OFFLINE) { - ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR - return 0; - } - ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR - } - else ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR - } - } - else if (!strcmp(cws->szModule, META_PROTO)) { - pcli->pfnInitAutoRebuild(pcli->hwndContactTree); - return 0; - } - else return 0; - - SortContacts(); - } - } - - if ( !strcmp(cws->szModule,"CList")) { - if (pdnce->tszName == NULL || !strcmp(cws->szSetting,"MyHandle")) - InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); - - if ((!strcmp(cws->szSetting,"Group"))) - InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); - - if ( !strcmp(cws->szSetting,"Hidden")) { - InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); - if (cws->value.type == DBVT_DELETED || cws->value.bVal == 0) { - char *szProto = GetContactProto(hContact); - ChangeContactIcon(hContact,ExtIconFromStatusMode(hContact, szProto, szProto == NULL ? ID_STATUS_OFFLINE : db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE)), 1); //by FYR - } - } - - if ( !strcmp(cws->szSetting, "noOffline")) - InvalidateDisplayNameCacheEntryByPDNE(hContact, pdnce, cws->value.type); - } - - if ( !strcmp(cws->szModule, "Protocol")) { - if ( !strcmp(cws->szSetting,"p")) { - OutputDebugStringA("CHANGE: proto\r\n"); - InvalidateDisplayNameCacheEntryByPDNE(hContact, pdnce, cws->value.type); - char *szProto = (cws->value.type == DBVT_DELETED) ? NULL : cws->value.pszVal; - ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact, szProto, szProto == NULL?ID_STATUS_OFFLINE:db_get_w(hContact,szProto,"Status",ID_STATUS_OFFLINE)),0); //by FYR - } - } - } - __except (exceptFunction(GetExceptionInformation())) - { - } - - return 0; -} diff --git a/plugins/Clist_mw/src/clisttray.cpp b/plugins/Clist_mw/src/clisttray.cpp deleted file mode 100644 index aa89abe500..0000000000 --- a/plugins/Clist_mw/src/clisttray.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "m_clui.h" - -#define TIM_CALLBACK (WM_USER+1857) -#define TIM_CREATE (WM_USER+1858) - -extern INT_PTR ( *saveTrayIconProcessMessage )(WPARAM wParam, LPARAM lParam); -void DestroyTrayMenu(HMENU hMenu); - -INT_PTR TrayIconProcessMessage(WPARAM wParam, LPARAM lParam) -{ - MSG *msg = (MSG*)wParam; - switch(msg->message) { - case WM_DRAWITEM: - return CallService(MS_CLIST_MENUDRAWITEM,msg->wParam,msg->lParam); - break; - - case WM_MEASUREITEM: - return CallService(MS_CLIST_MENUMEASUREITEM,msg->wParam,msg->lParam); - break; - - case TIM_CALLBACK: - if (msg->lParam == WM_RBUTTONUP) { - POINT pt; - HMENU hMenu = (HMENU)CallService(MS_CLIST_MENUBUILDTRAY,0,0); - - SetForegroundWindow(msg->hwnd); - SetFocus(msg->hwnd); - GetCursorPos(&pt); - TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN, pt.x, pt.y, 0, msg->hwnd, NULL); - DestroyTrayMenu(hMenu); - } - else break; - - *((LRESULT*)lParam) = 0; - return TRUE; - } - - return saveTrayIconProcessMessage( wParam, lParam ); -} - -//////////////////////////////TRAY MENU///////////////////////// -HANDLE hTrayMenuObject; - -HANDLE hTrayMainMenuItemProxy; -HANDLE hHideShowMainMenuItem; -HANDLE hTrayStatusMenuItemProxy; -HANDLE hPreBuildTrayMenuEvent; - -//traymenu exec param(ownerdata) -typedef struct -{ - char *szServiceName; - INT_PTR Param1; -} - TrayMenuExecParam,*lpTrayMenuExecParam; - -/* -wparam = handle to the menu item returned by MS_CLIST_ADDCONTACTMENUITEM -return 0 on success. -*/ -static INT_PTR RemoveTrayMenuItem(WPARAM wParam, LPARAM lParam) -{ - CallService(MO_REMOVEMENUITEM,wParam,0); - return 0; -} - -static INT_PTR BuildTrayMenu(WPARAM wParam, LPARAM lParam) -{ - int tick; - HMENU hMenu; - ListParam param = { 0 }; - param.MenuObjectHandle = hTrayMenuObject; - - //hMenu = hMainMenu; - hMenu = CreatePopupMenu(); - //hMenu = wParam; - tick = GetTickCount(); - - NotifyEventHooks(hPreBuildTrayMenuEvent,0,0); - - CallService(MO_BUILDMENU,(WPARAM)hMenu,(LPARAM)¶m); - //DrawMenuBar((HWND)CallService("CLUI/GetHwnd",0,0)); - tick = GetTickCount()-tick; - return (INT_PTR)hMenu; -} - -static INT_PTR AddTrayMenuItem(WPARAM wParam, LPARAM lParam) -{ - TMO_MenuItem tmi; - CLISTMENUITEM *mi = (CLISTMENUITEM*)lParam; - if ( !pcli->pfnConvertMenu(mi, &tmi)) - return NULL; - - lpTrayMenuExecParam mmep = (lpTrayMenuExecParam)mir_alloc(sizeof(TrayMenuExecParam)); - if (mmep == NULL) - return 0; - - mmep->szServiceName = mir_strdup(mi->pszService); - mmep->Param1 = mi->popupPosition; - tmi.ownerdata = mmep; - - OptParam op; - op.Handle = (HANDLE)CallService(MO_ADDNEWMENUITEM,(WPARAM)hTrayMenuObject,(LPARAM)&tmi); - op.Setting = OPT_MENUITEMSETUNIQNAME; - op.Value = (INT_PTR)mi->pszService; - CallService(MO_SETOPTIONSMENUITEM,0,(LPARAM)&op); - return (INT_PTR)op.Handle; -} - -INT_PTR TrayMenuCheckService(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -INT_PTR TrayMenuonAddService(WPARAM wParam, LPARAM lParam) -{ - MENUITEMINFO *mii = (MENUITEMINFO* )wParam; - if (mii == NULL) return 0; - - if (hHideShowMainMenuItem == (HANDLE)lParam) { - mii->fMask |= MIIM_STATE; - mii->fState |= MFS_DEFAULT; - } - - if (hTrayMainMenuItemProxy == (HANDLE)lParam) { - mii->fMask |= MIIM_SUBMENU; - mii->hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETMAIN,0,0); - } - - if (hTrayStatusMenuItemProxy == (HANDLE)lParam) { - mii->fMask |= MIIM_SUBMENU; - mii->hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS,0,0); - } - - return(TRUE); -} - - -//called with: -//wparam - ownerdata -//lparam - lparam from winproc -INT_PTR TrayMenuExecService(WPARAM wParam, LPARAM lParam) -{ - if (wParam != 0) - { - lpTrayMenuExecParam mmep = (lpTrayMenuExecParam)wParam; - if ( !strcmp(mmep->szServiceName,"Help/AboutCommand")) - { - //bug in help.c,it used wparam as parent window handle without reason. - mmep->Param1 = 0; - } - CallService(mmep->szServiceName,mmep->Param1,lParam); - } - return(1); -} - -INT_PTR FreeOwnerDataTrayMenu (WPARAM wParam, LPARAM lParam) -{ - - lpTrayMenuExecParam mmep; - mmep = (lpTrayMenuExecParam)lParam; - if (mmep != NULL){ - mir_free(mmep->szServiceName); - mir_free(mmep); - } - - return 0; -} - -void InitTrayMenus(void) -{ - //Tray menu - hTrayMenuObject = MO_CreateMenuObject("TrayMenu", LPGEN("Tray menu"), 0, "CLISTMENUSTRAY/ExecService"); - MO_SetMenuObjectParam(hTrayMenuObject, OPT_USERDEFINEDITEMS, TRUE); - MO_SetMenuObjectParam(hTrayMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSTRAY/FreeOwnerDataTrayMenu"); - MO_SetMenuObjectParam(hTrayMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSTRAY/TrayMenuonAddService"); - - CreateServiceFunction("CLISTMENUSTRAY/ExecService",TrayMenuExecService); - CreateServiceFunction("CLISTMENUSTRAY/FreeOwnerDataTrayMenu",FreeOwnerDataTrayMenu); - CreateServiceFunction("CLISTMENUSTRAY/TrayMenuonAddService",TrayMenuonAddService); - - CreateServiceFunction("CList/AddTrayMenuItem",AddTrayMenuItem); - CreateServiceFunction(MS_CLIST_REMOVETRAYMENUITEM,RemoveTrayMenuItem); - CreateServiceFunction(MS_CLIST_MENUBUILDTRAY,BuildTrayMenu); - hPreBuildTrayMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDTRAYMENU); - - //add exit command to menu - CLISTMENUITEM mi = { sizeof(mi) }; - mi.position = 900000; - mi.pszService = "CloseAction"; - mi.pszName = LPGEN("E&xit"); - AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100000; - mi.pszService = MS_CLIST_SHOWHIDE; - mi.pszName = LPGEN("&Hide/Show"); - hHideShowMainMenuItem = (HANDLE)AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 200000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_FINDUSER)); - mi.pszService = "FindAdd/FindAddCommand"; - mi.pszName = LPGEN("&Find/Add contacts..."); - AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 300000; - mi.pszService = ""; - mi.pszName = LPGEN("&Main menu"); - hTrayMainMenuItemProxy = (HANDLE)AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 300100; - mi.pszService = ""; - mi.pszName = LPGEN("&Status"); - hTrayStatusMenuItemProxy = (HANDLE)AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 400000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_OPTIONS)); - mi.pszService = "Options/OptionsCommand"; - mi.pszName = LPGEN("&Options..."); - AddTrayMenuItem(0,(LPARAM)&mi); - - memset(&mi,0,sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 500000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_CLIENTMIRANDA)); - mi.pszService = "Help/AboutCommand"; - mi.pszName = LPGEN("&About"); - AddTrayMenuItem(0,(LPARAM)&mi); -} diff --git a/plugins/Clist_mw/src/clui.cpp b/plugins/Clist_mw/src/clui.cpp deleted file mode 100644 index 69ea15f8e1..0000000000 --- a/plugins/Clist_mw/src/clui.cpp +++ /dev/null @@ -1,765 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -#define TM_AUTOALPHA 1 -#define TM_STATUSBARUPDATE 200 -#define MENU_MIRANDAMENU 0xFFFF1234 - -extern int DefaultImageListColorDepth; - -HMENU hMenuMain; -static HANDLE hContactDraggingEvent,hContactDroppedEvent,hContactDragStopEvent; -UINT hMsgGetProfile = 0; - -extern boolean canloadstatusbar; -boolean OnModulesLoadedCalled = FALSE; - -static int transparentFocus = 1; -static byte oldhideoffline; -static int lastreqh = 0,requr = 0,disableautoupd = 1; -HANDLE hFrameContactTree; -BYTE showOpts;//for statusbar - -typedef struct -{ - int IconsCount; - int CycleStartTick; - char *szProto; - int n; - int TimerCreated; -} - ProtoTicks,*pProtoTicks; - -ProtoTicks CycleStartTick[64];//max 64 protocols - -int CycleTimeInterval = 2000; -int CycleIconCount = 8; -int DefaultStep = 100; - -int CluiOptInit(WPARAM wParam, LPARAM lParam); -int SortList(WPARAM wParam, LPARAM lParam); - -void CluiProtocolStatusChanged(int parStatus, const char* szProto); - -extern void ReloadExtraIcons(); -extern HWND CreateStatusBarhWnd(HWND parent); -extern HANDLE CreateStatusBarFrame(); -extern int CLUIFramesUpdateFrame(WPARAM wParam, LPARAM lParam); -extern void DrawDataForStatusBar(LPDRAWITEMSTRUCT dis); -extern void InitGroupMenus(); -extern int UseOwnerDrawStatusBar; - -HICON GetConnectingIconForProto(char *szProto,int b); -HICON GetConnectingIconForProto_DLL(char *szProto,int b); - -void RegisterProtoIconsForAllProtoIconLib(); - -static int CluiModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - MENUITEMINFO mii = { sizeof(mii) }; - mii.fMask = MIIM_SUBMENU; - mii.hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETMAIN,0,0); - SetMenuItemInfo(hMenuMain,0,TRUE,&mii); - mii.hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS,0,0); - SetMenuItemInfo(hMenuMain,1,TRUE,&mii); - - canloadstatusbar = TRUE; - SendMessage(pcli->hwndContactList,WM_SIZE,0,0); - CluiProtocolStatusChanged(0,0); - Sleep(0); - PostMessage(pcli->hwndContactList,M_CREATECLC,0,0); - - OnModulesLoadedCalled = TRUE; - pcli->pfnInvalidateDisplayNameCacheEntry(INVALID_CONTACT_ID); - InitGroupMenus(); - RegisterProtoIconsForAllProtoIconLib(); - return 0; -} - -pProtoTicks GetProtoTicksByProto(char * szProto) -{ - int i; - - for (i = 0;i<64;i++) - { - if (CycleStartTick[i].szProto == NULL) break; - if (strcmp(CycleStartTick[i].szProto,szProto)) continue; - return(&CycleStartTick[i]); - } - for (i = 0;i<64;i++) - { - if (CycleStartTick[i].szProto == NULL) - { - CycleStartTick[i].szProto = mir_strdup(szProto); - CycleStartTick[i].CycleStartTick = 0; - CycleStartTick[i].n = i; - return(&CycleStartTick[i]); - } - } - return NULL; -} - -int GetConnectingIconForProtoCount(char *szProto) -{ - char file[MAX_PATH],fileFull[MAX_PATH],szFullPath[MAX_PATH]; - char szPath[MAX_PATH]; - char *str; - int ret; - - GetModuleFileNameA(GetModuleHandle(NULL), szPath, MAX_PATH); - str = strrchr(szPath,'\\'); - if (str != NULL) *str = 0; - mir_snprintf(szFullPath, SIZEOF(szFullPath), "%s\\Icons\\proto_conn_%s.dll", szPath, szProto); - - lstrcpynA(file,szFullPath,SIZEOF(file)); - PathToAbsolute(file, fileFull); - ret = ExtractIconExA(fileFull,-1,NULL,NULL,1); - if (ret == 0&&!strcmp(szProto,"ICQ")) ret = 8; - return ret; -} - -static HICON ExtractIconFromPath(const char *path) -{ - char *comma; - char file[MAX_PATH],fileFull[MAX_PATH]; - int n; - HICON hIcon; - lstrcpynA(file,path,SIZEOF(file)); - comma = strrchr(file,','); - if (comma == NULL) n = 0; - else {n = atoi(comma+1); *comma = 0;} - PathToAbsolute(file, fileFull); - - hIcon = NULL; - ExtractIconExA(fileFull,n,NULL,&hIcon,1); - return hIcon; -} - -HICON LoadIconFromExternalFile(char *filename,int i,boolean UseLibrary,boolean registerit,char *IconName,char *SectName,char *Description,int internalidx,HICON DefIcon) -{ - char szPath[MAX_PATH],szMyPath[MAX_PATH], szFullPath[MAX_PATH],*str; - HICON hIcon = NULL; - - memset(szMyPath,0,SIZEOF(szMyPath)); - memset(szFullPath,0,SIZEOF(szFullPath)); - - if (filename != NULL) - { - GetModuleFileNameA(GetModuleHandle(NULL), szPath, MAX_PATH); - GetModuleFileNameA(g_hInst, szMyPath, MAX_PATH); - str = strrchr(szPath,'\\'); - if (str != NULL) *str = 0; - mir_snprintf(szFullPath, SIZEOF(szFullPath), "%s\\Icons\\%s,%d", szPath, filename, i); - } - - if ( !UseLibrary) { - hIcon = ExtractIconFromPath(szFullPath); - if (hIcon) return hIcon; - } - else { - if (registerit && IconName != NULL && SectName != NULL) { - SKINICONDESC sid = { sizeof(sid) }; - sid.pszSection = SectName; - sid.pszName = IconName; - sid.pszDescription = Description; - if (szMyPath[0] != 0) - sid.pszDefaultFile = szMyPath; - - sid.iDefaultIndex = internalidx; - sid.hDefaultIcon = DefIcon; - - Skin_AddIcon(&sid); - } - return Skin_GetIcon(IconName); - } - - return (HICON)0; -} - -void RegisterProtoIcons (char *protoname) -{ - if ( db_get_b(NULL,"CList","UseProtoIconFromIcoLib",1)) - { - int i; - char buf[256]; - char buf2[256]; - for (i = 0;i<8;i++) - { - mir_snprintf(buf, SIZEOF(buf), "%s #%d", protoname, i); - mir_snprintf(buf2, SIZEOF(buf2), "Contact list/Connection Icons %s", protoname); - - LoadIconFromExternalFile(NULL,i,TRUE,TRUE,buf,buf2,buf,0,GetConnectingIconForProto_DLL(protoname,i)); - } - } -} - -void RegisterProtoIconsForAllProtoIconLib() -{ - int protoCount,i; - PROTOACCOUNT **accs; - - ProtoEnumAccounts( &protoCount, &accs ); - for ( i = 0; i < protoCount; i++ ) - if ( IsAccountEnabled( accs[i] ) && CallProtoService( accs[i]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0 )) - RegisterProtoIcons( accs[i]->szModuleName ); -} - -HICON GetConnectingIconForProto_DLL(char *szProto,int b) -{ - char szFullPath[MAX_PATH]; - HICON hIcon = NULL; - - b = b-1; - mir_snprintf(szFullPath, SIZEOF(szFullPath), "proto_conn_%s.dll", szProto); - // hIcon = ExtractIconFromPath(szFullPath); - // if (hIcon) return hIcon; - - hIcon = LoadIconFromExternalFile(szFullPath,b+1,FALSE,FALSE,NULL,NULL,NULL,0,0); - if (hIcon) return hIcon; - -#ifdef _DEBUG - { - char buf [256]; - mir_snprintf(buf, SIZEOF(buf), "IconNotFound %s %d\r\n", szProto, b); - // OutputDebugStringA(buf); - } -#endif - - if ( !strcmp(szProto,"ICQ")) - { - -#ifdef _DEBUG - char buf [256]; - mir_snprintf(buf, SIZEOF(buf), "Icon %d %d\r\n", GetTickCount(), b); - //OutputDebugStringA(buf); -#endif - return(LoadIconA(g_hInst,(LPCSTR)(IDI_ICQC1+b))); - } - - return(hIcon); -} - -HICON GetConnectingIconForProto(char *szProto,int b) -{ - if ( db_get_b(NULL,"CList","UseProtoIconFromIcoLib",1)) { - HICON hIcon = 0; - char buf[256]; - mir_snprintf(buf, SIZEOF(buf), "%s #%d", szProto, b); - - hIcon = LoadIconFromExternalFile(NULL,b,TRUE,FALSE,buf,"Contact list/Connection icons",buf,0,NULL); - if (hIcon == NULL) return (GetConnectingIconForProto_DLL(szProto,b)); - return (CopyIcon(hIcon)); - } - - return GetConnectingIconForProto_DLL(szProto, b); -} - -//wParam == szProto -INT_PTR GetConnectingIconService(WPARAM wParam, LPARAM lParam) -{ - int b; - ProtoTicks *pt = NULL; - HICON hIcon = NULL; - - char *szProto = (char *)wParam; - if ( !szProto) return 0; - - pt = GetProtoTicksByProto(szProto); - - if (pt != NULL) { - if (pt->CycleStartTick != 0&&pt->IconsCount != 0) { - b = ((GetTickCount()-pt->CycleStartTick)/(DefaultStep))%pt->IconsCount; - hIcon = GetConnectingIconForProto(szProto,b); - } - } - - return (INT_PTR)hIcon; -} - -int CreateTimerForConnectingIcon(WPARAM wParam, LPARAM lParam) -{ - int status = (int)wParam; - char *szProto = (char *)lParam; - if ( !szProto) return 0; - if ( !status) return 0; - - if (( db_get_b(NULL,"CLUI","UseConnectingIcon",1) == 1) && status >= ID_STATUS_CONNECTING && status <= ID_STATUS_CONNECTING + MAX_CONNECT_RETRIES) { - ProtoTicks *pt = NULL; - int cnt; - - pt = GetProtoTicksByProto(szProto); - if (pt != NULL) { - if (pt->CycleStartTick == 0) { - KillTimer(pcli->hwndContactList,TM_STATUSBARUPDATE+pt->n); - cnt = GetConnectingIconForProtoCount(szProto); - if ( db_get_b(NULL,"Clist","UseProtoIconFromIcoLib",1)) - cnt = 8; - - if (cnt != 0) { - DefaultStep = db_get_w(NULL,"CLUI","DefaultStepConnectingIcon",100); - pt->IconsCount = cnt; - SetTimer(pcli->hwndContactList,TM_STATUSBARUPDATE+pt->n,(int)(DefaultStep)/1,0); - pt->TimerCreated = 1; - pt->CycleStartTick = GetTickCount(); - } - } - } - } - return 0; -} - -// Restore protocols to the last global status. -// Used to reconnect on restore after standby. - -int OnSettingChanging(WPARAM hContact, LPARAM lParam) -{ - DBCONTACTWRITESETTING *dbcws = (DBCONTACTWRITESETTING *)lParam; - if (hContact == 0) { - if ((dbcws->value.type == DBVT_BYTE) && !strcmp(dbcws->szModule,"CLUI")) { - if (!strcmp(dbcws->szSetting,"SBarShow")) { - showOpts = dbcws->value.bVal; - return 0; - } - } - } - return 0; -} - -HWND PreCreateCLC(HWND parent) -{ - pcli->hwndContactTree = CreateWindow( _T(CLISTCONTROL_CLASS),_T(""), - WS_CHILD|WS_CLIPCHILDREN|CLS_CONTACTLIST - |( db_get_b(NULL,"CList","UseGroups",SETTING_USEGROUPS_DEFAULT)?CLS_USEGROUPS:0) - | CLS_HIDEOFFLINE - //|( db_get_b(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT)?CLS_HIDEOFFLINE:0) - |( db_get_b(NULL,"CList","HideEmptyGroups",SETTING_HIDEEMPTYGROUPS_DEFAULT)?CLS_HIDEEMPTYGROUPS:0) - |( db_get_b(NULL,"CList","ShowStatusMessages",1)?CLS_SHOWSTATUSMESSAGES:0) - |CLS_MULTICOLUMN - //|db_get_b(NULL,"CLUI","ExtraIconsAlignToLeft",1)?CLS_EX_MULTICOLUMNALIGNLEFT:0 - ,0,0,0,0,parent,NULL,g_hInst,NULL); - - return pcli->hwndContactTree; -} - -int CreateCLC(HWND parent) -{ - Sleep(0); - { - // create contact list frame - CLISTFrame Frame; - memset(&Frame,0,sizeof(Frame)); - Frame.cbSize = sizeof(CLISTFrame); - Frame.hWnd = pcli->hwndContactTree; - Frame.align = alClient; - Frame.hIcon = LoadSkinnedIcon(SKINICON_OTHER_FRAME); - //LoadIcon(hInst,MAKEINTRESOURCE(IDI_MIRANDA)); - Frame.Flags = F_VISIBLE|F_SHOWTB|F_SHOWTBTIP|F_TCHAR; - Frame.tname = _T("My contacts"); - Frame.TBtname = TranslateT("My contacts"); - hFrameContactTree = (HWND)CallService(MS_CLIST_FRAMES_ADDFRAME,(WPARAM)&Frame,0); - //free(Frame.name); - CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_TBTIPNAME,hFrameContactTree),(LPARAM)TranslateT("My Contacts")); - } - - lastreqh = 0; - CallService(MS_CLIST_SETHIDEOFFLINE,(WPARAM)oldhideoffline,0); - - int state = db_get_b(NULL,"CList","State",SETTING_STATE_NORMAL); - if (state == SETTING_STATE_NORMAL) ShowWindow(pcli->hwndContactList, SW_SHOW); - else if (state == SETTING_STATE_MINIMIZED) ShowWindow(pcli->hwndContactList, SW_SHOWMINIMIZED); - - lastreqh = 0; - disableautoupd = 0; - - HookEvent(ME_DB_CONTACT_SETTINGCHANGED,OnSettingChanging); - return 0; -} - -int GetStatsuBarProtoRect(HWND hwnd,char *szProto,RECT *rc) -{ - int nParts,nPanel; - ProtocolData *PD; - int startoffset = db_get_dw(NULL,"StatusBar","FirstIconOffset",0); - - if ( !UseOwnerDrawStatusBar) startoffset = 0; - - nParts = SendMessage(hwnd,SB_GETPARTS,0,0); - FillMemory(rc,sizeof(RECT),0); - - for (nPanel = 0;nPanelhwndStatus,SB_GETTEXT,(WPARAM)nPanel,0); - if ( PD == NULL ) - return 0; - - if ( !strcmp(szProto,PD->RealName)) - { - SendMessage(hwnd,SB_GETRECT,(WPARAM)nPanel,(LPARAM)rc); - rc->left += startoffset; - rc->right += startoffset; - return 0; - } - } - return 0; -} - -extern LRESULT ( CALLBACK *saveContactListWndProc )(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -LRESULT CALLBACK ContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - /* - This registers a window message with RegisterWindowMessage() and then waits for such a message, - if it gets it, it tries to open a file mapping object and then maps it to this process space, - it expects 256 bytes of data (incl. NULL) it will then write back the profile it is using the DB to fill in the answer. - - The caller is expected to create this mapping object and tell us the ID we need to open ours. - */ - - if (msg == hMsgGetProfile && wParam != 0) { /* got IPC message */ - HANDLE hMap; - char szName[MAX_PATH]; - int rc = 0; - mir_snprintf(szName, SIZEOF(szName), "Miranda::%u", wParam); // caller will tell us the ID of the map - hMap = OpenFileMappingA(FILE_MAP_ALL_ACCESS,FALSE,szName); - if (hMap != NULL) { - void *hView = NULL; - hView = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, MAX_PATH); - if (hView) { - char szFilePath[MAX_PATH], szProfile[MAX_PATH]; - CallService(MS_DB_GETPROFILEPATH,MAX_PATH,(LPARAM)&szFilePath); - CallService(MS_DB_GETPROFILENAME,MAX_PATH,(LPARAM)&szProfile); - mir_snprintf((char*)hView, MAX_PATH, "%s\\%s", szFilePath, szProfile); - UnmapViewOfFile(hView); - rc = 1; - } - CloseHandle(hMap); - } - return rc; - } - - switch (msg) { - case WM_CREATE: - TranslateMenu(GetMenu(hwnd)); - DrawMenuBar(hwnd); - showOpts = db_get_b(NULL,"CLUI","SBarShow",1); - - //create the status wnd - //pcli->hwndStatus == CreateStatusWindow(WS_CHILD | ( db_get_b(NULL,"CLUI","ShowSBar",1)?WS_VISIBLE:0), "", hwnd, 0); - CluiProtocolStatusChanged(0,0); - - hMsgGetProfile = RegisterWindowMessageA( "Miranda::GetProfile" ); // don't localise - - if ( db_get_b( NULL, "CList", "Transparent", 0 )) { - SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED); - SetLayeredWindowAttributes(hwnd, RGB(0,0,0), (BYTE)db_get_b(NULL,"CList","Alpha",SETTING_ALPHA_DEFAULT), LWA_ALPHA); - } - transparentFocus = 1; - return FALSE; - - case M_SETALLEXTRAICONS: - return TRUE; - - case M_CREATECLC: - CreateCLC(hwnd); - return TRUE; - - case WM_SIZE: - { - RECT rc; - if ( wParam != SIZE_MINIMIZED ) { - if ( pcli->hwndContactList != NULL ) - CLUIFramesOnClistResize((WPARAM)hwnd,0); - - GetWindowRect(hwnd, &rc); - if ( !CallService(MS_CLIST_DOCKINGISDOCKED,0,0)) { - //if docked, dont remember pos (except for width) - db_set_dw(NULL,"CList","Height",(DWORD)(rc.bottom - rc.top)); - db_set_dw(NULL,"CList","x",(DWORD)rc.left); - db_set_dw(NULL,"CList","y",(DWORD)rc.top); - } - db_set_dw(NULL,"CList","Width",(DWORD)(rc.right - rc.left)); - } - if ( wParam == SIZE_MINIMIZED ) { - if ( db_get_b(NULL,"CList","Min2Tray",SETTING_MIN2TRAY_DEFAULT )) { - ShowWindow(hwnd, SW_HIDE); - db_set_b(NULL,"CList","State",SETTING_STATE_HIDDEN); - } - else db_set_b(NULL,"CList","State",SETTING_STATE_MINIMIZED); - } - return 0; - } - - case WM_SETFOCUS: - { - boolean isfloating; - if ( hFrameContactTree ) { - isfloating = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLOATING,hFrameContactTree),0); - if ( isfloating == FALSE) - SetFocus(pcli->hwndContactTree); - } - return 0; - } - case WM_TIMER: - if ((int)wParam>=TM_STATUSBARUPDATE&&(int)wParam<=TM_STATUSBARUPDATE+64) { - int status,i; - - ProtoTicks *pt = NULL; - for (i = 0;i<64;i++) { - pt = &CycleStartTick[i]; - if (pt->szProto != NULL&&pt->TimerCreated == 1) { - status = CallProtoService(pt->szProto,PS_GETSTATUS,0,0); - if ( !(status>=ID_STATUS_CONNECTING&&status<=ID_STATUS_CONNECTING+MAX_CONNECT_RETRIES)) - { - pt->CycleStartTick = 0; - KillTimer(hwnd,TM_STATUSBARUPDATE+pt->n); - pt->TimerCreated = 0; - } } } - - pt = &CycleStartTick[wParam-TM_STATUSBARUPDATE]; - { - RECT rc; - GetStatsuBarProtoRect(pcli->hwndStatus,pt->szProto,&rc); - rc.right = rc.left+GetSystemMetrics(SM_CXSMICON)+1; - rc.top = 0; - - if (IsWindowVisible(pcli->hwndStatus)) InvalidateRect(pcli->hwndStatus,&rc,TRUE); - pcli->pfnTrayIconUpdateBase(pt->szProto); - } - //SendMessage(pcli->hwndStatus,WM_PAINT,0,0); - UpdateWindow(pcli->hwndStatus); - return TRUE; - } - break; - - case WM_DRAWITEM: - { - LPDRAWITEMSTRUCT dis = (LPDRAWITEMSTRUCT)lParam; - if (dis->hwndItem == pcli->hwndStatus) { - DrawDataForStatusBar(dis); - return 0; - } - if (dis->CtlType != ODT_MENU) - return 0; - } - break; - - case WM_KEYDOWN: - CallService(MS_CLIST_MENUPROCESSHOTKEY, wParam, MPCF_MAINMENU | MPCF_CONTACTMENU); - if (wParam == VK_F5) - pcli->pfnInitAutoRebuild(pcli->hwndContactTree); - return TRUE; - - case WM_GETMINMAXINFO: - DefWindowProc(hwnd,msg,wParam,lParam); - ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = 18; - if (requr == 0){((LPMINMAXINFO)lParam)->ptMinTrackSize.y = CLUIFramesGetMinHeight();} - return 0; - - //MSG FROM CHILD CONTROL - case WM_NOTIFY: - if (((LPNMHDR)lParam)->hwndFrom == pcli->hwndContactTree) { - switch (((LPNMHDR)lParam)->code) { - case CLN_LISTSIZECHANGE: - { - NMCLISTCONTROL *nmc = (NMCLISTCONTROL*)lParam; - RECT rcWindow,rcTree,rcWorkArea; - int maxHeight,newHeight; - int winstyle; - - if ( !disableautoupd && db_get_b( NULL, "CLUI", "AutoSize", 0 )) { - if ( !CallService(MS_CLIST_DOCKINGISDOCKED,0,0) && hFrameContactTree != 0 ) { - maxHeight = db_get_b(NULL,"CLUI","MaxSizeHeight",75); - GetWindowRect(hwnd,&rcWindow); - GetWindowRect(pcli->hwndContactTree,&rcTree); - winstyle = GetWindowLongPtr(pcli->hwndContactTree,GWL_STYLE); - - SystemParametersInfo(SPI_GETWORKAREA,0,&rcWorkArea,FALSE); - lastreqh = nmc->pt.y; - newHeight = max(nmc->pt.y,3)+1+((winstyle&WS_BORDER)?2:0)+(rcWindow.bottom-rcWindow.top)-(rcTree.bottom-rcTree.top); - if (newHeight != rcWindow.bottom - rcWindow.top ) { - if (newHeight>(rcWorkArea.bottom-rcWorkArea.top)*maxHeight/100) - newHeight = (rcWorkArea.bottom-rcWorkArea.top)*maxHeight/100; - if ( db_get_b(NULL,"CLUI","AutoSizeUpward",0)) { - rcWindow.top = rcWindow.bottom-newHeight; - if (rcWindow.toprcWorkArea.bottom) rcWindow.bottom = rcWorkArea.bottom; - } - - if (requr == 0) { - requr = 1; - SetWindowPos(hwnd,0,rcWindow.left,rcWindow.top,rcWindow.right-rcWindow.left,rcWindow.bottom-rcWindow.top,SWP_NOZORDER|SWP_NOACTIVATE); - GetWindowRect(hwnd,&rcWindow); - requr = 0; - } } } } - return TRUE; - } - } - } - else if (((LPNMHDR)lParam)->hwndFrom == pcli->hwndStatus) { - if (((LPNMHDR)lParam)->code == NM_CLICK ) { - int nParts = 0, nPanel = 0; - NMMOUSE *nm = (NMMOUSE*)lParam; - HMENU hMenu; - RECT rc; - POINT pt; - int totcount; - ProtocolData *PD; - int menuid; - int startoffset = db_get_dw(NULL,"StatusBar","FirstIconOffset",0); - int extraspace = db_get_dw(NULL,"StatusBar","BkExtraSpace",0); - boolean UseOwnerDrawStatusBar = db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",0); - - hMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS,0,0); - nParts = SendMessage(pcli->hwndStatus,SB_GETPARTS,0,0); - - if (nm->dwItemSpec == 0xFFFFFFFE) { - nPanel = nParts-1; - SendMessage(pcli->hwndStatus,SB_GETRECT,nPanel,(LPARAM)&rc); - if (nm->pt.x < rc.left) return FALSE; - } - else { - if ( !((startoffset) != 0 && UseOwnerDrawStatusBar)) { - nPanel = nm->dwItemSpec; - SendMessage(pcli->hwndStatus,SB_GETRECT,nPanel,(LPARAM)&rc); - } - else { - RECT clrc = { 0 }; - GetClientRect(pcli->hwndStatus,&clrc); - clrc.right -= clrc.left; - clrc.right -= startoffset; - int sectwidth = clrc.right/nParts; - - for (nPanel = 0;nPanelhwndStatus,SB_GETTEXT,(WPARAM)nPanel,0); - if (PD == NULL) - continue; - - rc.top = 0; - rc.bottom = clrc.bottom; - rc.left = nPanel*sectwidth+startoffset; - rc.right = rc.left+sectwidth-1; - - if (PtInRect(&rc,nm->pt)) - break; - } } } - - totcount = db_get_dw(0,"Protocols","ProtoCount",0); - PD = (ProtocolData *)SendMessage(pcli->hwndStatus,SB_GETTEXT,(WPARAM)nPanel,0); - if (PD == NULL){return 0;} - menuid = nPanel; - - if (menuid<0){break;} - hMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS,0,0); - { - unsigned int cpnl = 0; - int mcnt = GetMenuItemCount(hMenu); - for (int i = 0; ihwndContactTree); - pcli->hwndContactList = NULL; - - UnLoadCLUIFramesModule(); - db_set_b(NULL, "CList", "State", (BYTE)state); - PostQuitMessage(0); - break; - } - - return saveContactListWndProc( hwnd, msg, wParam, lParam ); -} - -int LoadCLUIModule(void) -{ - DBVARIANT dbv; - TCHAR titleText[256]; - canloadstatusbar = FALSE; - hFrameContactTree = 0; - - HookEvent(ME_SYSTEM_MODULESLOADED,CluiModulesLoaded); - HookEvent(ME_OPT_INITIALISE,CluiOptInit); - hContactDraggingEvent = CreateHookableEvent(ME_CLUI_CONTACTDRAGGING); - hContactDroppedEvent = CreateHookableEvent(ME_CLUI_CONTACTDROPPED); - hContactDragStopEvent = CreateHookableEvent(ME_CLUI_CONTACTDRAGSTOP); - - CreateServiceFunction("CLUI/GetConnectingIconForProtocol",GetConnectingIconService); - - if (db_get_ts(NULL,"CList","TitleText",&dbv)) - lstrcpyn(titleText,_T(MIRANDANAME),SIZEOF(titleText)); - else { - lstrcpyn(titleText,dbv.ptszVal,SIZEOF(titleText)); - db_free(&dbv); - } - - oldhideoffline = db_get_b(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT); - - int laster = GetLastError(); - PreCreateCLC(pcli->hwndContactList); - - // create status bar frame - CreateStatusBarhWnd(pcli->hwndContactList); - - hMenuMain = GetMenu(pcli->hwndContactList); - if ( !db_get_b(NULL, "CLUI", "ShowMainMenu", SETTING_SHOWMAINMENU_DEFAULT)) - SetMenu(pcli->hwndContactList, NULL); - SetWindowPos(pcli->hwndContactList, db_get_b(NULL,"CList","OnTop",SETTING_ONTOP_DEFAULT) ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); - - lastreqh = 0; - return 0; -} - -void UnloadCLUIModule() -{ - for (int i = 0; i < SIZEOF(CycleStartTick); i++) - if ( CycleStartTick[i].szProto != NULL) - mir_free(CycleStartTick[i].szProto); -} \ No newline at end of file diff --git a/plugins/Clist_mw/src/cluiopts.cpp b/plugins/Clist_mw/src/cluiopts.cpp deleted file mode 100644 index 1287c5cab5..0000000000 --- a/plugins/Clist_mw/src/cluiopts.cpp +++ /dev/null @@ -1,373 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -extern HMENU hMenuMain; -static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -static INT_PTR CALLBACK DlgProcSBarOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -extern HANDLE hFrameHelperStatusBar; -extern int UseOwnerDrawStatusBar; - -void CluiProtocolStatusChanged(int parStatus, const char* szProto); -int OnStatusBarBackgroundChange(); - -int CluiOptInit(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.hInstance = g_hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLUI); - odp.pszTitle = LPGEN("Window"); - odp.pszGroup = LPGEN("Contact list"); - odp.pfnDlgProc = DlgProcCluiOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_SBAR); - odp.pszTitle = LPGEN("Status bar"); - odp.pfnDlgProc = DlgProcSBarOpts; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - return 0; -} - -static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg, IDC_BRINGTOFRONT, db_get_b(NULL,"CList","BringToFront",SETTING_BRINGTOFRONT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ONTOP, db_get_b(NULL,"CList","OnTop",SETTING_ONTOP_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TOOLWND, db_get_b(NULL,"CList","ToolWindow",SETTING_TOOLWINDOW_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_MIN2TRAY, db_get_b(NULL,"CList","Min2Tray",SETTING_MIN2TRAY_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - if (IsDlgButtonChecked(hwndDlg,IDC_TOOLWND)) EnableWindow(GetDlgItem(hwndDlg,IDC_MIN2TRAY),FALSE); - CheckDlgButton(hwndDlg, IDC_SHOWCAPTION, db_get_b(NULL,"CLUI","ShowCaption",SETTING_SHOWCAPTION_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SHOWMAINMENU, db_get_b(NULL,"CLUI","ShowMainMenu",SETTING_SHOWMAINMENU_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_CLIENTDRAG, db_get_b(NULL,"CLUI","ClientAreaDrag",SETTING_CLIENTDRAG_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - if ( !IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_MIN2TRAY),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_TOOLWND),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_TITLETEXT),FALSE); - } - CheckDlgButton(hwndDlg, IDC_FADEINOUT, db_get_b(NULL,"CLUI","FadeInOut",0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_AUTOSIZE, db_get_b(NULL,"CLUI","AutoSize",0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_DROPSHADOW, db_get_b(NULL,"CList","WindowShadow",0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ONDESKTOP, db_get_b(NULL,"CList","OnDesktop", 0) ? BST_CHECKED : BST_UNCHECKED); - SendDlgItemMessage(hwndDlg,IDC_MAXSIZESPIN,UDM_SETRANGE,0,MAKELONG(100,0)); - SendDlgItemMessage(hwndDlg,IDC_MAXSIZESPIN,UDM_SETPOS,0,db_get_b(NULL,"CLUI","MaxSizeHeight",75)); - CheckDlgButton(hwndDlg, IDC_AUTOSIZEUPWARD, db_get_b(NULL,"CLUI","AutoSizeUpward",0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_AUTOHIDE, db_get_b(NULL,"CList","AutoHide",SETTING_AUTOHIDE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_SETRANGE,0,MAKELONG(900,1)); - SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_SETPOS,0,MAKELONG(db_get_w(NULL,"CList","HideTime",SETTING_HIDETIME_DEFAULT),0)); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIME),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIMESPIN),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC01),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - if ( !IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC21),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC22),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_MAXSIZEHEIGHT),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_MAXSIZESPIN),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_AUTOSIZEUPWARD),FALSE); - } - - { DBVARIANT dbv; - char *s; - char szUin[20]; - - if (db_get_s(NULL,"CList","TitleText",&dbv) == 0&&(dbv.pszVal)) - { - s = mir_strdup(dbv.pszVal); - mir_free(dbv.pszVal); - } - else - { - s = mir_strdup(MIRANDANAME); - } - - if (s) - { - SetDlgItemTextA(hwndDlg,IDC_TITLETEXT,s); - mir_free(s); - } - - SendDlgItemMessage(hwndDlg,IDC_TITLETEXT,CB_ADDSTRING,0,(LPARAM)MIRANDANAME); - mir_snprintf(szUin, SIZEOF(szUin), "%u", db_get_dw(NULL, "ICQ", "UIN", 0)); - SendDlgItemMessage(hwndDlg,IDC_TITLETEXT,CB_ADDSTRING,0,(LPARAM)szUin); - - if ( !db_get_s(NULL,"ICQ","Nick",&dbv)) { - SendDlgItemMessage(hwndDlg,IDC_TITLETEXT,CB_ADDSTRING,0,(LPARAM)dbv.pszVal); - mir_free(dbv.pszVal); - dbv.pszVal = NULL; - } - if ( !db_get_s(NULL,"ICQ","FirstName",&dbv)) { - SendDlgItemMessage(hwndDlg,IDC_TITLETEXT,CB_ADDSTRING,0,(LPARAM)dbv.pszVal); - mir_free(dbv.pszVal); - dbv.pszVal = NULL; - } - if ( !db_get_s(NULL,"ICQ","e-mail",&dbv)) { - SendDlgItemMessage(hwndDlg,IDC_TITLETEXT,CB_ADDSTRING,0,(LPARAM)dbv.pszVal); - mir_free(dbv.pszVal); - dbv.pszVal = NULL; - } - } - CheckDlgButton(hwndDlg, IDC_TRANSPARENT, db_get_b(NULL, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - if ( !IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC11),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC12),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_TRANSACTIVE),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_TRANSINACTIVE),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_ACTIVEPERC),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_INACTIVEPERC),FALSE); - } - SendDlgItemMessage(hwndDlg,IDC_TRANSACTIVE,TBM_SETRANGE,FALSE,MAKELONG(1,255)); - SendDlgItemMessage(hwndDlg,IDC_TRANSINACTIVE,TBM_SETRANGE,FALSE,MAKELONG(1,255)); - SendDlgItemMessage(hwndDlg,IDC_TRANSACTIVE,TBM_SETPOS,TRUE,db_get_b(NULL,"CList","Alpha",SETTING_ALPHA_DEFAULT)); - SendDlgItemMessage(hwndDlg,IDC_TRANSINACTIVE,TBM_SETPOS,TRUE,db_get_b(NULL,"CList","AutoAlpha",SETTING_AUTOALPHA_DEFAULT)); - SendMessage(hwndDlg,WM_HSCROLL,0x12345678,0); - return TRUE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDC_AUTOHIDE) { - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIME),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_HIDETIMESPIN),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC01),IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - } - else if (LOWORD(wParam) == IDC_TRANSPARENT) { - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC11),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC12),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TRANSACTIVE),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TRANSINACTIVE),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - EnableWindow(GetDlgItem(hwndDlg,IDC_ACTIVEPERC),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - EnableWindow(GetDlgItem(hwndDlg,IDC_INACTIVEPERC),IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - } - else if (LOWORD(wParam) == IDC_AUTOSIZE) { - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC21),IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_STATIC22),IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_MAXSIZEHEIGHT),IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_MAXSIZESPIN),IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - EnableWindow(GetDlgItem(hwndDlg,IDC_AUTOSIZEUPWARD),IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - } - else if (LOWORD(wParam) == IDC_TOOLWND) { - EnableWindow(GetDlgItem(hwndDlg,IDC_MIN2TRAY),!IsDlgButtonChecked(hwndDlg,IDC_TOOLWND)); - } - else if (LOWORD(wParam) == IDC_SHOWCAPTION) { - EnableWindow(GetDlgItem(hwndDlg,IDC_TOOLWND),IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)); - EnableWindow(GetDlgItem(hwndDlg,IDC_MIN2TRAY),!IsDlgButtonChecked(hwndDlg,IDC_TOOLWND) && IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)); - EnableWindow(GetDlgItem(hwndDlg,IDC_TITLETEXT),IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)); - } - - if ((LOWORD(wParam) == IDC_HIDETIME || LOWORD(wParam) == IDC_TITLETEXT || LOWORD(wParam) == IDC_MAXSIZEHEIGHT) && - (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - - // Enable apply button - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_HSCROLL: - { char str[10]; - mir_snprintf(str, SIZEOF(str), "%d%%", 100 * SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_GETPOS, 0, 0) / 255); - SetDlgItemTextA(hwndDlg,IDC_INACTIVEPERC,str); - mir_snprintf(str, SIZEOF(str), "%d%%", 100 * SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_GETPOS, 0, 0) / 255); - SetDlgItemTextA(hwndDlg,IDC_ACTIVEPERC,str); - } - if (wParam != 0x12345678) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - db_set_b(NULL,"CList","OnTop",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ONTOP)); - SetWindowPos(pcli->hwndContactList, IsDlgButtonChecked(hwndDlg,IDC_ONTOP)?HWND_TOPMOST:HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - - db_set_b(NULL,"CList","ToolWindow",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_TOOLWND)); - db_set_b(NULL,"CList","BringToFront",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_BRINGTOFRONT)); - if (IsDlgButtonChecked(hwndDlg,IDC_TOOLWND)) { - // Window must be hidden to dynamically remove the taskbar button. - // See http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/taskbar.asp - WINDOWPLACEMENT p; - p.length = sizeof(p); - GetWindowPlacement(pcli->hwndContactList,&p); - ShowWindow(pcli->hwndContactList,SW_HIDE); - SetWindowLongPtr(pcli->hwndContactList,GWL_EXSTYLE,GetWindowLongPtr(pcli->hwndContactList,GWL_EXSTYLE)|WS_EX_TOOLWINDOW|WS_EX_WINDOWEDGE); - SetWindowPlacement(pcli->hwndContactList,&p); - } - else - SetWindowLongPtr(pcli->hwndContactList,GWL_EXSTYLE,GetWindowLongPtr(pcli->hwndContactList,GWL_EXSTYLE)&~WS_EX_TOOLWINDOW); - - if (IsDlgButtonChecked(hwndDlg,IDC_ONDESKTOP)) { - HWND hProgMan = FindWindowA("Progman",NULL); - if (IsWindow(hProgMan)) SetParent(pcli->hwndContactList,hProgMan); - } else { - SetParent(pcli->hwndContactList,NULL); - } - - db_set_b(NULL,"CLUI","ShowCaption",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)); - db_set_b(NULL,"CLUI","ShowMainMenu",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SHOWMAINMENU)); - db_set_b(NULL,"CLUI","ClientAreaDrag",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_CLIENTDRAG)); - - if (IsDlgButtonChecked(hwndDlg,IDC_SHOWCAPTION)) - SetWindowLongPtr(pcli->hwndContactList,GWL_STYLE,GetWindowLongPtr(pcli->hwndContactList,GWL_STYLE)|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX); - else - SetWindowLongPtr(pcli->hwndContactList,GWL_STYLE,GetWindowLongPtr(pcli->hwndContactList,GWL_STYLE)&~(WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX)); - - if ( !IsDlgButtonChecked(hwndDlg,IDC_SHOWMAINMENU)) SetMenu(pcli->hwndContactList,NULL); - else SetMenu(pcli->hwndContactList,hMenuMain); - - SetWindowPos(pcli->hwndContactList,0,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); - RedrawWindow(pcli->hwndContactList,NULL,NULL,RDW_FRAME|RDW_INVALIDATE); - - db_set_b(NULL,"CList","Min2Tray",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_MIN2TRAY)); - if (IsIconic(pcli->hwndContactList) && !IsDlgButtonChecked(hwndDlg,IDC_TOOLWND)) - ShowWindow(pcli->hwndContactList,IsDlgButtonChecked(hwndDlg,IDC_MIN2TRAY)?SW_HIDE:SW_SHOW); - - { TCHAR title[256]; - GetDlgItemText(hwndDlg,IDC_TITLETEXT,title,SIZEOF(title)); - db_set_ts(NULL,"CList","TitleText",title); - SetWindowText(pcli->hwndContactList,title); - } - db_set_b(NULL,"CLUI","FadeInOut",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_FADEINOUT)); - db_set_b(NULL,"CLUI","AutoSize",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); - db_set_b(NULL,"CLUI","MaxSizeHeight",(BYTE)GetDlgItemInt(hwndDlg,IDC_MAXSIZEHEIGHT,NULL,FALSE)); - db_set_b(NULL,"CLUI","AutoSizeUpward",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZEUPWARD)); - db_set_b(NULL,"CList","AutoHide",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_AUTOHIDE)); - db_set_w(NULL,"CList","HideTime",(WORD)SendDlgItemMessage(hwndDlg,IDC_HIDETIMESPIN,UDM_GETPOS,0,0)); - - db_set_b(NULL,"CList","Transparent",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)); - db_set_b(NULL,"CList","Alpha",(BYTE)SendDlgItemMessage(hwndDlg,IDC_TRANSACTIVE,TBM_GETPOS,0,0)); - db_set_b(NULL,"CList","AutoAlpha",(BYTE)SendDlgItemMessage(hwndDlg,IDC_TRANSINACTIVE,TBM_GETPOS,0,0)); - db_set_b(NULL,"CList","WindowShadow",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_DROPSHADOW)); - db_set_b(NULL,"CList","OnDesktop",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ONDESKTOP)); - if (IsDlgButtonChecked(hwndDlg,IDC_TRANSPARENT)) { - SetWindowLongPtr(pcli->hwndContactList, GWL_EXSTYLE, GetWindowLongPtr(pcli->hwndContactList, GWL_EXSTYLE) | WS_EX_LAYERED); - SetLayeredWindowAttributes(pcli->hwndContactList, RGB(0,0,0), (BYTE)db_get_b(NULL,"CList","AutoAlpha",SETTING_AUTOALPHA_DEFAULT), LWA_ALPHA); - } - else SetWindowLongPtr(pcli->hwndContactList, GWL_EXSTYLE, GetWindowLongPtr(pcli->hwndContactList, GWL_EXSTYLE) & ~WS_EX_LAYERED); - - SendMessage(pcli->hwndContactTree,WM_SIZE,0,0); //forces it to send a cln_listsizechanged - return TRUE; - } - break; - } - return FALSE; -} - -static INT_PTR CALLBACK DlgProcSBarOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg, IDC_SHOWSBAR, db_get_b(NULL,"CLUI","ShowSBar",1) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_USECONNECTINGICON, db_get_b(NULL,"CLUI","UseConnectingIcon",1) ? BST_CHECKED : BST_UNCHECKED); - { BYTE showOpts = db_get_b(NULL,"CLUI","SBarShow",1); - CheckDlgButton(hwndDlg, IDC_SHOWICON, showOpts&1 ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SHOWPROTO, showOpts&2 ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SHOWSTATUS, showOpts&4 ? BST_CHECKED : BST_UNCHECKED); - } - CheckDlgButton(hwndDlg, IDC_RIGHTSTATUS, db_get_b(NULL,"CLUI","SBarRightClk",0) ? BST_UNCHECKED : BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_RIGHTMIRANDA, !IsDlgButtonChecked(hwndDlg,IDC_RIGHTSTATUS) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_EQUALSECTIONS, db_get_b(NULL,"CLUI","EqualSections",0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SBPANELBEVEL, db_get_b(NULL,"CLUI","SBarBevel",1) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SHOWSIZEGRIP, db_get_b(NULL,"CLUI","SBarUseSizeGrip",1) ? BST_CHECKED : BST_UNCHECKED); - - CheckDlgButton(hwndDlg, IDC_USEOWNERDRAW, db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",1) ? BST_CHECKED : BST_UNCHECKED); - - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETCOLOUR,0,db_get_dw(NULL,"CLUI","SBarBKColor",CLR_DEFAULT)); - - if ( !IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)) { - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWICON),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWPROTO),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWSTATUS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_RIGHTSTATUS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_RIGHTMIRANDA),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_EQUALSECTIONS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_SBPANELBEVEL),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWSIZEGRIP),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_USECONNECTINGICON),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_USEOWNERDRAW),FALSE); - - } - return TRUE; - case WM_COMMAND: - if (LOWORD(wParam) == IDC_SHOWSBAR) { - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWICON),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWPROTO),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWSTATUS),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_RIGHTSTATUS),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_RIGHTMIRANDA),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_EQUALSECTIONS),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SBPANELBEVEL),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOWSIZEGRIP),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_USECONNECTINGICON),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - EnableWindow(GetDlgItem(hwndDlg,IDC_USEOWNERDRAW),IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - - } - if (LOWORD(wParam) == IDC_DEFBKCOLOR) - { - SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_SETCOLOUR,0,CLR_DEFAULT); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - { - COLORREF col = SendDlgItemMessage(hwndDlg,IDC_BKGCOLOUR,CPM_GETCOLOUR,0,0); - db_set_dw(NULL,"CLUI","SBarBKColor",col); - - db_set_b(NULL,"CLUI","ShowSBar",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)); - db_set_b(NULL,"CLUI","SBarShow",(BYTE)((IsDlgButtonChecked(hwndDlg,IDC_SHOWICON)?1:0)|(IsDlgButtonChecked(hwndDlg,IDC_SHOWPROTO)?2:0)|(IsDlgButtonChecked(hwndDlg,IDC_SHOWSTATUS)?4:0))); - db_set_b(NULL,"CLUI","SBarRightClk",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_RIGHTMIRANDA)); - db_set_b(NULL,"CLUI","EqualSections",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_EQUALSECTIONS)); - db_set_b(NULL,"CLUI","SBarBevel",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SBPANELBEVEL)); - db_set_b(NULL,"CLUI","SBarUseSizeGrip",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_SHOWSIZEGRIP)); - - db_set_b(NULL,"CLUI","UseConnectingIcon",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_USECONNECTINGICON)); - db_set_b(NULL,"CLUI","UseOwnerDrawStatusBar",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_USEOWNERDRAW)); - UseOwnerDrawStatusBar = db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",0); - - int frameopt = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,hFrameHelperStatusBar),0); - frameopt &= ~F_VISIBLE; - - if (IsDlgButtonChecked(hwndDlg,IDC_SHOWSBAR)) { - ShowWindow(pcli->hwndStatus,SW_SHOW); - frameopt |= F_VISIBLE; - } - else ShowWindow(pcli->hwndStatus,SW_HIDE); - - CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_FLAGS,hFrameHelperStatusBar),frameopt); - - SendMessage(pcli->hwndContactList,WM_SIZE,0,0); - - OnStatusBarBackgroundChange(); - CluiProtocolStatusChanged(0,0); - return TRUE; - } - } - break; - } - return FALSE; -} diff --git a/plugins/Clist_mw/src/cluiservices.cpp b/plugins/Clist_mw/src/cluiservices.cpp deleted file mode 100644 index 4fc0066b1e..0000000000 --- a/plugins/Clist_mw/src/cluiservices.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -extern int CreateTimerForConnectingIcon(WPARAM,LPARAM); - -void FreeProtocolData( void ) -{ - //free protocol data - int nPanel; - int nParts = SendMessage(pcli->hwndStatus,SB_GETPARTS,0,0); - for (nPanel = 0;nPanelhwndStatus,SB_GETTEXT,(WPARAM)nPanel,0); - if (PD != NULL && !IsBadCodePtr(( FARPROC )PD)) { - SendMessage(pcli->hwndStatus,SB_SETTEXT,(WPARAM)nPanel|SBT_OWNERDRAW,0); - if (PD->RealName) mir_free(PD->RealName); - if (PD) mir_free(PD); -} } } - -void CluiProtocolStatusChanged(int parStatus, const char* szProto) -{ - int protoCount,i; - PROTOACCOUNT **accs; - int *partWidths,partCount; - int borders[3]; - int flags; - int FirstIconOffset; - - if ( pcli->hwndStatus == 0 ) - return; - - FirstIconOffset = db_get_dw(NULL,"CLUI","FirstIconOffset",0); - - ProtoEnumAccounts( &protoCount, &accs ); - if ( protoCount == 0 ) - return; - - OutputDebugStringA("CluiProtocolStatusChanged"); - OutputDebugStringA("\r\n"); - FreeProtocolData(); - - SendMessage(pcli->hwndStatus,SB_GETBORDERS,0,(LPARAM)&borders); - - SendMessage(pcli->hwndStatus,SB_SETBKCOLOR,0,db_get_dw(0,"CLUI","SBarBKColor",CLR_DEFAULT)); - partWidths = (int*)alloca((protoCount+1)*sizeof(int)); - //partWidths[0] = FirstIconOffset; - if ( db_get_b(NULL,"CLUI","UseOwnerDrawStatusBar",0)||db_get_b(NULL,"CLUI","EqualSections",1)) - { - RECT rc; - int toshow, part; - - SendMessage(pcli->hwndStatus,WM_SIZE,0,0); - GetClientRect(pcli->hwndStatus,&rc); - rc.right -= borders[0]*2; - toshow = 0; - for (i = 0;ipfnGetProtocolVisibility( accs[i]->szModuleName )) - continue; - - toshow++; - } - - if (toshow>0) - { - for (part = 0,i = 0;ipfnGetProtocolVisibility( accs[i]->szModuleName )) - continue; - - partWidths[part] = ((part+1)*(rc.right/toshow))-(borders[2]>>1); - //partWidths[part] = 40*part+40; - part++; - } - //partCount = part; - } - partCount = toshow; - - } - else { - HDC hdc; - SIZE textSize; - BYTE showOpts = db_get_b(NULL,"CLUI","SBarShow",5); - DWORD extraspace = db_get_dw(NULL,"StatusBar","BkExtraSpace",0); - DWORD startoffset = db_get_dw(NULL,"StatusBar","FirstIconOffset",0); - int x; - - hdc = GetDC(pcli->hwndStatus); - - for (partCount = 0,i = 0;ipfnGetAccountIndexByPos(i); - if (ind < 0) - continue; - - if ( !pcli->pfnGetProtocolVisibility(accs[ind]->szModuleName)) - continue; - - x = 2; - if (showOpts & 1) x += GetSystemMetrics(SM_CXSMICON); - if (showOpts & 2) { - TCHAR szName[64]; - mir_sntprintf(szName, SIZEOF(szName), _T("%s%s"), accs[ind]->tszAccountName, showOpts&4 ? _T(" ") : _T("")); - GetTextExtentPoint32(hdc, szName, (int)_tcslen(szName), &textSize); - x += textSize.cx; - } - if (showOpts & 4) { - int status = CallProtoService(accs[ind]->szModuleName, PS_GETSTATUS, 0, 0); - TCHAR *szStatus = pcli->pfnGetStatusModeDescription(status, 0); - if ( !szStatus) - szStatus = _T(""); - GetTextExtentPoint32(hdc, szStatus, (int)_tcslen(szStatus), &textSize); - x += textSize.cx; - } - if (showOpts&6) x += 2; - partWidths[partCount] = (partCount?partWidths[partCount-1]:startoffset)+x+extraspace; - partCount++; - } - ReleaseDC(pcli->hwndStatus,hdc); - } - if (partCount == 0) { - SendMessage(pcli->hwndStatus,SB_SIMPLE,TRUE,0); - return; - } - SendMessage(pcli->hwndStatus,SB_SIMPLE,FALSE,0); - - partWidths[partCount-1] = -1; - - SendMessage(pcli->hwndStatus,SB_SETMINHEIGHT,GetSystemMetrics(SM_CYSMICON)+2,0); - SendMessage(pcli->hwndStatus,SB_SETPARTS,partCount,(LPARAM)partWidths); - - flags = SBT_OWNERDRAW; - if ( !db_get_b(NULL, "CLUI", "SBarBevel", 1)) - flags |= SBT_NOBORDERS; - - for (partCount = 0, i = 0; ipfnGetAccountIndexByPos(i); - if (ind < 0) continue; - - if ( !pcli->pfnGetProtocolVisibility(accs[ind]->szModuleName)) - continue; - - ProtocolData *PD = (ProtocolData*)mir_alloc(sizeof(ProtocolData)); - PD->RealName = mir_strdup(accs[ind]->szModuleName); - PD->protopos = accs[ind]->iOrder; - - SendMessage(pcli->hwndStatus, SB_SETTEXT, partCount++ | flags, (LPARAM)PD); - } - - CreateTimerForConnectingIcon(parStatus, (LPARAM)szProto); - InvalidateRect(pcli->hwndStatus, NULL, FALSE); - return; -} diff --git a/plugins/Clist_mw/src/commonheaders.cpp b/plugins/Clist_mw/src/commonheaders.cpp deleted file mode 100644 index c76992e096..0000000000 --- a/plugins/Clist_mw/src/commonheaders.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "commonheaders.h" - -#define SAFE_PTR(a) a?(IsBadReadPtr(a,1)?a = NULL:a):a - -int __cdecl MyStrCmp (const char *a, const char *b) -{ - SAFE_PTR(a); - SAFE_PTR(b); - if ( !(a && b)) return a != b; - return (strcmp(a,b)); -} - -DWORD exceptFunction(LPEXCEPTION_POINTERS EP) -{ - //printf("1 "); // printed first - char buf[4096]; - - - mir_snprintf(buf, SIZEOF(buf), "\r\nExceptCode: %x\r\nExceptFlags: %x\r\nExceptAddress: %p\r\n", - EP->ExceptionRecord->ExceptionCode, - EP->ExceptionRecord->ExceptionFlags, - EP->ExceptionRecord->ExceptionAddress - ); - OutputDebugStringA(buf); - MessageBoxA(0,buf,"clist_mw Exception",0); - - - return EXCEPTION_EXECUTE_HANDLER; -} diff --git a/plugins/Clist_mw/src/commonheaders.h b/plugins/Clist_mw/src/commonheaders.h deleted file mode 100644 index ed78d84707..0000000000 --- a/plugins/Clist_mw/src/commonheaders.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-04 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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. -*/ - -#define _CRT_SECURE_NO_WARNINGS -#ifndef _COMMON_HEADERS_H_ -#define _COMMON_HEADERS_H_ 1 - -#define _WIN32_WINNT 0x0501 -#define _WIN32_IE 0x0501 - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "resource.h" -#include "Version.h" -#include "clc.h" -#include "clist.h" -#include "CLUIFrames/cluiframes.h" -#include "BkgrCfg.h" - -// shared vars -extern HINSTANCE g_hInst; - -/* most free()'s are invalid when the code is executed from a dll, so this changes - all the bad free()'s to good ones, however it's still incorrect code. The reasons for not - changing them include: - - * db_free has a CallService() lookup - * free() is executed in some large loops to do with clist creation of group data - * easy search and replace - -*/ - -#ifndef CS_DROPSHADOW -#define CS_DROPSHADOW 0x00020000 -#endif - -extern BOOL __cdecl strstri(const char *a, const char *b); -extern BOOL __cdecl boolstrcmpi(const char *a, const char *b); -extern int __cdecl MyStrCmp (const char *a, const char *b); -extern int __cdecl MyStrLen (const char *a); -extern int __cdecl MyStrCmpi(const char *a, const char *b); -extern int __cdecl MyStrCmpiT(const TCHAR *a, const TCHAR *b); - -extern DWORD exceptFunction(LPEXCEPTION_POINTERS EP); - -extern int (*saveIconFromStatusMode)(const char *szProto, int nStatus, MCONTACT hContact); - -//from bkg options - -// Register of plugin's user -// -// wParam = (WPARAM)szSetting - string that describes a user -// format: Category/ModuleName, -// eg: "Contact list background/CLUI", -// "Status bar background/StatusBar" -// lParam = (LPARAM)dwFlags -// -#define MS_BACKGROUNDCONFIG_REGISTER "BkgrCfg/Register" - -// -// Notification about changed background -// wParam = ModuleName -// lParam = 0 -#define ME_BACKGROUNDCONFIG_CHANGED "BkgrCfg/Changed" - - - -#define EXTRACOLUMNCOUNT 9 - - -#endif diff --git a/plugins/Clist_mw/src/contact.cpp b/plugins/Clist_mw/src/contact.cpp deleted file mode 100644 index 4f2fe4b3d7..0000000000 --- a/plugins/Clist_mw/src/contact.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "m_clui.h" -#include "clist.h" - -extern HANDLE hContactIconChangedEvent; -extern int GetContactCachedStatus(MCONTACT hContact); -extern char *GetContactCachedProtocol(MCONTACT hContact); - -int sortByStatus; -static int sortByProto; -static int sortNoOfflineBottom; -struct { - int status,order; -} statusModeOrder[] = { - {ID_STATUS_OFFLINE,500}, - {ID_STATUS_ONLINE,0}, - {ID_STATUS_AWAY,200}, - {ID_STATUS_DND,400}, - {ID_STATUS_NA,450}, - {ID_STATUS_OCCUPIED,100}, - {ID_STATUS_FREECHAT,50}, - {ID_STATUS_INVISIBLE,20}, - {ID_STATUS_ONTHEPHONE,150}, - {ID_STATUS_OUTTOLUNCH,425}}; - -static int GetContactStatus(MCONTACT hContact) -{ - /* - - char *szProto; - - szProto = GetContactProto(hContact,0); - if (szProto == NULL) return ID_STATUS_OFFLINE; - return db_get_w(hContact,szProto,"Status",ID_STATUS_OFFLINE); - */ - return (GetContactCachedStatus(hContact)); -} - -void ChangeContactIcon(MCONTACT hContact,int iIcon,int add) -{ - //clui MS_CLUI_CONTACTADDED MS_CLUI_CONTACTSETICON this methods is null - //CallService(add?MS_CLUI_CONTACTADDED:MS_CLUI_CONTACTSETICON,hContact,iIcon); - NotifyEventHooks(hContactIconChangedEvent,hContact,iIcon); -} - -static int GetStatusModeOrdering(int statusMode) -{ - int i; - for (i = 0; i< SIZEOF(statusModeOrder); i++) - if (statusModeOrder[i].status == statusMode) return statusModeOrder[i].order; - return 1000; -} - -void LoadContactTree(void) -{ - int tick = GetTickCount(); - CallService(MS_CLUI_LISTBEGINREBUILD,0,0); - for (int i=1;; i++) { - if ((char*)CallService(MS_CLIST_GROUPGETNAME2, i, 0) == NULL) - break; - CallService(MS_CLUI_GROUPADDED, i, 0); - } - - int hideOffline = db_get_b(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT); - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - ClcCacheEntry *cacheEntry = GetContactFullCacheEntry(hContact); - if (cacheEntry == NULL) { - MessageBoxA(0,"Fail To Get CacheEntry for hContact","!!!!!",0); - break; - } - int status = cacheEntry->status; - if ((!hideOffline || status != ID_STATUS_OFFLINE) && !cacheEntry->bIsHidden) - ChangeContactIcon(hContact,ExtIconFromStatusMode(hContact,(char*)cacheEntry->szProto,status),1); - } - sortByStatus = db_get_b(NULL,"CList","SortByStatus",SETTING_SORTBYSTATUS_DEFAULT); - sortByProto = db_get_b(NULL,"CList","SortByProto",SETTING_SORTBYPROTO_DEFAULT); - sortNoOfflineBottom = db_get_b(NULL,"CList","NoOfflineBottom",SETTING_NOOFFLINEBOTTOM_DEFAULT); - - CallService(MS_CLUI_LISTENDREBUILD,0,0); - - tick = GetTickCount()-tick; - - char buf[255]; - mir_snprintf(buf, SIZEOF(buf), "LoadContactTree %d \r\n", tick); - OutputDebugStringA(buf); -} - -#define SAFESTRING(a) a?a:"" - -int CompareContacts( const struct ClcContact *contact1, const struct ClcContact *contact2 ) -{ - MCONTACT a = contact1->hContact, b = contact2->hContact; - TCHAR *namea,*nameb; - int statusa,statusb; - char *szProto1,*szProto2; - int rc; - - GetContactInfosForSort(a,&szProto1,&namea,&statusa); - GetContactInfosForSort(b,&szProto2,&nameb,&statusb); - - if (sortByProto) { - - /* deal with statuses, online contacts have to go above offline */ - if (sortNoOfflineBottom == 0) - if ((statusa == ID_STATUS_OFFLINE) != (statusb == ID_STATUS_OFFLINE)) { - return 2*(statusa == ID_STATUS_OFFLINE)-1; - } - /* both are online, now check protocols */ - rc = strcmp(SAFESTRING(szProto1),SAFESTRING(szProto2)); /* strcmp() doesn't like NULL so feed in "" as needed */ - if (rc != 0 && (szProto1 != NULL && szProto2 != NULL)) return rc; - /* protocols are the same, order by display name */ - } - - if (sortByStatus) { - int ordera,orderb; - ordera = GetStatusModeOrdering(statusa); - orderb = GetStatusModeOrdering(statusb); - if (ordera != orderb) return ordera-orderb; - } - else { - //one is offline: offline goes below online - if (sortNoOfflineBottom == 0) - { - if ((statusa == ID_STATUS_OFFLINE) != (statusb == ID_STATUS_OFFLINE)) { - return 2*(statusa == ID_STATUS_OFFLINE)-1; - } - } - } - - //otherwise just compare names - return _tcsicmp(namea,nameb); -} - -#undef SAFESTRING - -void SortContacts(void) -{ - //avoid doing lots of resorts in quick succession - sortByStatus = db_get_b(NULL,"CList","SortByStatus",SETTING_SORTBYSTATUS_DEFAULT); - sortByProto = db_get_b(NULL,"CList","SortByProto",SETTING_SORTBYPROTO_DEFAULT); -} - -INT_PTR ContactChangeGroup(WPARAM hContact, LPARAM lParam) -{ - CallService(MS_CLUI_CONTACTDELETED, hContact, 0); - if ((HANDLE)lParam == NULL) - db_unset(hContact, "CList", "Group"); - else - db_set_s(hContact, "CList", "Group", (char*)CallService(MS_CLIST_GROUPGETNAME2, lParam, (LPARAM)(int*)NULL)); - - CallService(MS_CLUI_CONTACTADDED, hContact, ExtIconFromStatusMode(hContact, GetContactProto(hContact), GetContactStatus(hContact))); - return 0; -} diff --git a/plugins/Clist_mw/src/groupmenu.cpp b/plugins/Clist_mw/src/groupmenu.cpp deleted file mode 100644 index 70932d494c..0000000000 --- a/plugins/Clist_mw/src/groupmenu.cpp +++ /dev/null @@ -1,566 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include "m_clui.h" -#include "clist.h" -#include "clc.h" - -//////////////////////////////Group MENU///////////////////////// - -extern HANDLE hHideShowMainMenuItem; -HANDLE hGroupMenuObject; - -HANDLE hGroupMainMenuItemProxy; -HANDLE hGroupStatusMenuItemProxy; -HANDLE hPreBuildGroupMenuEvent; - -HGENMENU hHideOfflineUsersMenuItem, hHideOfflineUsersOutHereMenuItem, hHideEmptyGroupsMenuItem; -HGENMENU hDisableGroupsMenuItem, hNewGroupMenuItem, hNewSubGroupMenuItem; - -int NewGroupIconidx; - -extern HIMAGELIST hCListImages; -HICON LoadIconFromExternalFile(char *filename, int i, boolean UseLibrary, boolean registerit, char *IconName, char *SectName, char *Description, int internalidx, HICON DefIcon); - -void InitSubGroupMenus(void); - -//Groupmenu exec param(ownerdata) -typedef struct{ - char *szServiceName; - int Param1, Param2; -} GroupMenuExecParam, *lpGroupMenuExecParam; - -/* -wparam = handle to the menu item returned by MS_CLIST_ADDCONTACTMENUITEM -return 0 on success. -*/ -static INT_PTR RemoveGroupMenuItem(WPARAM wParam, LPARAM lParam) -{ - CallService(MO_REMOVEMENUITEM, wParam, 0); - return 0; -} - - -static INT_PTR BuildGroupMenu(WPARAM wParam, LPARAM lParam) -{ - int tick; - HMENU hMenu; - ListParam param = {0}; - param.MenuObjectHandle = hGroupMenuObject; - - //hMenu = hMainMenu; - hMenu = CreatePopupMenu(); - //hMenu = wParam; - tick = GetTickCount(); - - NotifyEventHooks(hPreBuildGroupMenuEvent, 0, 0); - - CallService(MO_BUILDMENU, (WPARAM)hMenu, (LPARAM)¶m); - //DrawMenuBar((HWND)CallService("CLUI/GetHwnd",0,0)); - tick = GetTickCount() - tick; - return (INT_PTR)hMenu; -} - -static INT_PTR AddGroupMenuItem(WPARAM wParam, LPARAM lParam) -{ - TMO_MenuItem tmi; - CLISTMENUITEM *mi = (CLISTMENUITEM *)lParam; - if (!pcli->pfnConvertMenu(mi, &tmi)) - return 0; - - lpGroupMenuExecParam mmep = (lpGroupMenuExecParam)mir_calloc(sizeof(GroupMenuExecParam)); - if (mmep == NULL) - return 0; - - //we need just one parametr. - mmep->szServiceName = mir_strdup(mi->pszService); - mmep->Param1 = mi->popupPosition; - lpGroupMenuParam gmp = (lpGroupMenuParam)wParam; - if (gmp != NULL) { - mmep->Param1 = gmp->wParam; - mmep->Param2 = gmp->lParam; - } - tmi.ownerdata = mmep; - - char buf[1024]; - mir_snprintf(buf, SIZEOF(buf), "%s/%s", mi->pszService, mi->pszName); - - OptParam op; - op.Handle = (HANDLE)CallService(MO_ADDNEWMENUITEM, (WPARAM)hGroupMenuObject, (LPARAM)&tmi); - op.Setting = OPT_MENUITEMSETUNIQNAME; - op.Value = (INT_PTR)buf; - CallService(MO_SETOPTIONSMENUITEM, 0, (LPARAM)&op); - return (INT_PTR)op.Handle; - -// mainItemCount++; -// return MENU_CUSTOMITEMMAIN|(mainMenuItem[mainItemCount-1].id); -} - -INT_PTR GroupMenuCheckService(WPARAM wParam, LPARAM lParam) -{ -//not used - return 0; -} - -INT_PTR GroupMenuonAddService(WPARAM wParam, LPARAM lParam) -{ - MENUITEMINFO *mii = (MENUITEMINFO *)wParam; - if (mii == NULL) return 0; - - if (hHideShowMainMenuItem == (HANDLE)lParam) { - mii->fMask |= MIIM_STATE; - mii->fState |= MFS_DEFAULT; - } - - if (hGroupMainMenuItemProxy == (HANDLE)lParam) { - mii->fMask |= MIIM_SUBMENU; - mii->hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETMAIN, 0, 0); - } - - if (hGroupStatusMenuItemProxy == (HANDLE)lParam) { - mii->fMask |= MIIM_SUBMENU; - mii->hSubMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS, 0, 0); - } - - return TRUE; -} - -//called with: -//wparam - ownerdata -//lparam - lparam from winproc -INT_PTR GroupMenuExecService(WPARAM wParam, LPARAM lParam) -{ - if (wParam != 0) { - lpGroupMenuExecParam mmep = (lpGroupMenuExecParam)wParam; - if (!strcmp(mmep->szServiceName, "Help/AboutCommand")) { - //bug in help.c,it used wparam as parent window handle without reason. - mmep->Param1 = 0; - CallService(mmep->szServiceName, mmep->Param1, lParam); - } - else - CallService(mmep->szServiceName, mmep->Param1, mmep->Param2); - - } - return 1; -} - -INT_PTR FreeOwnerDataGroupMenu(WPARAM wParam, LPARAM lParam) -{ - lpGroupMenuExecParam mmep = (lpGroupMenuExecParam)lParam; - if (mmep != NULL) { - mir_free(mmep->szServiceName); - mir_free(mmep); - } - return 0; -} - -INT_PTR HideGroupsHelper(WPARAM wParam, LPARAM lParam) -{ - int newVal = !(GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_HIDEEMPTYGROUPS); - db_set_b(NULL, "CList", "HideEmptyGroups", (BYTE)newVal); - SendMessage(pcli->hwndContactTree, CLM_SETHIDEEMPTYGROUPS, newVal, 0); - return 0; -} - -INT_PTR UseGroupsHelper(WPARAM wParam, LPARAM lParam) -{ - int newVal = !(GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_USEGROUPS); - db_set_b(NULL, "CList", "UseGroups", (BYTE)newVal); - SendMessage(pcli->hwndContactTree, CLM_SETUSEGROUPS, newVal, 0); - return 0; -} - -INT_PTR HideOfflineRootHelper(WPARAM wParam, LPARAM lParam) -{ - SendMessage(pcli->hwndContactTree, CLM_SETHIDEOFFLINEROOT, !SendMessage(pcli->hwndContactTree, CLM_GETHIDEOFFLINEROOT, 0, 0), 0); - return 0; -} - -static int OnBuildGroupMenu(WPARAM wParam, LPARAM lParam) -{ - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_FLAGS | (db_get_b(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT) ? CMIF_CHECKED : 0); - Menu_ModifyItem(hHideOfflineUsersMenuItem, &mi); - - mi.flags = CMIM_FLAGS | (SendMessage(pcli->hwndContactTree, CLM_GETHIDEOFFLINEROOT, 0, 0) ? CMIF_CHECKED : 0); - Menu_ModifyItem(hHideOfflineUsersOutHereMenuItem, &mi); - - mi.flags = CMIM_FLAGS | (GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_HIDEEMPTYGROUPS ? CMIF_CHECKED : 0); - Menu_ModifyItem(hHideEmptyGroupsMenuItem, &mi); - - mi.flags = CMIM_FLAGS | (GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_USEGROUPS ? 0 : CMIF_CHECKED); - Menu_ModifyItem(hDisableGroupsMenuItem, &mi); - return 0; -} - -int static OnIconLibIconChanged(WPARAM wParam, LPARAM lParam) -{ - HICON hicon = LoadIconFromExternalFile("clisticons.dll", 2, TRUE, FALSE, "NewGroup", "Contact list", "New group", -IDI_NEWGROUP, 0); - NewGroupIconidx = ImageList_ReplaceIcon(hCListImages, NewGroupIconidx, hicon); - - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_ICON; - mi.hIcon = ImageList_GetIcon(hCListImages, NewGroupIconidx, 0); - Menu_ModifyItem(hNewSubGroupMenuItem, &mi); - Menu_ModifyItem(hNewGroupMenuItem, &mi); - return 0; -} - -void InitGroupMenus(void) -{ - HICON hicon = LoadIconFromExternalFile("clisticons.dll", 2, TRUE, TRUE, "NewGroup", "Contact list", "New group", -IDI_NEWGROUP2, 0); - NewGroupIconidx = ImageList_AddIcon(hCListImages, hicon); - - CreateServiceFunction("CLISTMENUSGroup/ExecService", GroupMenuExecService); - CreateServiceFunction("CLISTMENUSGroup/FreeOwnerDataGroupMenu", FreeOwnerDataGroupMenu); - CreateServiceFunction("CLISTMENUSGroup/GroupMenuonAddService", GroupMenuonAddService); - CreateServiceFunction("CLISTMENUSGroup/HideGroupsHelper", HideGroupsHelper); - CreateServiceFunction("CLISTMENUSGroup/UseGroupsHelper", UseGroupsHelper); - CreateServiceFunction("CLISTMENUSGroup/HideOfflineRootHelper", HideOfflineRootHelper); - - CreateServiceFunction("CList/AddGroupMenuItem", AddGroupMenuItem); - CreateServiceFunction(MS_CLIST_REMOVEGROUPMENUITEM, RemoveGroupMenuItem); - CreateServiceFunction(MS_CLIST_MENUBUILDGROUP, BuildGroupMenu); - hPreBuildGroupMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDGROUPMENU); - HookEvent(ME_CLIST_PREBUILDGROUPMENU, OnBuildGroupMenu); - - InitSubGroupMenus(); - - // Group menu - hGroupMenuObject = MO_CreateMenuObject("GroupMenu", LPGEN("Group menu"), 0, "CLISTMENUSGroup/ExecService"); - MO_SetMenuObjectParam(hGroupMenuObject, OPT_USERDEFINEDITEMS, TRUE); - MO_SetMenuObjectParam(hGroupMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSGroup/FreeOwnerDataGroupMenu"); - MO_SetMenuObjectParam(hGroupMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSGroup/GroupMenuonAddService"); - { - //add exit command to menu - GroupMenuParam gmp; - - CLISTMENUITEM mi = { sizeof(mi) }; - mi.position = 1900000; - mi.pszService = "CloseAction"; - mi.pszName = LPGEN("E&xit"); - AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 500; - mi.pszService = MS_CLIST_SHOWHIDE; - mi.pszName = LPGEN("&Hide/Show"); - hHideShowMainMenuItem = (HANDLE)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 200000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_FINDUSER)); - mi.pszService = "FindAdd/FindAddCommand"; - mi.pszName = LPGEN("&Find/Add contacts..."); - AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 300000; - mi.pszService = ""; - mi.pszName = LPGEN("&Main menu"); - hGroupMainMenuItemProxy = (HANDLE)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 300100; - mi.pszService = ""; - mi.pszName = LPGEN("&Status"); - hGroupStatusMenuItemProxy = (HANDLE)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 400000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_OPTIONS)); - mi.pszService = "Options/OptionsCommand"; - mi.pszName = LPGEN("&Options..."); - - AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 500000; - mi.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_CLIENTMIRANDA)); - mi.pszService = "Help/AboutCommand"; - mi.pszName = LPGEN("&About"); - - //AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100000; - mi.hIcon = ImageList_GetIcon(hCListImages, NewGroupIconidx, 0); - mi.pszService = MS_CLIST_GROUPCREATE; - mi.pszName = LPGEN("&New group"); - hNewGroupMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100001; - mi.hIcon = NULL; - mi.pszService = MS_CLIST_SETHIDEOFFLINE; - mi.pszName = LPGEN("&Hide offline users"); - gmp.lParam = 0; - gmp.wParam = -1; - hHideOfflineUsersMenuItem = (HGENMENU)AddGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100002; - mi.hIcon = NULL; - mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; - mi.pszName = LPGEN("Hide &offline users out here"); - hHideOfflineUsersOutHereMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100003; - mi.hIcon = NULL; - mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; - mi.pszName = LPGEN("Hide &empty groups"); - hHideEmptyGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 100004; - mi.hIcon = NULL; - mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; - mi.pszName = LPGEN("Disable &groups"); - hDisableGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); - - HookEvent(ME_SKIN2_ICONSCHANGED, OnIconLibIconChanged); - } -} - -//////////////////////////////END Group MENU///////////////////////// - - - - -//////////////////////////////SubGroup MENU///////////////////////// -HANDLE hSubGroupMenuObject; - -HANDLE hSubGroupMainMenuItemProxy; -HANDLE hSubGroupStatusMenuItemProxy; -HANDLE hPreBuildSubGroupMenuEvent; - -HGENMENU hHideOfflineUsersHereMenuItem; - -//SubGroupmenu exec param(ownerdata) -typedef struct{ - char *szServiceName; - int Param1, Param2; -} SubGroupMenuExecParam, *lpSubGroupMenuExecParam; - -/* -wparam = handle to the menu item returned by MS_CLIST_ADDCONTACTMENUITEM -return 0 on success. -*/ -static INT_PTR RemoveSubGroupMenuItem(WPARAM wParam, LPARAM lParam) -{ - CallService(MO_REMOVEMENUITEM, wParam, 0); - return 0; -} - -static int OnBuildSubGroupMenu(WPARAM wParam, LPARAM lParam) -{ - ClcGroup *group = (ClcGroup *)wParam; - if (wParam == 0) return 0; - - //contact->group - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_FLAGS | (group->hideOffline ? CMIF_CHECKED : 0); - Menu_ModifyItem(hHideOfflineUsersHereMenuItem, &mi); - return 0; -} - -static INT_PTR BuildSubGroupMenu(WPARAM wParam, LPARAM lParam) -{ - int tick; - HMENU hMenu; - ListParam param = { 0 }; - param.MenuObjectHandle = hSubGroupMenuObject; - param.wParam = wParam; - - //hMenu = hMainMenu; - hMenu = CreatePopupMenu(); - //hMenu = wParam; - tick = GetTickCount(); - - NotifyEventHooks(hPreBuildSubGroupMenuEvent, wParam, 0); - - CallService(MO_BUILDMENU, (WPARAM)hMenu, (LPARAM)¶m); - //DrawMenuBar((HWND)CallService("CLUI/GetHwnd",0,0)); - tick = GetTickCount() - tick; - return (INT_PTR)hMenu; -} - -static INT_PTR AddSubGroupMenuItem(WPARAM wParam, LPARAM lParam) -{ - TMO_MenuItem tmi; - CLISTMENUITEM *mi = (CLISTMENUITEM *)lParam; - if (!pcli->pfnConvertMenu(mi, &tmi)) - return 0; - - lpSubGroupMenuExecParam mmep = (lpSubGroupMenuExecParam)mir_calloc(sizeof(SubGroupMenuExecParam)); - if (mmep == NULL) - return 0; - - //we need just one parametr. - mmep->szServiceName = mir_strdup(mi->pszService); - mmep->Param1 = mi->popupPosition; - lpGroupMenuParam gmp = (lpGroupMenuParam)wParam; - if (gmp != NULL ) { - mmep->Param1 = gmp->wParam; - mmep->Param2 = gmp->lParam; - } - tmi.ownerdata = mmep; - - char buf[1024]; - mir_snprintf(buf, SIZEOF(buf), "%s/%s", mi->pszService, mi->pszName); - - OptParam op; - op.Handle = (HANDLE)CallService(MO_ADDNEWMENUITEM, (WPARAM)hSubGroupMenuObject, (LPARAM)&tmi); - op.Setting = OPT_MENUITEMSETUNIQNAME; - op.Value = (INT_PTR)buf; - CallService(MO_SETOPTIONSMENUITEM, 0, (LPARAM)&op); - return (INT_PTR)op.Handle; -} - -INT_PTR SubGroupMenuCheckService(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -INT_PTR SubGroupMenuonAddService(WPARAM wParam, LPARAM lParam) -{ - MENUITEMINFO *mii = (MENUITEMINFO *)wParam; - if (mii == NULL) - return 0; - - return TRUE; -} - -//called with: -//wparam - ownerdata -//lparam - lparam from winproc -INT_PTR SubGroupMenuExecService(WPARAM wParam, LPARAM lParam) -{ - if (wParam != 0) { - lpSubGroupMenuExecParam mmep = (lpSubGroupMenuExecParam)wParam; - if (!strcmp(mmep->szServiceName, "Help/AboutCommand")) { - //bug in help.c,it used wparam as parent window handle without reason. - mmep->Param1 = 0; - CallService(mmep->szServiceName, mmep->Param1, lParam); - } - else - CallService(mmep->szServiceName, mmep->Param1, mmep->Param2); - } - - return 1; -} - -INT_PTR FreeOwnerDataSubGroupMenu(WPARAM wParam, LPARAM lParam) -{ - lpSubGroupMenuExecParam mmep = (lpSubGroupMenuExecParam)lParam; - if (mmep != NULL) { - mir_free(mmep->szServiceName); - mir_free(mmep); - } - return 0; -} - -//wparam menu handle to pass to clc.c -INT_PTR GroupMenuExecProxy(WPARAM wParam, LPARAM lParam) -{ - SendMessage(pcli->hwndContactTree, WM_COMMAND, wParam, 0); - return 0; -} - -void InitSubGroupMenus(void) -{ - CreateServiceFunction("CLISTMENUSSubGroup/ExecService", SubGroupMenuExecService); - CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu", FreeOwnerDataSubGroupMenu); - CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuonAddService", SubGroupMenuonAddService); - CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy", GroupMenuExecProxy); - - CreateServiceFunction("CList/AddSubGroupMenuItem", AddSubGroupMenuItem); - CreateServiceFunction(MS_CLIST_REMOVESUBGROUPMENUITEM, RemoveSubGroupMenuItem); - CreateServiceFunction(MS_CLIST_MENUBUILDSUBGROUP, BuildSubGroupMenu); - hPreBuildSubGroupMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDSUBGROUPMENU); - HookEvent(ME_CLIST_PREBUILDSUBGROUPMENU, OnBuildSubGroupMenu); - - //SubGroup menu - hSubGroupMenuObject = MO_CreateMenuObject("SubGroupMenu", LPGEN("Subgroup menu"), 0, "CLISTMENUSSubGroup/ExecService"); - MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_USERDEFINEDITEMS, TRUE); - MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"); - MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSSubGroup/SubGroupMenuonAddService"); - - //add exit command to menu - GroupMenuParam gmp; - - CLISTMENUITEM mi = { sizeof(mi) }; - mi.position = 1000; - mi.hIcon = ImageList_GetIcon(hCListImages, NewGroupIconidx, 0); - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.pszName = LPGEN("&New subgroup"); - gmp.lParam = 0; - gmp.wParam = POPUP_NEWSUBGROUP; - hNewSubGroupMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 1001; - mi.hIcon = NULL; - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.pszName = LPGEN("&Hide offline users in here"); - gmp.lParam = 0; - gmp.wParam = POPUP_GROUPHIDEOFFLINE; - hHideOfflineUsersHereMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 900001; - mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_RENAME); //LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_RENAME)); - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.pszName = LPGEN("&Rename group"); - gmp.lParam = 0; - gmp.wParam = POPUP_RENAMEGROUP; - AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); - - memset(&mi, 0, sizeof(mi)); - mi.cbSize = sizeof(mi); - mi.position = 900002; - mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); //LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_DELETE)); - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.pszName = LPGEN("&Delete group"); - gmp.lParam = 0; - gmp.wParam = POPUP_DELETEGROUP; - AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); -} - -//////////////////////////////END SubGroup MENU///////////////////////// diff --git a/plugins/Clist_mw/src/init.cpp b/plugins/Clist_mw/src/init.cpp deleted file mode 100644 index dd509257b9..0000000000 --- a/plugins/Clist_mw/src/init.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-04 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" - -HINSTANCE g_hInst = 0; -CLIST_INTERFACE* pcli = NULL; -int hLangpack; - -static HANDLE hCListShutdown = 0; - -HMENU BuildGroupPopupMenu( ClcGroup* group ); - -void CalcEipPosition( struct ClcData *dat, struct ClcContact *contact, ClcGroup *group, POINT *result); -void CheckPDNCE(ClcCacheEntry*); -void CluiProtocolStatusChanged( int, const char* ); -int CompareContacts( const struct ClcContact *contact1, const struct ClcContact *contact2 ); -void FreeDisplayNameCacheItem(ClcCacheEntry*); -void GetDefaultFontSetting(int i,LOGFONT *lf,COLORREF *colour); -void RebuildEntireList(HWND hwnd,struct ClcData *dat); -void RecalcScrollBar(HWND hwnd,struct ClcData *dat); - -ClcGroup* ( *saveAddGroup )(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers); -ClcGroup* ( *saveRemoveItemFromGroup )(HWND hwnd,ClcGroup *group,struct ClcContact *contact,int updateTotalCount); - -void (*saveFreeContact)(struct ClcContact *p); -void (*saveFreeGroup)(ClcGroup *p); - -LRESULT ( CALLBACK *saveContactListControlWndProc )( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); -LRESULT CALLBACK ContactListControlWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -LRESULT ( CALLBACK *saveContactListWndProc )(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); -LRESULT CALLBACK ContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -void ( *saveLoadClcOptions )(HWND hwnd,struct ClcData *dat); - -int ( *saveAddItemToGroup )( ClcGroup *group, int iAboveItem ); -int AddItemToGroup(ClcGroup *group, int iAboveItem); - -int ( *saveAddInfoItemToGroup)(ClcGroup *group,int flags,const TCHAR *pszText); -int AddInfoItemToGroup(ClcGroup *group,int flags,const TCHAR *pszText); - -void ( *saveSortCLC )(HWND hwnd,struct ClcData *dat,int useInsertionSort); -void SortCLC(HWND hwnd,struct ClcData *dat,int useInsertionSort); - -INT_PTR ( *saveTrayIconProcessMessage )(WPARAM wParam, LPARAM lParam); -INT_PTR TrayIconProcessMessage(WPARAM wParam, LPARAM lParam); - -int (*saveIconFromStatusMode)(const char *szProto,int nStatus, MCONTACT hContact); -int cli_IconFromStatusMode(const char *szProto,int nStatus, MCONTACT hContact); - -//from clcfonts -void RegisterCListFonts( void ); -//from bgrcfg -extern int BGModuleLoad(); -extern int BGModuleUnload(); - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {2A417AB9-16F2-472D-9AE3-415103C78A64} - {0x2a417ab9, 0x16f2, 0x472d, {0x9a, 0xe3, 0x41, 0x51, 0x3, 0xc7, 0x8a, 0x64}} -}; - -BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID reserved) -{ - g_hInst = hInstDLL; - DisableThreadLibraryCalls(g_hInst); - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_CLIST, MIID_LAST}; - -int LoadContactListModule(void); -int PreloadCLCModule(void); -int LoadCLCModule(void); -int LoadCLUIModule(); -int InitSkinHotKeys(); - -static int OnModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - if ( LoadCLUIModule()) - return 1; - - InitSkinHotKeys(); - RegisterCListFonts(); - return 0; -} - -INT_PTR SetDrawer(WPARAM wParam, LPARAM lParam) -{ - pDrawerServiceStruct DSS = (pDrawerServiceStruct)wParam; - if (DSS->cbSize != sizeof(*DSS)) return -1; - if (DSS->PluginName == NULL) return -1; - if (DSS->GetDrawFuncsServiceName == NULL) return -1; - if ( !ServiceExists(DSS->GetDrawFuncsServiceName)) return -1; - - - SED.cbSize = sizeof(SED); - SED.PaintClc = (void (__cdecl *)(HWND,struct ClcData *,HDC,RECT *,int ,ClcProtoStatus *,HIMAGELIST))CallService(DSS->GetDrawFuncsServiceName,CLUI_EXT_FUNC_PAINTCLC,0); - if ( !SED.PaintClc) return -1; - return 0; -} - -static struct ClcContact* fnCreateClcContact( void ) -{ - return (struct ClcContact*)mir_calloc( sizeof( struct ClcContact )); -} - -static ClcCacheEntry *fnCreateCacheItem(MCONTACT hContact ) -{ - ClcCacheEntry *p = (ClcCacheEntry *)mir_calloc( sizeof( ClcCacheEntry )); - if ( p ) - p->hContact = hContact; - return p; -} - -extern "C" int __declspec(dllexport) CListInitialise() -{ - int rc = 0; - - OutputDebugStringA("CListInitialise ClistMW\r\n"); - mir_getLP( &pluginInfo ); - mir_getCLI(); - - PreloadCLCModule(); - - pcli->hInst = g_hInst; - pcli->pfnBuildGroupPopupMenu = BuildGroupPopupMenu; - pcli->pfnCalcEipPosition = CalcEipPosition; - pcli->pfnCheckCacheItem = CheckPDNCE; - pcli->pfnCluiProtocolStatusChanged = CluiProtocolStatusChanged; - pcli->pfnCompareContacts = CompareContacts; - pcli->pfnCreateClcContact = fnCreateClcContact; - pcli->pfnCreateCacheItem = fnCreateCacheItem; - pcli->pfnFindItem = FindItem; - pcli->pfnFreeCacheItem = FreeDisplayNameCacheItem; - pcli->pfnGetDefaultFontSetting = GetDefaultFontSetting; - pcli->pfnGetRowsPriorTo = GetRowsPriorTo; - pcli->pfnGetRowByIndex = GetRowByIndex; - pcli->pfnHitTest = HitTest; - pcli->pfnPaintClc = PaintClc; - pcli->pfnRebuildEntireList = RebuildEntireList; - pcli->pfnRecalcScrollBar = RecalcScrollBar; - pcli->pfnScrollTo = ScrollTo; - - saveIconFromStatusMode = pcli->pfnIconFromStatusMode; - pcli->pfnIconFromStatusMode = cli_IconFromStatusMode; - - saveAddGroup = pcli->pfnAddGroup; pcli->pfnAddGroup = AddGroup; - saveAddInfoItemToGroup = pcli->pfnAddInfoItemToGroup; pcli->pfnAddInfoItemToGroup = AddInfoItemToGroup; - saveAddItemToGroup = pcli->pfnAddItemToGroup; pcli->pfnAddItemToGroup = AddItemToGroup; - saveRemoveItemFromGroup = pcli->pfnRemoveItemFromGroup; pcli->pfnRemoveItemFromGroup = RemoveItemFromGroup; - saveFreeContact = pcli->pfnFreeContact; pcli->pfnFreeContact = FreeContact; - saveFreeGroup = pcli->pfnFreeGroup; pcli->pfnFreeGroup = FreeGroup; - saveContactListControlWndProc = pcli->pfnContactListControlWndProc; pcli->pfnContactListControlWndProc = ContactListControlWndProc; - saveTrayIconProcessMessage = pcli->pfnTrayIconProcessMessage; pcli->pfnTrayIconProcessMessage = TrayIconProcessMessage; - saveContactListWndProc = pcli->pfnContactListWndProc; pcli->pfnContactListWndProc = ContactListWndProc; - saveLoadClcOptions = pcli->pfnLoadClcOptions; pcli->pfnLoadClcOptions = LoadClcOptions; - saveSortCLC = pcli->pfnSortCLC; pcli->pfnSortCLC = SortCLC; - - memset(&SED,0,sizeof(SED)); - CreateServiceFunction(CLUI_SetDrawerService,SetDrawer); - - rc = LoadContactListModule(); - if (rc == 0) - rc = LoadCLCModule(); - - HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - BGModuleLoad(); - - OutputDebugStringA("CListInitialise ClistMW...Done\r\n"); - - return rc; -} - -// never called by a newer plugin loader. -extern "C" int __declspec(dllexport) Load(void) -{ - OutputDebugStringA("Load ClistMW\r\n"); - CListInitialise(); - return 1; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - OutputDebugStringA("Unloading ClistMW\r\n"); - if (IsWindow(pcli->hwndContactList)) DestroyWindow(pcli->hwndContactList); - BGModuleUnload(); - pcli->hwndContactList = 0; - return 0; -} diff --git a/plugins/Clist_mw/src/keyboard.cpp b/plugins/Clist_mw/src/keyboard.cpp deleted file mode 100644 index bd8a438231..0000000000 --- a/plugins/Clist_mw/src/keyboard.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-03 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -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" -#include - -INT_PTR hkCloseMiranda(WPARAM wParam, LPARAM lParam) -{ - CallService("CloseAction", 0, 0); - return 0; -} - -INT_PTR hkRestoreStatus(WPARAM wParam, LPARAM lParam) -{ - int nStatus = db_get_w(NULL, "CList", "Status", ID_STATUS_OFFLINE); - CallService(MS_CLIST_SETSTATUSMODE, nStatus, 0); - - return 0; -} - -int InitSkinHotKeys(void) -{ - CreateServiceFunction("CLIST/HK/CloseMiranda",hkCloseMiranda); - CreateServiceFunction("CLIST/HK/RestoreStatus",hkRestoreStatus); - - HOTKEYDESC shk = {0}; - shk.cbSize = sizeof(shk); - - shk.pszDescription = LPGEN("Close Miranda"); - shk.pszName = "CloseMiranda"; - shk.pszSection = "Main"; - shk.pszService = "CLIST/HK/CloseMiranda"; - Hotkey_Register(&shk); - - shk.pszDescription = LPGEN("Restore last status"); - shk.pszName = "RestoreLastStatus"; - shk.pszSection = "Status"; - shk.pszService = "CLIST/HK/RestoreStatus"; - Hotkey_Register(&shk); - - return 0; -} - -void UninitSkinHotKeys(void) -{ -} diff --git a/plugins/Clist_mw/src/resource.h b/plugins/Clist_mw/src/resource.h deleted file mode 100644 index a726d14957..0000000000 --- a/plugins/Clist_mw/src/resource.h +++ /dev/null @@ -1,642 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Âêëþ÷àåìûé ôàéë, ñîçäàííûé â Microsoft Visual C++. -// Èñïîëüçóåòñÿ d:\MNG_orig\plugins\Clist_mw\res\resource.rc -// -#define IDC_AUTHICON 1 -#define IDC_NOTOALL 3 -#define IDC_APPLY 3 -#define MIM_V1 10 -#define IDI_GLOBUS 11 -#define MIM_V2 20 -#define MIM_V3 30 -#define MIM_V4 30 -#define IDD_ABOUT 103 -#define IDI_SMS 103 -#define IDI_ONLINE 104 -#define IDI_OFFLINE 105 -#define IDD_GNUPL 110 -#define IDD_ADDED 115 -#define IDD_URLSEND 119 -#define IDD_URLRECV 120 -#define IDD_AUTHREQ 121 -#define IDD_DETAILS 125 -#define IDD_OPT_CLIST 126 -#define IDD_HISTORY 127 -#define IDI_AWAY 128 -#define IDI_FREE4CHAT 129 -#define IDI_INVISIBLE 130 -#define IDI_NA 131 -#define IDD_OPT_SOUND 134 -#define IDD_OPT_HOTKEYS 134 -#define IDI_SENDURL 135 -#define IDI_RECVMSG 136 -#define IDI_SENDMSG 137 -#define IDI_URL 138 -#define IDI_DND 158 -#define IDI_OCCUPIED 159 -#define IDI_USERDETAILS 160 -#define IDI_FINDUSER 161 -#define IDI_HELP 162 -#define IDI_OPTIONS 163 -#define IDI_MIRANDAWEBSITE 172 -#define IDI_RENAME 173 -#define IDI_HISTORY 174 -#define IDI_DELETE 175 -#define IDR_CONTEXT 180 -#define IDC_DROP 183 -#define IDD_OPT_HOTKEY 184 -#define IDD_HISTORY_FIND 192 -#define IDI_SENDEMAIL 193 -#define IDD_FILERECV 194 -#define IDD_PROFILEMANAGER 197 -#define IDD_NEWPROFILE 198 -#define IDR_CLISTMENU 199 -#define IDI_BLANK 200 -#define IDD_FINDADD 201 -#define IDI_USERONLINE 201 -#define IDD_OPT_AUTOAWAY 202 -#define IDI_GROUPSHUT 202 -#define IDD_OPTIONS 203 -#define IDI_GROUPOPEN 203 -#define IDD_PLUGINCONFLICT 204 -#define IDD_FILESEND 205 -#define IDI_NOTICK 205 -#define IDD_OPT_PLUGINS 206 -#define IDI_TICK 206 -#define IDD_OPT_ICONS 207 -#define IDI_FILE 207 -#define IDI_TIMESTAMP 208 -#define IDI_CHANGEFONT 209 -#define IDI_ADDCONTACT 210 -#define IDI_SMALLDOT 211 -#define IDI_FILLEDBLOB 212 -#define IDD_READAWAYMSG 213 -#define IDI_EMPTYBLOB 213 -#define IDD_OPT_IGNORE 214 -#define IDC_HYPERLINKHAND 214 -#define IDD_OPT_VISIBILITY 215 -#define IDC_DROPUSER 215 -#define IDD_SETAWAYMSG 216 -#define IDI_DETAILSLOGO 216 -#define IDD_OPT_AWAYMSG 217 -#define IDD_OPT_CLUI 218 -#define IDD_INFO_SUMMARY 220 -#define IDD_INFO_CONTACT 221 -#define IDD_INFO_BACKGROUND 222 -#define IDD_INFO_NOTES 223 -#define IDD_ADDEMAIL 226 -#define IDD_ICONINDEX 227 -#define IDD_OPT_CLC 228 -#define IDD_OPT_CLCBKG 230 -#define IDD_INFO_LOCATION 231 -#define IDD_INFO_WORK 232 -#define IDD_ADDPHONE 233 -#define IDD_OPT_SBAR 234 -#define IDD_INSTALLINI 235 -#define IDD_WARNINICHANGE 236 -#define IDD_INIIMPORTDONE 237 -#define IDB_SORTCOLUP 239 -#define IDB_SORTCOLDOWN 240 -#define IDD_OPT_NETLIB 246 -#define IDD_NETLIBLOGOPTS 247 -#define IDD_FILETRANSFERINFO 249 -#define IDD_OPT_FILETRANSFER 250 -#define IDD_FILEEXISTS 251 -#define IDD_DELETECONTACT 254 -#define IDD_DENYREASON 256 -#define IDD_ADDCONTACT 257 -#define IDD_OPT_CONTACT 261 -#define IDD_OPT_PROTOCOLORDER 262 -#define IDI_MULTISEND 263 -#define IDI_DOWNARROW 264 -#define IDD_CREDITS 265 -#define IDD_OPT_IDLE 268 -#define IDI_ICQC1 269 -#define IDI_ICQC2 270 -#define IDI_ICQC3 271 -#define IDI_ICQC4 272 -#define IDI_ICQC5 273 -#define IDI_ICQC6 274 -#define IDI_ICQC7 275 -#define IDI_ICQC8 276 -#define IDI_EMAIL 277 -#define IDD_OPT_META_CLC 279 -#define IDI_NEWGROUP 282 -#define IDI_NEWGROUP2 282 -#define IDI_CLIENTTRILLIAN 298 -#define IDI_CLIENTMIRANDA 299 -#define IDI_CLIENTRQ 300 -#define IDI_CLIENTGAIM 301 -#define IDI_CLIENTIM2 302 -#define IDI_CLIENTKOPETE 303 -#define IDI_CLIENTLICQ 304 -#define IDI_CLIENTQIP 305 -#define IDI_CLIENTSIM 306 -#define IDI_MIRANDA2 307 -#define IDD_OPT_CLCBKG2 308 -#define IDI_CLIENTICQL5 315 -#define IDI_CLIENTAGILE 318 -#define IDI_CLIENTGNOMEICU 319 -#define IDI_ICON1 320 -#define IDI_CLIENTMOBICQ 320 -#define IDI_CLIENTSPAMBOT 321 -#define IDI_CLIENTICQMAC 322 -#define IDI_CLIENTIMPLUS 323 -#define IDI_CLIENTYSM 324 -#define IDI_CLIENTYAMIGO 325 -#define IDI_CLIENTWEBICQ 326 -#define IDI_CLIENTVICQ 327 -#define IDI_CLIENTSTRICQ 328 -#define IDI_CLIENTSTICQ 329 -#define IDI_CLIENTNICQ2 330 -#define IDI_CLIENTPSI 331 -#define IDI_CLIENTMOB2ICQ 333 -#define IDI_CLIENTMICQ 334 -#define IDI_CLIENTLIBICQ2000 335 -#define IDI_CLIENTCENTERICQ 336 -#define IDI_CLIENTALICQ 337 -#define IDI_CLIENTICQ2000 339 -#define IDI_CLIENTICQ2001 340 -#define IDI_CLIENTICQ2003 341 -#define IDI_CLIENTICQLITE 342 -#define IDI_CLIENTICQLITE4 343 -#define IDI_CLIENTICQLITE5 344 -#define IDI_CLIENTICQGOF 345 -#define IDI_CLIENTICQGOJ 346 -#define IDC_RESETPROTOCOLDATA 1000 -#define IDC_SAVE 1001 -#define IDC_DEFBKCOLOR 1001 -#define IDI_ONTHEPHONE 1002 -#define IDC_MESSAGE 1002 -#define IDI_OUTTOLUNCH 1003 -#define IDC_AUTOCLOSE 1004 -#define IDC_FROM 1005 -#define IDC_AUTOMIN 1005 -#define IDC_DATE 1006 -#define IDC_DUMPRECV 1006 -#define IDC_MSG 1008 -#define IDC_PROXYDNS 1008 -#define IDC_NAME 1009 -#define IDC_PROXYTYPE 1009 -#define IDC_STATIC23 1010 -#define IDC_NAMEVAL 1010 -#define IDC_SPECIFYPORTS 1013 -#define IDC_ST_ENTERMSG 1013 -#define IDC_ST_ENTERURL 1014 -#define IDC_SPECIFYPORTSO 1014 -#define IDC_TEXT 1019 -#define IDC_SHOWNAMES 1024 -#define IDC_ABOUT 1032 -#define IDC_MYNOTES 1033 -#define IDC_URLS 1037 -#define IDC_REPLY 1039 -#define IDC_URL 1041 -#define IDC_REASON 1046 -#define IDC_EMAIL 1048 -#define IDC_NAMENICK 1049 -#define IDC_NAMEFIRST 1050 -#define IDC_NAMELAST 1051 -#define IDC_NICK 1053 -#define IDC_GENDER 1060 -#define IDC_CITY 1061 -#define IDC_STATE 1062 -#define IDC_COUNTRY 1063 -#define IDC_AGE 1064 -#define IDC_ZIP 1064 -#define IDC_PHONE 1065 -#define IDC_STREET 1065 -#define IDC_COMPANY 1066 -#define IDC_LANGUAGE1 1066 -#define IDC_TIMEZONE 1067 -#define IDC_DEPARTMENT 1067 -#define IDC_LOCALTIME 1068 -#define IDC_DETAILS 1069 -#define IDC_POSITION 1069 -#define IDC_LANGUAGE2 1069 -#define IDC_ADD 1070 -#define IDC_LANGUAGE3 1070 -#define IDC_MOREOPTIONS 1071 -#define IDC_USERMENU 1071 -#define IDC_MIN2TRAY 1073 -#define IDC_ONTOP 1074 -#define IDC_SHOWMAINMENU 1075 -#define IDC_CLIENTDRAG 1076 -#define IDC_EDIT 1078 -#define IDC_LIST 1079 -#define IDC_HISTORY 1080 -#define IDC_USESOUND 1085 -#define IDC_TOOLWND 1097 -#define IDC_ONECLK 1098 -#define IDC_SHOWCAPTION 1098 -#define IDC_HIDEOFFLINE 1099 -#define IDC_SHOWHIDE 1100 -#define IDC_HIDEEMPTYGROUPS 1100 -#define IDC_SORTBYSTATUS 1101 -#define IDC_FADEINOUT 1101 -#define IDC_READMSG 1102 -#define IDC_AUTOSIZE 1102 -#define IDC_DISABLEGROUPS 1102 -#define IDC_AUTOSIZEUPWARD 1103 -#define IDC_ALWAYSSTATUS 1103 -#define IDC_NETSEARCH 1104 -#define IDC_CONFIRMDELETE 1104 -#define IDC_SORTBYPROTO 1105 -#define IDC_SHOWOPTIONS 1105 -#define IDC_SEARCHURL 1106 -#define IDC_BUILDTIME 1108 -#define IDC_NUMBER 1113 -#define IDC_UIN 1123 -#define IDC_TRANSPARENT 1124 -#define IDC_TRANSINACTIVE 1126 -#define IDC_TRANSACTIVE 1128 -#define IDC_FINDWHAT 1131 -#define IDC_FIND 1132 -#define IDC_FILE 1133 -#define IDC_PROFILELIST 1134 -#define IDC_NEWPROFILE 1135 -#define IDC_NEWPROFILENAME 1136 -#define IDC_TABS 1141 -#define IDC_RESULTS 1142 -#define IDC_STATUS 1144 -#define IDC_SCREENSAVE 1145 -#define IDC_TIMED 1146 -#define IDC_AWAYTIME 1147 -#define IDC_USEPROXY 1148 -#define IDC_SETNA 1148 -#define IDC_PROXYAUTH 1149 -#define IDC_NATIME 1149 -#define IDC_PROXYHOST 1150 -#define IDC_PROXYPORT 1151 -#define IDC_PROXYUSER 1152 -#define IDC_PROXYPASS 1153 -#define IDC_STATIC11 1154 -#define IDC_STATIC12 1155 -#define IDC_STATIC21 1156 -#define IDC_STATIC22 1157 -#define IDC_STATIC31 1158 -#define IDC_STATIC32 1159 -#define IDC_PROXYAUTHNTLM 1160 -#define IDC_HKSHOWHIDE 1162 -#define IDC_HKREADMSG 1163 -#define IDC_SOUNDLIST 1163 -#define IDC_HKSEARCH 1164 -#define IDC_CHANGE 1164 -#define IDC_PREVIEW 1165 -#define IDC_HKSHOWOPTIONS 1165 -#define IDC_PLUGINLIST 1167 -#define IDC_FEATURENAME 1168 -#define IDC_CHOOSE 1169 -#define IDC_TO 1170 -#define IDC_ABOUTGROUP 1175 -#define IDC_DESCRIPTION 1176 -#define IDC_AUTHOR 1177 -#define IDC_COPYRIGHT 1178 -#define IDC_VERSION 1179 -#define IDC_HOMEPAGE 1181 -#define IDC_RESTARTREQD 1182 -#define IDC_ICONSET 1183 -#define IDC_BROWSE 1184 -#define IDC_RUNATSTARTBROWSE 1185 -#define IDC_PAGETREE 1186 -#define IDC_RUNNOW 1186 -#define IDC_INACTIVEPERC 1187 -#define IDC_ACTIVEPERC 1188 -#define IDC_SEARCHNEWWND 1188 -#define IDC_RETRIEVING 1193 -#define IDC_TITLETEXT 1196 -#define IDC_GETMORE 1200 -#define IDC_VISIBLEICON 1204 -#define IDC_INVISIBLEICON 1205 -#define IDC_FILEICON 1206 -#define IDC_ONLINEICON 1207 -#define IDC_FILENAMES 1208 -#define IDC_ALLICON 1208 -#define IDC_DONTREPLY 1209 -#define IDC_NONEICON 1209 -#define IDC_USEPREVIOUS 1210 -#define IDC_NODIALOG 1211 -#define IDC_USESPECIFIC 1212 -#define IDC_FILEDIR 1213 -#define IDC_ALLFILESPROGRESS 1217 -#define IDC_CURRENTSPEED 1219 -#define IDC_STAWAYTYPE 1220 -#define IDC_WHITERECT 1221 -#define IDC_ALLSPEED 1221 -#define IDC_CURRENTFILEPROGRESS 1222 -#define IDC_CURRENTFILEGROUP 1223 -#define IDC_FIRSTNAME 1224 -#define IDC_LASTNAME 1225 -#define IDC_CURRENTTRANSFERRED 1225 -#define IDC_DOBDAY 1226 -#define IDC_DOBMONTH 1227 -#define IDC_WEBPAGE 1228 -#define IDC_DOBYEAR 1228 -#define IDC_UPDATING 1231 -#define IDC_NAMEORDER 1234 -#define IDC_AUTOHIDE 1235 -#define IDC_HIDETIME 1236 -#define IDC_RECONNECTREQD 1239 -#define IDC_IMPORT 1241 -#define IDC_TOMAIN 1243 -#define IDC_TOPROTO 1244 -#define IDC_PROTOLIST 1245 -#define IDC_TODEFICON 1246 -#define IDC_IMPORTMULTI 1247 -#define IDC_MAXSIZEHEIGHT 1254 -#define IDC_MAXSIZESPIN 1255 -#define IDC_FONTID 1256 -#define IDC_SAMETYPE 1257 -#define IDC_SAMESTYLE 1258 -#define IDC_SAMECOLOUR 1259 -#define IDC_SAMEAS 1260 -#define IDC_TYPEFACE 1261 -#define IDC_BOLD 1262 -#define IDC_ITALIC 1263 -#define IDC_COLOUR 1264 -#define IDC_UNDERLINE 1265 -#define IDC_HOTCOLOUR 1267 -#define IDC_SAMESIZE 1268 -#define IDC_BKGCOLOUR 1269 -#define IDC_FILENAME 1271 -#define IDC_SCROLL 1277 -#define IDC_PROPORTIONAL 1278 -#define IDC_SELCOLOUR 1281 -#define IDC_QUICKCOLOUR 1282 -#define IDC_SMOOTHTIME 1283 -#define IDC_SMOOTHTIMESPIN 1284 -#define IDC_GREYOUT 1285 -#define IDC_ROWHEIGHT 1285 -#define IDC_ROWHEIGHTSPIN 1286 -#define IDC_GREYOUTOPTS 1288 -#define IDC_GROUPINDENT 1289 -#define IDC_GROUPINDENTSPIN 1290 -#define IDC_LEFTMARGIN 1291 -#define IDC_SAMPLE 1292 -#define IDC_LEFTMARGINSPIN 1292 -#define IDC_FONTSIZE 1293 -#define IDC_STRETCHH 1298 -#define IDC_STRETCHV 1299 -#define IDC_TILEH 1300 -#define IDC_SCRIPT 1300 -#define IDC_TILEV 1301 -#define IDC_GAMMACORRECT 1302 -#define IDC_TILEVROWH 1302 -#define IDC_INTERESTS 1305 -#define IDC_EMAILS 1306 -#define IDC_PAST 1307 -#define IDC_HIDEOFFLINEOPTS 1308 -#define IDC_PHONES 1308 -#define IDC_SMS 1310 -#define IDC_AREA 1312 -#define IDC_UPDATE 1313 -#define IDC_DONTCYCLE 1315 -#define IDC_PRIMARYSTATUS 1316 -#define IDC_CYCLE 1317 -#define IDC_CYCLETIME 1318 -#define IDC_CYCLETIMESPIN 1319 -#define IDC_HIDETIMESPIN 1320 -#define IDC_MULTITRAY 1321 -#define IDC_ALWAYSMULTI 1322 -#define IDC_SHOWICON 1323 -#define IDC_SHOWPROTO 1324 -#define IDC_SHOWSTATUS 1325 -#define IDC_EQUALSECTIONS 1326 -#define IDC_SHOWSIZEGRIP 1327 -#define IDC_USEOWNERDRAW 1328 -#define IDC_SHOWSBAR 1329 -#define IDC_RIGHTMIRANDA 1330 -#define IDC_RIGHTSTATUS 1331 -#define IDC_ININAME 1333 -#define IDC_VIEWINI 1334 -#define IDC_SECURITYINFO 1335 -#define IDC_SETTINGNAME 1336 -#define IDC_NEWVALUE 1337 -#define IDC_WARNNOMORE 1338 -#define IDC_DELETE 1339 -#define IDC_RECYCLE 1340 -#define IDC_NEWNAME 1341 -#define IDC_MOVE 1342 -#define IDC_LEAVE 1343 -#define IDC_EXPERT 1346 -#define IDC_SORTBYNAME 1347 -#define IDC_STAUTOHIDESECS 1349 -#define IDC_STCLISTGROUP 1350 -#define IDC_DISABLEDRAGDROP 1351 -#define IDC_NOTEDITLABELS 1352 -#define IDC_SHOWSELALWAYS 1353 -#define IDC_TRACKSELECT 1354 -#define IDC_SHOWGROUPCOUNTS 1355 -#define IDC_HIDECOUNTSWHENEMPTY 1356 -#define IDC_DIVIDERONOFF 1357 -#define IDC_NOTNOTRANSLUCENTSEL 1358 -#define IDC_LINEWITHGROUPS 1359 -#define IDC_QUICKSEARCHVISONLY 1360 -#define IDC_SORTGROUPSALPHA 1361 -#define IDC_NOTNOSMOOTHSCROLLING 1362 -#define IDC_BITMAP 1363 -#define IDC_STWINDOWGROUP 1364 -#define IDC_STATIC01 1365 -#define IDC_CATEGORYLIST 1366 -#define IDC_LOADICONS 1369 -#define IDC_STICONSGROUP 1371 -#define IDC_MSGICON 1375 -#define IDC_URLICON 1376 -#define IDC_STNOPAGE 1377 -#define IDC_STCHECKMARKS 1380 -#define IDC_STSAMETEXT 1382 -#define IDC_STASTEXT 1383 -#define IDC_STSIZETEXT 1384 -#define IDC_STCOLOURTEXT 1385 -#define IDC_STHORZBAR 1386 -#define IDC_MIRANDA 1388 -#define IDC_STATUSBAR 1389 -#define IDC_PROTOIDGROUP 1392 -#define IDC_BYPROTOID 1393 -#define IDC_PROTOID 1394 -#define IDC_EMAILGROUP 1395 -#define IDC_BYEMAIL 1396 -#define IDC_STNAMENICK 1397 -#define IDC_NAMEGROUP 1398 -#define IDC_BYNAME 1399 -#define IDC_STNAMEFIRST 1400 -#define IDC_STNAMELAST 1401 -#define IDC_ADVANCEDGROUP 1402 -#define IDC_BYADVANCED 1403 -#define IDC_ADVANCED 1404 -#define IDC_STSIMPLERIGHT 1440 -#define IDC_NETLIBUSERS 1443 -#define IDC_STOFTENPORT 1445 -#define IDC_STATIC51 1446 -#define IDC_STATIC52 1447 -#define IDC_STATIC43 1448 -#define IDC_LOGOPTIONS 1449 -#define IDC_PORTSRANGE 1450 -#define IDC_TOCONSOLE 1451 -#define IDC_STATIC53 1451 -#define IDC_SHOWCONSOLEATSTART 1452 -#define IDC_PORTSRANGEO 1452 -#define IDC_STATIC54 1453 -#define IDC_SHOWCONSOLE 1454 -#define IDC_TOOUTPUTDEBUGSTRING 1455 -#define IDC_TOFILE 1456 -#define IDC_CLEARCONSOLE 1457 -#define IDC_RUNATSTART 1458 -#define IDC_DUMPSENT 1464 -#define IDC_DUMPPROXY 1466 -#define IDC_TEXTDUMPS 1467 -#define IDC_AUTODETECTTEXT 1468 -#define IDC_TIMEFORMAT 1469 -#define IDC_FILENAMEBROWSE 1470 -#define IDC_SHOWTHISDLGATSTART 1471 -#define IDC_FILEDIRBROWSE 1475 -#define IDC_ALLFILESGROUP 1476 -#define IDC_SCANCMDLINEBROWSE 1476 -#define IDC_ALLTRANSFERRED 1477 -#define IDC_OPENFOLDER 1478 -#define IDC_OPENFILE 1479 -#define IDC_TOTALSIZE 1480 -#define IDC_APPENDNICKTODIR 1483 -#define IDC_AUTOACCEPT 1484 -#define IDC_SCANCMDLINE 1485 -#define IDC_WARNBEFOREOPENING 1488 -#define IDC_SCANDURINGDL 1489 -#define IDC_SCANAFTERDL 1490 -#define IDC_NOSCANNER 1491 -#define IDC_ST_CMDLINE 1492 -#define IDC_ST_CMDLINEHELP 1493 -#define IDC_PROPERTIES 1496 -#define IDC_RESUME 1497 -#define IDC_EXISTINGICON 1499 -#define IDC_RESUMEALL 1500 -#define IDC_OVERWRITE 1501 -#define IDC_OVERWRITEALL 1502 -#define IDC_SKIP 1503 -#define IDC_EXISTINGSIZE 1506 -#define IDC_EXISTINGDATE 1507 -#define IDC_EXISTINGTYPE 1508 -#define IDC_NEWICON 1509 -#define IDC_NEWSIZE 1510 -#define IDC_NEWDATE 1511 -#define IDC_NEWTYPE 1512 -#define IDC_SAVEAS 1513 -#define IDC_ASK 1516 -#define IDC_RENAME 1519 -#define IDC_VIRUSSCANNERGROUP 1520 -#define IDC_HIDE 1534 -#define IDC_TOPLINE 1535 -#define IDC_GPLBTN 1536 -#define IDC_MAIL 1536 -#define IDC_MYHANDLE 1540 -#define IDC_GROUP 1541 -#define IDC_ADDED 1542 -#define IDC_AUTH 1543 -#define IDC_PLUGINSTATIC1 1559 -#define IDC_DELETEHISTORY 1560 -#define IDC_HOTKEYURLSTR 1567 -#define IDC_SETNASTR 1568 -#define IDC_AAUTHOR 1569 -#define IDC_AHOMEPAGE 1570 -#define IDC_AVERSION 1571 -#define IDC_ACOPYRIGHT 1572 -#define IDC_ADESCRIPTION 1573 -#define IDC_PLUGINENABLE 1574 -#define IDC_AUTHREQ 1577 -#define IDC_AUTHGB 1578 -#define IDC_BRINGTOFRONT 1579 -#define IDC_PROTOCOL 1580 -#define IDC_CONTRIBLINK 1586 -#define IDC_HOMELINK 1587 -#define IDC_SUPPORTLINK 1588 -#define IDC_DEVS 1589 -#define IDC_GPL 1590 -#define IDC_LOGO 1591 -#define IDC_PROTOCOLORDER 1591 -#define IDC_PROTOCOLORDERWARNING 1592 -#define IDC_CREDITSTEXT 1595 -#define IDC_WSLOCK 1599 -#define IDC_BLINKTIME 1607 -#define IDC_BLINKSPIN 1608 -#define IDC_DISABLEBLINK 1609 -#define IDC_IDLE 1610 -#define IDC_SBPANELBEVEL 1611 -#define IDC_META 1611 -#define IDC_DROPSHADOW 1612 -#define IDC_METADBLCLK 1612 -#define IDC_NOSCROLLBAR 1613 -#define IDC_METASUBEXTRA 1614 -#define IDC_METASUBEXTRA_IGN 1615 -#define IDC_METASUB_HIDEOFFLINE 1616 -#define IDC_BUTTON1 1633 -#define IDC_IDLECHECK 1636 -#define IDC_IDLEONWINDOWS 1637 -#define IDC_IDLEONMIRANDA 1638 -#define IDC_IDLEUSEGLI 1639 -#define IDC_SCREENSAVER 1642 -#define IDC_LOCKED 1643 -#define IDC_IDLESHORT 1644 -#define IDC_IDLELONG 1645 -#define IDC_IDLE1STTIME 1646 -#define IDC_IDLE2NDTIME 1647 -#define IDC_IDLEPRIVATE 1649 -#define IDC_AASTATUS 1650 -#define IDC_AASHORTIDLE 1651 -#define IDC_AALONGSTATUS 1652 -#define IDC_AALONGIDLE 1656 -#define IDC_NOOFFLINEMOVE 1657 -#define IDC_HOTKEYTREE 1657 -#define IDC_LOCATION 1659 -#define IDC_SGROUP 1660 -#define IDC_SLOC 1661 -#define IDC_ONDESKTOP 1662 -#define IDC_SETHOTKEY 1759 -#define IDC_HKTITLE 1760 -#define IDC_CHECK1 1761 -#define IDC_USECONNECTINGICON 1761 -#define IDC_BKGRLIST 1762 -#define IDC_BC_STATIC 1763 -#define IDC_SC_STATIC 1764 -#define IDD_OPT_GENMENU 11267 -#define IDC_MENUITEMS 11710 -#define IDC_MENUOBJECTS 11711 -#define IDC_NOTSUPPORTWARNING 11712 -#define IDC_INSERTSEPARATOR 11715 -#define IDC_GENMENU_SERVICE 11716 -#define IDC_GENMENU_CUSTOMNAME 11717 -#define IDC_GENMENU_SET 11718 -#define IDC_GENMENU_SET2 11719 -#define IDC_GENMENU_DEFAULT 11719 -#define IDC_ICONBLINK 11720 -#define IDI_SEARCHALL 32548 -#define ID_ICQ_EXIT 40001 -#define IDM_COPY 40001 -#define ID_RESET 40002 -#define POPUP_HIDEEMPTYGROUPS 40003 -#define POPUP_NEWSUBGROUP 40004 -#define POPUP_HIDEOFFLINE 40005 -#define POPUP_GROUPHIDEOFFLINE 40006 -#define POPUP_HIDEOFFLINEROOT 40007 -#define POPUP_DISABLEGROUPS 40008 -#define IDC_SENDMESSAGE 40009 -#define IDM_COPYALL 40011 -#define IDM_SELECTALL 40012 -#define IDM_CLEAR 40013 -#define IDM_OPENNEW 40014 -#define IDM_OPENEXISTING 40015 -#define IDM_COPYLINK 40016 -#define POPUP_HIDEMIRANDA 40017 -#define ID_TRAY_HIDE 40038 -#define ID_TRAY_EXIT 40040 -#define POPUP_NEWGROUP 40050 -#define POPUP_RENAMEGROUP 40052 -#define POPUP_DELETEGROUP 40053 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 347 -#define _APS_NEXT_COMMAND_VALUE 40018 -#define _APS_NEXT_CONTROL_VALUE 1763 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/Clist_mw/src/stdafx.cpp b/plugins/Clist_mw/src/stdafx.cpp deleted file mode 100644 index 0edf9e36e6..0000000000 --- a/plugins/Clist_mw/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-14 Miranda NG project (http://miranda-ng.org) - -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 version 2 -of the License. - -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, see . -*/ - -#include "commonheaders.h" \ No newline at end of file -- cgit v1.2.3