From 7aff1e4cb053394db57c2814d5fe1e6493e0cc75 Mon Sep 17 00:00:00 2001 From: watcherhd Date: Sat, 26 Nov 2011 14:19:43 +0000 Subject: Project folders rename part 2 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@214 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- Gender/Gender.dsp | 126 +++++++++++ Gender/Gender.dsw | 29 +++ Gender/Gender.mdsp | 101 +++++++++ Gender/Makefile | 125 +++++++++++ Gender/commonheaders.h | 63 ++++++ Gender/docs/gender-readme.txt | 62 +++++ Gender/docs/gender-translate.txt | 24 ++ Gender/gender.rc | 129 +++++++++++ Gender/gender.sln | 21 ++ Gender/gender.vcproj | 179 +++++++++++++++ Gender/gender_10.sln | 31 +++ Gender/gender_10.vcxproj | 240 ++++++++++++++++++++ Gender/icons/female.ico | Bin 0 -> 2550 bytes Gender/icons/gender.ico | Bin 0 -> 2550 bytes Gender/icons/male.ico | Bin 0 -> 2550 bytes Gender/main.cpp | 474 +++++++++++++++++++++++++++++++++++++++ Gender/options.cpp | 167 ++++++++++++++ Gender/resource.h | 25 +++ 18 files changed, 1796 insertions(+) create mode 100644 Gender/Gender.dsp create mode 100644 Gender/Gender.dsw create mode 100644 Gender/Gender.mdsp create mode 100644 Gender/Makefile create mode 100644 Gender/commonheaders.h create mode 100644 Gender/docs/gender-readme.txt create mode 100644 Gender/docs/gender-translate.txt create mode 100644 Gender/gender.rc create mode 100644 Gender/gender.sln create mode 100644 Gender/gender.vcproj create mode 100644 Gender/gender_10.sln create mode 100644 Gender/gender_10.vcxproj create mode 100644 Gender/icons/female.ico create mode 100644 Gender/icons/gender.ico create mode 100644 Gender/icons/male.ico create mode 100644 Gender/main.cpp create mode 100644 Gender/options.cpp create mode 100644 Gender/resource.h (limited to 'Gender') diff --git a/Gender/Gender.dsp b/Gender/Gender.dsp new file mode 100644 index 0000000..ad8ac8e --- /dev/null +++ b/Gender/Gender.dsp @@ -0,0 +1,126 @@ +# Microsoft Developer Studio Project File - Name="Gender" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=Gender - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Gender.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Gender.mak" CFG="Gender - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Gender - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Gender - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName ""$/Miranda/miranda/plugins/Gender", FLIAAAAA" +# PROP Scc_LocalPath "." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Gender - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "Gender_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x419 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../bin/Release/plugins/Gender.dll" /filealign:512 +# SUBTRACT LINK32 /map /debug + +!ELSEIF "$(CFG)" == "Gender - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "Gender_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NO_GZIP" /D "PNG_NO_STDIO" /D "PNG_NO_CONSOLE_IO" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x419 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/Gender.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none /incremental:no + +!ENDIF + +# Begin Target + +# Name "Gender - Win32 Release" +# Name "Gender - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# Begin Source File + +SOURCE=.\options.cpp +# End Source File +# End Group +# Begin Group "Resources" + +# PROP Default_Filter "*.rc" +# Begin Source File + +SOURCE=.\gender.rc +# End Source File +# End Group +# Begin Group "Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\commonheaders.h +# End Source File +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# End Group +# End Target +# End Project diff --git a/Gender/Gender.dsw b/Gender/Gender.dsw new file mode 100644 index 0000000..9320280 --- /dev/null +++ b/Gender/Gender.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Gender"=".\Gender.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Gender/Gender.mdsp b/Gender/Gender.mdsp new file mode 100644 index 0000000..34811ae --- /dev/null +++ b/Gender/Gender.mdsp @@ -0,0 +1,101 @@ +[Project] +name=Gender +type=2 +defaultConfig=1 + + +[Debug] +// compiler +workingDirectory= +arguments= +intermediateFilesDirectory=Debug +outputFilesDirectory=Debug +compilerPreprocessor= +extraCompilerOptions= +compilerIncludeDirectory=..\..\include +noWarning=0 +defaultWarning=0 +allWarning=1 +extraWarning=0 +isoWarning=0 +warningsAsErrors=0 +debugType=1 +debugLevel=2 +exceptionEnabled=1 +runtimeTypeEnabled=1 +optimizeLevel=4 + +// linker +libraryPath= +outputFilename=Debug\Gender.dll +libraries= +extraLinkerOptions= +ignoreStartupFile=0 +ignoreDefaultLibs=0 +stripExecutableFile=0 + +// archive +extraArchiveOptions= + +//resource +resourcePreprocessor= +resourceIncludeDirectory= +extraResourceOptions= + +[Release] +// compiler +workingDirectory= +arguments= +intermediateFilesDirectory=Release +outputFilesDirectory=Release +compilerPreprocessor= +extraCompilerOptions= +compilerIncludeDirectory=..\..\include +noWarning=0 +defaultWarning=1 +allWarning=1 +extraWarning=0 +isoWarning=0 +warningsAsErrors=0 +debugType=0 +debugLevel=1 +exceptionEnabled=1 +runtimeTypeEnabled=1 +optimizeLevel=4 + +// linker +libraryPath= +outputFilename=Release\Gender.dll +libraries= +extraLinkerOptions= +ignoreStartupFile=0 +ignoreDefaultLibs=0 +stripExecutableFile=1 + +// archive +extraArchiveOptions= + +//resource +resourcePreprocessor= +resourceIncludeDirectory= +extraResourceOptions= + +[Source] +1=main.cpp +2=options.cpp +[Header] +1=commonheaders.h +2=resource.h +3=sdk\m_cluiframes.h +4=sdk\m_metacontacts.h +5=sdk\m_updater.h +6=m_gender.h +[Resource] +1=gender.rc +[Other] +1=docs\gender-readme.txt +2=docs\gender-translate.txt +[History] +options.cpp,3791 +docs\gender-readme.txt,905 +main.cpp,9679 diff --git a/Gender/Makefile b/Gender/Makefile new file mode 100644 index 0000000..b6bb5c1 --- /dev/null +++ b/Gender/Makefile @@ -0,0 +1,125 @@ +################################################################# +## This Makefile Exported by MinGW Developer Studio +## Copyright (c) 2002-2004 by Parinya Thipchart +################################################################# + +ifneq (,$(findstring Release, $(CFG))) + override CFG = Release +else + override CFG = Debug +endif + +PROJECT = Gender +CC = "C:\MinGWStudio\MinGW\bin\g++.exe" + +WINDRES = "$(COMPILER_BIN)windres.exe" +ifeq ($(CFG),Debug) + OBJ_DIR = Debug + OUTPUT_DIR = Debug + TARGET = Gender.a + C_INCLUDE_DIRS = -I"G:/Install/Internet/Miranda/SVN/plugins" + C_PREPROC = + CFLAGS = -pipe -Wall -g2 -Os -frtti -fexceptions + RC_INCLUDE_DIRS = + RC_PREPROC = + RCFLAGS = + LIB_DIRS = + LIBS = + LDFLAGS = -pipe -shared -Wl,--output-def,"$(OBJ_DIR)\Gender.def",--out-implib,"$(OBJ_DIR)\libGender.dll.a" +endif + +ifeq ($(CFG),Release) + OBJ_DIR = Release + OUTPUT_DIR = Release + TARGET = Gender.dll + C_INCLUDE_DIRS = -I"G:/Install/Internet/Miranda/SVN/include" + C_PREPROC = + CFLAGS = -pipe -fweb -frename-registers -Os -Wall -g0 -Os -fno-rtti -fno-exceptions + RC_INCLUDE_DIRS = + RC_PREPROC = + RCFLAGS = + LIB_DIRS = + LIBS = + LDFLAGS = -pipe -shared -Wl,--output-def,"$(OBJ_DIR)\Gender.def",--out-implib,"$(OBJ_DIR)\libGender.dll.a" -s +endif + +ifeq ($(OS),Windows_NT) + NULL = +else + NULL = nul +endif + +SRC_OBJS = \ + $(OBJ_DIR)/main.o \ + $(OBJ_DIR)/options.o + +RSRC_OBJS = \ + $(OBJ_DIR)/gender.res + +define build_target +@echo Linking... +@$(CC) -o "$(OUTPUT_DIR)\$(TARGET)" $(SRC_OBJS) $(RSRC_OBJS) $(LIB_DIRS) $(LIBS) $(LDFLAGS) +endef + +define compile_resource +@echo Compiling $< +@$(WINDRES) $(RCFLAGS) $(RC_PREPROC) $(RC_INCLUDE_DIRS) -O COFF -i "$<" -o "$@" +endef + +define compile_source +@echo Compiling $< +@$(CC) $(CFLAGS) $(C_PREPROC) $(C_INCLUDE_DIRS) -c "$<" -o "$@" +endef + +.PHONY: print_header directories + +$(TARGET): print_header directories $(RSRC_OBJS) $(SRC_OBJS) + $(build_target) + +.PHONY: clean cleanall + +cleanall: + @echo Deleting intermediate files for 'Gender - $(CFG)' + -@del $(OBJ_DIR)\*.o + -@del $(OBJ_DIR)\*.res + -@del "$(OUTPUT_DIR)\$(TARGET)" + -@del "$(OBJ_DIR)\$(PROJECT).def" + -@del "$(OBJ_DIR)\lib$(PROJECT).dll.a" + -@rmdir "$(OUTPUT_DIR)" + +clean: + @echo Deleting intermediate files for 'Gender - $(CFG)' + -@del $(OBJ_DIR)\*.o + -@del $(OBJ_DIR)\*.res + +print_header: + @echo ----------Configuration: Gender - $(CFG)---------- + +directories: + -@if not exist "$(OUTPUT_DIR)\$(NULL)" mkdir "$(OUTPUT_DIR)" + -@if not exist "$(OBJ_DIR)\$(NULL)" mkdir "$(OBJ_DIR)" + +$(OBJ_DIR)/gender.res: gender.rc \ +resource.h \ +icons/male.ico \ +icons/female.ico + $(compile_resource) + +$(OBJ_DIR)/main.o: main.cpp \ +commonheaders.h \ +resource.h \ +sdk/m_genmenu.h \ +sdk/m_cluiframes.h \ +sdk/m_icolib.h \ +sdk/m_updater.h + $(compile_source) + +$(OBJ_DIR)/options.o: options.cpp \ +commonheaders.h \ +resource.h \ +sdk/m_genmenu.h \ +sdk/m_cluiframes.h \ +sdk/m_icolib.h \ +sdk/m_updater.h + $(compile_source) + diff --git a/Gender/commonheaders.h b/Gender/commonheaders.h new file mode 100644 index 0000000..ef43423 --- /dev/null +++ b/Gender/commonheaders.h @@ -0,0 +1,63 @@ +/* + Show Contact Gender plugin for Miranda-IM (www.miranda-im.org) + (c) 2006-2011 by Thief + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + File name : $URL: http://svn.miranda.im/mainrepo/gender/trunk/commonheaders.h $ + Revision : $Rev: 1687 $ + Last change on : $Date: 2011-01-22 18:44:21 +0200 (Сб, 22 янв 2011) $ + Last change by : $Author: Thief $ + +*/ + +#ifndef COMMHEADERS_H +#define COMMHEADERS_H + +#include //needed by m_utils.h +#include // needed by m_icolib.h > r9256 + +#include +#include + +//Miranda API headers +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Gender SDK +#include "m_gender.h" + +//Resources +#include "resource.h" + +//external SDK headers +#include "m_updater.h" +#include "m_metacontacts.h" +#include "m_extraicons.h" + +static const int DefaultSlot = EXTRA_ICON_ADV2; +#define MODULENAME "Gender" + +#endif //COMMHEADERS_H diff --git a/Gender/docs/gender-readme.txt b/Gender/docs/gender-readme.txt new file mode 100644 index 0000000..9b61305 --- /dev/null +++ b/Gender/docs/gender-readme.txt @@ -0,0 +1,62 @@ +Gender plugin for Miranda IM (http://miranda-im.org) +Homepage: http://thief.miranda.im +Version: 0.0.2.1 (c) 2006-2011 Thief +Idea by nile, icons by a0x + +This plugin shows gender icon in contact list. Nothing more ;) + +Changes: + +v0.0.2.1 ++ 64bit build ++ internal unicode support +- removed old PLUGININFO support + +v0.0.2.0 ++ added support for extraicons service plugin + +v0.0.1.9 +* gender key is now written to "UserInfo" module instead of protocol (the key doesn't get deleted on info update) (ticket #32) ++ option to draw an icon when no gender info found (ticket #33) +* look up for gender key in "UserInfo" module and then in protocol +* other small fixes + +v0.0.1.8 +- some changes to icons handling, now Miranda 0.7 is required ++ added possibility to disable contact list icon +* fixed service function + +v0.0.1.7 +- version bump (to allow update from 0.0.1.6 previously released as beta) + +v0.0.1.6 ++ metacontacts support (thanks sje for clearing things out) ++ added a service for retrieving gender icon for a contact + +v0.0.1.5 +* changed icons - now using cute icons by a0x (thanks!) + +v0.0.1.4 ++ added uuid (FB1C17E0-77FC-45A7-9C8B-E2BEF4F56B28) and MIID_GENDER interface for Miranda 0.8.x compatibility +* make menu subitem checked when gender key is found + +v0.0.1.3 +! addons release +* hide menu items for chatrooms and non-IM protocols (like weather, etc) +* icons changes in icolib reflect menuitems icons ++ option to disable menu items + +v0.0.1.2 ++ plugin now checks "UserInfo" module if gender key was not found in protocol module (FR by BraVo123) +- MinGW build + +v0.0.1.1 ++ menuitems to set gender (FR by Shaggoth) ++ langpack and readme +Happy New Year! :) + +v0.0.1.0 +- initial release + +Plugin is released under GPL licence. +http://www.gnu.org/copyleft/gpl.html \ No newline at end of file diff --git a/Gender/docs/gender-translate.txt b/Gender/docs/gender-translate.txt new file mode 100644 index 0000000..b2f31b9 --- /dev/null +++ b/Gender/docs/gender-translate.txt @@ -0,0 +1,24 @@ +[Gender] +[Male] +[Female] +[Undefined] +[Set Gender] +[Set Male] +[Set Female] +[Set Undefined] +[Plugin settings] +[Use] +[slot to draw the icon] +[Email] +[Protocol] +[SMS] +[Advanced 1] +[Advanced 2] +[Web] +[Client] +[Advanced 3] +[Advanced 4] +[Advanced 5] +[Enable menu items] +[No info] +[Draw an icon when gender info not found] \ No newline at end of file diff --git a/Gender/gender.rc b/Gender/gender.rc new file mode 100644 index 0000000..651f86b --- /dev/null +++ b/Gender/gender.rc @@ -0,0 +1,129 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Ukrainian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_UKR) +#ifdef _WIN32 +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_MALE ICON "icons\\male.ico" +IDI_FEMALE ICON "icons\\female.ico" +IDI_UNDEF ICON "icons\\gender.ico" +#endif // Ukrainian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_GENDER_OPT DIALOGEX 0, 0, 314, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_ADVICON,95,102,78,81,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP,WS_EX_CLIENTEDGE + GROUPBOX "Plugin settings",IDC_STATIC,46,78,222,100 + RTEXT "Use",IDC_USE_L,56,104,33,12 + LTEXT "slot to draw the icon",IDC_SLOT_L,179,104,76,17 + CONTROL "Enable menu items",IDC_MENUITEMS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,76,122,167,12 + LTEXT "Note: if you still don't see the icons try changing icon slot. Perhaps its used by some other plugin.", + IDC_NOTE_L,53,152,200,18 + CONTROL "Draw an icon when gender info not found", + IDC_DRAWUNDEFICON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 76,138,167,12 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_GENDER_OPT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 307 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Gender/gender.sln b/Gender/gender.sln new file mode 100644 index 0000000..815ba0c --- /dev/null +++ b/Gender/gender.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gender2", "gender.vcproj", "{9DF8913A-99A3-40D2-86FE-585EBDDCABB2}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug.ActiveCfg = Debug|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug.Build.0 = Debug|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release.ActiveCfg = Release|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Gender/gender.vcproj b/Gender/gender.vcproj new file mode 100644 index 0000000..68c6f42 --- /dev/null +++ b/Gender/gender.vcproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gender/gender_10.sln b/Gender/gender_10.sln new file mode 100644 index 0000000..238e9b5 --- /dev/null +++ b/Gender/gender_10.sln @@ -0,0 +1,31 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gender_10", "gender_10.vcxproj", "{9DF8913A-99A3-40D2-86FE-585EBDDCABB2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release Unicode|Win32 = Release Unicode|Win32 + Release Unicode|x64 = Release Unicode|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug|Win32.Build.0 = Debug|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug|x64.ActiveCfg = Debug|x64 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Debug|x64.Build.0 = Debug|x64 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release Unicode|x64.ActiveCfg = Release Unicode|x64 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release Unicode|x64.Build.0 = Release Unicode|x64 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release|Win32.ActiveCfg = Release|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release|Win32.Build.0 = Release|Win32 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release|x64.ActiveCfg = Release|x64 + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Gender/gender_10.vcxproj b/Gender/gender_10.vcxproj new file mode 100644 index 0000000..3e6e29d --- /dev/null +++ b/Gender/gender_10.vcxproj @@ -0,0 +1,240 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release Unicode + Win32 + + + Release Unicode + x64 + + + Release + Win32 + + + Release + x64 + + + + {9DF8913A-99A3-40D2-86FE-585EBDDCABB2} + Win32Proj + gender + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + Unicode + + + DynamicLibrary + MultiByte + + + DynamicLibrary + Unicode + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + true + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)64/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + $(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\ + false + false + false + false + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level3 + EditAndContinue + ../include;../ExternalAPI;%(AdditionalIncludeDirectories) + + + true + $(OutDir)gender2.pdb + Windows + MachineX86 + + + + + MinSpace + WIN32;_DEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Level3 + ProgramDatabase + + + true + $(OutDir)gender2.pdb + Windows + $(OutDir)gender2.lib + + + + + Full + ../include;../ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + + + Level3 + ProgramDatabase + Size + + + false + Windows + true + true + MachineX86 + + + + + Full + ../include;../ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + Level3 + ProgramDatabase + Size + + + false + Windows + true + true + MachineX86 + + + + + MinSpace + ../include;../ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + $(OutDir)gender.dll + false + Windows + true + true + $(OutDir)gender.lib + + + + + MinSpace + ../include;../ExternalAPI;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_WINDOWS;_USRDLL;GENDER2_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + $(OutDir)gender.dll + false + Windows + true + true + $(OutDir)gender.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Gender/icons/female.ico b/Gender/icons/female.ico new file mode 100644 index 0000000..fe1cbd2 Binary files /dev/null and b/Gender/icons/female.ico differ diff --git a/Gender/icons/gender.ico b/Gender/icons/gender.ico new file mode 100644 index 0000000..930c342 Binary files /dev/null and b/Gender/icons/gender.ico differ diff --git a/Gender/icons/male.ico b/Gender/icons/male.ico new file mode 100644 index 0000000..ebd0420 Binary files /dev/null and b/Gender/icons/male.ico differ diff --git a/Gender/main.cpp b/Gender/main.cpp new file mode 100644 index 0000000..c11060a --- /dev/null +++ b/Gender/main.cpp @@ -0,0 +1,474 @@ +/* + Show Contact Gender plugin for Miranda-IM (www.miranda-im.org) + (c) 2006-2011 by Thief + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + File name : $URL: http://svn.miranda.im/mainrepo/gender/trunk/main.cpp $ + Revision : $Rev: 1688 $ + Last change on : $Date: 2011-01-22 19:44:43 +0200 (Сб, 22 янв 2011) $ + Last change by : $Author: Thief $ + +*/ + +#include "commonheaders.h" + +HINSTANCE g_hInst; +PLUGINLINK *pluginLink; +static HANDLE hHookModulesLoaded = NULL, hSystemOKToExit = NULL, hOptInitialise = NULL, hIcoLibIconsChanged = NULL; +static HANDLE hHookExtraIconsRebuild = NULL, hHookExtraIconsApply = NULL, hContactMenu = NULL; +static HANDLE hContactMenuMale = NULL, hContactMenuFemale = NULL, hContactMenuNotDef = NULL, hHookPrebuildContactMenu = NULL; +static HANDLE hSetMale = NULL, hSetFemale = NULL, hSetUndef = NULL, hGenderGetIcon = NULL; + +HANDLE g_hExtraIcon = NULL; +HANDLE g_hIconMale, g_hIconFemale, g_hIconMenu; +IconExtraColumn g_IECMale = {0}; +IconExtraColumn g_IECFemale = {0}; +IconExtraColumn g_IECUndef = {0}; +IconExtraColumn g_IECClear = {0}; + +int clistIcon = 0; // Icon slot to use +byte bEnableClistIcon = 1; // do we need clist icon? +byte bDrawNoGenderIcon = 0; // enable icon when no info? +byte bContactMenuItems = 1; // do we need a contact menu items? +byte bMetaAvail = 0; // metacontacts installed? + +extern int onOptInitialise(WPARAM wParam, LPARAM lParam); + +PLUGININFOEX pluginInfo={ +sizeof(PLUGININFOEX), +#ifdef WIN64 + "Show Contact Gender (x64)", +#else + "Show Contact Gender", +#endif + PLUGIN_MAKE_VERSION(0,0,2,1), + "Shows contacts gender as an icon in contact list", + "Thief, idea by nile, icons by a0x", + "thief@miranda.im", + "2006-2011 Alexander Turyak", + "http://thief.miranda.im/", + UNICODE_AWARE, + 0, //doesn't replace anything built-in +#ifdef WIN64 + { 0x3a99592e, 0x20d5, 0x4b72, { 0xa5, 0x96, 0xe6, 0x7d, 0xd7, 0x13, 0xde, 0xfb } } // {3A99592E-20D5-4B72-A596-E67DD713DEFB} +#else + {0xfb1c17e0, 0x77fc, 0x45a7, {0x9c, 0x8b, 0xe2, 0xbe, 0xf4, 0xf5, 0x6b, 0x28}} /* FB1C17E0-77FC-45A7-9C8B-E2BEF4F56B28 */ +#endif +}; + +extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + g_hInst = hinstDLL; + return TRUE; +} + +/* 0FF3991A-5505-479D-A2E0-53DD31C6DFA7 */ +#define MIID_GENDER {0x0ff3991a, 0x5505, 0x479d, {0xa2, 0xe0, 0x53, 0xdd, 0x31, 0xc6, 0xdf, 0xa7}} + +extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) +{ + static const MUUID interfaces[] = {MIID_GENDER, MIID_LAST}; + return interfaces; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +void setIcon(HANDLE hContact, unsigned int gender) +{ + if (g_hExtraIcon != NULL) + { + char *ico; + switch (gender) + { + case 77: ico = "male_icon"; break; + case 70: ico = "female_icon"; break; + default: ico = (bDrawNoGenderIcon ? "menu_icon" : NULL); break; + } + ExtraIcon_SetIcon(g_hExtraIcon, hContact, ico); + } + else + { + IconExtraColumn *col; + switch (gender) + { + case 77: col = &g_IECMale; break; + case 70: col = &g_IECFemale; break; + default: col = (bDrawNoGenderIcon ? &g_IECUndef : &g_IECClear); break; + } + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)col); + } +} + +int onExtraImageApplying(WPARAM wParam, LPARAM lParam) +{ + if (g_hExtraIcon == NULL && !bEnableClistIcon) return 0; + + HANDLE hContact = (HANDLE)wParam; + if (bMetaAvail) + { + HANDLE hMetacontact = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, wParam, 0); + if (hMetacontact != NULL) hContact = hMetacontact; + } + + char *proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0); + if (!proto) return 0; + + if (DBGetContactSettingByte((HANDLE)wParam, proto, "ChatRoom", 0)) return 0; + + unsigned int gender = DBGetContactSettingByte(hContact, "UserInfo", "Gender", DBGetContactSettingByte(hContact, proto, "Gender", 0)); + + setIcon(hContact, gender); + if ((HANDLE)wParam != hContact) + setIcon((HANDLE)wParam, gender); + + return 0; +} + +int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) +{ + g_IECMale.cbSize = sizeof(IconExtraColumn); + g_IECMale.ColumnType = clistIcon; + g_IECFemale.cbSize = sizeof(IconExtraColumn); + g_IECFemale.ColumnType = clistIcon; + g_IECUndef.cbSize = sizeof(IconExtraColumn); + g_IECUndef.ColumnType = clistIcon; + + if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) + { + if(hIcoLibIconsChanged) + { + g_IECMale.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)g_hIconMale), (LPARAM)0); + g_IECFemale.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)g_hIconFemale), (LPARAM)0); + g_IECUndef.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)g_hIconMenu), (LPARAM)0); + } + } + + return 0; +} + +// Returns gender icon for specific contact +INT_PTR GetIcon(WPARAM wParam, LPARAM lParam) +{ + char *proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0); + unsigned short gender = DBGetContactSettingByte((HANDLE)wParam, "UserInfo", "Gender", DBGetContactSettingByte((HANDLE)wParam, proto, "Gender", 0)); + + if (gender > 0) + { + if (gender == 77) return CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)g_hIconMale); + else if (gender == 70) return CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)g_hIconFemale); + } + + return 0; +} + +int onPrebuildContactMenu(WPARAM wParam, LPARAM lParam) +{ + char *proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0); + + if (!proto) return 0; + + CLISTMENUITEM mi = {0}; + mi.cbSize = sizeof(CLISTMENUITEM); + + + if (DBGetContactSettingByte((HANDLE)wParam, proto, "ChatRoom", 0) || !(CallProtoService(proto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_IMSEND)) + mi.flags = CMIM_FLAGS | CMIF_HIDDEN; + else + mi.flags = CMIM_FLAGS; + + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenu, (LPARAM)&mi); + + unsigned short gender = DBGetContactSettingByte((HANDLE)wParam, proto, "Gender", DBGetContactSettingByte((HANDLE)wParam, "UserInfo", "Gender", 0)); + + CLISTMENUITEM mitem = {0}; + mitem.cbSize = sizeof(CLISTMENUITEM); + mitem.flags = CMIM_FLAGS; + + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuMale, (LPARAM)&mitem); + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuFemale, (LPARAM)&mitem); + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuNotDef, (LPARAM)&mitem); + + mitem.flags = CMIM_FLAGS | CMIF_CHECKED; + + switch (gender) + { + case 77: + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuMale, (LPARAM)&mitem); + break; + case 70: + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuFemale, (LPARAM)&mitem); + break; + case 0: + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hContactMenuNotDef, (LPARAM)&mitem); + break; + } + + return 0; +} + +void setGender(HANDLE hContact, unsigned int gender) +{ + DBWriteContactSettingByte(hContact, "UserInfo", "Gender", gender); + setIcon(hContact, gender); + + int metasnum = (bMetaAvail ? CallService(MS_MC_GETNUMCONTACTS,(WPARAM)hContact,0) : 0); + for(int i=0; iidFrom == 0) + switch (((LPNMHDR)lParam)->code) + { + case PSN_APPLY: + { + HANDLE hContact; + + bDrawNoGenderIcon = IsDlgButtonChecked(hwndDlg, IDC_DRAWUNDEFICON); + + if (g_hExtraIcon == NULL) + { + clistIcon = SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_GETCURSEL, 0, 0); + DBWriteContactSettingByte(NULL, MODULENAME, "AdvancedIcon", clistIcon); + + if (bEnableClistIcon) + { + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + } + + bEnableClistIcon = (clistIcon != 0); + + if (bEnableClistIcon) + { + g_IECClear.ColumnType = clistIcon; + onExtraImageListRebuild(0,0); + } + } + + if (g_hExtraIcon != NULL || bEnableClistIcon) + { + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + onExtraImageApplying((WPARAM)hContact,0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + } + + DBWriteContactSettingByte(NULL, MODULENAME, "ClistIcon", bEnableClistIcon); + DBWriteContactSettingByte(NULL, MODULENAME, "NoGenderIcon", bDrawNoGenderIcon); + DBWriteContactSettingByte(NULL, MODULENAME, "MenuItems", IsDlgButtonChecked(hwndDlg, IDC_MENUITEMS)); + } + return TRUE; + } + } + + case WM_DESTROY: + break; + } + return FALSE; +} + +int onOptInitialise(WPARAM wParam, LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp; + ZeroMemory(&odp, sizeof(odp)); + odp.cbSize = sizeof(odp); + odp.position = 0; + odp.hInstance = g_hInst; + odp.ptszGroup = LPGENT("Plugins"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_GENDER_OPT); + odp.ptszTitle = LPGENT("Gender"); + odp.pfnDlgProc = DlgProcOptions; + odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR; + CallService(MS_OPT_ADDPAGE, wParam, (LPARAM) &odp); + + return 0; +} diff --git a/Gender/resource.h b/Gender/resource.h new file mode 100644 index 0000000..8ea2786 --- /dev/null +++ b/Gender/resource.h @@ -0,0 +1,25 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by gender.rc +// +#define IDD_GENDER_OPT 9 +#define IDI_MALE 101 +#define IDI_FEMALE 102 +#define IDI_UNDEF 103 +#define IDC_ADVICON 1001 +#define IDC_MENUITEMS 1002 +#define IDC_DRAWUNDEFICON 1003 +#define IDC_USE_L 1004 +#define IDC_SLOT_L 1005 +#define IDC_NOTE_L 1006 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 104 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1007 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif -- cgit v1.2.3