From 690f5e6d29d1c85c4be72638eb22843964c2f512 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Fri, 24 Apr 2015 08:21:28 +0000 Subject: All non-working stuff moved from trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@13071 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/!Deprecated/Actman20/actman.dpr | 197 - plugins/!Deprecated/Actman20/global.pas | 21 - plugins/!Deprecated/Actman20/hooks/hooks.pas | 73 - plugins/!Deprecated/Actman20/hooks/hooks.rc | 28 - plugins/!Deprecated/Actman20/hooks/hooks.res | Bin 688 -> 0 bytes plugins/!Deprecated/Actman20/hooks/i_hconst.inc | 20 - plugins/!Deprecated/Actman20/hooks/i_hook.inc | 154 - plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc | 410 - plugins/!Deprecated/Actman20/hooks/i_options.inc | 71 - plugins/!Deprecated/Actman20/i_action.inc | 951 -- plugins/!Deprecated/Actman20/i_actlow.inc | 836 -- plugins/!Deprecated/Actman20/i_const.inc | 219 - plugins/!Deprecated/Actman20/i_contact.inc | 113 - plugins/!Deprecated/Actman20/i_dlglists.inc | 75 - plugins/!Deprecated/Actman20/i_inoutxm.inc | 1212 --- plugins/!Deprecated/Actman20/i_opt_dlg.inc | 215 - plugins/!Deprecated/Actman20/i_opt_dlg2.inc | 2095 ---- plugins/!Deprecated/Actman20/i_options.inc | 459 - plugins/!Deprecated/Actman20/i_services.inc | 131 - plugins/!Deprecated/Actman20/i_vars.inc | 31 - plugins/!Deprecated/Actman20/i_visual.inc | 1073 -- plugins/!Deprecated/Actman20/ico/advance.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/apply.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/chain.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/contact.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/delete.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/down.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/export.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/format.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/import.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/insert.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/message.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/new.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/program.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/reload.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/rw.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/service.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/test.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/up.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/vcheck.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/vuncheck.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/m_actions.inc | 193 - plugins/!Deprecated/Actman20/make.bat | 30 - plugins/!Deprecated/Actman20/options.rc | 328 - plugins/!Deprecated/Actman20/options.res | Bin 32904 -> 0 bytes plugins/!Deprecated/Actman20/question.pas | 51 - plugins/!Deprecated/Actman20/readme.txt | 126 - plugins/!Deprecated/Actman20/services.ini | 497 - plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc | 536 - plugins/!Deprecated/Actman20/tasks/i_options.inc | 99 - plugins/!Deprecated/Actman20/tasks/i_service.inc | 87 - plugins/!Deprecated/Actman20/tasks/i_task.inc | 242 - plugins/!Deprecated/Actman20/tasks/i_tconst.inc | 27 - plugins/!Deprecated/Actman20/tasks/scheduler.pas | 86 - plugins/!Deprecated/Actman20/tasks/tasks.rc | 47 - plugins/!Deprecated/Actman20/tasks/tasks.res | Bin 1288 -> 0 bytes plugins/!Deprecated/Actman20/ua/action.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ua/i_inoutxm.inc | 357 - plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc | 571 -- plugins/!Deprecated/Actman20/ua/i_options.inc | 337 - plugins/!Deprecated/Actman20/ua/i_ua.inc | 155 - plugins/!Deprecated/Actman20/ua/i_uaplaces.inc | 831 -- plugins/!Deprecated/Actman20/ua/i_uavars.inc | 124 - plugins/!Deprecated/Actman20/ua/i_uconst.inc | 34 - plugins/!Deprecated/Actman20/ua/ua.pas | 124 - plugins/!Deprecated/Actman20/ua/ua.rc | 51 - plugins/!Deprecated/Actman20/ua/ua.res | Bin 2512 -> 0 bytes plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj | 249 - .../Clist_mw/clist_mw_10.vcxproj.filters | 122 - plugins/!Deprecated/Clist_mw/clist_mw_12.vcxproj | 252 - .../Clist_mw/clist_mw_12.vcxproj.filters | 122 - plugins/!Deprecated/Clist_mw/res/1.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/2.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/3.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/4.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/5.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/6.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/7.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/8.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/Miranda.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/Version.rc | 38 - plugins/!Deprecated/Clist_mw/res/addgoupp.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/delete.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/globus.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/icon1.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/icon2.ico | Bin 1150 -> 0 bytes .../!Deprecated/Clist_mw/res/mirandaclassic.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/notick.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/notick1.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/rename.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/resource.rc | 530 - plugins/!Deprecated/Clist_mw/res/sendmail.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/res/sms.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Clist_mw/src/BkgrCfg.cpp | 310 - plugins/!Deprecated/Clist_mw/src/BkgrCfg.h | 18 - .../Clist_mw/src/CLUIFrames/cluiframes.cpp | 2860 ------ .../Clist_mw/src/CLUIFrames/cluiframes.h | 120 - .../Clist_mw/src/CLUIFrames/framesmenu.cpp | 122 - .../Clist_mw/src/CLUIFrames/statusbar.cpp | 497 - plugins/!Deprecated/Clist_mw/src/Version.h | 14 - plugins/!Deprecated/Clist_mw/src/clc.cpp | 319 - plugins/!Deprecated/Clist_mw/src/clc.h | 148 - plugins/!Deprecated/Clist_mw/src/clcfonts.cpp | 117 - plugins/!Deprecated/Clist_mw/src/clcidents.cpp | 307 - plugins/!Deprecated/Clist_mw/src/clcitems.cpp | 685 -- plugins/!Deprecated/Clist_mw/src/clcopts.cpp | 548 - plugins/!Deprecated/Clist_mw/src/clcpaint.cpp | 662 -- plugins/!Deprecated/Clist_mw/src/clcutils.cpp | 289 - plugins/!Deprecated/Clist_mw/src/clist.h | 55 - plugins/!Deprecated/Clist_mw/src/clistmenus.cpp | 62 - plugins/!Deprecated/Clist_mw/src/clistmod.cpp | 133 - plugins/!Deprecated/Clist_mw/src/clistopts.cpp | 237 - plugins/!Deprecated/Clist_mw/src/clistsettings.cpp | 340 - plugins/!Deprecated/Clist_mw/src/clisttray.cpp | 263 - plugins/!Deprecated/Clist_mw/src/clui.cpp | 765 -- plugins/!Deprecated/Clist_mw/src/cluiopts.cpp | 373 - plugins/!Deprecated/Clist_mw/src/cluiservices.cpp | 176 - plugins/!Deprecated/Clist_mw/src/commonheaders.cpp | 29 - plugins/!Deprecated/Clist_mw/src/commonheaders.h | 116 - plugins/!Deprecated/Clist_mw/src/contact.cpp | 178 - plugins/!Deprecated/Clist_mw/src/groupmenu.cpp | 566 -- plugins/!Deprecated/Clist_mw/src/init.cpp | 225 - plugins/!Deprecated/Clist_mw/src/keyboard.cpp | 67 - plugins/!Deprecated/Clist_mw/src/resource.h | 642 -- plugins/!Deprecated/Clist_mw/src/stdafx.cpp | 18 - plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj | 246 - .../Dbx_tree/dbx_tree_10.vcxproj.filters | 189 - plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj | 249 - .../Dbx_tree/dbx_tree_12.vcxproj.filters | 192 - .../!Deprecated/Dbx_tree/docs/Filestructure.txt | Bin 25894 -> 0 bytes plugins/!Deprecated/Dbx_tree/res/Version.rc | 38 - plugins/!Deprecated/Dbx_tree/res/dbConfig.rc | 113 - plugins/!Deprecated/Dbx_tree/res/dbVersion.rc | 105 - plugins/!Deprecated/Dbx_tree/src/BTree.h | 1343 --- plugins/!Deprecated/Dbx_tree/src/BlockManager.cpp | 963 -- plugins/!Deprecated/Dbx_tree/src/BlockManager.h | 401 - plugins/!Deprecated/Dbx_tree/src/Cipher.h | 180 - plugins/!Deprecated/Dbx_tree/src/Compatibility.cpp | 853 -- plugins/!Deprecated/Dbx_tree/src/Compatibility.h | 29 - plugins/!Deprecated/Dbx_tree/src/DataBase.cpp | 372 - plugins/!Deprecated/Dbx_tree/src/DataBase.h | 232 - plugins/!Deprecated/Dbx_tree/src/DatabaseLink.cpp | 91 - plugins/!Deprecated/Dbx_tree/src/DatabaseLink.h | 27 - plugins/!Deprecated/Dbx_tree/src/DirectAccess.cpp | 119 - plugins/!Deprecated/Dbx_tree/src/DirectAccess.h | 43 - .../!Deprecated/Dbx_tree/src/EncryptionManager.cpp | 240 - .../!Deprecated/Dbx_tree/src/EncryptionManager.h | 103 - plugins/!Deprecated/Dbx_tree/src/Entities.cpp | 1028 -- plugins/!Deprecated/Dbx_tree/src/Entities.h | 291 - plugins/!Deprecated/Dbx_tree/src/Events.cpp | 983 -- plugins/!Deprecated/Dbx_tree/src/Events.h | 250 - plugins/!Deprecated/Dbx_tree/src/FileAccess.cpp | 296 - plugins/!Deprecated/Dbx_tree/src/FileAccess.h | 191 - plugins/!Deprecated/Dbx_tree/src/FileBTree.h | 102 - plugins/!Deprecated/Dbx_tree/src/Hash.cpp | 184 - plugins/!Deprecated/Dbx_tree/src/Hash.h | 25 - plugins/!Deprecated/Dbx_tree/src/Interface.h | 42 - plugins/!Deprecated/Dbx_tree/src/IterationHeap.h | 196 - plugins/!Deprecated/Dbx_tree/src/Logger.cpp | 124 - plugins/!Deprecated/Dbx_tree/src/Logger.h | 73 - plugins/!Deprecated/Dbx_tree/src/MREWSync.cpp | 331 - plugins/!Deprecated/Dbx_tree/src/MREWSync.h | 55 - plugins/!Deprecated/Dbx_tree/src/MappedMemory.cpp | 142 - plugins/!Deprecated/Dbx_tree/src/MappedMemory.h | 45 - plugins/!Deprecated/Dbx_tree/src/SHA256.cpp | 298 - plugins/!Deprecated/Dbx_tree/src/SHA256.h | 44 - plugins/!Deprecated/Dbx_tree/src/Services.cpp | 412 - plugins/!Deprecated/Dbx_tree/src/Settings.cpp | 1473 --- plugins/!Deprecated/Dbx_tree/src/Settings.h | 235 - plugins/!Deprecated/Dbx_tree/src/TLS.h | 160 - plugins/!Deprecated/Dbx_tree/src/Thread.cpp | 115 - plugins/!Deprecated/Dbx_tree/src/Thread.h | 77 - plugins/!Deprecated/Dbx_tree/src/Version.h | 15 - plugins/!Deprecated/Dbx_tree/src/dbConfig_rc.h | 20 - plugins/!Deprecated/Dbx_tree/src/dbVersion_rc.h | 14 - plugins/!Deprecated/Dbx_tree/src/init.cpp | 68 - plugins/!Deprecated/Dbx_tree/src/intrinsics.h | 399 - plugins/!Deprecated/Dbx_tree/src/inttypes.h | 299 - .../!Deprecated/Dbx_tree/src/lockfree_hashmap.h | 749 -- .../Dbx_tree/src/lockfree_hashmultimap.h | 750 -- plugins/!Deprecated/Dbx_tree/src/sigslot.h | 2639 ----- plugins/!Deprecated/Dbx_tree/src/stdafx.cpp | 18 - .../encryption/ARC4/ARC4_10.vcxproj | 172 - .../encryption/ARC4/ARC4_10.vcxproj.filters | 38 - .../encryption/ARC4/ARC4_12.vcxproj | 175 - .../encryption/ARC4/ARC4_12.vcxproj.filters | 38 - .../encryption/ARC4/res/Version.rc | 38 - .../Dbx_tree_cryptors/encryption/ARC4/src/ARC4.cpp | 129 - .../Dbx_tree_cryptors/encryption/ARC4/src/ARC4.h | 65 - .../encryption/ARC4/src/Version.h | 11 - .../encryption/CAST128/Cast128_10.vcxproj | 175 - .../encryption/CAST128/Cast128_10.vcxproj.filters | 43 - .../encryption/CAST128/Cast128_12.vcxproj | 178 - .../encryption/CAST128/Cast128_12.vcxproj.filters | 43 - .../encryption/CAST128/res/Version.rc | 38 - .../encryption/CAST128/src/CAST128.cpp | 260 - .../encryption/CAST128/src/CAST128.h | 61 - .../encryption/CAST128/src/CAST128.inc | 302 - .../encryption/CAST128/src/Version.h | 11 - .../Dbx_tree_cryptors/encryption/Common/Cipher.h | 176 - .../encryption/HC256/HC256_10.vcxproj | 172 - .../encryption/HC256/HC256_10.vcxproj.filters | 38 - .../encryption/HC256/HC256_12.vcxproj | 175 - .../encryption/HC256/HC256_12.vcxproj.filters | 38 - .../encryption/HC256/res/Version.rc | 38 - .../encryption/HC256/src/HC256.cpp | 239 - .../Dbx_tree_cryptors/encryption/HC256/src/HC256.h | 66 - .../encryption/HC256/src/Version.h | 11 - .../!Deprecated/ExternalAPI/delphi/imgdecoder.pas | 114 - .../ExternalAPI/delphi/m_DataAsMessage.inc | 155 - .../!Deprecated/ExternalAPI/delphi/m_anismiley.inc | 116 - .../ExternalAPI/delphi/m_autoreplacer.inc | 39 - .../ExternalAPI/delphi/m_contactdir.inc | 164 - .../!Deprecated/ExternalAPI/delphi/m_db3xsa.inc | 84 - .../!Deprecated/ExternalAPI/delphi/m_ersatz.inc | 41 - plugins/!Deprecated/ExternalAPI/delphi/m_fuse.inc | 28 - .../ExternalAPI/delphi/m_help(plugin).inc | 76 - .../ExternalAPI/delphi/m_historyevents.inc | 201 - .../!Deprecated/ExternalAPI/delphi/m_ircscript.inc | 125 - .../ExternalAPI/delphi/m_keybindings.inc | 58 - .../!Deprecated/ExternalAPI/delphi/m_langman.inc | 46 - .../ExternalAPI/delphi/m_mathmodule.inc | 199 - plugins/!Deprecated/ExternalAPI/delphi/m_motd.inc | 75 - .../ExternalAPI/delphi/m_nickhistory.inc | 50 - .../ExternalAPI/delphi/m_simpleaway.inc | 26 - plugins/!Deprecated/ExternalAPI/delphi/m_smh.inc | 50 - plugins/!Deprecated/ExternalAPI/delphi/m_smr.inc | 59 - .../ExternalAPI/delphi/m_snapping_windows.inc | 35 - .../ExternalAPI/delphi/m_spamfilter.inc | 751 -- plugins/!Deprecated/ExternalAPI/delphi/m_speak.inc | 267 - plugins/!Deprecated/ExternalAPI/delphi/m_voice.inc | 156 - .../ExternalAPI/delphi/m_voiceservice.inc | 87 - plugins/!Deprecated/ExternalAPI/delphi/m_w7ui.inc | 84 - .../!Deprecated/ExternalAPI/delphi/m_webcam.inc | 142 - .../!Deprecated/ExternalAPI/m_ContactSettings.h | 235 - plugins/!Deprecated/ExternalAPI/m_DataAsMessage.h | 182 - plugins/!Deprecated/ExternalAPI/m_LogService.h | 217 - .../!Deprecated/ExternalAPI/m_MagneticWindows.h | 86 - plugins/!Deprecated/ExternalAPI/m_MathModule.h | 263 - plugins/!Deprecated/ExternalAPI/m_autoreplacer.h | 39 - plugins/!Deprecated/ExternalAPI/m_db3xsa.h | 120 - plugins/!Deprecated/ExternalAPI/m_dbx_tree.h | 684 -- plugins/!Deprecated/ExternalAPI/m_fortunemsg.h | 71 - plugins/!Deprecated/ExternalAPI/m_hddinfo.h | 6 - plugins/!Deprecated/ExternalAPI/m_help.h | 89 - plugins/!Deprecated/ExternalAPI/m_icqplus.h | 92 - plugins/!Deprecated/ExternalAPI/m_ircscript.h | 129 - plugins/!Deprecated/ExternalAPI/m_langman.h | 41 - plugins/!Deprecated/ExternalAPI/m_mucc.h | 189 - plugins/!Deprecated/ExternalAPI/m_script.h | 144 - plugins/!Deprecated/ExternalAPI/m_simpleaway.h | 103 - .../ExternalAPI/m_smileyadd_deprecated.h | 108 - .../!Deprecated/ExternalAPI/m_snappingwindows.h | 25 - plugins/!Deprecated/ExternalAPI/m_voice.h | 158 - plugins/!Deprecated/ExternalAPI/m_voiceservice.h | 86 - plugins/!Deprecated/ExternalAPI/m_w7ui.h | 63 - .../fingerprint_mod_vs2010.vcxproj | 202 - .../fingerprint_mod_vs2010.vcxproj.filters | 62 - .../iconpacks/ClientIcons_AIM.vcxproj | 115 - .../iconpacks/ClientIcons_Gadu.vcxproj | 115 - .../iconpacks/ClientIcons_General.vcxproj | 115 - .../iconpacks/ClientIcons_ICQ.vcxproj | 115 - .../iconpacks/ClientIcons_IRC.vcxproj | 115 - .../iconpacks/ClientIcons_Jabber.vcxproj | 115 - .../iconpacks/ClientIcons_MRA.vcxproj | 115 - .../iconpacks/ClientIcons_MSN.vcxproj | 115 - .../iconpacks/ClientIcons_Multiprotocols.vcxproj | 115 - .../iconpacks/ClientIcons_Packs.vcxproj | 115 - .../iconpacks/ClientIcons_QQ.vcxproj | 115 - .../iconpacks/ClientIcons_RSS.vcxproj | 115 - .../iconpacks/ClientIcons_Skype.vcxproj | 115 - .../iconpacks/ClientIcons_Tlen.vcxproj | 115 - .../iconpacks/ClientIcons_VoIP.vcxproj | 115 - .../iconpacks/ClientIcons_Weather.vcxproj | 115 - .../iconpacks/ClientIcons_Yahoo.vcxproj | 115 - .../!Deprecated/FingerPrintModPlus/res/icons.rc | 73 - .../FingerPrintModPlus/res/icons/AIM/AIM.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/AIM_4.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/AIM_5.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/AIM_Mac.ico | Bin 2550 -> 0 bytes .../res/icons/AIM/AIM_Mobile.ico | Bin 2550 -> 0 bytes .../res/icons/AIM/AIM_Triton.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/TerraIM.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/miniaim.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/AIM/naim.ico | Bin 2550 -> 0 bytes .../res/icons/Gadu-Gadu/Gadu_Gadu_6.ico | Bin 2550 -> 0 bytes .../res/icons/Gadu-Gadu/Gadu_Gadu_7.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/&RQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/1&1.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/Anastasia.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/D[i]Chat.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/Delphi.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/GLICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/GnomeICU.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/IC@.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/ICQ_2.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/IMadering.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/JICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/KM_Aska.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/LibICQ2000.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/Licq.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/MIP.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/NanoICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/QIP.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/R&Q.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/SmartICQ.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/Spambot.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/StrICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/WebICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/YSM.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/Yeemp.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/alICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/biohazard.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/corepager.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/kxICQ2.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/locid.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/mICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/nICQ.ico | Bin 1406 -> 0 bytes .../res/icons/ICQ/official/ICQ for PocketPC.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/ICQ_6.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/ICQ_ABV.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Bigmir.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Compad.ico | Bin 1406 -> 0 bytes .../res/icons/ICQ/official/ICQ_Lite4.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Lite7.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Netvigator.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Pro7.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/ICQ_Rambler.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/ICQ_iMac.ico | Bin 2550 -> 0 bytes .../res/icons/ICQ/official/Icq 5.1.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq 5.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq 6.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq 7.ico | Bin 1150 -> 0 bytes .../res/icons/ICQ/official/Icq2000.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq2001.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq2002.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/Icq2003.ico | Bin 2038 -> 0 bytes .../res/icons/ICQ/official/IcqLite 4.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/slick.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/smaper.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/stICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/vICQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/ICQ/vmICQ.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/AmIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Babbel.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/BersIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/ChatZilla.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/Conversation.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Eggdrop.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/Eggdrop_RacBot.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/FChat.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/GDP Web Chat.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/GoPowerTools.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/HydraIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/IRCXpro.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/IRC_unknown.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/IceChat 5.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/IceChat 7.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/IceChat.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/KVIrc.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Klient.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/Konversation.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/NeoRa Trion.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Nettalk.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/NoNameScript.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Opera.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/PJIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Pirch.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/ProChat.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/SmartIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Snak.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/SysReset.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/VircaIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/VisionIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/VisualIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/VortecIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/WLIrc.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/WeeChat.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/X-Chat Aqua.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Xirc.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/Xircon.ico | Bin 1406 -> 0 bytes .../res/icons/IRC/ZipTorrent.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/aMule.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/cbirc.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/dIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/eMule.ico | Bin 1406 -> 0 bytes .../res/icons/IRC/eMule_MorphXT.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/eMule_Neo.ico | Bin 2550 -> 0 bytes .../res/icons/IRC/eMule_Xtreme.ico | Bin 1406 -> 0 bytes .../res/icons/IRC/eMule_plus.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/ircle.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/irssi.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/jircii.ico | Bin 1438 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/jmIrc.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/ksirc.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/mIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/mp3script.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/pIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/piorun.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/psyBNC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/savIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/wmIRC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/xBitch.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/xChat.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/IRC/zsIRC.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Akeni.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/Android.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/Anothr Rss Bot.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Aqq.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/BellSouth.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/BitWise.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/BlackBerry.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Bowline.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/BuddySpace.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Chatopus.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Chikka.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/ChitChat.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Coccinella.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Colibry.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Colloquy.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Desyr.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Emacs.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Exodus.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Eyeball Chat.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Facebook.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Fire.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/GCN.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/GNU_Gadu.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/GOIM.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/GTalk Gadget.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/GTalk.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gabber.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gajim.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gmail.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Gmail_Conference_Bot.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gnome.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/GoTalkMobile.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gossip.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/GreenThumb.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Gush.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/IMCom.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Imified.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/Importal.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Instan-t.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/Interaction.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/JAJC.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/JBother.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/JClaim.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/JMC.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/JWChat.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/JWGC.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/JabberApplet.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/JabberFoX.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/JabberMessenger.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/JabberNaut.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/JabberWocky.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/JabberZilla.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Jabber_BeOS.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Jabbin.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Jabiru.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Jeti.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/Konnekt.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/LLuna.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Laffer.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Leaf Messenger.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/LeechCraft.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/LinQ.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/M8Jabber.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/MCabber.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/MGTalk.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Mango.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Mercury_Messenger.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/MozillaChat.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Neos.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Nitro.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Nostromo.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/OM.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Octro.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PSI.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Pandion.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Papla.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/Psto.net.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyAIMt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyICQt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyIRCt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyMRAt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyMSNt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/PyYIMt.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/QTJim.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/RenRen.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/SIP Communicator.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Sky Messager.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Smack.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/SoapBox.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Spark.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Spik.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/SworIM.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/Tapioca.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Teabot.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/Telepathy.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Thunderbird.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/TipicIM.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Tkabber.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/TransactIM.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/TripleSoftwareIM.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/Vayusphere.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/WTW.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/WannaChat.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/WebEx.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/WhisperIM.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/WhoisBot.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/Wildfire.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/WinJab.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/Xiffian.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/Yambi.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/beejive.ico | Bin 878 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/bombus.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/bombusmod.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/bombusqd.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/emess.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/gYaber.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/glu.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/iGoogle.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/iMeem.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/iMov.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/iruka.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/jTalk.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/jabbim.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/jdisk.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/jrudevels.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/juick.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/kadu.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/kf.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/landell.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/meinvz.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/moJab.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/mobber.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/myJabber.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/orkut.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/paltalk.ico | Bin 1218 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/pjc.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/schuelervz.ico | Bin 2038 -> 0 bytes .../res/icons/Jabber/smtp_transport.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/studivz.ico | Bin 1406 -> 0 bytes .../res/icons/Jabber/talkonaut.ico | Bin 1150 -> 0 bytes .../res/icons/Jabber/twitter.ico | Bin 894 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/vacuum.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/wija.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Jabber/xeus.ico | Bin 2550 -> 0 bytes .../res/icons/Jabber/yaonline.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/MSN Mac.ico | Bin 2550 -> 0 bytes .../res/icons/MSN/MSN v4.5-v5.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/MSN v6.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/MSN v7.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/MSN v8.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/WLM10-11.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/WLM9.ico | Bin 1150 -> 0 bytes .../res/icons/MSN/WebMessenger.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MSN/aMSN.ico | Bin 2550 -> 0 bytes .../res/icons/Mail.Ru/Mail.Ru_Mobile.ico | Bin 2550 -> 0 bytes .../res/icons/Mail.Ru/Mail.Ru_WebAgent.ico | Bin 2550 -> 0 bytes .../res/icons/Mail.Ru/Mail.Ru_official.ico | Bin 2550 -> 0 bytes .../res/icons/Mail.Ru/Mail.Ru_unknown.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/10.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/10s.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/4.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/4s.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/5.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/5s.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/6.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/6s.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/7.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/7s.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/8.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/8s.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/9.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/MirandaIM/9s.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_010.ico | Bin 1150 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_010U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_04.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_05.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_05U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_06.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_06U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_07.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_07U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_08.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_08U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_09.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_09U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_666.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_U.ico | Bin 2038 -> 0 bytes .../res/icons/MirandaIM/MirandaIM_unknown.ico | Bin 1150 -> 0 bytes .../res/icons/MirandaIM/MirandaNG.ico | Bin 2550 -> 0 bytes .../res/icons/Other/notfound.ico | Bin 2038 -> 0 bytes .../res/icons/Other/undetected.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Other/unknown.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/Mobile QQ.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/QQ 2000.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/QQ 2004.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/QQ CRM.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/QQ Concept.ico | Bin 2038 -> 0 bytes .../res/icons/QQ/QQ International.ico | Bin 2550 -> 0 bytes .../res/icons/QQ/QQ Silverlight.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/QQ.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM 1.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM 2.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM 2008.ico | Bin 2038 -> 0 bytes .../res/icons/QQ/TM 3 QQ 2003.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2005.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2006.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2007.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2008.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2009.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2010.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM QQ 2011.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/TM.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/WebQQ.ico | Bin 1406 -> 0 bytes .../FingerPrintModPlus/res/icons/QQ/Yam QQ.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/RSS/Atom 1.ico | Bin 1150 -> 0 bytes .../FingerPrintModPlus/res/icons/RSS/Atom 3.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/RSS/RSS 0.9.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/RSS/RSS 1.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/RSS/RSS 2.ico | Bin 2038 -> 0 bytes .../res/icons/Skype/Skype 1.x.ico | Bin 2550 -> 0 bytes .../res/icons/Skype/Skype 2.x.ico | Bin 2550 -> 0 bytes .../res/icons/Skype/Skype 3.x.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Tlen/Tlen 5.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Tlen/Tlen 6.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Tlen/Tlen 7.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Tlen/Tlen.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/VoIP/Gizmo.ico | Bin 2550 -> 0 bytes .../res/icons/VoIP/WengoPhone.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/VoIP/Zoep.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Weather/accu.ico | Bin 318 -> 0 bytes .../res/icons/Weather/gismeteo.ico | Bin 894 -> 0 bytes .../res/icons/Weather/intelli.ico | Bin 1150 -> 0 bytes .../res/icons/Weather/meteogid.ico | Bin 894 -> 0 bytes .../res/icons/Weather/meteonovosti.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Weather/noaa.ico | Bin 2038 -> 0 bytes .../res/icons/Weather/realmeteo.ico | Bin 894 -> 0 bytes .../res/icons/Weather/underground.ico | Bin 2038 -> 0 bytes .../res/icons/Weather/weather.ico | Bin 1150 -> 0 bytes .../res/icons/Weather/weather_cn.ico | Bin 1150 -> 0 bytes .../res/icons/Weather/weather_over.ico | Bin 1150 -> 0 bytes .../res/icons/Weather/weatherxml.ico | Bin 894 -> 0 bytes .../res/icons/Weather/wetter.ico | Bin 894 -> 0 bytes .../res/icons/Weather/yweather.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/PingBox.ico | Bin 2038 -> 0 bytes .../res/icons/Yahoo/Yahoo 10.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo 5.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo 6.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo 7.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo 8.ico | Bin 2550 -> 0 bytes .../res/icons/Yahoo/Yahoo Go Mobile.ico | Bin 2550 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo.ico | Bin 2038 -> 0 bytes .../res/icons/Yahoo/Yahoo_10.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo_5.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo_6.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo_7.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo_8.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons/Yahoo/Yahoo_9.ico | Bin 1150 -> 0 bytes .../res/icons/Yahoo/libyahoo2.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Adium.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/AgileMobile.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Ayttm.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/BayanICQ.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/BitlBee.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Centericq.ico | Bin 1406 -> 0 bytes .../res/icons/multi-protocol/Citronim.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/Digsby.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/EKG2.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/EasyMessage.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Fring.ico | Bin 1406 -> 0 bytes .../res/icons/multi-protocol/GAIM.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/IM+.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/IM2.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Inlux Messenger.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Instantbird.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/JasmineIM.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/Jimm.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/Kopete.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Meetro.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/NatSiemens.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/OneTeam.ico | Bin 1406 -> 0 bytes .../res/icons/multi-protocol/Palringo.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/Pidgin.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Prelude.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Proteus.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/QIP 2010.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/QIP 2012.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/QIP Infium.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/QIP PDA.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/Qnext.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_Linux.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_Linux_old.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_MacOSX.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_MacOSX_old.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_Win.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_Win_old.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/SIM_other_old.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Trillian Astra.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Trillian Pro.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Trillian.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/Yamigo.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/eBuddy.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/iChat.ico | Bin 1150 -> 0 bytes .../res/icons/multi-protocol/imoim.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/mChat.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/meebo.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/pigeon.ico | Bin 894 -> 0 bytes .../res/icons/multi-protocol/python.ico | Bin 2550 -> 0 bytes .../res/icons/multi-protocol/qutim.ico | Bin 2038 -> 0 bytes .../res/icons/multi-protocol/uIM.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_AimOscar.ico | Bin 2038 -> 0 bytes .../icons/overlays/Miranda client/overlay_ICQJ.ico | Bin 2038 -> 0 bytes .../overlays/Miranda client/overlay_ICQJ_Plus.ico | Bin 2550 -> 0 bytes .../icons/overlays/Miranda client/overlay_ICQM.ico | Bin 2038 -> 0 bytes .../overlays/Miranda client/overlay_ICQ_Sin.ico | Bin 2038 -> 0 bytes .../icons/overlays/Miranda client/overlay_IRC.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_JGTalk.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_JMeebo.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_Jabber.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_MailRu.ico | Bin 2550 -> 0 bytes .../icons/overlays/Miranda client/overlay_QQ.ico | Bin 2038 -> 0 bytes .../icons/overlays/Miranda client/overlay_Tlen.ico | Bin 2550 -> 0 bytes .../overlays/Miranda client/overlay_gmail.ico | Bin 2550 -> 0 bytes .../icons/overlays/Miranda client/overlay_msn.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/OS/overlay_Android.ico | Bin 1150 -> 0 bytes .../res/icons/overlays/OS/overlay_Flash.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/OS/overlay_Java.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/OS/overlay_Symbian.ico | Bin 1150 -> 0 bytes .../res/icons/overlays/OS/overlay_Windows.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/OS/overlay_iMac.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/OS/overlay_linux.ico | Bin 2550 -> 0 bytes .../overlays/Secure/overlay_IMsecure_arrow.ico | Bin 2038 -> 0 bytes .../overlays/Secure/overlay_SecureIM_arrow.ico | Bin 2038 -> 0 bytes .../overlays/Secure/overlay_SimpLite_arrow.ico | Bin 2038 -> 0 bytes .../overlays/Secure/overlay_SimpPro_arrow.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/_blank.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/overlay2/overlay_debug.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/overlay2/overlay_home.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/overlay2/overlay_mobile.ico | Bin 2550 -> 0 bytes .../icons/overlays/overlay2/overlay_notebook.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/overlay2/overlay_office.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/overlay2/overlay_work.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_666.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_AF.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_Cappuccino.ico | Bin 1150 -> 0 bytes .../overlays/packs/overlay_packs_FaithPack.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_FinalPack.ico | Bin 1150 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_KDL.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_Kolich.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_Lestat.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_LexSys.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_Miranda_FR.ico | Bin 2038 -> 0 bytes .../overlays/packs/overlay_packs_Miranda_ME.ico | Bin 2038 -> 0 bytes .../overlays/packs/overlay_packs_New_Style.ico | Bin 2038 -> 0 bytes .../overlays/packs/overlay_packs_RobyerPack.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_SSS.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_Se7ven.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_Stalker.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_ValeraVi.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_Yaol.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_a0x.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_alfamar.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_amatory.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_bri.ico | Bin 2038 -> 0 bytes .../overlays/packs/overlay_packs_dar_veter.ico | Bin 1150 -> 0 bytes .../icons/overlays/packs/overlay_packs_dmikos.ico | Bin 2550 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_e33.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_freize.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_ghost.ico | Bin 1150 -> 0 bytes .../icons/overlays/packs/overlay_packs_hieros.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_kuzzman.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_leninpack.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_mataes.ico | Bin 2038 -> 0 bytes .../res/icons/overlays/packs/overlay_packs_md.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_native.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_pilot.ico | Bin 2038 -> 0 bytes .../overlays/packs/overlay_packs_razunter.ico | Bin 2038 -> 0 bytes .../icons/overlays/packs/overlay_packs_tweety.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_umedon.ico | Bin 2550 -> 0 bytes .../icons/overlays/packs/overlay_packs_watcher.ico | Bin 2550 -> 0 bytes .../overlays/packs/overlay_packs_xSpellhowleRx.ico | Bin 1150 -> 0 bytes .../overlays/packs/overlay_packs_zeleboba.ico | Bin 2038 -> 0 bytes .../FingerPrintModPlus/res/icons_AIM.rc | 79 - .../FingerPrintModPlus/res/icons_Gadu.rc | 72 - .../FingerPrintModPlus/res/icons_General.rc | 147 - .../FingerPrintModPlus/res/icons_ICQ.rc | 140 - .../FingerPrintModPlus/res/icons_IRC.rc | 132 - .../FingerPrintModPlus/res/icons_Jabber.rc | 230 - .../FingerPrintModPlus/res/icons_MRA.rc | 74 - .../FingerPrintModPlus/res/icons_MSN.rc | 80 - .../FingerPrintModPlus/res/icons_Multiprotocols.rc | 121 - .../FingerPrintModPlus/res/icons_Packs.rc | 114 - .../!Deprecated/FingerPrintModPlus/res/icons_QQ.rc | 96 - .../FingerPrintModPlus/res/icons_RSS.rc | 75 - .../FingerPrintModPlus/res/icons_Skype.rc | 73 - .../FingerPrintModPlus/res/icons_Tlen.rc | 78 - .../FingerPrintModPlus/res/icons_VoIP.rc | 73 - .../FingerPrintModPlus/res/icons_Weather.rc | 92 - .../FingerPrintModPlus/res/icons_Yahoo.rc | 93 - .../!Deprecated/FingerPrintModPlus/res/resource.rc | 118 - .../!Deprecated/FingerPrintModPlus/res/version.rc | 64 - .../FingerPrintModPlus/src/finger_groups.h | 94 - .../FingerPrintModPlus/src/fingerprint.cpp | 1102 -- .../!Deprecated/FingerPrintModPlus/src/global.h | 181 - .../!Deprecated/FingerPrintModPlus/src/main.cpp | 112 - .../!Deprecated/FingerPrintModPlus/src/masks.cpp | 751 -- .../!Deprecated/FingerPrintModPlus/src/options.cpp | 154 - .../!Deprecated/FingerPrintModPlus/src/resource.h | 646 -- .../!Deprecated/FingerPrintModPlus/src/stdafx.cpp | 18 - .../FingerPrintModPlus/src/utilities.cpp | 321 - .../!Deprecated/FingerPrintModPlus/src/utilities.h | 33 - .../!Deprecated/FingerPrintModPlus/src/version.h | 39 - plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj | 192 - .../FirstRun/FirstRun_10.vcxproj.filters | 37 - plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj | 195 - .../FirstRun/FirstRun_12.vcxproj.filters | 37 - plugins/!Deprecated/FirstRun/res/Version.rc | 38 - plugins/!Deprecated/FirstRun/src/Version.h | 14 - plugins/!Deprecated/FirstRun/src/commonheaders.h | 10 - plugins/!Deprecated/FirstRun/src/main.cpp | 60 - plugins/!Deprecated/FirstRun/src/stdafx.cpp | 18 - .../FlashAvatars/FlashAvatars_10.vcxproj | 207 - .../FlashAvatars/FlashAvatars_10.vcxproj.filters | 52 - .../FlashAvatars/FlashAvatars_12.vcxproj | 210 - .../FlashAvatars/FlashAvatars_12.vcxproj.filters | 52 - .../!Deprecated/FlashAvatars/docs/changelog.txt | 81 - plugins/!Deprecated/FlashAvatars/m_flash.h | 89 - plugins/!Deprecated/FlashAvatars/m_flash.inc | 92 - .../!Deprecated/FlashAvatars/res/FlashAvatars.rc | 65 - plugins/!Deprecated/FlashAvatars/res/Version.rc | 38 - plugins/!Deprecated/FlashAvatars/src/TigerHash.cpp | 760 -- plugins/!Deprecated/FlashAvatars/src/TigerHash.h | 108 - plugins/!Deprecated/FlashAvatars/src/Version.h | 14 - plugins/!Deprecated/FlashAvatars/src/cflash.cpp | 641 -- .../!Deprecated/FlashAvatars/src/criticalsection.h | 112 - plugins/!Deprecated/FlashAvatars/src/flash.tlb | Bin 14160 -> 0 bytes plugins/!Deprecated/FlashAvatars/src/resource.h | 15 - plugins/!Deprecated/FlashAvatars/src/stdafx.cpp | 7 - plugins/!Deprecated/FlashAvatars/src/stdafx.h | 78 - plugins/!Deprecated/LangMan/docs/Info_Src.txt | 30 - .../!Deprecated/LangMan/docs/LangMan-Developer.txt | 46 - .../!Deprecated/LangMan/docs/LangMan-License.txt | 278 - .../!Deprecated/LangMan/docs/LangMan-Readme.txt | 146 - .../!Deprecated/LangMan/docs/License_Appendix.txt | 64 - plugins/!Deprecated/LangMan/langman_10.vcxproj | 218 - .../!Deprecated/LangMan/langman_10.vcxproj.filters | 61 - plugins/!Deprecated/LangMan/langman_12.vcxproj | 221 - .../!Deprecated/LangMan/langman_12.vcxproj.filters | 61 - plugins/!Deprecated/LangMan/res/reload.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/LangMan/res/resource.rc | 142 - plugins/!Deprecated/LangMan/res/version.rc | 38 - plugins/!Deprecated/LangMan/src/common.h | 43 - plugins/!Deprecated/LangMan/src/langpack.cpp | 393 - plugins/!Deprecated/LangMan/src/langpack.h | 48 - plugins/!Deprecated/LangMan/src/main.cpp | 157 - plugins/!Deprecated/LangMan/src/options.cpp | 588 -- plugins/!Deprecated/LangMan/src/options.h | 27 - plugins/!Deprecated/LangMan/src/resource.h | 52 - plugins/!Deprecated/LangMan/src/stdafx.cpp | 18 - plugins/!Deprecated/LangMan/src/version.h | 14 - .../MagneticWindows/MagneticWindows_10.vcxproj | 239 - .../MagneticWindows_10.vcxproj.filters | 59 - .../MagneticWindows/MagneticWindows_12.vcxproj | 242 - .../MagneticWindows_12.vcxproj.filters | 59 - plugins/!Deprecated/MagneticWindows/res/Options.rc | 113 - plugins/!Deprecated/MagneticWindows/res/Version.rc | 38 - .../MagneticWindows/src/MagneticWindows.cpp | 143 - .../MagneticWindows/src/MagneticWindowsCore.cpp | 355 - .../MagneticWindows/src/MagneticWindowsCore.h | 35 - .../!Deprecated/MagneticWindows/src/Options.cpp | 96 - plugins/!Deprecated/MagneticWindows/src/Options.h | 16 - .../MagneticWindows/src/SnapToListService.cpp | 61 - .../MagneticWindows/src/SnapToListService.h | 2 - plugins/!Deprecated/MagneticWindows/src/Version.h | 14 - plugins/!Deprecated/MagneticWindows/src/resource.h | 25 - plugins/!Deprecated/MagneticWindows/src/stdafx.cpp | 18 - .../MetaContacts/MetaContacts_10.vcxproj | 218 - .../MetaContacts/MetaContacts_10.vcxproj.filters | 68 - .../MetaContacts/MetaContacts_12.vcxproj | 221 - .../MetaContacts/MetaContacts_12.vcxproj.filters | 68 - .../Proto_MetaContacts_10.vcxproj | 131 - .../Proto_MetaContacts_10.vcxproj.filters | 23 - .../Proto_MetaContacts_12.vcxproj | 135 - .../Proto_MetaContacts_12.vcxproj.filters | 23 - .../MetaContacts/proto_metacontacts/res/Away.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/DND.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/FFC.ico | Bin 1150 -> 0 bytes .../proto_metacontacts/res/Invisible.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/Lunch.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/NA.ico | Bin 1150 -> 0 bytes .../proto_metacontacts/res/Occupied.ico | Bin 1150 -> 0 bytes .../proto_metacontacts/res/Offline.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/Online.ico | Bin 1150 -> 0 bytes .../MetaContacts/proto_metacontacts/res/Phone.ico | Bin 1150 -> 0 bytes .../proto_metacontacts/res/Proto_MetaContacts.rc | Bin 4362 -> 0 bytes .../MetaContacts/proto_metacontacts/src/resource.h | Bin 1738 -> 0 bytes .../!Deprecated/MetaContacts/res/MetaContacts.rc | 263 - plugins/!Deprecated/MetaContacts/res/mcmenu.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/MetaContacts/res/mcmenuof.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/MetaContacts/res/meta_add.ico | Bin 1150 -> 0 bytes .../!Deprecated/MetaContacts/res/meta_convert.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/MetaContacts/res/meta_edit.ico | Bin 1150 -> 0 bytes .../!Deprecated/MetaContacts/res/meta_remove2.ico | Bin 1150 -> 0 bytes .../MetaContacts/res/meta_set_as_default.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/MetaContacts/res/version.rc | 38 - plugins/!Deprecated/MetaContacts/src/addto.cpp | 211 - plugins/!Deprecated/MetaContacts/src/edit.cpp | 465 - plugins/!Deprecated/MetaContacts/src/icons.cpp | 26 - plugins/!Deprecated/MetaContacts/src/meta_api.cpp | 242 - plugins/!Deprecated/MetaContacts/src/meta_main.cpp | 208 - plugins/!Deprecated/MetaContacts/src/meta_menu.cpp | 431 - .../!Deprecated/MetaContacts/src/meta_options.cpp | 609 -- .../!Deprecated/MetaContacts/src/meta_services.cpp | 1453 --- .../!Deprecated/MetaContacts/src/meta_utils.cpp | 1431 --- .../!Deprecated/MetaContacts/src/metacontacts.h | 224 - plugins/!Deprecated/MetaContacts/src/resource.h | 75 - plugins/!Deprecated/MetaContacts/src/stdafx.cpp | 18 - plugins/!Deprecated/MetaContacts/src/version.h | 14 - plugins/!Deprecated/MirandaNGHistoryToDB/About.dfm | 208 - plugins/!Deprecated/MirandaNGHistoryToDB/About.pas | 146 - .../!Deprecated/MirandaNGHistoryToDB/Contacts.pas | 207 - .../!Deprecated/MirandaNGHistoryToDB/Database.pas | 394 - .../!Deprecated/MirandaNGHistoryToDB/FSMonitor.pas | 222 - .../!Deprecated/MirandaNGHistoryToDB/Global.inc | 2 - .../!Deprecated/MirandaNGHistoryToDB/Global.pas | 1250 --- .../HistoryToDBUpdater/Global.pas | 1583 --- .../HistoryToDBUpdater/HistoryToDBUpdater.dpr | 32 - .../HistoryToDBUpdater/HistoryToDBUpdater.dproj | 197 - .../HistoryToDBUpdater/HistoryToDBUpdater.manifest | 21 - .../HistoryToDBUpdater/HistoryToDBUpdater.mes | 163 - .../HistoryToDBUpdater/HistoryToDBUpdater.otares | Bin 96 -> 0 bytes .../HistoryToDBUpdater/HistoryToDBUpdater.res | Bin 146856 -> 0 bytes .../HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico | Bin 144763 -> 0 bytes .../HistoryToDBUpdater/Main.dfm | 530 - .../HistoryToDBUpdater/Main.pas | 1497 --- .../HistoryToDBUpdater/NTNative.pas | 210 - .../HistoryToDBUpdater/jedi.inc | 1430 --- .../HistoryToDBUpdater/readme-dev.txt | 38 - .../IMDownloaderComponent/Demo/DownLoaderTest.dpr | 15 - .../Demo/DownLoaderTest.dproj | 109 - .../IMDownloaderComponent/Demo/DownLoaderTest.res | Bin 5280 -> 0 bytes .../Demo/DownLoaderTestUnit.dfm | 125 - .../Demo/DownLoaderTestUnit.pas | 176 - .../IMDownloaderComponent/IMDownloader.dcr | Bin 1728 -> 0 bytes .../IMDownloaderComponent/IMDownloader.dpk | 38 - .../IMDownloaderComponent/IMDownloader.dproj | 168 - .../IMDownloaderComponent/IMDownloader.res | Bin 5560 -> 0 bytes .../IMDownloaderComponent/IMDownloader_Icon.ico | Bin 4286 -> 0 bytes .../IMDownloaderComponent/uIMDownloader.pas | 612 -- .../IMDownloaderComponent/uMD5.pas | 456 - .../!Deprecated/MirandaNGHistoryToDB/MapStream.pas | 185 - plugins/!Deprecated/MirandaNGHistoryToDB/Menu.pas | 326 - .../MirandaNGHistoryToDB/MirandaNGHistoryToDB.dpr | 933 -- .../MirandaNGHistoryToDB.dproj | 226 - .../MirandaNGHistoryToDB/MirandaNGHistoryToDB.mes | 163 - .../MirandaNGHistoryToDB/MirandaNGHistoryToDB.res | Bin 1100 -> 0 bytes .../!Deprecated/MirandaNGHistoryToDB/MsgExport.dfm | 4447 -------- .../!Deprecated/MirandaNGHistoryToDB/MsgExport.pas | 452 - .../MirandaNGHistoryToDB/copy_langs.bat | 14 - plugins/!Deprecated/MirandaNGHistoryToDB/icons.res | Bin 321592 -> 0 bytes plugins/!Deprecated/MirandaNGHistoryToDB/jedi.inc | 1430 --- .../MirandaNGHistoryToDB/langs/English.xml | 505 - .../MirandaNGHistoryToDB/langs/Russian.xml | 506 - .../MirandaNGHistoryToDB/m_historytodb.inc | 40 - plugins/!Deprecated/ShlExt/clean.bat | 1 - plugins/!Deprecated/ShlExt/docs/HowToBuild.txt | 22 - .../ShlExt/docs/shlext release notes.txt | 344 - plugins/!Deprecated/ShlExt/make.bat | 25 - plugins/!Deprecated/ShlExt/resource.h | 13 - plugins/!Deprecated/ShlExt/shlc.inc | 144 - plugins/!Deprecated/ShlExt/shlcom.pas | 2471 ----- plugins/!Deprecated/ShlExt/shldlgs.rc | 93 - plugins/!Deprecated/ShlExt/shldlgs.res | Bin 2616 -> 0 bytes plugins/!Deprecated/ShlExt/shlext.dpr | 379 - plugins/!Deprecated/ShlExt/shlicons.pas | 168 - plugins/!Deprecated/ShlExt/shlipc.pas | 394 - plugins/!Deprecated/Skype/Skype_10.vcxproj | 284 - plugins/!Deprecated/Skype/Skype_10.vcxproj.filters | 219 - plugins/!Deprecated/Skype/Skype_12.vcxproj | 286 - plugins/!Deprecated/Skype/Skype_12.vcxproj.filters | 219 - plugins/!Deprecated/Skype/docs/readme.txt | 44 - plugins/!Deprecated/Skype/docs/todo_list.txt | 4 - plugins/!Deprecated/Skype/keypacker/aes/aes.c | 765 -- plugins/!Deprecated/Skype/keypacker/aes/aes.h | 24 - plugins/!Deprecated/Skype/keypacker/keypacker.cpp | 222 - .../!Deprecated/Skype/keypacker/keypacker_10.sln | 23 - .../Skype/keypacker/keypacker_10.vcxproj | 79 - .../Skype/keypacker/keypacker_10.vcxproj.filters | 27 - .../!Deprecated/Skype/keypacker/keypacker_11.sln | 20 - .../Skype/keypacker/keypacker_12.vcxproj | 81 - .../Skype/keypacker/keypacker_12.vcxproj.filters | 27 - plugins/!Deprecated/Skype/keypacker/stdafx.h | 8 - .../proto_conn_skype/Proto_conn_Skype_10.vcxproj | 124 - .../Proto_conn_Skype_10.vcxproj.filters | 14 - .../proto_conn_skype/Proto_conn_Skype_12.vcxproj | 128 - .../Proto_conn_Skype_12.vcxproj.filters | 14 - .../!Deprecated/Skype/proto_conn_skype/res/1.ico | Bin 1150 -> 0 bytes .../!Deprecated/Skype/proto_conn_skype/res/2.ico | Bin 1150 -> 0 bytes .../!Deprecated/Skype/proto_conn_skype/res/3.ico | Bin 1150 -> 0 bytes .../Skype/proto_conn_skype/res/resource.rc | 34 - .../Skype/proto_skype/Proto_Skype_10.vcxproj | 131 - .../proto_skype/Proto_Skype_10.vcxproj.filters | 23 - .../Skype/proto_skype/Proto_Skype_12.vcxproj | 135 - .../proto_skype/Proto_Skype_12.vcxproj.filters | 23 - plugins/!Deprecated/Skype/proto_skype/res/Away.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/proto_skype/res/DND.ico | Bin 5430 -> 0 bytes .../Skype/proto_skype/res/Invisible.ico | Bin 5430 -> 0 bytes .../!Deprecated/Skype/proto_skype/res/Offline.ico | Bin 5430 -> 0 bytes .../!Deprecated/Skype/proto_skype/res/Online.ico | Bin 5430 -> 0 bytes .../!Deprecated/Skype/proto_skype/res/Phone.ico | Bin 5430 -> 0 bytes .../Skype/proto_skype/res/Proto_Skype.rc | 74 - .../!Deprecated/Skype/proto_skype/src/resource.h | 21 - plugins/!Deprecated/Skype/res/Resource.rc | 492 - plugins/!Deprecated/Skype/res/Version.rc | 42 - plugins/!Deprecated/Skype/res/add_contacts.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/block.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/call.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/conference.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/contact.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/delete.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/send_contacts.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/res/skype.ico | Bin 5430 -> 0 bytes plugins/!Deprecated/Skype/src/aes/aes.cpp | 493 - plugins/!Deprecated/Skype/src/aes/aes.h | 15 - plugins/!Deprecated/Skype/src/resource.h | 123 - plugins/!Deprecated/Skype/src/skype.cpp | 213 - plugins/!Deprecated/Skype/src/skype.h | 101 - plugins/!Deprecated/Skype/src/skype_account.cpp | 354 - plugins/!Deprecated/Skype/src/skype_avatars.cpp | 196 - plugins/!Deprecated/Skype/src/skype_blocked.cpp | 369 - plugins/!Deprecated/Skype/src/skype_bookmarks.cpp | 203 - plugins/!Deprecated/Skype/src/skype_chat.cpp | 1735 ---- plugins/!Deprecated/Skype/src/skype_chat.h | 204 - plugins/!Deprecated/Skype/src/skype_contacts.cpp | 538 - plugins/!Deprecated/Skype/src/skype_database.cpp | 112 - plugins/!Deprecated/Skype/src/skype_dialogs.cpp | 859 -- plugins/!Deprecated/Skype/src/skype_events.cpp | 284 - plugins/!Deprecated/Skype/src/skype_hooks.cpp | 17 - plugins/!Deprecated/Skype/src/skype_icons.cpp | 66 - .../!Deprecated/Skype/src/skype_ignore_list.cpp | 271 - plugins/!Deprecated/Skype/src/skype_instances.cpp | 88 - plugins/!Deprecated/Skype/src/skype_menus.cpp | 268 - plugins/!Deprecated/Skype/src/skype_messages.cpp | 315 - plugins/!Deprecated/Skype/src/skype_netlib.cpp | 22 - plugins/!Deprecated/Skype/src/skype_own_info.cpp | 136 - plugins/!Deprecated/Skype/src/skype_profile.cpp | 321 - plugins/!Deprecated/Skype/src/skype_proto.cpp | 672 -- plugins/!Deprecated/Skype/src/skype_proto.h | 560 -- plugins/!Deprecated/Skype/src/skype_runtime.cpp | 162 - plugins/!Deprecated/Skype/src/skype_services.cpp | 25 - plugins/!Deprecated/Skype/src/skype_settings.cpp | 141 - plugins/!Deprecated/Skype/src/skype_skype.cpp | 41 - plugins/!Deprecated/Skype/src/skype_transfers.cpp | 191 - plugins/!Deprecated/Skype/src/skype_utils.cpp | 542 - plugins/!Deprecated/Skype/src/skypekit/account.cpp | 32 - plugins/!Deprecated/Skype/src/skypekit/account.h | 20 - plugins/!Deprecated/Skype/src/skypekit/common.h | 8 - plugins/!Deprecated/Skype/src/skypekit/contact.cpp | 65 - plugins/!Deprecated/Skype/src/skypekit/contact.h | 21 - .../Skype/src/skypekit/conversation.cpp | 20 - .../!Deprecated/Skype/src/skypekit/conversation.h | 23 - plugins/!Deprecated/Skype/src/skypekit/group.cpp | 13 - plugins/!Deprecated/Skype/src/skypekit/group.h | 19 - plugins/!Deprecated/Skype/src/skypekit/message.cpp | 7 - plugins/!Deprecated/Skype/src/skypekit/message.h | 12 - .../!Deprecated/Skype/src/skypekit/participant.cpp | 27 - .../!Deprecated/Skype/src/skypekit/participant.h | 25 - plugins/!Deprecated/Skype/src/skypekit/search.cpp | 36 - plugins/!Deprecated/Skype/src/skypekit/search.h | 29 - .../!Deprecated/Skype/src/skypekit/transfer.cpp | 13 - plugins/!Deprecated/Skype/src/skypekit/transfer.h | 17 - plugins/!Deprecated/Skype/src/stdafx.cpp | 1 - plugins/!Deprecated/Skype/src/string_list.h | 61 - plugins/!Deprecated/Skype/src/version.h | 15 - .../!Deprecated/VersionInfo/VersionInfo_10.vcxproj | 213 - .../VersionInfo/VersionInfo_10.vcxproj.filters | 80 - .../!Deprecated/VersionInfo/VersionInfo_12.vcxproj | 216 - .../VersionInfo/VersionInfo_12.vcxproj.filters | 80 - .../!Deprecated/VersionInfo/docs/VersionInfo.html | 11 - .../VersionInfo/docs/readme_versioninfo.txt | 433 - .../VersionInfo/docs/rebase_versioninfo.txt | 33 - .../!Deprecated/VersionInfo/docs/versioninfo.gif | Bin 100803 -> 0 bytes .../!Deprecated/VersionInfo/res/VersionInfo.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/VersionInfo/res/resource.rc | 196 - plugins/!Deprecated/VersionInfo/res/version.rc | 38 - plugins/!Deprecated/VersionInfo/src/CPlugin.cpp | 140 - plugins/!Deprecated/VersionInfo/src/CPlugin.h | 50 - .../!Deprecated/VersionInfo/src/CVersionInfo.cpp | 964 -- plugins/!Deprecated/VersionInfo/src/CVersionInfo.h | 101 - plugins/!Deprecated/VersionInfo/src/common.h | 89 - .../!Deprecated/VersionInfo/src/dlgHandlers.cpp | 586 -- plugins/!Deprecated/VersionInfo/src/dlgHandlers.h | 40 - .../!Deprecated/VersionInfo/src/hooked_events.cpp | 50 - .../!Deprecated/VersionInfo/src/hooked_events.h | 32 - plugins/!Deprecated/VersionInfo/src/main.cpp | 105 - plugins/!Deprecated/VersionInfo/src/resource.h | 71 - plugins/!Deprecated/VersionInfo/src/services.cpp | 61 - plugins/!Deprecated/VersionInfo/src/services.h | 31 - plugins/!Deprecated/VersionInfo/src/stdafx.cpp | 18 - plugins/!Deprecated/VersionInfo/src/utils.cpp | 438 - plugins/!Deprecated/VersionInfo/src/utils.h | 42 - plugins/!Deprecated/VersionInfo/src/version.h | 14 - plugins/!Deprecated/W7UI/src/clistproxywindow.cpp | 292 - plugins/!Deprecated/W7UI/src/clistproxywindow.h | 64 - plugins/!Deprecated/W7UI/src/dwmwindow.cpp | 209 - plugins/!Deprecated/W7UI/src/dwmwindow.h | 59 - plugins/!Deprecated/W7UI/src/headers.h | 79 - plugins/!Deprecated/W7UI/src/jumplist.cpp | 123 - plugins/!Deprecated/W7UI/src/jumplist.h | 7 - plugins/!Deprecated/W7UI/src/jumplistarray.cpp | 214 - plugins/!Deprecated/W7UI/src/jumplistarray.h | 29 - plugins/!Deprecated/W7UI/src/jumplistbuilder.cpp | 127 - plugins/!Deprecated/W7UI/src/jumplistbuilder.h | 47 - plugins/!Deprecated/W7UI/src/main.cpp | 79 - plugins/!Deprecated/W7UI/src/srmmproxywindow.cpp | 374 - plugins/!Deprecated/W7UI/src/srmmproxywindow.h | 42 - plugins/!Deprecated/W7UI/src/subclassmgr.cpp | 0 plugins/!Deprecated/W7UI/src/subclassmgr.h | 71 - plugins/!Deprecated/W7UI/src/w7ui.cpp | 180 - plugins/!Deprecated/W7UI/src/win7api.cpp | 25 - plugins/!Deprecated/W7UI/src/win7api.h | 38 - .../W7UI/src/win7api_ICustomDestinationList.h | 34 - .../!Deprecated/W7UI/src/win7api_IObjectArray.h | 15 - .../W7UI/src/win7api_IObjectCollection.h | 16 - .../!Deprecated/W7UI/src/win7api_ITaskbarList3.h | 65 - plugins/!Deprecated/W7UI/w7ui_10.vcxproj | 184 - plugins/!NotAdopted/Chess4Net/BitmapResUnit.pas | 282 - plugins/!NotAdopted/Chess4Net/Build/Chigorin.mov | Bin 10188 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/Chigorin.pos | Bin 215159 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/Fischer.mov | Bin 13311 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/Fischer.pos | Bin 300902 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/Tal.mov | Bin 3393 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/Tal.pos | Bin 73045 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/eco.mov | Bin 36414 -> 0 bytes plugins/!NotAdopted/Chess4Net/Build/eco.pos | Bin 567931 -> 0 bytes plugins/!NotAdopted/Chess4Net/Chess4Net.bpg | 36 - plugins/!NotAdopted/Chess4Net/Chess4Net.ico | Bin 4286 -> 0 bytes plugins/!NotAdopted/Chess4Net/Chess4Net.res | Bin 1276 -> 0 bytes plugins/!NotAdopted/Chess4Net/Chess4Net_16.ico | Bin 4286 -> 0 bytes .../!NotAdopted/Chess4Net/ChessBoardHeaderUnit.pas | 27 - plugins/!NotAdopted/Chess4Net/ChessBoardUnit.dfm | 51 - plugins/!NotAdopted/Chess4Net/ChessBoardUnit.pas | 1381 --- plugins/!NotAdopted/Chess4Net/ChessClockUnit.pas | 113 - plugins/!NotAdopted/Chess4Net/ChessRulesEngine.pas | 1481 --- plugins/!NotAdopted/Chess4Net/ChessSet.res | Bin 74268 -> 0 bytes plugins/!NotAdopted/Chess4Net/ChessSet_PNG.RES | Bin 19720 -> 0 bytes plugins/!NotAdopted/Chess4Net/ClientQueueUnit.pas | 165 - plugins/!NotAdopted/Chess4Net/Connecting.ico | Bin 4286 -> 0 bytes plugins/!NotAdopted/Chess4Net/ConnectingUnit.dfm | 72 - plugins/!NotAdopted/Chess4Net/ConnectingUnit.pas | 116 - plugins/!NotAdopted/Chess4Net/ConnectionUnit.dfm | 118 - plugins/!NotAdopted/Chess4Net/ConnectionUnit.pas | 113 - plugins/!NotAdopted/Chess4Net/ContinueUnit.dfm | 40 - plugins/!NotAdopted/Chess4Net/ContinueUnit.pas | 117 - plugins/!NotAdopted/Chess4Net/DialogUnit.pas | 217 - .../Chess4Net/DontShowMessageDlgUnit.pas | 82 - .../!NotAdopted/Chess4Net/DraggedFigureUnit.dfm | 59 - .../!NotAdopted/Chess4Net/DraggedFigureUnit.pas | 48 - plugins/!NotAdopted/Chess4Net/Flag.bmp | Bin 358 -> 0 bytes .../!NotAdopted/Chess4Net/GameChessBoardUnit.dfm | 166 - .../!NotAdopted/Chess4Net/GameChessBoardUnit.pas | 849 -- plugins/!NotAdopted/Chess4Net/GameOptionsUnit.dfm | 317 - plugins/!NotAdopted/Chess4Net/GameOptionsUnit.pas | 191 - plugins/!NotAdopted/Chess4Net/GlobalsUnit.pas | 24 - plugins/!NotAdopted/Chess4Net/InfoUnit.dfm | 114 - plugins/!NotAdopted/Chess4Net/InfoUnit.pas | 98 - plugins/!NotAdopted/Chess4Net/IniSettingsUnit.pas | 348 - plugins/!NotAdopted/Chess4Net/Lang.ini | Bin 41582 -> 0 bytes plugins/!NotAdopted/Chess4Net/LocalizerUnit.pas | 413 - .../!NotAdopted/Chess4Net/LookFeelOptionsUnit.dfm | 142 - .../!NotAdopted/Chess4Net/LookFeelOptionsUnit.pas | 110 - plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.cfg | 45 - plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dof | 170 - plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dpr | 82 - plugins/!NotAdopted/Chess4Net/MI/ConnectorUnit.pas | 841 -- plugins/!NotAdopted/Chess4Net/MI/ControlUnit.pas | 177 - .../!NotAdopted/Chess4Net/MI/GlobalsLocalUnit.pas | 36 - .../!NotAdopted/Chess4Net/MI/ManagerUnit.MI.pas | 845 -- .../Chess4Net/MI/MirandaINC/m_addcontact.inc | 54 - .../!NotAdopted/Chess4Net/MI/MirandaINC/m_api.pas | 75 - .../Chess4Net/MI/MirandaINC/m_awaymsg.inc | 40 - .../!NotAdopted/Chess4Net/MI/MirandaINC/m_clc.inc | 284 - .../Chess4Net/MI/MirandaINC/m_clist.inc | 641 -- .../!NotAdopted/Chess4Net/MI/MirandaINC/m_clui.inc | 215 - .../Chess4Net/MI/MirandaINC/m_contacts.inc | 84 - .../Chess4Net/MI/MirandaINC/m_database.inc | 653 -- .../Chess4Net/MI/MirandaINC/m_email.inc | 39 - .../!NotAdopted/Chess4Net/MI/MirandaINC/m_file.inc | 66 - .../Chess4Net/MI/MirandaINC/m_findadd.inc | 38 - .../Chess4Net/MI/MirandaINC/m_globaldefs.pas | 98 - .../Chess4Net/MI/MirandaINC/m_helpers.inc | 622 -- .../Chess4Net/MI/MirandaINC/m_history.inc | 37 - .../!NotAdopted/Chess4Net/MI/MirandaINC/m_icq.inc | 191 - .../Chess4Net/MI/MirandaINC/m_ignore.inc | 74 - .../Chess4Net/MI/MirandaINC/m_langpack.inc | 82 - .../Chess4Net/MI/MirandaINC/m_message.inc | 57 - .../Chess4Net/MI/MirandaINC/m_netlib.inc | 711 -- .../Chess4Net/MI/MirandaINC/m_options.inc | 91 - .../Chess4Net/MI/MirandaINC/m_plugins.inc | 70 - .../Chess4Net/MI/MirandaINC/m_popup.inc | 222 - .../Chess4Net/MI/MirandaINC/m_protocols.inc | 180 - .../Chess4Net/MI/MirandaINC/m_protomod.inc | 105 - .../Chess4Net/MI/MirandaINC/m_protosvc.inc | 753 -- .../!NotAdopted/Chess4Net/MI/MirandaINC/m_skin.inc | 120 - .../Chess4Net/MI/MirandaINC/m_system.inc | 170 - .../!NotAdopted/Chess4Net/MI/MirandaINC/m_url.inc | 39 - .../Chess4Net/MI/MirandaINC/m_userinfo.inc | 84 - .../Chess4Net/MI/MirandaINC/m_utils.inc | 279 - .../Chess4Net/MI/MirandaINC/newpluginapi.h | 283 - .../Chess4Net/MI/MirandaINC/newpluginapi.inc | 209 - .../!NotAdopted/Chess4Net/MI/MirandaINC/readme.txt | 1 - .../Chess4Net/MI/MirandaINC/statusmodes.inc | 54 - .../!NotAdopted/Chess4Net/MI/PluginCommonUnit.pas | 63 - .../Chess4Net/MI/TransmitGameSelectionUnit.dfm | 47 - .../Chess4Net/MI/TransmitGameSelectionUnit.pas | 83 - plugins/!NotAdopted/Chess4Net/MI/make.bat | 36 - plugins/!NotAdopted/Chess4Net/ManagerUnit.dfm | 147 - plugins/!NotAdopted/Chess4Net/ManagerUnit.pas | 2460 ----- .../!NotAdopted/Chess4Net/MessageDialogUnit.pas | 273 - plugins/!NotAdopted/Chess4Net/ModalForm.pas | 519 - .../Chess4Net/NonMainFormStayOnTopUnit.pas | 74 - .../Chess4Net/NonRefInterfacedObjectUnit.pas | 44 - .../Chess4Net/PosBaseChessBoardLayerUnit.pas | 620 -- .../Chess4Net/PosBaseChessBoardUnit.pas | 537 - plugins/!NotAdopted/Chess4Net/PosBaseUnit.pas | 603 -- plugins/!NotAdopted/Chess4Net/PromotionUnit.dfm | 30 - plugins/!NotAdopted/Chess4Net/PromotionUnit.pas | 202 - plugins/!NotAdopted/Chess4Net/Readme.txt | 279 - plugins/!NotAdopted/Chess4Net/Readme_RU.txt | Bin 15044 -> 0 bytes plugins/!NotAdopted/Chess4Net/TODO.txt | 62 - .../!NotAdopted/Chess4Net/URLVersionQueryUnit.dfm | 7 - .../!NotAdopted/Chess4Net/URLVersionQueryUnit.pas | 185 - .../Chess4Net/lib/PNGImage/obj/adler32.obj | Bin 977 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/compress.obj | Bin 502 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/crc32.obj | Bin 10586 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/deflate.obj | Bin 8769 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/gzio.obj | Bin 5124 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/infback.obj | Bin 6913 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/inffast.obj | Bin 1568 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/inflate.obj | Bin 10546 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/inftrees.obj | Bin 1681 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/trees.obj | Bin 10932 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/uncompr.obj | Bin 440 -> 0 bytes .../Chess4Net/lib/PNGImage/obj/zutil.obj | Bin 747 -> 0 bytes .../Chess4Net/lib/PNGImage/pngextra.pas | 353 - .../Chess4Net/lib/PNGImage/pngimage.pas | 5824 ----------- .../!NotAdopted/Chess4Net/lib/PNGImage/pnglang.pas | 355 - .../!NotAdopted/Chess4Net/lib/PNGImage/zlibpas.pas | 156 - .../TntUnicodeControls/Source/ActiveIMM_TLB.pas | 1374 --- .../lib/TntUnicodeControls/Source/TntActnList.pas | 835 -- .../lib/TntUnicodeControls/Source/TntAxCtrls.pas | 191 - .../lib/TntUnicodeControls/Source/TntBandActn.pas | 92 - .../lib/TntUnicodeControls/Source/TntButtons.pas | 982 -- .../lib/TntUnicodeControls/Source/TntCheckLst.pas | 184 - .../lib/TntUnicodeControls/Source/TntClasses.pas | 1780 ---- .../lib/TntUnicodeControls/Source/TntClipBrd.pas | 86 - .../lib/TntUnicodeControls/Source/TntComCtrls.pas | 5058 ---------- .../lib/TntUnicodeControls/Source/TntCompilers.inc | 356 - .../lib/TntUnicodeControls/Source/TntControls.pas | 1099 -- .../lib/TntUnicodeControls/Source/TntDB.pas | 900 -- .../lib/TntUnicodeControls/Source/TntDBActns.pas | 594 -- .../TntUnicodeControls/Source/TntDBClientActns.pas | 197 - .../lib/TntUnicodeControls/Source/TntDBCtrls.pas | 2195 ---- .../lib/TntUnicodeControls/Source/TntDBGrids.pas | 1175 --- .../lib/TntUnicodeControls/Source/TntDBLogDlg.dfm | 108 - .../lib/TntUnicodeControls/Source/TntDBLogDlg.pas | 133 - .../lib/TntUnicodeControls/Source/TntDialogs.pas | 981 -- .../lib/TntUnicodeControls/Source/TntExtActns.pas | 1400 --- .../lib/TntUnicodeControls/Source/TntExtCtrls.pas | 1062 -- .../lib/TntUnicodeControls/Source/TntExtDlgs.pas | 317 - .../lib/TntUnicodeControls/Source/TntFileCtrl.pas | 118 - .../Source/TntFormatStrUtils.pas | 503 - .../lib/TntUnicodeControls/Source/TntForms.pas | 873 -- .../lib/TntUnicodeControls/Source/TntGraphics.pas | 142 - .../lib/TntUnicodeControls/Source/TntGrids.pas | 675 -- .../lib/TntUnicodeControls/Source/TntIniFiles.pas | 1011 -- .../TntUnicodeControls/Source/TntIniFilesEx.pas | 205 - .../lib/TntUnicodeControls/Source/TntListActns.pas | 207 - .../lib/TntUnicodeControls/Source/TntMenus.pas | 1146 --- .../lib/TntUnicodeControls/Source/TntRegistry.pas | 148 - .../lib/TntUnicodeControls/Source/TntStdActns.pas | 1922 ---- .../lib/TntUnicodeControls/Source/TntStdCtrls.pas | 3215 ------ .../lib/TntUnicodeControls/Source/TntSysUtils.pas | 1699 ---- .../lib/TntUnicodeControls/Source/TntSystem.pas | 1384 --- .../TntUnicodeControls/Source/TntWideStrUtils.pas | 451 - .../TntUnicodeControls/Source/TntWideStrings.pas | 831 -- .../lib/TntUnicodeControls/Source/TntWindows.pas | 1452 --- plugins/!NotAdopted/Chess4Net/lib/XIE/XIE.pas | 333 - plugins/!NotAdopted/Chess4Net/res/BITMAPS.zip | Bin 24465 -> 0 bytes plugins/!NotAdopted/Chess4Net/res/BOARD.bmp | Bin 61190 -> 0 bytes .../!NotAdopted/Chess4Net/res/Delphi/Buttons.res | Bin 5124 -> 0 bytes .../!NotAdopted/Chess4Net/res/Delphi/Controls.res | Bin 2776 -> 0 bytes .../!NotAdopted/Chess4Net/res/Delphi/Extdlgs.res | Bin 456 -> 0 bytes plugins/!NotAdopted/Chess4Net/res/MakeRes.bat | 1 - plugins/!NotAdopted/Chess4Net/res/PNG_SET.zip | Bin 17348 -> 0 bytes .../!NotAdopted/SmartAutoAway/AggressiveOptimize.h | 166 - plugins/!NotAdopted/SmartAutoAway/aa_utils.cpp | 397 - plugins/!NotAdopted/SmartAutoAway/autoaway.cpp | 663 -- plugins/!NotAdopted/SmartAutoAway/dlgproc.cpp | 279 - plugins/!NotAdopted/SmartAutoAway/globals.cpp | 113 - plugins/!NotAdopted/SmartAutoAway/globals.h | 349 - plugins/!NotAdopted/SmartAutoAway/here.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/SmartAutoAway/idle.cpp | 374 - plugins/!NotAdopted/SmartAutoAway/idleMenu.cpp | 133 - plugins/!NotAdopted/SmartAutoAway/idleMessages.cpp | 283 - plugins/!NotAdopted/SmartAutoAway/long.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/SmartAutoAway/reconnect.cpp | 329 - plugins/!NotAdopted/SmartAutoAway/reconnect.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/SmartAutoAway/resource.h | 77 - plugins/!NotAdopted/SmartAutoAway/saa-res.rc | 238 - plugins/!NotAdopted/SmartAutoAway/saa.cpp | 101 - plugins/!NotAdopted/SmartAutoAway/saa.h | 1 - plugins/!NotAdopted/SmartAutoAway/saa.vcxproj | 311 - .../!NotAdopted/SmartAutoAway/saa.vcxproj.filters | 76 - plugins/!NotAdopted/SmartAutoAway/saamain.cpp | 403 - plugins/!NotAdopted/SmartAutoAway/saani.cpp | 68 - plugins/!NotAdopted/SmartAutoAway/saani.dsp | 107 - plugins/!NotAdopted/SmartAutoAway/saani.vcxproj | 271 - .../SmartAutoAway/saani.vcxproj.filters | 22 - plugins/!NotAdopted/SmartAutoAway/short.ico | Bin 1150 -> 0 bytes .../SmartAutoReplier/ActionsHandler.cpp | 31 - .../!NotAdopted/SmartAutoReplier/ActionsHandler.h | 30 - .../SmartAutoReplier/AggressiveOptimize.h | 59 - .../!NotAdopted/SmartAutoReplier/Crc32Static.cpp | 139 - plugins/!NotAdopted/SmartAutoReplier/Crc32Static.h | 33 - plugins/!NotAdopted/SmartAutoReplier/CrushLog.cpp | 167 - plugins/!NotAdopted/SmartAutoReplier/CrushLog.h | 54 - .../SmartAutoReplier/GUI/AddRuleDlg.cpp | 219 - .../!NotAdopted/SmartAutoReplier/GUI/AddRuleDlg.h | 67 - .../SmartAutoReplier/GUI/EditReplyDlg.cpp | 88 - .../SmartAutoReplier/GUI/EditReplyDlg.h | 55 - .../SmartAutoReplier/GUI/OptionsDlg.cpp | 528 - .../!NotAdopted/SmartAutoReplier/GUI/OptionsDlg.h | 119 - .../SmartAutoReplier/GUI/SelectUserDlg.cpp | 109 - .../SmartAutoReplier/GUI/SelectUserDlg.h | 58 - .../SmartAutoReplier/GUI/SettingsDlgHolder.cpp | 207 - .../SmartAutoReplier/GUI/SettingsDlgHolder.h | 69 - .../SmartAutoReplier/Interfaces/ISettings.h | 34 - .../SmartAutoReplier/Interfaces/ISingletone.h | 35 - plugins/!NotAdopted/SmartAutoReplier/LuaBridge.cpp | 127 - plugins/!NotAdopted/SmartAutoReplier/LuaBridge.h | 96 - plugins/!NotAdopted/SmartAutoReplier/LuaScript.cpp | 215 - plugins/!NotAdopted/SmartAutoReplier/LuaScript.h | 68 - .../SmartAutoReplier/MessagesHandler.cpp | 469 - .../!NotAdopted/SmartAutoReplier/MessagesHandler.h | 72 - .../SmartAutoReplier/ModeMessHandler.cpp | 119 - .../!NotAdopted/SmartAutoReplier/ModeMessHandler.h | 34 - plugins/!NotAdopted/SmartAutoReplier/RuleItem.h | 47 - .../!NotAdopted/SmartAutoReplier/RulesStorage.cpp | 536 - .../!NotAdopted/SmartAutoReplier/RulesStorage.h | 63 - plugins/!NotAdopted/SmartAutoReplier/SAR.cpp | 414 - plugins/!NotAdopted/SmartAutoReplier/SAR.rc | 274 - plugins/!NotAdopted/SmartAutoReplier/SAR.sln | 49 - plugins/!NotAdopted/SmartAutoReplier/SAR.vcxproj | 315 - .../SmartAutoReplier/SAR.vcxproj.filters | 77 - .../!NotAdopted/SmartAutoReplier/SarLuaScript.cpp | 358 - .../!NotAdopted/SmartAutoReplier/SarLuaScript.h | 57 - .../!NotAdopted/SmartAutoReplier/ScriptsReader.cpp | 175 - .../!NotAdopted/SmartAutoReplier/ScriptsReader.h | 57 - .../SmartAutoReplier/SettingsHandler.cpp | 204 - .../!NotAdopted/SmartAutoReplier/SettingsHandler.h | 96 - plugins/!NotAdopted/SmartAutoReplier/comfunc.cpp | 76 - plugins/!NotAdopted/SmartAutoReplier/comfunc.h | 26 - plugins/!NotAdopted/SmartAutoReplier/comlogging.h | 42 - plugins/!NotAdopted/SmartAutoReplier/luainc.h | 31 - .../!NotAdopted/SmartAutoReplier/lualib/ReadMe.txt | 37 - plugins/!NotAdopted/SmartAutoReplier/lualib/lapi.c | 922 -- plugins/!NotAdopted/SmartAutoReplier/lualib/lapi.h | 16 - .../!NotAdopted/SmartAutoReplier/lualib/lauxlib.c | 591 -- .../!NotAdopted/SmartAutoReplier/lualib/lauxlib.h | 145 - .../!NotAdopted/SmartAutoReplier/lualib/lbaselib.c | 674 -- .../!NotAdopted/SmartAutoReplier/lualib/lcode.c | 714 -- .../!NotAdopted/SmartAutoReplier/lualib/lcode.h | 74 - .../!NotAdopted/SmartAutoReplier/lualib/ldblib.c | 299 - .../!NotAdopted/SmartAutoReplier/lualib/ldebug.c | 585 -- .../!NotAdopted/SmartAutoReplier/lualib/ldebug.h | 31 - plugins/!NotAdopted/SmartAutoReplier/lualib/ldo.c | 458 - plugins/!NotAdopted/SmartAutoReplier/lualib/ldo.h | 60 - .../!NotAdopted/SmartAutoReplier/lualib/ldump.c | 170 - .../!NotAdopted/SmartAutoReplier/lualib/lfunc.c | 135 - .../!NotAdopted/SmartAutoReplier/lualib/lfunc.h | 25 - plugins/!NotAdopted/SmartAutoReplier/lualib/lgc.c | 493 - plugins/!NotAdopted/SmartAutoReplier/lualib/lgc.h | 25 - .../!NotAdopted/SmartAutoReplier/lualib/liolib.c | 750 -- plugins/!NotAdopted/SmartAutoReplier/lualib/llex.c | 417 - plugins/!NotAdopted/SmartAutoReplier/lualib/llex.h | 75 - .../!NotAdopted/SmartAutoReplier/lualib/llimits.h | 185 - .../!NotAdopted/SmartAutoReplier/lualib/lmathlib.c | 246 - plugins/!NotAdopted/SmartAutoReplier/lualib/lmem.c | 91 - plugins/!NotAdopted/SmartAutoReplier/lualib/lmem.h | 44 - .../!NotAdopted/SmartAutoReplier/lualib/loadlib.c | 205 - .../!NotAdopted/SmartAutoReplier/lualib/lobject.c | 195 - .../!NotAdopted/SmartAutoReplier/lualib/lobject.h | 336 - .../!NotAdopted/SmartAutoReplier/lualib/lopcodes.c | 102 - .../!NotAdopted/SmartAutoReplier/lualib/lopcodes.h | 238 - .../!NotAdopted/SmartAutoReplier/lualib/lparser.c | 1329 --- .../!NotAdopted/SmartAutoReplier/lualib/lparser.h | 71 - .../!NotAdopted/SmartAutoReplier/lualib/lstate.c | 220 - .../!NotAdopted/SmartAutoReplier/lualib/lstate.h | 195 - .../!NotAdopted/SmartAutoReplier/lualib/lstring.c | 102 - .../!NotAdopted/SmartAutoReplier/lualib/lstring.h | 33 - .../!NotAdopted/SmartAutoReplier/lualib/lstrlib.c | 770 -- .../!NotAdopted/SmartAutoReplier/lualib/ltable.c | 509 - .../!NotAdopted/SmartAutoReplier/lualib/ltable.h | 31 - .../!NotAdopted/SmartAutoReplier/lualib/ltablib.c | 250 - .../!NotAdopted/SmartAutoReplier/lualib/ltests.c | 852 -- plugins/!NotAdopted/SmartAutoReplier/lualib/ltm.c | 70 - plugins/!NotAdopted/SmartAutoReplier/lualib/ltm.h | 51 - plugins/!NotAdopted/SmartAutoReplier/lualib/lua.h | 391 - .../!NotAdopted/SmartAutoReplier/lualib/luainc.h | 12 - .../!NotAdopted/SmartAutoReplier/lualib/lualib.h | 56 - .../SmartAutoReplier/lualib/lualib.vcxproj | 189 - .../SmartAutoReplier/lualib/lualib.vcxproj.filters | 183 - .../!NotAdopted/SmartAutoReplier/lualib/lundump.c | 286 - .../!NotAdopted/SmartAutoReplier/lualib/lundump.h | 34 - plugins/!NotAdopted/SmartAutoReplier/lualib/lvm.c | 780 -- plugins/!NotAdopted/SmartAutoReplier/lualib/lvm.h | 35 - plugins/!NotAdopted/SmartAutoReplier/lualib/lzio.c | 81 - plugins/!NotAdopted/SmartAutoReplier/lualib/lzio.h | 64 - .../SmartAutoReplier/lualib/targetver.h | 8 - plugins/!NotAdopted/SmartAutoReplier/resource.h | 52 - plugins/!NotAdopted/SmartAutoReplier/sar.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/SmartAutoReplier/stdafx.cpp | 27 - plugins/!NotAdopted/SmartAutoReplier/stdafx.h | 74 - plugins/!NotAdopted/SmartAutoReplier/wtl/atlapp.h | 2035 ---- .../!NotAdopted/SmartAutoReplier/wtl/atlcrack.h | 2384 ----- .../!NotAdopted/SmartAutoReplier/wtl/atlctrls.h | 10041 ------------------- .../!NotAdopted/SmartAutoReplier/wtl/atlctrlw.h | 4157 -------- .../!NotAdopted/SmartAutoReplier/wtl/atlctrlx.h | 5004 --------- plugins/!NotAdopted/SmartAutoReplier/wtl/atlddx.h | 679 -- plugins/!NotAdopted/SmartAutoReplier/wtl/atldlgs.h | 6403 ------------ plugins/!NotAdopted/SmartAutoReplier/wtl/atldwm.h | 461 - plugins/!NotAdopted/SmartAutoReplier/wtl/atlfind.h | 1032 -- .../!NotAdopted/SmartAutoReplier/wtl/atlframe.h | 3688 ------- plugins/!NotAdopted/SmartAutoReplier/wtl/atlgdi.h | 3891 ------- plugins/!NotAdopted/SmartAutoReplier/wtl/atlmisc.h | 3817 ------- .../!NotAdopted/SmartAutoReplier/wtl/atlprint.h | 1109 -- plugins/!NotAdopted/SmartAutoReplier/wtl/atlres.h | 263 - .../!NotAdopted/SmartAutoReplier/wtl/atlresce.h | 93 - .../!NotAdopted/SmartAutoReplier/wtl/atlribbon.h | 3446 ------- plugins/!NotAdopted/SmartAutoReplier/wtl/atlscrl.h | 2011 ---- .../!NotAdopted/SmartAutoReplier/wtl/atlsplit.h | 917 -- .../!NotAdopted/SmartAutoReplier/wtl/atltheme.h | 1218 --- plugins/!NotAdopted/SmartAutoReplier/wtl/atluser.h | 1391 --- .../!NotAdopted/SmartAutoReplier/wtl/atlwince.h | 2987 ------ plugins/!NotAdopted/SmartAutoReplier/wtl/atlwinx.h | 525 - plugins/!NotAdopted/VypressChat/Resource.h | 97 - plugins/!NotAdopted/VypressChat/chanlist.c | 390 - plugins/!NotAdopted/VypressChat/chanlist.h | 43 - plugins/!NotAdopted/VypressChat/chatroom.c | 1154 --- plugins/!NotAdopted/VypressChat/chatroom.h | 63 - plugins/!NotAdopted/VypressChat/contacts.c | 705 -- plugins/!NotAdopted/VypressChat/contacts.h | 61 - .../!NotAdopted/VypressChat/contrib/hashtable.c | 287 - .../!NotAdopted/VypressChat/contrib/hashtable.h | 195 - .../VypressChat/contrib/hashtable_private.h | 71 - plugins/!NotAdopted/VypressChat/contrib/m_chat.h | 424 - plugins/!NotAdopted/VypressChat/contrib/memwatch.c | 2664 ----- plugins/!NotAdopted/VypressChat/contrib/memwatch.h | 707 -- .../!NotAdopted/VypressChat/contrib/strhashfunc.c | 21 - .../!NotAdopted/VypressChat/contrib/strhashfunc.h | 8 - .../!NotAdopted/VypressChat/contrib/unicows.dll | Bin 258352 -> 0 bytes plugins/!NotAdopted/VypressChat/docs/AUTHORS | 1 - plugins/!NotAdopted/VypressChat/docs/COPYING | 340 - plugins/!NotAdopted/VypressChat/docs/CREDITS | 10 - plugins/!NotAdopted/VypressChat/docs/ChangeLog | 50 - plugins/!NotAdopted/VypressChat/docs/NEWS | 0 plugins/!NotAdopted/VypressChat/docs/README | 79 - plugins/!NotAdopted/VypressChat/docs/TODO | 36 - plugins/!NotAdopted/VypressChat/docs/dbformat.txt | 38 - plugins/!NotAdopted/VypressChat/iconpack.rc | 40 - .../!NotAdopted/VypressChat/icons/contact_bell.ico | Bin 318 -> 0 bytes .../!NotAdopted/VypressChat/icons/quickchat.ico | Bin 318 -> 0 bytes .../VypressChat/icons/quickchat_away.ico | Bin 318 -> 0 bytes .../VypressChat/icons/quickchat_channel.ico | Bin 318 -> 0 bytes .../VypressChat/icons/quickchat_dnd.ico | Bin 318 -> 0 bytes .../VypressChat/icons/quickchat_large.ico | Bin 766 -> 0 bytes .../!NotAdopted/VypressChat/icons/quickchat_na.ico | Bin 318 -> 0 bytes .../VypressChat/icons/quickchat_offline.ico | Bin 1406 -> 0 bytes .../VypressChat/icons/quickchat_online.ico | Bin 318 -> 0 bytes .../!NotAdopted/VypressChat/icons/vypresschat.ico | Bin 318 -> 0 bytes .../VypressChat/icons/vypresschat_away.ico | Bin 318 -> 0 bytes .../VypressChat/icons/vypresschat_channel.ico | Bin 1406 -> 0 bytes .../VypressChat/icons/vypresschat_dnd.ico | Bin 318 -> 0 bytes .../VypressChat/icons/vypresschat_large.ico | Bin 2238 -> 0 bytes .../VypressChat/icons/vypresschat_na.ico | Bin 318 -> 0 bytes .../VypressChat/icons/vypresschat_offline.ico | Bin 318 -> 0 bytes .../VypressChat/icons/vypresschat_online.ico | Bin 318 -> 0 bytes plugins/!NotAdopted/VypressChat/libvqproto/COPYING | 340 - .../!NotAdopted/VypressChat/libvqproto/PROTOCOL | 348 - plugins/!NotAdopted/VypressChat/libvqproto/README | 7 - plugins/!NotAdopted/VypressChat/libvqproto/link.c | 611 -- plugins/!NotAdopted/VypressChat/libvqproto/link.h | 106 - .../!NotAdopted/VypressChat/libvqproto/makefile | 21 - .../!NotAdopted/VypressChat/libvqproto/message.c | 1218 --- .../!NotAdopted/VypressChat/libvqproto/message.h | 57 - .../libvqproto/protocol-direct-connections | 97 - plugins/!NotAdopted/VypressChat/libvqproto/uuid.c | 108 - plugins/!NotAdopted/VypressChat/libvqproto/uuid.h | 27 - .../!NotAdopted/VypressChat/libvqproto/vqproto.h | 595 -- plugins/!NotAdopted/VypressChat/main.c | 132 - plugins/!NotAdopted/VypressChat/main.h | 108 - plugins/!NotAdopted/VypressChat/makefile | 243 - plugins/!NotAdopted/VypressChat/miranda.h | 56 - plugins/!NotAdopted/VypressChat/msghandler.c | 839 -- plugins/!NotAdopted/VypressChat/msghandler.h | 33 - plugins/!NotAdopted/VypressChat/msgloop.c | 248 - plugins/!NotAdopted/VypressChat/msgloop.h | 35 - plugins/!NotAdopted/VypressChat/options.c | 947 -- plugins/!NotAdopted/VypressChat/options.h | 33 - plugins/!NotAdopted/VypressChat/pthread.c | 58 - plugins/!NotAdopted/VypressChat/pthread.h | 30 - plugins/!NotAdopted/VypressChat/resource.rc | 258 - plugins/!NotAdopted/VypressChat/service.c | 730 -- plugins/!NotAdopted/VypressChat/service.h | 36 - plugins/!NotAdopted/VypressChat/skin.c | 44 - plugins/!NotAdopted/VypressChat/skin.h | 33 - plugins/!NotAdopted/VypressChat/user.c | 511 - plugins/!NotAdopted/VypressChat/user.h | 70 - plugins/!NotAdopted/VypressChat/userlist.c | 718 -- plugins/!NotAdopted/VypressChat/userlist.h | 73 - plugins/!NotAdopted/VypressChat/util.c | 376 - plugins/!NotAdopted/VypressChat/util.h | 63 - .../WinPopup/docs/winpopup_proto_readme.txt | 245 - .../WinPopup/docs/winpopup_proto_todo.txt | 9 - .../WinPopup/docs/winpopup_proto_translation.txt | 43 - plugins/!NotAdopted/WinPopup/res/add.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/away.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/bad_name.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/bad_names.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/computer.ico | Bin 1406 -> 0 bytes .../!NotAdopted/WinPopup/res/computer_error.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/dnd.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/explore.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/freechat.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/good_name.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/good_names.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/invisible.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/lana.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/na.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/occupied.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/offline.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/online.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/onthephone.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/other_name.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/other_names.ico | Bin 1406 -> 0 bytes plugins/!NotAdopted/WinPopup/res/outtolunch.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/WinPopup/res/overlay/away.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/WinPopup/res/overlay/dnd.ico | Bin 1150 -> 0 bytes .../!NotAdopted/WinPopup/res/overlay/freechat.ico | Bin 1150 -> 0 bytes .../!NotAdopted/WinPopup/res/overlay/invisible.ico | Bin 1150 -> 0 bytes plugins/!NotAdopted/WinPopup/res/overlay/na.ico | Bin 1150 -> 0 bytes .../!NotAdopted/WinPopup/res/overlay/occupied.ico | Bin 1150 -> 0 bytes .../!NotAdopted/WinPopup/res/overlay/onphone.ico | Bin 1150 -> 0 bytes .../WinPopup/res/overlay/outtolunch.ico | Bin 1150 -> 0 bytes .../!NotAdopted/WinPopup/res/winpopup_proto.ico | Bin 9062 -> 0 bytes plugins/!NotAdopted/WinPopup/res/winpopup_proto.rc | 212 - plugins/!NotAdopted/WinPopup/src/add_dialog.cpp | 66 - plugins/!NotAdopted/WinPopup/src/add_dialog.h | 23 - plugins/!NotAdopted/WinPopup/src/chat.cpp | 329 - plugins/!NotAdopted/WinPopup/src/chat.h | 42 - .../!NotAdopted/WinPopup/src/dllLoaderMinimal.h | 338 - plugins/!NotAdopted/WinPopup/src/mailslot.cpp | 304 - plugins/!NotAdopted/WinPopup/src/mailslot.h | 46 - plugins/!NotAdopted/WinPopup/src/md5.h | 220 - plugins/!NotAdopted/WinPopup/src/messagebox.cpp | 223 - plugins/!NotAdopted/WinPopup/src/messagebox.h | 27 - plugins/!NotAdopted/WinPopup/src/messenger.cpp | 458 - plugins/!NotAdopted/WinPopup/src/messenger.h | 52 - plugins/!NotAdopted/WinPopup/src/netbios.cpp | 1055 -- plugins/!NotAdopted/WinPopup/src/netbios.h | 130 - plugins/!NotAdopted/WinPopup/src/netbios_name.cpp | 630 -- plugins/!NotAdopted/WinPopup/src/netbios_name.h | 155 - plugins/!NotAdopted/WinPopup/src/network.cpp | 81 - plugins/!NotAdopted/WinPopup/src/network.h | 29 - plugins/!NotAdopted/WinPopup/src/options.cpp | 381 - plugins/!NotAdopted/WinPopup/src/options.h | 22 - plugins/!NotAdopted/WinPopup/src/processapi.cpp | 571 -- plugins/!NotAdopted/WinPopup/src/processapi.h | 258 - plugins/!NotAdopted/WinPopup/src/resource.h | 66 - plugins/!NotAdopted/WinPopup/src/scanner.cpp | 208 - plugins/!NotAdopted/WinPopup/src/scanner.h | 47 - plugins/!NotAdopted/WinPopup/src/search.cpp | 317 - plugins/!NotAdopted/WinPopup/src/search.h | 58 - plugins/!NotAdopted/WinPopup/src/services.cpp | 879 -- plugins/!NotAdopted/WinPopup/src/services.h | 34 - plugins/!NotAdopted/WinPopup/src/smbconst.h | 106 - plugins/!NotAdopted/WinPopup/src/stdafx.cpp | 22 - plugins/!NotAdopted/WinPopup/src/stdafx.h | 122 - plugins/!NotAdopted/WinPopup/src/user_info.cpp | 325 - plugins/!NotAdopted/WinPopup/src/user_info.h | 22 - .../!NotAdopted/WinPopup/src/winpopup_proto.cpp | 1193 --- plugins/!NotAdopted/WinPopup/src/winpopup_proto.h | 318 - plugins/!NotAdopted/mDynDNS/changelog.txt | 34 - plugins/!NotAdopted/mDynDNS/dyndns.bmp | Bin 12894 -> 0 bytes plugins/!NotAdopted/mDynDNS/dyndns.ico | Bin 2550 -> 0 bytes plugins/!NotAdopted/mDynDNS/mDynDNS.cpp | 840 -- plugins/!NotAdopted/mDynDNS/mDynDNS.h | 58 - plugins/!NotAdopted/mDynDNS/mDynDNS_9.vcxproj | 195 - .../!NotAdopted/mDynDNS/mDynDNS_9.vcxproj.filters | 52 - plugins/!NotAdopted/mDynDNS/m_mDynDNS.h | 57 - plugins/!NotAdopted/mDynDNS/readme.txt | 13 - plugins/!NotAdopted/mDynDNS/resource.h | 44 - plugins/!NotAdopted/mDynDNS/resource.rc | 138 - plugins/!NotAdopted/mDynDNS/version.h | 34 - plugins/!NotAdopted/mDynDNS/version.rc | 38 - plugins/!NotAdopted/name_day/calendar/calendar.cpp | 157 - plugins/!NotAdopted/name_day/calendar/calendar.h | 37 - plugins/!NotAdopted/name_day/name_day.cpp | 90 - plugins/!NotAdopted/name_day/name_day.ncb | Bin 175104 -> 0 bytes plugins/!NotAdopted/name_day/name_day.vcproj | 461 - plugins/!NotAdopted/name_day/name_day_core.cpp | 381 - plugins/!NotAdopted/name_day/name_day_core.h | 45 - plugins/!NotAdopted/name_day/namedayplug.rc | 87 - plugins/!NotAdopted/name_day/resource.h | 19 - plugins/!NotAdopted/name_day/resources/baloons.ico | Bin 3262 -> 0 bytes plugins/!NotAdopted/name_day/resources/icon1.ico | Bin 3262 -> 0 bytes plugins/!NotAdopted/name_day/resources/icon2.ico | Bin 3262 -> 0 bytes plugins/!NotAdopted/name_day/resources/icon3.ico | Bin 2238 -> 0 bytes plugins/!NotAdopted/name_day/static_database.h | 523 - plugins/!NotAdopted/name_day/todo.txt | 23 - .../!NotAdopted/name_day/utils/string_tokenizer.h | 40 - 1628 files changed, 298134 deletions(-) delete mode 100644 plugins/!Deprecated/Actman20/actman.dpr delete mode 100644 plugins/!Deprecated/Actman20/global.pas delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.pas delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.rc delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.res delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_hconst.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_hook.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/i_action.inc delete mode 100644 plugins/!Deprecated/Actman20/i_actlow.inc delete mode 100644 plugins/!Deprecated/Actman20/i_const.inc delete mode 100644 plugins/!Deprecated/Actman20/i_contact.inc delete mode 100644 plugins/!Deprecated/Actman20/i_dlglists.inc delete mode 100644 plugins/!Deprecated/Actman20/i_inoutxm.inc delete mode 100644 plugins/!Deprecated/Actman20/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/i_opt_dlg2.inc delete mode 100644 plugins/!Deprecated/Actman20/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/i_services.inc delete mode 100644 plugins/!Deprecated/Actman20/i_vars.inc delete mode 100644 plugins/!Deprecated/Actman20/i_visual.inc delete mode 100644 plugins/!Deprecated/Actman20/ico/advance.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/apply.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/chain.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/contact.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/delete.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/down.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/export.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/format.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/import.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/insert.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/message.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/new.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/program.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/reload.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/rw.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/service.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/test.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/up.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/vcheck.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/vuncheck.ico delete mode 100644 plugins/!Deprecated/Actman20/m_actions.inc delete mode 100644 plugins/!Deprecated/Actman20/make.bat delete mode 100644 plugins/!Deprecated/Actman20/options.rc delete mode 100644 plugins/!Deprecated/Actman20/options.res delete mode 100644 plugins/!Deprecated/Actman20/question.pas delete mode 100644 plugins/!Deprecated/Actman20/readme.txt delete mode 100644 plugins/!Deprecated/Actman20/services.ini delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_service.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_task.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_tconst.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/scheduler.pas delete mode 100644 plugins/!Deprecated/Actman20/tasks/tasks.rc delete mode 100644 plugins/!Deprecated/Actman20/tasks/tasks.res delete mode 100644 plugins/!Deprecated/Actman20/ua/action.ico delete mode 100644 plugins/!Deprecated/Actman20/ua/i_inoutxm.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_ua.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uaplaces.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uavars.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uconst.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.pas delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.rc delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.res delete mode 100644 plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj delete mode 100644 plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Clist_mw/clist_mw_12.vcxproj delete mode 100644 plugins/!Deprecated/Clist_mw/clist_mw_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Clist_mw/res/1.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/2.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/3.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/4.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/5.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/6.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/7.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/8.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/Miranda.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/Version.rc delete mode 100644 plugins/!Deprecated/Clist_mw/res/addgoupp.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/delete.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/globus.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/icon1.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/icon2.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/mirandaclassic.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/notick.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/notick1.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/rename.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/resource.rc delete mode 100644 plugins/!Deprecated/Clist_mw/res/sendmail.ico delete mode 100644 plugins/!Deprecated/Clist_mw/res/sms.ico delete mode 100644 plugins/!Deprecated/Clist_mw/src/BkgrCfg.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/BkgrCfg.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/CLUIFrames/framesmenu.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/CLUIFrames/statusbar.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/Version.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/clc.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clc.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcfonts.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcidents.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcitems.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcopts.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcpaint.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clcutils.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clist.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/clistmenus.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clistmod.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clistopts.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clistsettings.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clisttray.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/clui.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/cluiopts.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/cluiservices.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/commonheaders.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/commonheaders.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/contact.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/groupmenu.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/init.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/keyboard.cpp delete mode 100644 plugins/!Deprecated/Clist_mw/src/resource.h delete mode 100644 plugins/!Deprecated/Clist_mw/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree/docs/Filestructure.txt delete mode 100644 plugins/!Deprecated/Dbx_tree/res/Version.rc delete mode 100644 plugins/!Deprecated/Dbx_tree/res/dbConfig.rc delete mode 100644 plugins/!Deprecated/Dbx_tree/res/dbVersion.rc delete mode 100644 plugins/!Deprecated/Dbx_tree/src/BTree.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/BlockManager.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/BlockManager.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Cipher.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Compatibility.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Compatibility.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DataBase.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DataBase.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DatabaseLink.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DatabaseLink.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DirectAccess.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/DirectAccess.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/EncryptionManager.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/EncryptionManager.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Entities.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Entities.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Events.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Events.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/FileAccess.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/FileAccess.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/FileBTree.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Hash.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Hash.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Interface.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/IterationHeap.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Logger.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Logger.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/MREWSync.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/MREWSync.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/MappedMemory.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/MappedMemory.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/SHA256.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/SHA256.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Services.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Settings.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Settings.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/TLS.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Thread.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Thread.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/Version.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/dbConfig_rc.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/dbVersion_rc.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/init.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree/src/intrinsics.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/inttypes.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/lockfree_hashmap.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/lockfree_hashmultimap.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/sigslot.h delete mode 100644 plugins/!Deprecated/Dbx_tree/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/res/Version.rc delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/Version.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/res/Version.rc delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.inc delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/Version.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/Common/Cipher.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/res/Version.rc delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.cpp delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.h delete mode 100644 plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/Version.h delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/imgdecoder.pas delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_DataAsMessage.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_anismiley.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_autoreplacer.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_contactdir.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_db3xsa.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_ersatz.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_fuse.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_help(plugin).inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_historyevents.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_ircscript.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_keybindings.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_langman.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_mathmodule.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_motd.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_nickhistory.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_simpleaway.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_smh.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_smr.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_snapping_windows.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_spamfilter.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_speak.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_voice.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_voiceservice.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_w7ui.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/delphi/m_webcam.inc delete mode 100644 plugins/!Deprecated/ExternalAPI/m_ContactSettings.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_DataAsMessage.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_LogService.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_MagneticWindows.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_MathModule.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_autoreplacer.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_db3xsa.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_dbx_tree.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_fortunemsg.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_hddinfo.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_help.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_icqplus.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_ircscript.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_langman.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_mucc.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_script.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_simpleaway.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_smileyadd_deprecated.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_snappingwindows.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_voice.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_voiceservice.h delete mode 100644 plugins/!Deprecated/ExternalAPI/m_w7ui.h delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj.filters delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_AIM.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Gadu.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_General.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_ICQ.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_IRC.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Jabber.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MRA.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MSN.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Multiprotocols.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Packs.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_QQ.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_RSS.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Skype.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Tlen.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_VoIP.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Weather.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Yahoo.vcxproj delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_4.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_5.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mac.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Triton.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/TerraIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/miniaim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/naim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/&RQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/1&1.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Anastasia.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/D[i]Chat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Delphi.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GLICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GnomeICU.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IC@.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/ICQ_2.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IMadering.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/JICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/KM_Aska.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/LibICQ2000.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Licq.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/MIP.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/NanoICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/QIP.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/R&Q.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/SmartICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Spambot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/StrICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/WebICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/YSM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Yeemp.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/alICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/biohazard.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/corepager.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/kxICQ2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/locid.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/mICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/nICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ for PocketPC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_ABV.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Bigmir.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Compad.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite4.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Netvigator.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Pro7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Rambler.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_iMac.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.1.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2000.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2001.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2002.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2003.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/IcqLite 4.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/slick.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/smaper.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/stICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vmICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/AmIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Babbel.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/BersIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ChatZilla.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Conversation.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop_RacBot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/FChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GDP Web Chat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GoPowerTools.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/HydraIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRCXpro.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRC_unknown.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/KVIrc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Klient.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Konversation.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NeoRa Trion.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Nettalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NoNameScript.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Opera.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/PJIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Pirch.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ProChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SmartIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Snak.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SysReset.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VircaIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisionIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisualIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VortecIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WLIrc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WeeChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/X-Chat Aqua.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xirc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xircon.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ZipTorrent.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/aMule.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/cbirc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/dIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_MorphXT.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Neo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Xtreme.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_plus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ircle.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/irssi.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jircii.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jmIrc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ksirc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mp3script.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/pIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/piorun.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/psyBNC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/savIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/wmIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xBitch.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/zsIRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Akeni.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Android.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Anothr Rss Bot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Aqq.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BellSouth.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BitWise.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BlackBerry.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Bowline.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BuddySpace.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chatopus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chikka.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/ChitChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Coccinella.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colibry.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colloquy.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Desyr.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Emacs.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Exodus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Eyeball Chat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Facebook.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Fire.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GCN.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GNU_Gadu.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GOIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk Gadget.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gajim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail_Conference_Bot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gnome.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GoTalkMobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gossip.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GreenThumb.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gush.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/IMCom.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Imified.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Importal.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Instan-t.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Interaction.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JAJC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JBother.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JClaim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JMC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWGC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberApplet.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberFoX.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberMessenger.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberNaut.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberWocky.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberZilla.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabber_BeOS.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabbin.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabiru.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jeti.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Konnekt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LLuna.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Laffer.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Leaf Messenger.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LeechCraft.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LinQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/M8Jabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MCabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MGTalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mango.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mercury_Messenger.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MozillaChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Neos.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nitro.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nostromo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/OM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Octro.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PSI.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Pandion.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Papla.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Psto.net.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyAIMt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyICQt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyIRCt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMRAt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMSNt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyYIMt.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/QTJim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/RenRen.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SIP Communicator.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Sky Messager.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Smack.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SoapBox.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spark.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spik.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SworIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tapioca.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Teabot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Telepathy.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Thunderbird.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TipicIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tkabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TransactIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TripleSoftwareIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Vayusphere.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WTW.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WannaChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WebEx.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhisperIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhoisBot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Wildfire.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WinJab.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Xiffian.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Yambi.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/beejive.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusmod.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusqd.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/emess.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/gYaber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/glu.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iGoogle.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMeem.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMov.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iruka.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jTalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jabbim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jdisk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jrudevels.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/juick.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kadu.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kf.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/landell.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/meinvz.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/moJab.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/mobber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/myJabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/orkut.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/paltalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/pjc.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/schuelervz.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/smtp_transport.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/studivz.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/talkonaut.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/twitter.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/vacuum.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/wija.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/xeus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/yaonline.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN Mac.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v4.5-v5.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v6.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v7.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v8.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM10-11.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM9.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WebMessenger.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/aMSN.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_Mobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_WebAgent.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_official.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_unknown.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9s.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_04.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_666.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_U.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_unknown.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaNG.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/notfound.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/undetected.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/unknown.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Mobile QQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2000.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2004.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ CRM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Concept.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ International.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Silverlight.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 1.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2008.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 3 QQ 2003.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2005.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2006.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2007.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2008.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2009.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2010.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2011.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/WebQQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Yam QQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 1.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 3.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 0.9.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 1.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 1.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 2.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 3.x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Gizmo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/WengoPhone.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Zoep.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/accu.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/gismeteo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/intelli.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteogid.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteonovosti.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/noaa.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/realmeteo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/underground.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_cn.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_over.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weatherxml.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/wetter.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/yweather.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/PingBox.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 10.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 8.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo Go Mobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_10.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_5.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_6.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_7.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_8.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_9.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/libyahoo2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Adium.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/AgileMobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Ayttm.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BayanICQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BitlBee.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Centericq.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Citronim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Digsby.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EKG2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EasyMessage.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Fring.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/GAIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM+.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM2.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Inlux Messenger.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Instantbird.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/JasmineIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Jimm.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Kopete.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Meetro.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/NatSiemens.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/OneTeam.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Palringo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Pidgin.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Prelude.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Proteus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2010.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2012.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP Infium.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP PDA.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Qnext.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux_old.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX_old.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win_old.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_other_old.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Astra.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Pro.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Yamigo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/eBuddy.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/iChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/imoim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/mChat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/meebo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/pigeon.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/python.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/qutim.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/uIM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_AimOscar.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ_Plus.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQM.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQ_Sin.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_IRC.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JGTalk.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JMeebo.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Jabber.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_MailRu.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_QQ.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Tlen.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_gmail.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_msn.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Android.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Flash.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Java.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Symbian.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Windows.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_iMac.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_linux.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_IMsecure_arrow.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SecureIM_arrow.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpLite_arrow.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpPro_arrow.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/_blank.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_debug.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_home.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_mobile.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_notebook.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_office.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_work.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_666.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_AF.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Cappuccino.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FaithPack.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FinalPack.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_KDL.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Kolich.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Lestat.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_LexSys.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_FR.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_ME.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_New_Style.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_RobyerPack.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_SSS.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Se7ven.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Stalker.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ValeraVi.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Yaol.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_a0x.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_alfamar.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_amatory.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_bri.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dar_veter.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dmikos.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_e33.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_freize.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ghost.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_hieros.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_kuzzman.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_leninpack.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_mataes.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_md.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_native.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_pilot.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_razunter.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_tweety.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_umedon.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_watcher.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_xSpellhowleRx.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_zeleboba.ico delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_AIM.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Gadu.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_General.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_ICQ.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_IRC.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Jabber.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_MRA.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_MSN.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Multiprotocols.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Packs.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_QQ.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_RSS.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Skype.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Tlen.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_VoIP.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Weather.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/icons_Yahoo.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/resource.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/res/version.rc delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/finger_groups.h delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/fingerprint.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/global.h delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/main.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/masks.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/options.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/resource.h delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/utilities.cpp delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/utilities.h delete mode 100644 plugins/!Deprecated/FingerPrintModPlus/src/version.h delete mode 100644 plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj delete mode 100644 plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj delete mode 100644 plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/FirstRun/res/Version.rc delete mode 100644 plugins/!Deprecated/FirstRun/src/Version.h delete mode 100644 plugins/!Deprecated/FirstRun/src/commonheaders.h delete mode 100644 plugins/!Deprecated/FirstRun/src/main.cpp delete mode 100644 plugins/!Deprecated/FirstRun/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj delete mode 100644 plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj delete mode 100644 plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/FlashAvatars/docs/changelog.txt delete mode 100644 plugins/!Deprecated/FlashAvatars/m_flash.h delete mode 100644 plugins/!Deprecated/FlashAvatars/m_flash.inc delete mode 100644 plugins/!Deprecated/FlashAvatars/res/FlashAvatars.rc delete mode 100644 plugins/!Deprecated/FlashAvatars/res/Version.rc delete mode 100644 plugins/!Deprecated/FlashAvatars/src/TigerHash.cpp delete mode 100644 plugins/!Deprecated/FlashAvatars/src/TigerHash.h delete mode 100644 plugins/!Deprecated/FlashAvatars/src/Version.h delete mode 100644 plugins/!Deprecated/FlashAvatars/src/cflash.cpp delete mode 100644 plugins/!Deprecated/FlashAvatars/src/criticalsection.h delete mode 100644 plugins/!Deprecated/FlashAvatars/src/flash.tlb delete mode 100644 plugins/!Deprecated/FlashAvatars/src/resource.h delete mode 100644 plugins/!Deprecated/FlashAvatars/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/FlashAvatars/src/stdafx.h delete mode 100644 plugins/!Deprecated/LangMan/docs/Info_Src.txt delete mode 100644 plugins/!Deprecated/LangMan/docs/LangMan-Developer.txt delete mode 100644 plugins/!Deprecated/LangMan/docs/LangMan-License.txt delete mode 100644 plugins/!Deprecated/LangMan/docs/LangMan-Readme.txt delete mode 100644 plugins/!Deprecated/LangMan/docs/License_Appendix.txt delete mode 100644 plugins/!Deprecated/LangMan/langman_10.vcxproj delete mode 100644 plugins/!Deprecated/LangMan/langman_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/LangMan/langman_12.vcxproj delete mode 100644 plugins/!Deprecated/LangMan/langman_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/LangMan/res/reload.ico delete mode 100644 plugins/!Deprecated/LangMan/res/resource.rc delete mode 100644 plugins/!Deprecated/LangMan/res/version.rc delete mode 100644 plugins/!Deprecated/LangMan/src/common.h delete mode 100644 plugins/!Deprecated/LangMan/src/langpack.cpp delete mode 100644 plugins/!Deprecated/LangMan/src/langpack.h delete mode 100644 plugins/!Deprecated/LangMan/src/main.cpp delete mode 100644 plugins/!Deprecated/LangMan/src/options.cpp delete mode 100644 plugins/!Deprecated/LangMan/src/options.h delete mode 100644 plugins/!Deprecated/LangMan/src/resource.h delete mode 100644 plugins/!Deprecated/LangMan/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/LangMan/src/version.h delete mode 100644 plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj delete mode 100644 plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj delete mode 100644 plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/MagneticWindows/res/Options.rc delete mode 100644 plugins/!Deprecated/MagneticWindows/res/Version.rc delete mode 100644 plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp delete mode 100644 plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.cpp delete mode 100644 plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.h delete mode 100644 plugins/!Deprecated/MagneticWindows/src/Options.cpp delete mode 100644 plugins/!Deprecated/MagneticWindows/src/Options.h delete mode 100644 plugins/!Deprecated/MagneticWindows/src/SnapToListService.cpp delete mode 100644 plugins/!Deprecated/MagneticWindows/src/SnapToListService.h delete mode 100644 plugins/!Deprecated/MagneticWindows/src/Version.h delete mode 100644 plugins/!Deprecated/MagneticWindows/src/resource.h delete mode 100644 plugins/!Deprecated/MagneticWindows/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj delete mode 100644 plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj delete mode 100644 plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Away.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/DND.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/FFC.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Invisible.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Lunch.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/NA.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Occupied.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Offline.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Online.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Phone.ico delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Proto_MetaContacts.rc delete mode 100644 plugins/!Deprecated/MetaContacts/proto_metacontacts/src/resource.h delete mode 100644 plugins/!Deprecated/MetaContacts/res/MetaContacts.rc delete mode 100644 plugins/!Deprecated/MetaContacts/res/mcmenu.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/mcmenuof.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/meta_add.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/meta_convert.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/meta_edit.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/meta_remove2.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/meta_set_as_default.ico delete mode 100644 plugins/!Deprecated/MetaContacts/res/version.rc delete mode 100644 plugins/!Deprecated/MetaContacts/src/addto.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/edit.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/icons.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_api.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_main.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_menu.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_options.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_services.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/meta_utils.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/metacontacts.h delete mode 100644 plugins/!Deprecated/MetaContacts/src/resource.h delete mode 100644 plugins/!Deprecated/MetaContacts/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/MetaContacts/src/version.h delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/About.dfm delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/About.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/Contacts.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/Database.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/FSMonitor.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/Global.inc delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/Global.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dpr delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dproj delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.dfm delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dcr delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dpk delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dproj delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader_Icon.ico delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uIMDownloader.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uMD5.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MapStream.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/Menu.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dpr delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dproj delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.mes delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.dfm delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/copy_langs.bat delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/icons.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/jedi.inc delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/langs/English.xml delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/langs/Russian.xml delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/m_historytodb.inc delete mode 100644 plugins/!Deprecated/ShlExt/clean.bat delete mode 100644 plugins/!Deprecated/ShlExt/docs/HowToBuild.txt delete mode 100644 plugins/!Deprecated/ShlExt/docs/shlext release notes.txt delete mode 100644 plugins/!Deprecated/ShlExt/make.bat delete mode 100644 plugins/!Deprecated/ShlExt/resource.h delete mode 100644 plugins/!Deprecated/ShlExt/shlc.inc delete mode 100644 plugins/!Deprecated/ShlExt/shlcom.pas delete mode 100644 plugins/!Deprecated/ShlExt/shldlgs.rc delete mode 100644 plugins/!Deprecated/ShlExt/shldlgs.res delete mode 100644 plugins/!Deprecated/ShlExt/shlext.dpr delete mode 100644 plugins/!Deprecated/ShlExt/shlicons.pas delete mode 100644 plugins/!Deprecated/ShlExt/shlipc.pas delete mode 100644 plugins/!Deprecated/Skype/Skype_10.vcxproj delete mode 100644 plugins/!Deprecated/Skype/Skype_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/Skype_12.vcxproj delete mode 100644 plugins/!Deprecated/Skype/Skype_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/docs/readme.txt delete mode 100644 plugins/!Deprecated/Skype/docs/todo_list.txt delete mode 100644 plugins/!Deprecated/Skype/keypacker/aes/aes.c delete mode 100644 plugins/!Deprecated/Skype/keypacker/aes/aes.h delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker.cpp delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_10.sln delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_11.sln delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj delete mode 100644 plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/keypacker/stdafx.h delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/res/1.ico delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/res/2.ico delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/res/3.ico delete mode 100644 plugins/!Deprecated/Skype/proto_conn_skype/res/resource.rc delete mode 100644 plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj delete mode 100644 plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj delete mode 100644 plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Away.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/DND.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Invisible.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Offline.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Online.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Phone.ico delete mode 100644 plugins/!Deprecated/Skype/proto_skype/res/Proto_Skype.rc delete mode 100644 plugins/!Deprecated/Skype/proto_skype/src/resource.h delete mode 100644 plugins/!Deprecated/Skype/res/Resource.rc delete mode 100644 plugins/!Deprecated/Skype/res/Version.rc delete mode 100644 plugins/!Deprecated/Skype/res/add_contacts.ico delete mode 100644 plugins/!Deprecated/Skype/res/block.ico delete mode 100644 plugins/!Deprecated/Skype/res/call.ico delete mode 100644 plugins/!Deprecated/Skype/res/conference.ico delete mode 100644 plugins/!Deprecated/Skype/res/contact.ico delete mode 100644 plugins/!Deprecated/Skype/res/delete.ico delete mode 100644 plugins/!Deprecated/Skype/res/send_contacts.ico delete mode 100644 plugins/!Deprecated/Skype/res/skype.ico delete mode 100644 plugins/!Deprecated/Skype/src/aes/aes.cpp delete mode 100644 plugins/!Deprecated/Skype/src/aes/aes.h delete mode 100644 plugins/!Deprecated/Skype/src/resource.h delete mode 100644 plugins/!Deprecated/Skype/src/skype.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype.h delete mode 100644 plugins/!Deprecated/Skype/src/skype_account.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_avatars.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_blocked.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_bookmarks.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_chat.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_chat.h delete mode 100644 plugins/!Deprecated/Skype/src/skype_contacts.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_database.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_dialogs.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_events.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_hooks.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_icons.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_ignore_list.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_instances.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_menus.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_messages.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_netlib.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_own_info.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_profile.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_proto.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_proto.h delete mode 100644 plugins/!Deprecated/Skype/src/skype_runtime.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_services.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_settings.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_skype.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_transfers.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skype_utils.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/account.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/account.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/common.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/contact.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/contact.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/conversation.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/conversation.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/group.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/group.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/message.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/message.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/participant.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/participant.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/search.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/search.h delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/transfer.cpp delete mode 100644 plugins/!Deprecated/Skype/src/skypekit/transfer.h delete mode 100644 plugins/!Deprecated/Skype/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/Skype/src/string_list.h delete mode 100644 plugins/!Deprecated/Skype/src/version.h delete mode 100644 plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj delete mode 100644 plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj.filters delete mode 100644 plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj delete mode 100644 plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj.filters delete mode 100644 plugins/!Deprecated/VersionInfo/docs/VersionInfo.html delete mode 100644 plugins/!Deprecated/VersionInfo/docs/readme_versioninfo.txt delete mode 100644 plugins/!Deprecated/VersionInfo/docs/rebase_versioninfo.txt delete mode 100644 plugins/!Deprecated/VersionInfo/docs/versioninfo.gif delete mode 100644 plugins/!Deprecated/VersionInfo/res/VersionInfo.ico delete mode 100644 plugins/!Deprecated/VersionInfo/res/resource.rc delete mode 100644 plugins/!Deprecated/VersionInfo/res/version.rc delete mode 100644 plugins/!Deprecated/VersionInfo/src/CPlugin.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/CPlugin.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/CVersionInfo.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/CVersionInfo.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/common.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/dlgHandlers.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/dlgHandlers.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/hooked_events.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/hooked_events.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/main.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/resource.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/services.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/services.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/stdafx.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/utils.cpp delete mode 100644 plugins/!Deprecated/VersionInfo/src/utils.h delete mode 100644 plugins/!Deprecated/VersionInfo/src/version.h delete mode 100644 plugins/!Deprecated/W7UI/src/clistproxywindow.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/clistproxywindow.h delete mode 100644 plugins/!Deprecated/W7UI/src/dwmwindow.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/dwmwindow.h delete mode 100644 plugins/!Deprecated/W7UI/src/headers.h delete mode 100644 plugins/!Deprecated/W7UI/src/jumplist.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/jumplist.h delete mode 100644 plugins/!Deprecated/W7UI/src/jumplistarray.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/jumplistarray.h delete mode 100644 plugins/!Deprecated/W7UI/src/jumplistbuilder.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/jumplistbuilder.h delete mode 100644 plugins/!Deprecated/W7UI/src/main.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/srmmproxywindow.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/srmmproxywindow.h delete mode 100644 plugins/!Deprecated/W7UI/src/subclassmgr.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/subclassmgr.h delete mode 100644 plugins/!Deprecated/W7UI/src/w7ui.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/win7api.cpp delete mode 100644 plugins/!Deprecated/W7UI/src/win7api.h delete mode 100644 plugins/!Deprecated/W7UI/src/win7api_ICustomDestinationList.h delete mode 100644 plugins/!Deprecated/W7UI/src/win7api_IObjectArray.h delete mode 100644 plugins/!Deprecated/W7UI/src/win7api_IObjectCollection.h delete mode 100644 plugins/!Deprecated/W7UI/src/win7api_ITaskbarList3.h delete mode 100644 plugins/!Deprecated/W7UI/w7ui_10.vcxproj delete mode 100644 plugins/!NotAdopted/Chess4Net/BitmapResUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Chigorin.mov delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Chigorin.pos delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Fischer.mov delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Fischer.pos delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Tal.mov delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/Tal.pos delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/eco.mov delete mode 100644 plugins/!NotAdopted/Chess4Net/Build/eco.pos delete mode 100644 plugins/!NotAdopted/Chess4Net/Chess4Net.bpg delete mode 100644 plugins/!NotAdopted/Chess4Net/Chess4Net.ico delete mode 100644 plugins/!NotAdopted/Chess4Net/Chess4Net.res delete mode 100644 plugins/!NotAdopted/Chess4Net/Chess4Net_16.ico delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessBoardHeaderUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessBoardUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessBoardUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessClockUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessRulesEngine.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessSet.res delete mode 100644 plugins/!NotAdopted/Chess4Net/ChessSet_PNG.RES delete mode 100644 plugins/!NotAdopted/Chess4Net/ClientQueueUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/Connecting.ico delete mode 100644 plugins/!NotAdopted/Chess4Net/ConnectingUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/ConnectingUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ConnectionUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/ConnectionUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ContinueUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/ContinueUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/DialogUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/DontShowMessageDlgUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/Flag.bmp delete mode 100644 plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/GameOptionsUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/GameOptionsUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/GlobalsUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/InfoUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/InfoUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/IniSettingsUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/Lang.ini delete mode 100644 plugins/!NotAdopted/Chess4Net/LocalizerUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.cfg delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dof delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dpr delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/ConnectorUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/ControlUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/GlobalsLocalUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/ManagerUnit.MI.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_addcontact.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_api.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_awaymsg.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clc.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clist.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clui.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_contacts.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_database.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_email.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_file.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_findadd.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_globaldefs.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_helpers.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_history.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_icq.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_ignore.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_langpack.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_message.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_netlib.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_options.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_plugins.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_popup.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protocols.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protomod.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protosvc.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_skin.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_system.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_url.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_userinfo.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_utils.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/newpluginapi.h delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/newpluginapi.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/readme.txt delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/MirandaINC/statusmodes.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/PluginCommonUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/TransmitGameSelectionUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/TransmitGameSelectionUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MI/make.bat delete mode 100644 plugins/!NotAdopted/Chess4Net/ManagerUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/ManagerUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/MessageDialogUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/ModalForm.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/NonMainFormStayOnTopUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/NonRefInterfacedObjectUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/PosBaseChessBoardLayerUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/PosBaseChessBoardUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/PosBaseUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/PromotionUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/PromotionUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/Readme.txt delete mode 100644 plugins/!NotAdopted/Chess4Net/Readme_RU.txt delete mode 100644 plugins/!NotAdopted/Chess4Net/TODO.txt delete mode 100644 plugins/!NotAdopted/Chess4Net/URLVersionQueryUnit.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/URLVersionQueryUnit.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/adler32.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/compress.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/crc32.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/deflate.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/gzio.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/infback.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/inffast.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/inflate.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/inftrees.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/trees.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/uncompr.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/obj/zutil.obj delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/pngextra.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/pngimage.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/pnglang.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/PNGImage/zlibpas.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/ActiveIMM_TLB.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntActnList.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntAxCtrls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntBandActn.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntButtons.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntCheckLst.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntClasses.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntClipBrd.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntComCtrls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntCompilers.inc delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntControls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDB.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBActns.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBClientActns.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBCtrls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBGrids.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBLogDlg.dfm delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDBLogDlg.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntDialogs.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntExtActns.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntExtCtrls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntFileCtrl.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntFormatStrUtils.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntForms.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntGraphics.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntGrids.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntIniFiles.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntIniFilesEx.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntListActns.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntMenus.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntRegistry.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntStdActns.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntStdCtrls.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntSysUtils.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntSystem.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntWideStrUtils.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntWideStrings.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/TntUnicodeControls/Source/TntWindows.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/lib/XIE/XIE.pas delete mode 100644 plugins/!NotAdopted/Chess4Net/res/BITMAPS.zip delete mode 100644 plugins/!NotAdopted/Chess4Net/res/BOARD.bmp delete mode 100644 plugins/!NotAdopted/Chess4Net/res/Delphi/Buttons.res delete mode 100644 plugins/!NotAdopted/Chess4Net/res/Delphi/Controls.res delete mode 100644 plugins/!NotAdopted/Chess4Net/res/Delphi/Extdlgs.res delete mode 100644 plugins/!NotAdopted/Chess4Net/res/MakeRes.bat delete mode 100644 plugins/!NotAdopted/Chess4Net/res/PNG_SET.zip delete mode 100644 plugins/!NotAdopted/SmartAutoAway/AggressiveOptimize.h delete mode 100644 plugins/!NotAdopted/SmartAutoAway/aa_utils.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/autoaway.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/dlgproc.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/globals.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/globals.h delete mode 100644 plugins/!NotAdopted/SmartAutoAway/here.ico delete mode 100644 plugins/!NotAdopted/SmartAutoAway/idle.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/idleMenu.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/idleMessages.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/long.ico delete mode 100644 plugins/!NotAdopted/SmartAutoAway/reconnect.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/reconnect.ico delete mode 100644 plugins/!NotAdopted/SmartAutoAway/resource.h delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saa-res.rc delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saa.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saa.h delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saa.vcxproj delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saa.vcxproj.filters delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saamain.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saani.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saani.dsp delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saani.vcxproj delete mode 100644 plugins/!NotAdopted/SmartAutoAway/saani.vcxproj.filters delete mode 100644 plugins/!NotAdopted/SmartAutoAway/short.ico delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ActionsHandler.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ActionsHandler.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/AggressiveOptimize.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/Crc32Static.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/Crc32Static.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/CrushLog.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/CrushLog.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/AddRuleDlg.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/AddRuleDlg.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/EditReplyDlg.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/EditReplyDlg.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/OptionsDlg.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/OptionsDlg.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/SelectUserDlg.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/SelectUserDlg.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/SettingsDlgHolder.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/GUI/SettingsDlgHolder.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/Interfaces/ISettings.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/Interfaces/ISingletone.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/LuaBridge.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/LuaBridge.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/LuaScript.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/LuaScript.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/MessagesHandler.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/MessagesHandler.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ModeMessHandler.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ModeMessHandler.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/RuleItem.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/RulesStorage.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/RulesStorage.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SAR.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SAR.rc delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SAR.sln delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SAR.vcxproj delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SAR.vcxproj.filters delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SarLuaScript.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SarLuaScript.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ScriptsReader.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/ScriptsReader.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SettingsHandler.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/SettingsHandler.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/comfunc.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/comfunc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/comlogging.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/luainc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ReadMe.txt delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lapi.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lapi.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lauxlib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lauxlib.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lbaselib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lcode.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lcode.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldblib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldebug.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldebug.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldo.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldo.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ldump.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lfunc.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lfunc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lgc.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lgc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/liolib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/llex.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/llex.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/llimits.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lmathlib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lmem.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lmem.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/loadlib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lobject.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lobject.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lopcodes.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lopcodes.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lparser.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lparser.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lstate.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lstate.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lstring.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lstring.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lstrlib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltable.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltable.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltablib.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltests.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltm.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/ltm.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lua.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/luainc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lualib.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lualib.vcxproj delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lualib.vcxproj.filters delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lundump.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lundump.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lvm.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lvm.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lzio.c delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/lzio.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/lualib/targetver.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/resource.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/sar.ico delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/stdafx.cpp delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/stdafx.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlapp.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlcrack.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlctrls.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlctrlw.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlctrlx.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlddx.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atldlgs.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atldwm.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlfind.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlframe.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlgdi.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlmisc.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlprint.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlres.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlresce.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlribbon.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlscrl.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlsplit.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atltheme.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atluser.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlwince.h delete mode 100644 plugins/!NotAdopted/SmartAutoReplier/wtl/atlwinx.h delete mode 100644 plugins/!NotAdopted/VypressChat/Resource.h delete mode 100644 plugins/!NotAdopted/VypressChat/chanlist.c delete mode 100644 plugins/!NotAdopted/VypressChat/chanlist.h delete mode 100644 plugins/!NotAdopted/VypressChat/chatroom.c delete mode 100644 plugins/!NotAdopted/VypressChat/chatroom.h delete mode 100644 plugins/!NotAdopted/VypressChat/contacts.c delete mode 100644 plugins/!NotAdopted/VypressChat/contacts.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/hashtable.c delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/hashtable.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/hashtable_private.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/m_chat.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/memwatch.c delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/memwatch.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/strhashfunc.c delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/strhashfunc.h delete mode 100644 plugins/!NotAdopted/VypressChat/contrib/unicows.dll delete mode 100644 plugins/!NotAdopted/VypressChat/docs/AUTHORS delete mode 100644 plugins/!NotAdopted/VypressChat/docs/COPYING delete mode 100644 plugins/!NotAdopted/VypressChat/docs/CREDITS delete mode 100644 plugins/!NotAdopted/VypressChat/docs/ChangeLog delete mode 100644 plugins/!NotAdopted/VypressChat/docs/NEWS delete mode 100644 plugins/!NotAdopted/VypressChat/docs/README delete mode 100644 plugins/!NotAdopted/VypressChat/docs/TODO delete mode 100644 plugins/!NotAdopted/VypressChat/docs/dbformat.txt delete mode 100644 plugins/!NotAdopted/VypressChat/iconpack.rc delete mode 100644 plugins/!NotAdopted/VypressChat/icons/contact_bell.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_away.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_channel.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_dnd.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_large.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_na.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_offline.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/quickchat_online.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_away.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_channel.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_dnd.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_large.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_na.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_offline.ico delete mode 100644 plugins/!NotAdopted/VypressChat/icons/vypresschat_online.ico delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/COPYING delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/PROTOCOL delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/README delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/link.c delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/link.h delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/makefile delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/message.c delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/message.h delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/protocol-direct-connections delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/uuid.c delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/uuid.h delete mode 100644 plugins/!NotAdopted/VypressChat/libvqproto/vqproto.h delete mode 100644 plugins/!NotAdopted/VypressChat/main.c delete mode 100644 plugins/!NotAdopted/VypressChat/main.h delete mode 100644 plugins/!NotAdopted/VypressChat/makefile delete mode 100644 plugins/!NotAdopted/VypressChat/miranda.h delete mode 100644 plugins/!NotAdopted/VypressChat/msghandler.c delete mode 100644 plugins/!NotAdopted/VypressChat/msghandler.h delete mode 100644 plugins/!NotAdopted/VypressChat/msgloop.c delete mode 100644 plugins/!NotAdopted/VypressChat/msgloop.h delete mode 100644 plugins/!NotAdopted/VypressChat/options.c delete mode 100644 plugins/!NotAdopted/VypressChat/options.h delete mode 100644 plugins/!NotAdopted/VypressChat/pthread.c delete mode 100644 plugins/!NotAdopted/VypressChat/pthread.h delete mode 100644 plugins/!NotAdopted/VypressChat/resource.rc delete mode 100644 plugins/!NotAdopted/VypressChat/service.c delete mode 100644 plugins/!NotAdopted/VypressChat/service.h delete mode 100644 plugins/!NotAdopted/VypressChat/skin.c delete mode 100644 plugins/!NotAdopted/VypressChat/skin.h delete mode 100644 plugins/!NotAdopted/VypressChat/user.c delete mode 100644 plugins/!NotAdopted/VypressChat/user.h delete mode 100644 plugins/!NotAdopted/VypressChat/userlist.c delete mode 100644 plugins/!NotAdopted/VypressChat/userlist.h delete mode 100644 plugins/!NotAdopted/VypressChat/util.c delete mode 100644 plugins/!NotAdopted/VypressChat/util.h delete mode 100644 plugins/!NotAdopted/WinPopup/docs/winpopup_proto_readme.txt delete mode 100644 plugins/!NotAdopted/WinPopup/docs/winpopup_proto_todo.txt delete mode 100644 plugins/!NotAdopted/WinPopup/docs/winpopup_proto_translation.txt delete mode 100644 plugins/!NotAdopted/WinPopup/res/add.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/away.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/bad_name.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/bad_names.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/computer.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/computer_error.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/dnd.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/explore.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/freechat.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/good_name.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/good_names.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/invisible.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/lana.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/na.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/occupied.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/offline.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/online.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/onthephone.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/other_name.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/other_names.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/outtolunch.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/away.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/dnd.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/freechat.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/invisible.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/na.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/occupied.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/onphone.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/overlay/outtolunch.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/winpopup_proto.ico delete mode 100644 plugins/!NotAdopted/WinPopup/res/winpopup_proto.rc delete mode 100644 plugins/!NotAdopted/WinPopup/src/add_dialog.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/add_dialog.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/chat.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/chat.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/dllLoaderMinimal.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/mailslot.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/mailslot.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/md5.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/messagebox.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/messagebox.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/messenger.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/messenger.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/netbios.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/netbios.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/netbios_name.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/netbios_name.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/network.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/network.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/options.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/options.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/processapi.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/processapi.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/resource.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/scanner.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/scanner.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/search.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/search.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/services.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/services.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/smbconst.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/stdafx.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/stdafx.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/user_info.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/user_info.h delete mode 100644 plugins/!NotAdopted/WinPopup/src/winpopup_proto.cpp delete mode 100644 plugins/!NotAdopted/WinPopup/src/winpopup_proto.h delete mode 100644 plugins/!NotAdopted/mDynDNS/changelog.txt delete mode 100644 plugins/!NotAdopted/mDynDNS/dyndns.bmp delete mode 100644 plugins/!NotAdopted/mDynDNS/dyndns.ico delete mode 100644 plugins/!NotAdopted/mDynDNS/mDynDNS.cpp delete mode 100644 plugins/!NotAdopted/mDynDNS/mDynDNS.h delete mode 100644 plugins/!NotAdopted/mDynDNS/mDynDNS_9.vcxproj delete mode 100644 plugins/!NotAdopted/mDynDNS/mDynDNS_9.vcxproj.filters delete mode 100644 plugins/!NotAdopted/mDynDNS/m_mDynDNS.h delete mode 100644 plugins/!NotAdopted/mDynDNS/readme.txt delete mode 100644 plugins/!NotAdopted/mDynDNS/resource.h delete mode 100644 plugins/!NotAdopted/mDynDNS/resource.rc delete mode 100644 plugins/!NotAdopted/mDynDNS/version.h delete mode 100644 plugins/!NotAdopted/mDynDNS/version.rc delete mode 100644 plugins/!NotAdopted/name_day/calendar/calendar.cpp delete mode 100644 plugins/!NotAdopted/name_day/calendar/calendar.h delete mode 100644 plugins/!NotAdopted/name_day/name_day.cpp delete mode 100644 plugins/!NotAdopted/name_day/name_day.ncb delete mode 100644 plugins/!NotAdopted/name_day/name_day.vcproj delete mode 100644 plugins/!NotAdopted/name_day/name_day_core.cpp delete mode 100644 plugins/!NotAdopted/name_day/name_day_core.h delete mode 100644 plugins/!NotAdopted/name_day/namedayplug.rc delete mode 100644 plugins/!NotAdopted/name_day/resource.h delete mode 100644 plugins/!NotAdopted/name_day/resources/baloons.ico delete mode 100644 plugins/!NotAdopted/name_day/resources/icon1.ico delete mode 100644 plugins/!NotAdopted/name_day/resources/icon2.ico delete mode 100644 plugins/!NotAdopted/name_day/resources/icon3.ico delete mode 100644 plugins/!NotAdopted/name_day/static_database.h delete mode 100644 plugins/!NotAdopted/name_day/todo.txt delete mode 100644 plugins/!NotAdopted/name_day/utils/string_tokenizer.h (limited to 'plugins') diff --git a/plugins/!Deprecated/Actman20/actman.dpr b/plugins/!Deprecated/Actman20/actman.dpr deleted file mode 100644 index e2a67414f5..0000000000 --- a/plugins/!Deprecated/Actman20/actman.dpr +++ /dev/null @@ -1,197 +0,0 @@ -{$include compilers.inc} -{$IFDEF COMPILER_16_UP} - {$WEAKLINKRTTI ON} - {.$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} -{$ENDIF} -{$IMAGEBASE $13200000} -library actman; -{%ToDo 'actman.todo'} -{%File 'i_actlow.inc'} -{%File 'm_actions.inc'} -{%File 'm_actman.inc'} -{%File 'i_action.inc'} -{%File 'i_const.inc'} -{%File 'i_contact.inc'} -{%File 'i_opt_dlg2.inc'} -{%File 'i_opt_dlg.inc'} -{%File 'i_visual.inc'} -{%File 'i_options.inc'} -{%File 'i_services.inc'} -{%File 'i_vars.inc'} -{%File 'i_inoutxm.inc'} -{%File 'tasks\i_opt_dlg.inc'} -{%File 'tasks\i_options.inc'} -{%File 'tasks\i_task.inc'} -{%File 'hooks\i_options.inc'} -{%File 'hooks\i_hook.inc'} -{%File 'hooks\i_opt_dlg.inc'} -{%File 'ua\i_opt_dlg.inc'} -{%File 'ua\i_inoutxm.inc'} -{%File 'ua\i_options.inc'} -{%File 'ua\i_ua.inc'} -{%File 'ua\i_uaplaces.inc'} -{%File 'ua\i_uconst.inc'} - -uses - m_api, - Windows, - messages, - commctrl, - common, - wrapper, - io, - dbsettings, - mirutils, - syswin, - question, - mApiCardM, - mircontacts, - global, - sedit, - strans, - ua in 'ua\ua.pas', - hooks in 'hooks\hooks.pas', - scheduler in 'tasks\scheduler.pas'; - -{$r options.res} - -const - PluginName = 'Action Manager'; -var - hHookShutdown, - onloadhook, - opthook:cardinal; - hevaction,hHookChanged,hevinout:cardinal; - hsel,hinout,hfree,hget,hrun,hrung,hrunp:cardinal; - -{$include m_actions.inc} -{$include m_actman.inc} - - -function MirandaPluginInfoEx(mirandaVersion:DWORD):PPLUGININFOEX; cdecl; -begin - result:=@PluginInfo; - PluginInfo.cbSize :=SizeOf(TPLUGININFOEX); - PluginInfo.shortName :='Action manager'; - PluginInfo.version :=$00020001; - PluginInfo.description:='Plugin for manage hotkeys to open contact window, insert text, '+ - 'run program and call services'; - PluginInfo.author :='Awkward'; - PluginInfo.authorEmail:='panda75@bk.ru; awk1975@ya.ru'; - PluginInfo.copyright :='(c) 2007-2012 Awkward'; - PluginInfo.homepage :='http://code.google.com/p/delphi-miranda-plugins/'; - PluginInfo.flags :=UNICODE_AWARE; - PluginInfo.uuid :=MIID_ACTMAN; -end; - -{$include i_const.inc} -{$include i_vars.inc} - -{$include i_action.inc} -{$include i_actlow.inc} -{$include i_options.inc} -{$include i_contact.inc} -{$include i_opt_dlg.inc} -{$include i_inoutxm.inc} -{$include i_services.inc} - -function PreShutdown(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - ptr:pActionLink; -begin - result:=0; - - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.DeInit<>nil then - ptr^.DeInit; - ptr:=ptr^.Next; - end; - - FreeGroups; - - UnhookEvent(hHookShutdown); - UnhookEvent(opthook); - - DestroyHookableEvent(hHookChanged); - DestroyHookableEvent(hevinout); - DestroyHookableEvent(hevaction); - - DestroyServiceFunction(hfree); - DestroyServiceFunction(hget); - DestroyServiceFunction(hrun); - DestroyServiceFunction(hrung); - DestroyServiceFunction(hrunp); - DestroyServiceFunction(hinout); - DestroyServiceFunction(hsel); -end; - -// This function implements autostart action execution after all others plugins loading -function DoAutostart(wParam:WPARAM;lParam:LPARAM):int;cdecl; -begin - Result:=0; - UnhookEvent(onloadhook); - - CallService(MS_ACT_RUNBYNAME,TWPARAM(AutoStartName),0); -end; - -function OnModulesLoaded(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - ptr:pActionLink; -begin - Result:=0; - UnhookEvent(onloadhook); - - LoadGroups; - RegisterIcons; - - opthook :=HookEvent(ME_OPT_INITIALISE ,@OnOptInitialise); - hHookShutdown:=HookEvent(ME_SYSTEM_SHUTDOWN{ME_SYSTEM_OKTOEXIT},@PreShutdown); - NotifyEventHooks(hHookChanged,twparam(ACTM_LOADED),0); - - IsMultiThread:=true; - // Load additional modules - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.Init<>nil then - ptr^.Init; - ptr:=ptr^.Next; - end; - - onloadhook:=HookEvent(ME_SYSTEM_MODULESLOADED,@DoAutostart); -end; - -function Load():int; cdecl; -begin - Result:=0; - Langpack_register; - - hHookChanged:=CreateHookableEvent(ME_ACT_CHANGED); - hevinout :=CreateHookableEvent(ME_ACT_INOUT); - hevaction :=CreateHookableEvent(ME_ACT_ACTION); - - hfree :=CreateServiceFunction(MS_ACT_FREELIST ,@ActFreeList); - hget :=CreateServiceFunction(MS_ACT_GETLIST ,@ActGetList); - hrun :=CreateServiceFunction(MS_ACT_RUNBYID ,@ActRun); - hrung :=CreateServiceFunction(MS_ACT_RUNBYNAME,@ActRunGroup); - hrunp :=CreateServiceFunction(MS_ACT_RUNPARAMS,@ActRunParam); - hinout:=CreateServiceFunction(MS_ACT_INOUT ,@ActInOut); - hsel :=CreateServiceFunction(MS_ACT_SELECT ,@ActSelect); - - onloadhook:=HookEvent(ME_SYSTEM_MODULESLOADED,@OnModulesLoaded); -end; - -function Unload: int; cdecl; -begin - Result:=0; -end; - -exports - Load, Unload, MirandaPluginInfoEx; - -initialization - DisableThreadLibraryCalls(hInstance); - -end. diff --git a/plugins/!Deprecated/Actman20/global.pas b/plugins/!Deprecated/Actman20/global.pas deleted file mode 100644 index 50254b383e..0000000000 --- a/plugins/!Deprecated/Actman20/global.pas +++ /dev/null @@ -1,21 +0,0 @@ -unit global; - -interface - -type - tAddOption = function(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -type - pActionLink=^tActionLink; - tActionLink=record - Next :pActionLink; - Init :procedure; - DeInit :procedure; - AddOption:tAddOption; - end; - -const - ActionLink:pActionLink=nil; - -implementation - -end. \ No newline at end of file diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.pas b/plugins/!Deprecated/Actman20/hooks/hooks.pas deleted file mode 100644 index b3309c327a..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/hooks.pas +++ /dev/null @@ -1,73 +0,0 @@ -unit hooks; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global, mApiCardM; - -{$R hooks.res} - -{$include m_actman.inc} - -{$include i_hook.inc} -{$include i_hconst.inc} -{$include i_options.inc} -{$include i_opt_dlg.inc} - -// ------------ base interface functions ------------- - -procedure Init; -begin - - MessageWindow:=CreateWindowExW(0,'STATIC',nil,0,1,1,1,1,HWND_MESSAGE,0,hInstance,nil); - if MessageWindow<>0 then - SetWindowLongPtrW(MessageWindow,GWL_WNDPROC,LONG_PTR(@HookWndProc)); - - if LoadHooks=0 then - begin - MaxHooks:=8; - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - end - else - SetAllHooks; -end; - -procedure DeInit; -begin - ClearHooks; - if MessageWindow<>0 then - DestroyWindow(MessageWindow); -end; - -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -begin - result:=0; - tmpl:=PAnsiChar(IDD_HOOKS); - proc:=@DlgProcOpt; - name:='Hooks'; -end; - -var - amLink:tActionLink; - -procedure InitLink; -begin - amLink.Next :=ActionLink; - amLink.Init :=@Init; - amLink.DeInit :=@DeInit; - amLink.AddOption:=@AddOptionPage; - ActionLink :=@amLink; -end; - -initialization - InitLink; -end. diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.rc b/plugins/!Deprecated/Actman20/hooks/hooks.rc deleted file mode 100644 index ff351cc94d..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/hooks.rc +++ /dev/null @@ -1,28 +0,0 @@ -#include "i_hconst.inc" - -LANGUAGE 0,0 - -IDD_HOOKS DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "", IDC_HOOKLIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_SHOWSELALWAYS| LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL - 0, 2, 280, 160, WS_EX_CONTROLPARENT - - CONTROL "Help" ,IDC_EVENT_HELP ,"MButtonClass",WS_TABSTOP,284, 2,16,16,$18000000 - CONTROL "Delete",IDC_HOOK_DELETE,"MButtonClass",WS_TABSTOP,284, 96,16,16,$18000000 - - CONTROL "New" ,IDC_HOOK_NEW ,"MButtonClass",WS_TABSTOP,284,126,16,16,$18000000 - CONTROL "Apply" ,IDC_HOOK_APPLY ,"MButtonClass",WS_TABSTOP,284,146,16,16,$18000000 - - CONTROL "Help" ,IDC_EVENT_CHELP,"MButtonClass",WS_TABSTOP,2 ,162,16,16,$18000000 - CTEXT "Event" ,-1 ,18, 165, 121, 11, SS_CENTERIMAGE - COMBOBOX IDC_EVENTLIST , 0, 178, 157, 128, CBS_DROPDOWN | CBS_SORT | WS_VSCROLL - CTEXT "Action",-1 , 0, 195, 157, 11, SS_CENTERIMAGE - COMBOBOX IDC_ACTIONLIST, 0, 208, 157, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - - LTEXT "",IDC_DESCR, 160, 165, 138, 57 -} diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.res b/plugins/!Deprecated/Actman20/hooks/hooks.res deleted file mode 100644 index 1cf202f414..0000000000 Binary files a/plugins/!Deprecated/Actman20/hooks/hooks.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/hooks/i_hconst.inc b/plugins/!Deprecated/Actman20/hooks/i_hconst.inc deleted file mode 100644 index d011278b7e..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_hconst.inc +++ /dev/null @@ -1,20 +0,0 @@ -{resource constants} -const - // dialogs - IDD_HOOKS = 1029; - - // icons - IDI_NEW = 1025; - IDI_DELETE = 1028; - - // Hook editor - IDC_HOOKLIST = 1025; - IDC_ACTIONLIST = 1026; - IDC_EVENTLIST = 1027; - IDC_EVENT_HELP = 1028; - IDC_HOOK_NEW = 1029; - IDC_HOOK_DELETE = 1030; - IDC_HOOK_APPLY = 1031; - IDC_EVENT_CHELP = 1032; - - IDC_DESCR = 1040; diff --git a/plugins/!Deprecated/Actman20/hooks/i_hook.inc b/plugins/!Deprecated/Actman20/hooks/i_hook.inc deleted file mode 100644 index 8b7b487d98..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_hook.inc +++ /dev/null @@ -1,154 +0,0 @@ -{} - -const - HWND_MESSAGE = HWND(-3); -const - ACF_ASSIGNED = $80000000; // hook assigned - ACF_DISABLED = $10000000; // hook disabled -const - WM_RESETHOOKS = WM_USER+1312; - WM_FIRSTHOOK = WM_USER+1313; - WM_LASTHOOK = WM_FIRSTHOOK+1000; - -type - pHookRec = ^tHookRec; - tHookRec = record - flags :dword; - name :PAnsiChar; // name for hook - handle :THANDLE; // handle of hook - descr :PWideChar; // name for list - action :dword; // assigned action - message:uint; // window message for hook - end; - pHookList = ^tHookList; - tHookList = array [0..1023] of tHookRec; - -var - HookList:pHookList = nil; - MaxHooks:integer = 0; - MessageWindow:HWND = 0; - -function GetNextMessage:uint; -var - i:uint; - j:integer; -begin - result:=0; - for i:=WM_FIRSTHOOK to WM_LASTHOOK do - begin - for j:=0 to MaxHooks-1 do - begin - with HookList^[j] do - begin - if ((flags and ACF_ASSIGNED)<>0) and (i=message) then - begin - inc(result); - break; - end; - end; - end; - if result=0 then - begin - result:=i; - break; - end - else - result:=0; - end; -end; - -procedure SetAllHooks; -var - i:integer; - msg:cardinal; -begin - msg:=WM_FIRSTHOOK; - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - message:=msg; - if (flags and ACF_ASSIGNED)<>0 then - begin - if (flags and ACF_DISABLED)<>0 then - begin - if handle<>0 then - begin - UnhookEvent(handle); - handle:=0; - end; - end - else - begin - if handle<>0 then - UnhookEvent(handle); - handle:=HookEventMessage(name,MessageWindow,message); - end; - end; - end; - inc(msg); - end; -end; - -function GetHookByMessage(msg:uint):pHookRec; -var - i:integer; -begin - result:=nil; - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if ((flags and ACF_ASSIGNED)<>0) and (msg=message) then - begin - result:=@HookList[i]; - break; - end; - end; - end; -end; - -function HookWndProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - p:pHookRec; - ap:tAct_Param; -begin - result:=0; - case hMessage of - WM_FIRSTHOOK..WM_LASTHOOK: begin - p:=GetHookByMessage(hMessage); - if p<>nil then - begin - ap.flags :=ACTP_WAIT; - ap.Id :=p^.action; - ap.wParam:=wParam; - ap.lParam:=lParam; - result:=CallService(MS_ACT_RUNPARAMS,0,TLPARAM(@ap)); - end; - end; - else - result:=DefWindowProc(Dialog,hMessage,wParam,lParam); - end; -end; - -procedure ClearHooks; -var - i:integer; -begin - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - mFreeMem(descr); - mFreeMem(name); - if handle<>0 then - UnhookEvent(handle); - end; - end; - end; - FreeMem(HookList); - MaxHooks:=0; -end; - diff --git a/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc deleted file mode 100644 index d208ec4384..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc +++ /dev/null @@ -1,410 +0,0 @@ -{} -const - settings:HWND = 0; -var - OldTableProc:pointer; - onactchanged:THANDLE; - ApiCard:tmApiCard; - -const - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_APPLY :PAnsiChar = 'ACI_Apply'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - -procedure CheckHookList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; - arr:array [0..127] of WideChar; -begin - ClearHooks; - - li.mask :=LVIF_TEXT or LVIF_PARAM; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - - MaxHooks:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - flags:=ACF_ASSIGNED; - li.iItem :=i; - li.iSubItem:=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - StrDupW(descr,arr); - action:=li.lParam; - li.iSubItem:=1; - SendMessageA(wnd,LVM_GETITEMA,0,LPARAM(@li)); - StrDup(name,pAnsiChar(@arr)); - - if ListView_GetCheckState(wnd,i)=0 then // disabled - flags:=flags or ACF_DISABLED; - end; - end; -end; - -procedure FillHookList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; -begin - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=action; - li.pszText :=descr; - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - li.mask :=LVIF_TEXT; - li.iSubItem:=1; - li.pszText :=pWideChar(name); - SendMessageA(wnd,LVM_SETITEMA,0,LPARAM(@li)); - ListView_SetCheckState(wnd,li.iItem,(flags and ACF_DISABLED)=0); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -procedure FillActionList(wnd:HWND); -var - ptr,ptr1:pChain; - i,cnt:integer; -begin - cnt:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SendMessage(wnd,CB_RESETCONTENT,0,0); - if cnt>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to cnt-1 do - begin - CB_AddStrDataW(wnd,ptr^.descr,ptr^.id); - inc(ptr); - end; - - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -begin - result:=0; - if settings<>0 then - FillActionList(GetDlgItem(settings,IDC_ACTIONLIST)); -end; - -procedure ShowHookData(Dialog:HWND; item:integer=-1); -var - li:LV_ITEM; - arr:array [0..127] of WideChar; - wnd:HWND; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) - else - li.iItem:=item; - - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem :=1; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - arr[0]:=#0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - if arr[0]<>#0 then - SetDlgItemTextW(Dialog,IDC_EVENTLIST,arr); - CB_SelectData(GetDlgItem(Dialog,IDC_ACTIONLIST),li.lParam); -end; - -procedure SaveHookData(Dialog:HWND; item:integer=-1); -var - wnd:HWND; - li:LV_ITEM; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) - else - li.iItem:=item; - li.mask :=LVIF_PARAM; - li.lParam :=CB_GetData(GetDlgItem(Dialog,IDC_ACTIONLIST)); - li.iSubItem :=0; - SendMessageW(wnd,LVM_SETITEMW,0,LPARAM(@li)); - li.mask :=LVIF_TEXT; - li.iSubItem :=1; - li.pszText :=GetDlgText(Dialog,IDC_EVENTLIST); - SendMessageW(wnd,LVM_SETITEMW,0,LPARAM(@li)); - mFreeMem(li.pszText); -end; - -function NewHook(Dialog:HWND;item:integer=-1):integer; -var - wnd:HWND; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - li.mask :=LVIF_TEXT; - if item<0 then - li.iItem :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1 - else - li.iItem :=item; - li.iSubItem:=0; - li.pszText :=TranslateW('hook sample'); - result:=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); -end; - -function DeleteHook(Dialog:HWND):integer; -var - wnd:HWND; - i:integer; -begin - result:=0; - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -function NewHKTableProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_HOOK_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_HOOK_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldTableProc,Dialog,hMessage,wParam,lParam); -end; - -procedure SetIcons(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=dialog; - ti.hinst :=hInstance; - - ti.lpszText:=TranslateW('Help'); - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_HELP); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_CHELP); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_APPLY); - ti.lpszText:=TranslateW('Apply'); - SetButtonIcon(ti.uId,ACI_APPLY); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - i:integer; - tmp:pAnsiChar; - buf:array [0..255] of AnsiChar; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - ApiCard.Free; - - UnhookEvent(onactchanged); - settings:=0; - end; - - WM_INITDIALOG: begin - ApiCard:=CreateEventCard(Dialog); - - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - FillChar(lv,SizeOf(lv),0); - lv.mask :=LVCF_TEXT or LVCF_WIDTH; - lv.pszText:=TranslateW('Description'); - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,TLPARAM(@lv)); - lv.pszText:=TranslateW('Name'); - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,1,TLPARAM(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,1,LVSCW_AUTOSIZE_USEHEADER); -// SendMessage (wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage (wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,0, - LVS_EX_FULLROWSELECT or LVS_EX_CHECKBOXES or LVS_EX_GRIDLINES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - OldTableProc:=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,LONG_PTR(@NewHKTableProc))); - TranslateDialogDefault(Dialog); - - SetIcons(Dialog); - - ApiCard.FillList(GetDlgItem(Dialog,IDC_EVENTLIST)); - FillActionList(GetDlgItem(Dialog,IDC_ACTIONLIST)); - FillHookList(wnd); - ShowHookData(Dialog); - - onactchanged:=HookEvent(ME_ACT_CHANGED,@ActListChange); - settings:=Dialog; - end; - - WM_HELP: begin - ApiCard.Show; - end; - - WM_RESETHOOKS:begin - FillHookList(GetDlgItem(Dialog,IDC_HOOKLIST)); - end; - - WM_COMMAND: begin - case wParam shr 16 of - EN_CHANGE, - CBN_EDITCHANGE, - CBN_SELCHANGE: begin - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - - case wParam shr 16 of - CBN_EDITCHANGE: begin - case loword(wParam) of - IDC_EVENTLIST: begin - tmp :=GetDlgText(Dialog,IDC_EVENTLIST,true); - ApiCard.Event:=tmp; - mFreeMem(tmp); - tmp:=ApiCard.Description; - SetDlgItemTextA(Dialog,IDC_DESCR,Translate(tmp)); - mFreeMem(tmp); - end; - end; - end; - - CBN_SELENDOK: begin - case loword(wParam) of - IDC_EVENTLIST: begin - i:=SendMessage(LOWORD(lParam),CB_GETCURSEL,0,0); - SendMessageA(LOWORD(lParam),CB_GETLBTEXT,i,TLPARAM(@buf)); - ApiCard.Event:=@buf; - tmp:=ApiCard.Description; - SetDlgItemTextA(Dialog,IDC_DESCR,Translate(tmp)); - mFreeMem(tmp); - end; - end; - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - BN_CLICKED: begin - case loword(wParam) of - IDC_EVENT_CHELP: ; - IDC_EVENT_HELP : ; - IDC_HOOK_NEW : NewHook(Dialog); - IDC_HOOK_DELETE: DeleteHook(Dialog); - IDC_HOOK_APPLY : SaveHookData(Dialog); - end; - end; - end; - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveHookData(Dialog); - CheckHookList(GetDlgItem(Dialog,IDC_HOOKLIST)); - SetAllHooks; - SaveHooks; - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ENDLABELEDITW: begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - item.mask:=LVIF_TEXT; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,TLPARAM(@item)); - end; - end; - result:=1; - end; - - LVN_ITEMCHANGED: begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - SaveHookData(Dialog,PNMLISTVIEW(lParam)^.iItem) - else if i<0 then // new focus - begin - ShowHookData(Dialog,PNMLISTVIEW(lParam)^.iItem); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/hooks/i_options.inc b/plugins/!Deprecated/Actman20/hooks/i_options.inc deleted file mode 100644 index 4404cfbde6..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_options.inc +++ /dev/null @@ -1,71 +0,0 @@ -{} -const - opt_hook :PAnsiChar = 'Hook'; - opt_hooks :PAnsiChar = 'Hooks'; - opt_count :PAnsiChar = 'numhooks'; - opt_flags :PAnsiChar = 'flags'; - opt_descr :PAnsiChar = 'descr'; - opt_name :PAnsiChar = 'name'; - opt_action:PAnsiChar = 'action'; - -procedure SaveHooks; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i,amount:integer; -begin - DBDeleteGroup(0,DBBranch,opt_hooks); - amount:=0; - p1:=StrCopyE(section,opt_hooks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_hook); - for i:=0 to MaxHooks-1 do - begin - if (HookList[i].flags and ACF_ASSIGNED)=0 then - continue; - - p:=StrEnd(IntToStr(p1,amount)); - p^:='/'; inc(p); - - with HookList[i] do - begin - StrCopy(p,opt_flags ); DBWriteDWord (0,DBBranch,section,flags); - StrCopy(p,opt_descr ); DBWriteUnicode(0,DBBranch,section,descr); - StrCopy(p,opt_name ); DBWriteString (0,DBBranch,section,name); - StrCopy(p,opt_action); DBWriteDWord (0,DBBranch,section,action); - end; - inc(amount); - end; - DBWriteByte(0,DBBranch,opt_count,amount); -end; - -function LoadHooks:integer; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i:integer; -begin - MaxHooks:=DBReadByte(0,DBBranch,opt_count); - result:=MaxHooks; - if MaxHooks>0 then - begin - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - p1:=StrCopyE(section,opt_hooks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_hook); - for i:=0 to MaxHooks-1 do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); - - with HookList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_descr ); descr :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_name ); name :=DBReadString (0,DBBranch,section); - StrCopy(p,opt_action); action:=DBReadDWord (0,DBBranch,section); - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_action.inc b/plugins/!Deprecated/Actman20/i_action.inc deleted file mode 100644 index 01b02d1b2f..0000000000 --- a/plugins/!Deprecated/Actman20/i_action.inc +++ /dev/null @@ -1,951 +0,0 @@ -{Action code} -const - rtInt = 1; - rtWide = 2; - -const - SST_BYTE = 0; - SST_WORD = 1; - SST_DWORD = 2; - SST_QWORD = 3; - SST_NATIVE = 4; - SST_BARR = 5; - SST_WARR = 6; - SST_BPTR = 7; - SST_WPTR = 8; - SST_LAST = 9; - SST_PARAM = 10; - -const - protostr = ''; - -const - BufferSize = 8192; - -function DBRW(act:pHKAction;hContact:THANDLE;avalue:uint_ptr; - last,restype:uint_ptr):uint_ptr; -var - buf ,buf1 :array [0..127] of AnsiChar; - sbuf:array [0..127] of AnsiChar; - module,setting:pAnsiChar; - tmp:pWideChar; - tmpa,tmpa1:pAnsichar; -begin - module :=act^.dbmodule; - setting:=act^.dbsetting; - - with act^ do - begin - if restype=rtWide then - FastWideToAnsiBuf(pWideChar(last),@sbuf) - else - IntToStr(sbuf,last); - - if (flags2 and ACF2_RW_MVAR)<>0 then module :=ParseVarString(module ,hContact,sbuf); - if (flags2 and ACF2_RW_SVAR)<>0 then setting:=ParseVarString(setting,hContact,sbuf); - StrCopy(buf,module); - StrReplace(buf,protostr,GetContactProtoAcc(hContact)); - - StrReplace(buf,'',sbuf); - StrCopy(buf1,setting); - StrReplace(buf1,'',sbuf); - - if (flags2 and ACF2_RW_TVAR)<>0 then - pWideChar(avalue):=ParseVarString(pWideChar(avalue),hContact,@sbuf); - - if ((flags and ACF_DBUTEXT)=0) and - ((flags2 and ACF2_RW_TVAR)<>0) then - begin - tmp:=pWideChar(avalue); - avalue:=StrToInt(tmp); - mFreeMem(tmp); - end; - - if (flags and ACF_DBDELETE)<>0 then - begin - result:=DBDeleteSetting(hContact,buf,setting); - end - else if (flags and ACF_DBWRITE)<>0 then - begin - if (flags and ACF_DBANSI)=ACF_DBANSI then - begin - WideToAnsi(pWideChar(avalue),tmpa,MirandaCP); - DBWriteString(hContact,buf,buf1,tmpa); - mFreeMem(tmpa); - if (flags2 and ACF2_RW_TVAR)=0 then - StrDupW(pWideChar(avalue),pWideChar(avalue)); - end - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then DBWriteByte(hContact,buf,setting,avalue) - else if (flags and ACF_DBWORD )=ACF_DBWORD then DBWriteWord(hContact,buf,setting,avalue) - else if (flags and ACF_DBUTEXT)=ACF_DBUTEXT then - begin - DBWriteUnicode(hContact,buf,buf1,pWideChar(avalue)); - if (flags2 and ACF2_RW_TVAR)=0 then - StrDupW(pWideChar(avalue),pWideChar(avalue)); - end - else DBWriteDWord(hContact,buf,setting,avalue); - - result:=avalue; - end - else - begin - if (flags and ACF_DBANSI)=ACF_DBANSI then - begin - WideToAnsi(pWideChar(avalue),tmpa1,MirandaCP); - tmpa:=DBReadString(hContact,buf,buf1,tmpa1); - AnsiToWide(tmpa,PWideChar(result),MirandaCP); - mFreeMem(tmpa1); - mFreeMem(tmpa); - - if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(avalue); - end - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then result:=DBReadByte(hContact,buf,setting,avalue) - else if (flags and ACF_DBWORD )=ACF_DBWORD then result:=DBReadWord(hContact,buf,setting,avalue) - else if (flags and ACF_DBUTEXT)=ACF_DBUTEXT then - begin - result:=uint_ptr(DBReadUnicode(hContact,buf,buf1,pWideChar(avalue))); - if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(avalue); - end - else result:=DBReadDWord(hContact,buf,setting,avalue); - - end; - if (flags2 and ACF2_RW_MVAR)<>0 then mFreeMem(module); - if (flags2 and ACF2_RW_SVAR)<>0 then mFreeMem(setting); - end; -end; - -function OpenContact(hContact:THANDLE):THANDLE; -begin - ShowContactDialog(hContact); -{ - if CallService(MS_DB_CONTACT_IS,hContact,0)<>0 then - begin - if ServiceExists(MS_MSG_CONVERS)<>0 then - begin - CallService(MS_MSG_CONVERS,hContact,0) - end - else - CallService(MS_MSG_SENDMESSAGE,hContact,0) - end; -} - result:=hContact; -end; - -function replany(var str:pWideChar;aparam:LPARAM;alast:pWideChar):boolean; -var - buf:array [0..31] of WideChar; - tmp:pWideChar; -begin - if StrScanW(str,'<')<>nil then - begin - result:=true; - mGetMem(tmp,2048); - StrCopyW(tmp,str); - StrReplaceW(tmp,'',IntToStr(buf,aparam)); - StrReplaceW(tmp,'' ,alast); - - str:=tmp; - end - else - result:=false; -end; - -function RunProgram(act:pHKAction;aparam:LPARAM;alast:pWideChar):dword; -var - tmp,tmpp,lpath:PWideChar; - replPrg ,replArg :PWideChar; - replPrg1,replArg1:PWideChar; - pd:LPARAM; - vars1,vars2,prgs,argss:boolean; -begin - with act^ do - begin - - replPrg:=prgname; - prgs :=replany(replPrg,aparam,alast); - - replArg:=args; - argss :=replany(replArg,aparam,alast); - - if ((flags2 and ACF2_PRG_PRG)<>0) or - ((flags2 and ACF2_PRG_ARG)<>0) then - begin - pd:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - if (pd=0) and (CallService(MS_DB_CONTACT_IS,aparam,0)<>0) then - pd:=aparam; - end; - - if (flags2 and ACF2_PRG_ARG)<>0 then - begin - vars2:=true; - tmp :=ParseVarString(replArg,pd,alast); - end - else - begin - vars2:=false; - tmp :=replArg; - end; - - if (flags2 and ACF2_PRG_PRG)<>0 then - begin - vars1:=true; - tmpp :=ParseVarString(replPrg,pd,alast); - end - else - begin - vars1:=false; - tmpp:=replPrg; - end; - - if StrScanW(tmpp,'%')<>nil then - begin - mGetMem(replPrg1,8192*SizeOf(WideChar)); - ExpandEnvironmentStringsW(tmpp,replPrg1,8191); - if vars1 then mFreeMem(tmpp); - if prgs then mFreeMem(replPrg); - tmpp :=replPrg1; - prgs :=false; - vars1:=true; - end; - if StrScanW(tmp,'%')<>nil then - begin - mGetMem(replArg1,8192*SizeOf(WideChar)); - ExpandEnvironmentStringsW(tmp,replArg1,8191); - if vars2 then mFreeMem(tmp); - if argss then mFreeMem(replArg); - tmp :=replArg1; - argss:=false; - vars2:=true; - end; - - if (flags and ACF_CURPATH)=0 then - lpath:=ExtractW(tmpp,false) - else - lpath:=nil; - - if (flags and ACF_PRTHREAD)<>0 then - time:=0 - else if time=0 then - time:=INFINITE; - result:=ExecuteWaitW(tmpp,tmp,lpath,show,time,@pd); - - if vars2 then mFreeMem(tmp); - if vars1 then mFreeMem(tmpp); - - if prgs then mFreeMem(replPrg); - if argss then mFreeMem(replArg); - end; - mFreeMem(lpath); -end; -{ -function MakeStructure(txt:pWideChar;aparam,alast:LPARAM; - var code,alen:integer;var ofs:int_ptr; restype:integer=rtInt):pointer; forward; -procedure FreeStructure(var struct;descr:pWideChar); forward; -} -function RunService(act:pHKAction;LastResult,Param:LPARAM;var restype:dword):uint_ptr; -var - res:int_ptr; - buf:array [0..255] of AnsiChar; - cc:integer; - lservice:pAnsiChar; - lwparam,llparam:LPARAM; - tmp1,tmp2:pWideChar; - code,len:integer; -begin - result:=uint_ptr(-1); - - lservice:=act^.service; - lwparam :=act^.wparam; - llparam :=act^.lparam; - with act^ do - begin - if (flags2 and ACF2_SRV_SRVC)<>0 then - lservice:=ParseVarString(lservice,Param); - - StrCopy(buf,lservice); - if StrPos(lservice,protostr)<>nil then - if CallService(MS_DB_CONTACT_IS,Param,0)=0 then - begin - if (flags2 and ACF2_SRV_SRVC)<>0 then - mFreeMem(lservice); - exit - end - else - StrReplace(buf,protostr,GetContactProtoAcc(Param)); - - if ServiceExists(buf)<>0 then - begin - - cc:=-1; - - tmp1:=nil; - tmp2:=nil; - code:=-1; - if (flags and ACF_WSTRUCT)<>0 then - begin - lwparam:=twParam(MakeStructure(pAnsiChar(lwparam),Param,LastResult,restype)) - end - else if (flags and ACF_WPARAM)<>0 then - begin - lwparam:=Param; - end - else if (flags and ACF_WRESULT)<>0 then - begin - lwparam:=LastResult; - end - else if (flags and ACF_WCURRENT)<>0 then - begin - cc:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - lwparam:=cc; - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - begin - if (flags and ACF_WPARNUM)=0 then - begin - if (flags and ACF_WUNICODE)=0 then - lwparam:=uint_ptr(ParseVarString(pAnsiChar(lwparam),Param)) - else - lwparam:=uint_ptr(ParseVarString(pWideChar(lwparam),Param)) - end - else - begin - tmp1:=ParseVarString(pWideChar(lwparam),Param); - lwparam:=StrToInt(tmp1); - end; - end; - - if (flags and ACF_LSTRUCT)<>0 then - begin - llparam:=tlParam(MakeStructure(pAnsiChar(llparam),Param,LastResult,restype)) - end - else if (flags and ACF_LPARAM)<>0 then - begin - llparam:=Param; - end - else if (flags and ACF_LRESULT)<>0 then - begin - llparam:=LastResult; - end - else if (flags and ACF_LCURRENT)<>0 then - begin - if cc<>-1 then - llparam:=cc - else - llparam:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - begin - if (flags and ACF_LUNICODE)=0 then - llparam:=uint_ptr(ParseVarString(pAnsiChar(llparam),Param)) - else - llparam:=uint_ptr(ParseVarString(pWideChar(llparam),Param)) - end - else - begin - tmp2:=ParseVarString(pWideChar(llparam),Param); - llparam:=StrToInt(tmp2); - end; - end; - - res:=CallServiceSync(buf,lwparam,llparam); - result:=res; - if (flags and ACF_STRING)<>0 then - begin -//!! delete old or not? - if (flags and ACF_UNICODE)=0 then - begin - AnsiToWide(pAnsiChar(res),pWideChar(result),MirandaCP); - if (flags2 and ACF2_FREEMEM)<>0 then - mFreeMem(pAnsiChar(res)); - end - else if (flags2 and ACF2_FREEMEM)=0 then - StrDupW(pWideChar(result),pWideChar(res)); - restype:=rtWide; - end - else if (flags and ACF_STRUCT)=0 then - restype:=rtInt; - - if (flags and ACF_WSTRUCT)<>0 then - begin - if (flags and ACF_STRUCT)<>0 then - begin - result:=GetStructureResult(lwparam,@code,@len); - case code of - SST_LAST: begin - result:=LastResult; - end; - SST_PARAM: begin - result:=Param; - restype:=rtInt; - end; - SST_BYTE,SST_WORD,SST_DWORD, - SST_QWORD,SST_NATIVE: begin - restype:=rtInt; - end; - SST_BARR: begin -{ - mGetMem(pAnsiChar(res),len+1); - StrCopy(pAnsiChar(res),pAnsiChar(ofs),len); -} - StrDup(pAnsiChar(res),pAnsiChar(result),len); - AnsiToWide(pAnsiChar(res),PWideChar(result),MirandaCP); - mFreeMem(pAnsiChar(res)); - restype:=rtWide; - end; - SST_WARR: begin -{ - mGetMem(pWideChar(result),len+2); - len:= len div 2; - StrCopyW(pWideChar(result),pWideChar(ofs),len); -} - StrDupW(pWideChar(result),pWideChar(result),len); - restype:=rtWide; - end; - SST_BPTR: begin - AnsiToWide(pAnsiChar(result),pWideChar(result),MirandaCP); - restype:=rtWide; - end; - SST_WPTR: begin - StrDupW(pWideChar(result),pWideChar(result)); - restype:=rtWide; - end; - end; - end; - code:=SST_UNKNOWN; - FreeStructure(lwparam); - res:=result; - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - mFreeMem(pAnsiChar(lwparam)) - else - mFreeMem(tmp1); - end; - - if (flags and ACF_LSTRUCT)<>0 then - begin - if (flags and ACF_STRUCT)<>0 then - begin - result:=GetStructureResult(llparam,@code,@len); - case code of - SST_LAST: begin - result:=LastResult; - end; - SST_PARAM: begin - result:=Param; - restype:=rtInt; - end; - SST_BYTE,SST_WORD,SST_DWORD, - SST_QWORD,SST_NATIVE: begin - restype:=rtInt; - end; - SST_BARR: begin -{ - mGetMem(pAnsiChar(res),len+1); - StrCopy(pAnsiChar(res),pAnsiChar(ofs),len); -} - StrDup(pAnsiChar(res),pAnsiChar(result),len); - AnsiToWide(pAnsiChar(res),PWideChar(result),MirandaCP); - mFreeMem(pAnsiChar(res)); - restype:=rtWide; - end; - SST_WARR: begin -{ - mGetMem(pWideChar(result),len+2); - len:= len div 2; - StrCopyW(pWideChar(result),pWideChar(ofs),len); -} - StrDupW(pWideChar(result),pWideChar(result),len); - restype:=rtWide; - end; - SST_BPTR: begin - AnsiToWide(pAnsiChar(result),pWideChar(result),MirandaCP); - restype:=rtWide; - end; - SST_WPTR: begin - StrDupW(pWideChar(result),pWideChar(result)); - restype:=rtWide; - end; - end; - end; - code:=SST_UNKNOWN; - FreeStructure(llparam); - res:=result; - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - mFreeMem(pAnsiChar(llparam)) - else - mFreeMem(tmp2); - end; - - if (flags and (ACF_INSERT or ACF_MESSAGE or ACF_POPUP))<>0 then - begin - if restype=rtInt then - begin - if (flags and ACF_HEX)<>0 then - IntToHex(pWideChar(@buf),result) - else if ((flags and ACF_SIGNED)<>0) and (res<0) then - begin - pWideChar(@buf)[0]:='-'; - IntToStr(PWideChar(@buf)+1,-result); - end - else - IntToStr(pWideChar(@buf),result); - res:=int_ptr(@buf); - end - else - res:=result; - end; - - if (flags and ACF_INSERT )<>0 then SendMessageW(WaitFocusedWndChild(GetForegroundwindow){GetFocus},EM_REPLACESEL,0,res); - if (flags and ACF_POPUP )<>0 then ShowPopupW(PWideChar(res)); - if (flags and ACF_MESSAGE)<>0 then MessageBoxW(0,PWideChar(res),'',0); - - end; - if (flags2 and ACF2_SRV_SRVC)<>0 then - mFreeMem(lservice); - end; -end; - -procedure PasteClipboard(dst:pWideChar); -var - p:pWideChar; - fh:tHandle; -begin - if StrPosW(dst,'^v')<>nil then - begin -{ - p:=PasteFromClipboard(false); - StrReplaceW(dst,'^v',p); - mFreeMem(p); -} - if OpenClipboard(0) then - begin - fh:=GetClipboardData(cf_UnicodeText); - p:=GlobalLock(fh); - StrReplaceW(dst,'^v',p); - GlobalUnlock(fh); - CloseClipboard; - end - end -end; - -type - trec = record - text:PAnsiChar; - one, two:integer; - end; - -function GetFileString(fname:PAnsiChar;linenum:integer):pWideChar; -var - pc,FileBuf,CurLine:PAnsiChar; - f:THANDLE; - NumLines, j:integer; -begin - f:=Reset(fname); - if f<>INVALID_HANDLE_VALUE then - begin - j:=FileSize(f); - mGetMem(FileBuf,j+1); - BlockRead(f,FileBuf^,j); - while (FileBuf+j)^<' ' do dec(j); - (FileBuf+j+1)^:=#0; - CloseHandle(f); - pc:=FileBuf; - CurLine:=pc; - NumLines:=1; - while pc^<>#0 do // count number of lines - begin - if pc^=#13 then - begin - if linenum=NumLines then - break; - inc(pc); - if pc^=#10 then - inc(pc); - inc(NumLines); - CurLine:=pc; - end - else - inc(pc); - end; - if (linenum>NumLines) or (linenum=0) then //ls - lastline - else if linenum<0 then - begin - randomize; - linenum:=random(NumLines)+1; - pc:=FileBuf; - NumLines:=1; - CurLine:=pc; - repeat - if (pc^=#13) or (pc^=#0) then - begin - if linenum=NumLines then - break; - if pc^<>#0 then - begin - inc(pc); - if pc^=#10 then - inc(pc); - end; - inc(NumLines); - CurLine:=pc; - end - else - inc(pc); - until false; - end; - pc^:=#0; - StrReplace(CurLine,'\n',#13#10); - StrReplace(CurLine,'\t',#09); - AnsiToWide(CurLine,result,CP_ACP); - mFreeMem(FileBuf); - end - else - result:=nil; -end; - -function Split(buf:PWideChar;macro:PWideChar;var r:trec):integer; -type - tconv = packed record - case boolean of - false: (res:int); - true: (lo,hi:word); - end; -var - i:integer; - p,pp,lp:pWideChar; - ls:array [0..511] of WideChar; -begin - result:=0; - i:=StrIndexW(buf,macro); - if i>0 then - begin - dec(i); - p:=buf+i+StrLenW(macro); - pp:=p; - while (p^<>#0) and (p^<>')') do - inc(p); - ls[0]:=#0; - if p^<>#0 then // correct syntax - begin - lp:=ls; - while (pp<>p) and (pp^<>',') do // filename - begin - lp^:=pp^; - inc(lp); - inc(pp); - end; - lp^:=#0; - WideToAnsi(ls,r.text,MirandaCP); - r.one:=-1; - r.two:=-1; - if pp^=',' then - begin - inc(pp); - r.one:=StrToInt(pp); - while (pp<>p) and (pp^<>',') do inc(pp); - if pp^=',' then - begin - inc(pp); - r.two:=StrToInt(pp); - end; - end; - tconv(result).lo:=p-buf-i+1; // length - tconv(result).hi:=i; // position - end; - end; -end; - -procedure PasteFileString(dst:pWideChar); -var - i:integer; - lp:pWideChar; - buf:array [0..511] of AnsiChar; - r:trec; -begin - repeat - i:=Split(dst,'^f(',r); - if i>0 then - begin - StrDeleteW(dst,i shr 16,loword(i)); - ConvertFileName(r.text,buf); - lp:=GetFileString(@buf,r.one); - if lp<>nil then - begin - StrInsertW(lp,dst,i shr 16); - mFreeMem(lp); - end; - end - else - break; - until false; -end; - -procedure PasteSelectedText(wnd:hwnd;dst:pWideChar); -var - sel:integer; - buf:pWideChar; -begin - if (StrPosW(dst,'^s')<>nil) and (wnd<>0) then - begin - sel:=SendMessageW(wnd,EM_GETSEL,0,0); - if loword(sel)=(sel shr 16) then - StrReplaceW(dst,'^s',nil) - else - begin - buf:=GetDlgText(wnd,false); -//!! next line was active. why? -// SendMessageW(wnd,WM_GETTEXT,4095,dword(@buf)); - buf[sel shr 16]:=#0; - StrReplaceW(dst,'^s',buf+loword(sel)); - mFreeMem(buf); - end; - end; -end; - -function CheckAuto(dst:pWideChar):bool; -var - p:PWideChar; -begin - result:=false; - if dst<>nil then - begin - p:=StrEndW(dst); - if (p-dst)>2 then - begin - dec(p,2); - if (p^='^') and ((p+1)^='a') then - begin - result:=true; - p^:=#0; - end; - end; - end; -end; - -function InsertText(act:pHKAction;param:LPARAM;last:pWideChar):uint_ptr; -var - tmp:PWideChar; - blob,p:PAnsiChar; - w:PWideChar; - hContact:THANDLE; - wnd:HWND; - fexist,autosend:bool; - dbei:TDBEVENTINFO; - i:cardinal; - cp:integer; - fh:THANDLE; - lstr:pWideChar; - llen:integer; - buf:array [0..31] of WideChar; - b,b1:array [0..MAX_PATH] of AnsiChar; -begin - result:=uint_ptr(last); - with act^ do - begin - if (flags and ACF_CLIPBRD)<>0 then - begin - if (flags and ACF_COPYTO)<>0 then - CopyToClipboard(last,false) - else - result:=uint_ptr(PasteFromClipboard(false)); - exit; - end; - - hContact:=0; - if (flags and ACF_FILE)=0 then - begin - wnd:=WaitFocusedWndChild(GetForegroundWindow){GetFocus}; - if wnd<>0 then - hContact:=WndToContact(wnd); - end - else - wnd:=0; - - if hContact=0 then - begin - if CallService(MS_DB_CONTACT_IS,param,0)<>0 then - hContact:=param; - end; - - if (flags and (ACF_FILE or ACF_FAPPEND or ACF_FWRITE))<>ACF_FILE then - begin - mGetMem (w ,BufferSize*SizeOf(WideChar)); - FillChar(w^,BufferSize*SizeOf(WideChar),0); - StrCopyW(w,text); - PasteClipboard(w); // ^v - PasteFileString(w); // ^f - PasteSelectedText(wnd,w); // ^s - autosend:=CheckAuto(w); // ^a - StrReplaceW(w,'^l',last); // ^l - StrReplaceW(w,'^h',IntToHex(buf,StrToInt(last))); // ^h - StrReplaceW(w,'^t',#9); // ^t - StrReplaceW(w,'^e',nil); // ^e - end - else - autosend:=false; - - if (flags2 and ACF2_TXT_TEXT)<>0 then - begin - tmp:=ParseVarString(w,hContact,last); - mFreeMem(w); - w:=tmp; - end; - - if (flags and ACF_FILE)<>0 then - begin - cp:=0; - if (flags and ACF_ANSI)=ACF_ANSI then cp:=1 - else if (flags and (ACF_UTF8 or ACF_SIGN))=ACF_UTF8 then cp:=2 - else if (flags and (ACF_UTF8 or ACF_SIGN))=ACF_SIGN then cp:=4 - else if (flags and (ACF_UTF8 or ACF_SIGN))=(ACF_UTF8 or ACF_SIGN) then cp:=3; - - if (flags2 and ACF2_TXT_FILE)<>0 then - tmp:=ParseVarString(tfile,hContact,last) - else - tmp:=tfile; - - if (flags and (ACF_FAPPEND or ACF_FWRITE))<>0 then - begin - case cp of - 1: begin - llen:=StrLen(WideToAnsi(w,pAnsiChar(lstr),MirandaCP)); - end; - 2,3: begin - llen:=StrLen(WideToUTF8(w,pAnsiChar(lstr))); - end; - else - lstr:=w; - llen:=StrLenW(lstr)*SizeOf(WideChar); - end; - end - else - llen:=0; - - fexist:=FileExists(tmp); - if fexist and ((flags and ACF_FAPPEND)<>0) then - begin - fh:=Append(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - BlockWrite(fh,lstr^,llen); - end; - if (cp<>0) and (cp<>4) then - mFreeMem(lstr); - end - else if ((flags and ACF_FWRITE)<>0) or - (not fexist and ((flags and ACF_FAPPEND)<>0)) then - begin - fh:=ReWrite(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - if cp=3 then - begin - i:=SIGN_UTF8; - BlockWrite(fh,i,3); // UTF8 sign - end - else if cp=4 then - begin - i:=SIGN_UNICODE; - BlockWrite(fh,i,2); // UTF16 sign - end; - - BlockWrite(fh,lstr^,llen); - if (cp<>0) and (cp<>4) then - mFreeMem(lstr); - end; - end - else - begin - if StrPosW(tmp,'://')<>nil then // remote - begin - GetTempPathA(MAX_PATH,b); - GetTempFileNameA(b,'wat',GetCurrentTime,b1); - GetFile(FastWideToAnsiBuf(tmp,b),b1); - if tmp<>tfile then - mFreeMem(tmp); - FastAnsiToWide(b1,tmp); - end - else - b1[0]:=#0; - fh:=Reset(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - i:=GetFSize(tmp); - mGetMem (w ,i+SizeOf(WideChar)); - FillChar(w^,i+SizeOf(WideChar),0); - BlockRead(fh,w^,i); - if (flags and ACF_ANSI)<>0 then - begin - AnsiToWide(pAnsiChar(w),lstr,MirandaCP); - mFreeMem(w); - w:=lstr; - end - else if (flags and ACF_UTF8)<>0 then - begin - if (pdword(w)^ and $FFFFFF)=SIGN_UTF8 then - p:=pAnsiChar(w)+3 - else - p:=pAnsiChar(w); - mFreeMem(w); - UTF8ToWide(p,w); - end - else - ChangeUnicode(w); - end; - if b1[0]<>#0 then - DeleteFileA(b1); - end; - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - CloseHandle(fh); - if tmp<>tfile then - mFreeMem(tmp); - end; - - result:=uint_ptr(w); - - if (flags and ACF_FILE)=0 then - begin - if autosend then - begin - if hContact=0 then exit; - p:=GetContactProtoAcc(hContact); - cp:=DBReadDWord(hContact,'Tab_SRMsg','ANSIcodepage',MirandaCP); - if DBReadByte(hContact,p,'ChatRoom',0)<>1 then - begin - i:=WideToCombo(w,blob,cp); - // if CallContactService(hContact,PSS_MESSAGEW,0,dword(blob))= - // ACKRESULT_FAILED then - CallContactService(hContact,PSS_MESSAGE,PREF_UNICODE,tlparam(blob)); - dbei.cbSize :=sizeof(dbei); - dbei.cbBlob :=i; - dbei.pBlob :=pByte(blob); - dbei.eventType:=EVENTTYPE_MESSAGE; - dbei.timestamp:=GetCurrentTime; - dbei.szModule :=p; - dbei.flags :=DBEF_SENT; - db_event_add(hContact, @dbei); - mFreeMem(blob); - end - else - SendToChat(hContact,w); - end - else - begin - GetWindowThreadProcessId(GetForegroundWindow,@i); - if (i=GetCurrentProcessId) and (wnd<>0) then - SendMessageW(wnd,EM_REPLACESEL,1,tlparam(w)) - else - SendString(0,w); - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_actlow.inc b/plugins/!Deprecated/Actman20/i_actlow.inc deleted file mode 100644 index a620471398..0000000000 --- a/plugins/!Deprecated/Actman20/i_actlow.inc +++ /dev/null @@ -1,836 +0,0 @@ -{Lowlevel actions work: clone, create, delete, execute} - -type - tAdvExpr = (aeNot,aeAdd,aeSub,aeMul,aeDiv,aeMod,aeAnd,aeOr,aeXor,aeSet); - -function GetActNameById(id:dword):PWideChar; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (id=GroupList^[i].id) then - begin - result:=GroupList^[i].descr; - exit; - end; - end; - result:=nil; -end; - -function GetActIdByName(name:PWideChar):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (StrCmpW(name,GroupList^[i].descr)=0) then - begin - result:=GroupList^[i].id; - exit; - end; - end; - result:=0; -end; - -function GetActIdxByName(name:PWideChar):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (StrCmpW(name,GroupList^[i].descr)=0) then - begin - result:=i; - exit; - end; - end; - result:=-1; -end; - -function GetActIdxById(id:dword):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (id=GroupList^[i].id) then - begin - result:=i; - exit; - end; - end; - result:=-1; -end; - -function FreeAction(act:pHKAction):dword; -begin - result:=act^.next; - with act^ do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - mFreeMem(descr); - case actionType of - ACT_SERVICE: begin - mFreeMem(service); - if (flags and (ACF_WPARNUM or ACF_WRESULT or ACF_WPARAM))=0 then - mFreeMem(pointer(wparam)); - if ((flags and ACF_WPARNUM)<>0) and ((flags2 and ACF2_SRV_WPAR)<>0) then - mFreeMem(pointer(wparam)); - if (flags and (ACF_LPARNUM or ACF_LRESULT or ACF_LPARAM))=0 then - mFreeMem(pointer(lparam)); - if ((flags and ACF_LPARNUM)<>0) and ((flags2 and ACF2_SRV_LPAR)<>0) then - mFreeMem(pointer(lparam)); - end; - ACT_PROGRAM: begin - mFreeMem(prgname); - mFreeMem(args); - end; - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)=0 then - begin - mFreeMem(text); - if (flags and ACF_FILE)<>0 then - mFreeMem(tfile); - end; - end; - ACT_ADVANCE: begin - mFreeMem(varval); - if (action and ADV_ACT_POST)=ADV_ACT_JUMP then - mFreeMem(operval); - end; - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - mFreeMem(actname); - end; - ACT_RW: begin - mFreeMem(dbmodule); - mFreeMem(dbsetting); - if (flags and ACF_DBUTEXT)<>0 then - mFreeMem(dbvalue) - else if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(dbvalue); - end; - ACT_MESSAGE: begin - mFreeMem(msgtitle); - mFreeMem(msgtext); - end; - end; - end; - end; - FillChar(act^,SizeOf(act^),0); -end; - -procedure FreeActions(list:pActList;idx:cardinal); -begin - while idx<>0 do - idx:=FreeAction(@list^[idx]); -end; - -procedure FreeActionsContinued(act:pHKAction); -var - act_org:pHKAction; -begin - act_org:=act; - repeat - FreeAction(act); - if act^.next<>0 then - inc(act) - else - break; - until false; - FreeMem(act_org); -end; - -procedure DestroyActions(act:pActList;count:integer); -var - pact:pHKAction; -begin - pact:=@act^; - while count>0 do - begin - FreeAction(pact); - inc(pact); - dec(count); - end; - FreeMem(act); -end; - -procedure CloneAction(dst,src:pHKAction); -begin - move(src^,dst^,SizeOf(tHKAction)); - with dst^ do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - StrDupW(descr,descr); - case actionType of - ACT_SERVICE: begin - StrDup(service,service); - if (flags and ACF_WPARNUM)=0 then - begin - if (flags and ACF_WSTRUCT)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)) - else if (flags and ACF_WUNICODE)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)) - else - StrDup(PAnsiChar(wparam),PAnsiChar(wparam)); - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)); - - if (flags and ACF_LPARNUM)=0 then - begin - if (flags and ACF_LSTRUCT)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)) - else if (flags and ACF_LUNICODE)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)) - else - StrDup(PAnsiChar(lparam),PAnsiChar(lparam)); - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)); - end; - - ACT_PROGRAM: begin - StrDupW(prgname,prgname); - StrDupW(args,args); - end; - - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)=0 then - begin - StrDupW(text,text); - if (flags and ACF_FILE)<>0 then - StrDupW(tfile,tfile); - end; - end; - - ACT_ADVANCE: begin - StrDupW(varval,varval); - if (action and ADV_ACT_POST)=ADV_ACT_JUMP then - StrDupW(operval,operval); - end; - - ACT_CHAIN: begin - if (flags or ACF_BYNAME)<>0 then - StrDupW(actname,actname); - end; - - ACT_RW: begin - StrDup(dbmodule,dbmodule); - StrDup(dbsetting,dbsetting); - if (flags and ACF_DBUTEXT)<>0 then - StrDupW(pWideChar(dbvalue),pWideChar(dbvalue)) - else if (flags2 and ACF2_RW_TVAR)<>0 then - StrDupW(pWideChar(dbvalue),pWideChar(dbvalue)); - end; - - ACT_MESSAGE: begin - StrDupW(msgtitle,msgtitle); - StrDupW(msgtext,msgtext); - end; - end; - end; - end; -end; - -function CloneActions(idx:cardinal):pointer; -var - i,count:integer; - aList:pHKAction; -begin - count:=0; - i:=idx; - while i<>0 do - begin - inc(count); - i:=ActionList^[i].next; - end; - if count>0 then - begin - GetMem(result,count*SizeOf(tHKAction)); - aList:=result; - i:=idx; - while i<>0 do - begin - CloneAction(aList,@ActionList^[i]); - i:=ActionList^[i].next; - inc(aList); - end; - end - else - result:=nil; -end; - -function DoAction(action:dword;aparam:LPARAM;var last:uint_ptr;restype:dword):integer; -var - tmpact,act,act_org:pHKAction; - val,prelast:uint_ptr; - b:boolean; - i:integer; - lContact:THANDLE; - buf:array [0..31] of WideChar; - tmpc,tmpc1,tmpc2,tmpcv1,tmpcv2:pWideChar; - oldrestype:integer; -begin - if action<>0 then - begin - act:=CloneActions(action); - // if act=nil then exit; - act_org :=act; - oldrestype:=restype; - prelast :=0; - repeat - if (act^.flags and ACF_DISABLED)=0 then - begin - - if (oldrestype=rtWide) and (last<>prelast) then - mFreeMem(prelast); - oldrestype:=restype; - prelast:=last; - - with act^ do - begin - case actionType of - - ACT_CONTACT: begin - if (flags and ACF_KEEPONLY)=0 then - last:=OpenContact(contact) - else - last:=contact; - - restype:=rtInt; - end; - - ACT_SERVICE: begin - last:=RunService(act,last,aparam,restype); -{ - if (flags and ACF_STRING)<>0 then - begin - if (flags and ACF_UNICODE)=0 then - begin - val:=last; - AnsiToWide(pAnsiChar(val),pWideChar(last),MirandaCP); - mFreeMem(val); - end - else - StrDupW(pWideChar(last),pWideChar(last)); - restype:=rtWide; - end - else - restype:=rtInt; -} - end; - - ACT_PROGRAM: begin - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - last:=RunProgram(act,aparam,pWideChar(last)); - - restype:=rtInt; - end; - - ACT_TEXT: begin - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - last:=InsertText(act,aparam,pWideChar(last)); - - restype:=rtWide; - end; - - ACT_ADVANCE: begin - if restype=rtWide then - val:=StrToInt(pWideChar(last)) - else - val:=last; - - case condition and not ADV_COND_NOT of - ADV_COND_EQ: b:=val=value; - ADV_COND_GT: b:=integer(val)>integer(value); - ADV_COND_LT: b:=integer(val)0) and (condition<>ADV_COND_NOP) then - b:=not b; - if b then - begin - case action and ADV_ACTION of - - ADV_ACT_MATH: begin - case tAdvExpr(oper) of - aeNot: last:= not val; - aeAdd: last:= integer(val) + integer(mathval); - aeSub: last:= integer(val) - integer(mathval); - aeMul: last:= integer(val) * integer(mathval); - aeDiv: last:= integer(val) div integer(mathval); - aeMod: last:= val mod mathval; - aeAnd: last:= val and mathval; - aeOr : last:= val or mathval; - aeXor: last:= val xor mathval; - aeSet: last:= mathval; - end; - restype:=rtInt; - end; - - ADV_ACT_VARS: begin -//!! need to clear 'Last' if was string? - if (varval<>NIL) and (varval^<>#0) then - begin - if CallService(MS_DB_CONTACT_IS,aparam,0)<>0 then - lContact:=aparam - else - lContact:=0; - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - pWideChar(last):=ParseVarString(varval,lContact,pWideChar(last)); - - if (flags and ACF_VARASINT)<>0 then - begin - tmpc:=pWideChar(last); - last:=StrToInt(tmpc); - mFreeMem(tmpc); - restype:=rtInt; - end - else - restype:=rtWide; - end; - end; - - end; - case action and ADV_ACT_POST of - - ADV_ACT_JUMP : begin - tmpact:=act_org; - repeat - if StrCmpW(tmpact^.descr,operval)=0 then - begin - act:=tmpact; - tmpact:=nil; - break; - end; - if tmpact^.next=0 then - break; - inc(tmpact); - until false; - if tmpact=nil then continue; - end; - - ADV_ACT_BREAK: break; - end; - end; - end;//last:=MakeAdvanced(act,last); - - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - i:=GetActIdxByName(actname) - else - i:=GetActIdxById(id); - - if i>=0 then - begin - restype:=DoAction(GroupList^[i].firstAction,aparam,last,restype); - // cleared in called Action - oldrestype:=rtInt; - prelast:=0; - end - else - begin - restype:=rtInt; - last:=0; - end; - end; - - ACT_RW: begin - if (flags and ACF_CURRENT)<>0 then i:=0 - else if (flags and ACF_PARAM )<>0 then i:=aparam - else if (flags and ACF_RESULT )<>0 then i:=last - else - i:=dbcontact; - if (flags and ACF_LAST)=0 then - val:=dbvalue - else - begin - val:=last; - if (flags and ACF_DBUTEXT)<>0 then - begin - if restype=rtInt then - val:=uint_ptr(IntToStr(buf,val)); - end - else - begin - if restype=rtWide then - val:=StrToInt(pWideChar(val)); - end; - end; - - last:=DBRW(act,i,val,last,restype); - - if (flags and ACF_DBUTEXT)<>0 then - restype:=rtWide - else - restype:=rtInt; - end; - - ACT_MESSAGE: begin - if restype=rtWide then - tmpc:=PWideChar(last) - else - begin - IntToStr(buf,last); - tmpc:=@buf; - end; - - if StrPosW(msgtitle,'')<>nil then - begin - mGetMem(tmpc1,8192); - StrCopyW(tmpc1,msgtitle); - StrReplaceW(tmpc1,'',tmpc); - end - else - tmpc1:=msgtitle; - if StrPosW(msgtext,'')<>nil then - begin - mGetMem(tmpc2,8192); - StrCopyW(tmpc2,msgtext); - StrReplaceW(tmpc2,'',tmpc); - end - else - tmpc2:=msgtext; - - if (flags2 and ACF2_MSG_TTL)<>0 then - tmpcv1:=ParseVarString(tmpc1,aparam,tmpc) - else - tmpcv1:=tmpc1; - if (flags2 and ACF2_MSG_TXT)<>0 then - tmpcv2:=ParseVarString(tmpc2,aparam,tmpc) - else - tmpcv2:=tmpc2; - - i:=MessageBoxW(0,tmpcv2,tmpcv1,boxopts); - - if (flags and ACF_MSG_KEEP)=0 then - begin - restype:=rtInt; - last:=i - end; - - if tmpcv1<>tmpc1 then mFreeMem(tmpcv1); - if tmpcv2<>tmpc2 then mFreeMem(tmpcv2); - if tmpc1 <>msgtitle then mFreeMem(tmpc1); - if tmpc2 <>msgtext then mFreeMem(tmpc2); - end; - - else - last:=0; - end; - end; - end; - if (act_org^.flags and ACF_DOBREAK)<>0 then - break; - if act^.next=0 then - break; - inc(act); - until false; - FreeActionsContinued(act_org); - if (oldrestype=rtWide) and (last<>prelast) then - mFreeMem(prelast); - end; - result:=restype; -end; - -type - pActStartData = ^tActStartData; - tActStartData = record - event :THANDLE; - action:dword; - param :LPARAM; - group :pHKRecord; - last :LPARAM; - end; - -procedure ThDoAction(arg:pActStartData); cdecl; -var - ltmp:uint_ptr; - res:integer; -begin - ltmp:=arg^.last; - - if arg^.group<>nil then - begin - NotifyEventHooks(hevaction,arg^.group.id,0); // started - arg^.group.flags:=arg^.group.flags or ACF_USEDNOW; - end; - - res:=DoAction(arg^.action,arg^.param,ltmp,rtInt); - - if arg^.group<>nil then - begin - arg^.group.flags:=arg^.group.flags and not ACF_USEDNOW; - NotifyEventHooks(hevaction,arg^.group.id,1); // finished - end; - - if arg^.event<>0 then - begin - arg^.last:=ltmp; - SetEvent(arg^.event); - end - else if res=rtWide then - begin - mFreeMem(ltmp); - end; -end; - -function ActionStarterWait(action:dword;aparam:LPARAM=0;group:pHKRecord=nil;alast:LPARAM=0):LPARAM; -var - tmp:pActStartData; -begin - mGetMem(tmp,SizeOf(tActStartData)); - tmp^.action:=action; - tmp^.param :=aparam; - tmp^.group :=group; - tmp^.last :=alast; - tmp^.event :=CreateEvent(nil,FALSE,FALSE,nil); - mir_forkthread(@ThDoAction,tmp); - WaitForSingleObjectEx(tmp.event,INFINITE,true); - CloseHandle(tmp^.event); - result:=tmp^.last; -end; - -function ActionStarter(action:dword;aparam:dword=0;group:pHKRecord=nil;alast:dword=0):integer; -var - tmp:pActStartData; -begin - result:=0; - mGetMem(tmp,SizeOf(tActStartData)); - tmp^.action:=action; - tmp^.param :=aparam; - tmp^.group :=group; - tmp^.last :=alast; - tmp^.event :=0; - mir_forkthread(@ThDoAction,tmp); -end; - -procedure ReallocActionList(var ActList:pActList;var MaxAct:cardinal); -var - i:cardinal; - tmp:pActList; -begin - i:=(MaxAct+ActListPage)*SizeOf(tHKAction); - GetMem(tmp,i); - FillChar(tmp^,i,0); - if MaxAct>0 then - begin - move(ActList^,tmp^,MaxAct*SizeOf(tHKAction)); - FreeMem(ActList); - end; - ActList:=tmp; - inc(MaxAct,ActListPage); -end; - -function NewAction(var ActList:pActList;var MaxAct:cardinal):cardinal; -var - i:cardinal; - pAct:pHKAction; -begin - i:=1; - pAct:=@ActList^; - inc(pAct); // skip zero - while i0 then - begin - move(HKList^,tmp^,MaxHK*SizeOf(tHKRecord)); - FreeMem(HKList); - end; - HKList:=tmp; - inc(MaxHK,HKListPage); -end; - -procedure InitGroupValue(pHK:pHKRecord); -var -// time:TSYSTEMTIME; - tmp:int64; -begin - with pHK^ do - begin - StrDupW(descr,NoDescription); -{ - GetSystemTime(time); - id :=time.wSecond+time.wMinute*60+time.wHour*3600+time.wMilliseconds*86400; -} - QueryPerformanceCounter(tmp); - id :=tmp and $FFFFFFFF; - firstAction:=0; - active :=nil; - flags :=ACF_ASSIGNED; - end; -end; - -// Root,Size,MaxCount(Page,flag) -function NewGroup(var HKList:pHKList;var MaxHK:cardinal):cardinal; -var - i:cardinal; - pHK:pHKRecord; -begin - i:=0; - pHK:=@HKList^; - while i0 then - begin - flags:=0; - mFreeMem(descr); - FreeActions(ActionList,firstAction); - end; - end; -end; - -procedure FreeGroups; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - FreeGroup(i); - end; - MaxGroups:=0; - FreeMem(GroupList); - FreeMem(ActionList); - GroupList:=nil; - ActionList:=nil; -end; - -procedure DestroyGroups(HKList:pHKList;count:integer); -var - pHK:pHKRecord; -begin - pHK:=@HKList^; - while count>0 do - begin - if (pHK^.flags and ACF_ASSIGNED)<>0 then - mFreeMem(pHK^.descr); - inc(pHK); - dec(count); - end; - FreeMem(HKList); -end; - -function CloneActionList:pActList; -var - src,dst:pHKAction; - i:integer; -begin - i:=MaxActions; - GetMem(result,i*SizeOf(tHKAction)); - src:=@ActionList^; - dst:=@result^; - while i>0 do - begin - CloneAction(dst,src); - inc(src); - inc(dst); - dec(i); - end; -end; - -procedure CloneGroup(dst,src:pHKRecord); -begin - move(src^,dst^,SizeOf(tHKRecord)); - if (src^.flags and ACF_ASSIGNED)<>0 then - StrDupW(dst^.descr,src^.descr); -end; - -function CloneGroupList:pHKList; -var - src,dst:pHKRecord; - i:integer; -begin - i:=MaxGroups; - GetMem(result,i*SizeOf(tHKRecord)); - src:=@GroupList^; - dst:=@result^; - while i>0 do - begin - CloneGroup(dst,src); - inc(src); - inc(dst); - dec(i); - end; -end; - -function ActSelect(wParam:WPARAM;lParam:LPARAM):int;cdecl; -begin - if (wParam and ACCF_ID)<>0 then - result:=GetActIdxById(lParam) - else - result:=GetActIdxByName(pWideChar(lParam)); - if result=-1 then - exit; - with GroupList^[result] do - begin - if (wParam and ACCF_CLEAR)<>0 then - flags:=flags and not (uint_ptr(wParam) and ACCF_FLAGS) - else - flags:=flags or (uint_ptr(wParam) and ACCF_FLAGS); - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_const.inc b/plugins/!Deprecated/Actman20/i_const.inc deleted file mode 100644 index 3e9950414f..0000000000 --- a/plugins/!Deprecated/Actman20/i_const.inc +++ /dev/null @@ -1,219 +0,0 @@ -{resource constants} -const - // dialogs - IDD_ACTION = 1025; - IDD_STRUCTURE = 1027; - IDD_ASK = 1028; - - // icons - IDI_NEW = 1025; - IDI_UP = 1026; - IDI_DOWN = 1027; - IDI_DELETE = 1028; - IDI_RELOAD = 1029; - IDI_CONTACT = 1030; - IDI_SERVICE = 1031; - IDI_PROGRAM = 1032; - IDI_INSERT = 1033; - IDI_ADVANCE = 1034; - IDI_CHAIN = 1035; - IDI_RW = 1036; - IDI_TEST = 1037; - IDI_EXPORT = 1038; - IDI_IMPORT = 1039; - IDI_MESSAGE = 1040; - IDI_VAR_CHECKED = 1041; - IDI_VAR_UNCHECKED = 1042; - IDI_FORMAT = 1043; - IDI_APPLY = 1044; - - // Structure editor - IDC_DATA_FULL = 2001; - IDC_DATA_TYPE = 2002; - IDC_DATA_EDIT = 2005; - IDC_DATA_LEN = 2006; - IDC_DATA_HELP = 2007; - - IDC_DATA_NEW = 2008; - IDC_DATA_DELETE = 2009; - IDC_DATA_UP = 2010; - IDC_DATA_DOWN = 2011; - IDC_DATA_CHANGE = 2012; - IDC_DATA_VARS = 2013; - IDC_DATA_PACKED = 2014; - - // Action page -// IDC_RESET = 2001; - - IDC_ACTION_TYPE = 2005; - IDC_STAT_ACTION = 2006; - - IDC_ACTION_LIST = 2007; - IDC_ACTION_NEW = 2008; - IDC_ACTION_DELETE = 2009; - IDC_ACTION_UP = 2010; - IDC_ACTION_DOWN = 2011; - - IDC_ACTION_GROUP = 2012; - IDC_GROUP_NEW = 2015; - IDC_GROUP_RELOAD = 2016; - IDC_GROUP_DELETE = 2017; - IDC_GROUP_TEST = 2018; - IDC_GROUP_UP = 2019; - IDC_GROUP_DOWN = 2020; - IDC_GROUP_EXPORT = 2021; - IDC_GROUP_IMPORT = 2022; - IDC_ACTION_HELP = 2023; - - IDC_STAT_CONTACT = 2140; - IDC_CONTACTLIST = 2141; - IDC_CNT_KEEP = 2142; - IDC_STAT_FORMAT = 2143; - IDC_EDIT_FORMAT = 2144; - IDC_CNT_FILTER = 2145; - IDC_CNT_APPLY = 2146; - IDC_STAT_FHELP = 2147; - - IDC_STAT_WPAR1 = 2150; - IDC_STAT_LPAR1 = 2151; - IDC_STAT_WPAR = 2152; - IDC_STAT_LPAR = 2153; - IDC_FLAG_WPAR = 2154; - IDC_FLAG_LPAR = 2155; - IDC_EDIT_WPAR = 2156; - IDC_EDIT_LPAR = 2157; - IDC_STAT_SERVICE = 2158; - IDC_EDIT_SERVICE = 2159; - IDC_WSTRUCT = 2160; - IDC_LSTRUCT = 2161; - - IDC_RES_POPUP = 2251; - IDC_RES_MESSAGE = 2252; - IDC_RES_INSERT = 2253; - IDC_SRV_RESSTAT = 2254; - IDC_SRV_RESULT = 2255; - IDC_RES_FREEMEM = 2256; - IDC_RES_UNICODE = 2257; - IDC_RES_SIGNED = 2258; - IDC_RES_GROUP = 2259; - - IDC_FLAG_MINIMIZE = 2350; - IDC_STAT_PRGPATH = 2351; - IDC_EDIT_PRGPATH = 2352; - IDC_PROGRAM = 2353; - IDC_STAT_PRGARGS = 2354; - IDC_EDIT_PRGARGS = 2355; - IDC_EDIT_PROCTIME = 2356; - IDC_PROCESS_GROUP = 2357; - IDC_STAT_PROCTIME = 2358; - IDC_PRSTART_GROUP = 2359; - IDC_FLAG_NORMAL = 2360; - IDC_FLAG_HIDDEN = 2361; - IDC_FLAG_MAXIMIZE = 2362; - IDC_FLAG_CURPATH = 2363; - IDC_FLAG_PARALLEL = 2364; - IDC_FLAG_CONTINUE = 2365; - IDC_HLP_FVARS = 2366; - - IDC_HLP_VARS = 2451; - IDC_STAT_INSERT = 2452; - IDC_EDIT_INSERT = 2453; - - IDC_FLAG_CLIP = 2454; - IDC_FLAG_MESSAGE = 2455; - IDC_CLIP_COPYTO = 2456; - IDC_CLIP_PASTE = 2457; - IDC_CLIP_GROUP = 2458; - IDC_FILE_ENC = 2459; -// IDC_CLIP_ANSI = 2459; -// IDC_CLIP_WIDE = 2460; - IDC_FLAG_FILE = 2461; - IDC_FILE_PATH = 2462; - IDC_FILE_FILEBTN = 2463; - IDC_FILE_READ = 2464; - IDC_FILE_WRITE = 2465; - IDC_FILE_APPEND = 2466; - IDC_FILE_GROUP = 2467; - - IDC_STAT_GROUPS = 2500; - IDC_GROUP_LIST = 2501; - - IDC_CONDITION = 2505; - IDC_FLAG_GT = 2506; - IDC_FLAG_LT = 2507; - IDC_FLAG_EQ = 2508; - IDC_FLAG_NOP = 2509; - IDC_FLAG_NOT = 2510; - - IDC_OPERATION = 2511; - IDC_FLAG_BREAK = 2512; - IDC_FLAG_JUMP = 2513; - IDC_FLAG_ANOP = 2514; - IDC_ADV_VALUE = 2515; - IDC_STAT_VAL = 2516; - - IDC_FLAG_MATH = 2519; - IDC_ADV_OPER = 2520; - IDC_ADV_VAL1 = 2521; - IDC_ADV_VAL2 = 2522; - IDC_FLAG_VARS = 2523; - IDC_ADV_VARS = 2524; - IDC_ADV_HVARS = 2526; - IDC_ADV_ASINT = 2527; - - IDC_RW_READ = 2601; - IDC_RW_WRITE = 2602; - IDC_RW_DELETE = 2603; - IDC_RW_STATM = 2605; - IDC_RW_MODULE = 2606; - IDC_RW_STATS = 2607; - IDC_RW_SETTING = 2608; - IDC_RW_TEXT = 2609; - IDC_RW_VALUE = 2610; - IDC_RW_DATATYPE = 2611; - IDC_RW_CURRENT = 2614; - IDC_RW_PARAM = 2615; - IDC_RW_MANUAL = 2616; - IDC_RW_OPER = 2617; - IDC_RW_VAL = 2618; - IDC_RW_RESULT = 2619; - IDC_RW_LAST = 2620; - - IDC_MSG_STAT1 = 2701; - IDC_MSG_STAT2 = 2702; - IDC_MSG_TITLE = 2703; - IDC_MSG_TEXT = 2704; - IDC_MSG_BTNS = 2705; - IDC_MSGB_ARI = 2706; - IDC_MSGB_OK = 2707; - IDC_MSGB_OC = 2708; - IDC_MSGB_RC = 2709; - IDC_MSGB_YN = 2710; - IDC_MSGB_YNC = 2711; - IDC_MSG_ICONS = 2712; - IDC_MSGI_NONE = 2713; - IDC_MSGI_WARN = 2714; - IDC_MSGI_INFO = 2715; - IDC_MSGI_QUEST = 2716; - IDC_MSGI_ERROR = 2717; - IDC_MSG_KEEP = 2718; - -// Variables buttons - IDC_SRV_WPAR = 3000; - IDC_SRV_LPAR = 3001; - IDC_SRV_SRVC = 3002; - IDC_PRG_PRG = 3003; - IDC_PRG_ARG = 3004; - IDC_TXT_FILE = 3005; - IDC_TXT_TEXT = 3006; - IDC_RW_MVAR = 3008; - IDC_RW_SVAR = 3009; - IDC_RW_TVAR = 3010; - IDC_MSG_TTL = 3011; - IDC_MSG_TXT = 3012; - -// Question - IDC_ASK = 1025; - IDC_YESALL = 1026; - IDC_NOALL = 1027; - IDC_APPEND = 1028; diff --git a/plugins/!Deprecated/Actman20/i_contact.inc b/plugins/!Deprecated/Actman20/i_contact.inc deleted file mode 100644 index c73df31435..0000000000 --- a/plugins/!Deprecated/Actman20/i_contact.inc +++ /dev/null @@ -1,113 +0,0 @@ -{hkContact} -const - defformat = '%name% - %uid% (%account%:%group%)'; - -procedure FillContactList(list:hwnd; filter:boolean=true;format:pWideChar=nil); -var - hContact:THANDLE; - buf:array [0..511] of WideChar; - buf1:array [0..63] of WideChar; - p:PWideChar; - uid:pAnsiChar; - ldbv:TDBVARIANT; - acc:pAnsiChar; - lName, - lGroup, - lAccount, - lUID:boolean; -begin - if format=nil then format:=defformat; - - SendMessage(list,CB_RESETCONTENT,0,0); - hContact:=db_find_first(); - - lName :=StrPosW(format,'%name%')<>nil; - lGroup :=StrPosW(format,'%group%')<>nil; - lAccount:=StrPosW(format,'%account%')<>nil; - lUID :=StrPosW(format,'%uid%')<>nil; - - while hContact<>0 do - begin - if ((not filter) and ((IsContactActive(hContact)+1)>=0)) or // + disabled (not deleted) - (filter and (IsContactActive(hContact) >=0)) then - begin - StrCopyW(buf,format); - if lName then - StrReplaceW(buf,'%name%', - PWideChar(CallService(MS_CLIST_GETCONTACTDISPLAYNAME,hContact,GCDNF_UNICODE))); - - if lGroup then - begin - p:=DBReadUnicode(hContact,strCList,'Group',nil); - StrReplaceW(buf,'%group%',p); - mFreeMem(p); - end; - - if lAccount then - begin - acc:=GetContactProtoAcc(hContact); - StrReplaceW(buf,'%account%',FastAnsiToWideBuf(acc,buf1)); - end - else - acc:=nil; - - if lUID then - begin - if acc=nil then - acc:=GetContactProtoAcc(hContact); - if IsChat(hContact) then - begin - p:=DBReadUnicode(hContact,acc,'ChatRoomID'); - StrReplaceW(buf,'%uid%',p); - mFreeMem(p); - end - else - begin - uid:=pAnsiChar(CallProtoService(acc,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0)); - if uid <> pAnsiChar(CALLSERVICE_NOTFOUND) then - begin - if DBReadSetting(hContact,acc,uid,@ldbv)=0 then - begin - case ldbv._type of - DBVT_DELETED: p:='[deleted]'; - DBVT_BYTE : p:=IntToStr(buf1,ldbv.bVal); - DBVT_WORD : p:=IntToStr(buf1,ldbv.wVal); - DBVT_DWORD : p:=IntToStr(buf1,ldbv.dVal); - DBVT_UTF8 : UTF8ToWide(ldbv.szVal.A,p); - DBVT_ASCIIZ : AnsiToWide(ldbv.szVal.A,p,MirandaCP); - DBVT_WCHAR : p:=ldbv.szVal.W; - DBVT_BLOB : p:='blob'; - end; - StrReplaceW(buf,'%uid%',p); - if ldbv._type in [DBVT_UTF8,DBVT_ASCIIZ] then - mFreeMem(p); - DBFreeVariant(@ldbv); - end; - end; - StrReplaceW(buf,'%uid%',nil); - end; - end; - - SendMessage(list,CB_SETITEMDATA, - SendMessageW(list,CB_ADDSTRING,0,tlparam(@buf)), - hContact); - end; - hContact:=db_find_next(hContact); - end; -end; - -function FindContact(list:hwnd;contact:THANDLE):integer; -var - i,j:integer; -begin - result:=0; - j:=SendMessage(list,CB_GETCOUNT,0,0); - for i:=0 to j-1 do - begin - if THANDLE(SendMessage(list,CB_GETITEMDATA,i,0))=contact then - begin - result:=i; - break; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_dlglists.inc b/plugins/!Deprecated/Actman20/i_dlglists.inc deleted file mode 100644 index 52808e63cd..0000000000 --- a/plugins/!Deprecated/Actman20/i_dlglists.inc +++ /dev/null @@ -1,75 +0,0 @@ -{Dialog list filling} - procedure InsertString(wnd:HWND;num:dword;str:PAnsiChar); - var - buf:array [0..127] of WideChar; - begin - SendMessageW(wnd,CB_SETITEMDATA, - SendMessageW(wnd,CB_ADDSTRING,0, - lparam(TranslateW(FastAnsiToWideBuf(str,buf)))), - num); - { - SendMessageW(wnd,CB_INSERTSTRING,num, - LPARAM(TranslateW(FastAnsiToWideBuf(str,buf)))); - } - end; - - procedure MakeMathOperList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,cardinal(aeNot),'! not'); - InsertString(wnd,cardinal(aeAdd),'+ add'); - InsertString(wnd,cardinal(aeSub),'- sub'); - InsertString(wnd,cardinal(aeMul),'* mul'); - InsertString(wnd,cardinal(aeDiv),'/ div'); - InsertString(wnd,cardinal(aeMod),'% mod'); - InsertString(wnd,cardinal(aeAnd),'& and'); - InsertString(wnd,cardinal(aeOr ),'| or'); - InsertString(wnd,cardinal(aeXor),'^ xor'); - InsertString(wnd,cardinal(aeSet),'= set'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeParamTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,ptNumber ,'number value'); - InsertString(wnd,ptString ,'ANSI string'); - InsertString(wnd,ptUnicode,'Unicode string'); - InsertString(wnd,ptCurrent,'current contact'); - InsertString(wnd,ptResult ,'last result'); - InsertString(wnd,ptParam ,'parameter'); - InsertString(wnd,ptStruct ,'structure'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeResultTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,sresInt ,'Integer'); - InsertString(wnd,sresHex ,'Hexadecimal'); - InsertString(wnd,sresString,'String'); - InsertString(wnd,sresStruct,'Structure'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeFileEncList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,0,'Ansi'); - InsertString(wnd,1,'UTF8'); - InsertString(wnd,2,'UTF8+sign'); - InsertString(wnd,3,'UTF16'); - InsertString(wnd,4,'UTF16+sign'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeDataTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,0,'Byte'); - InsertString(wnd,1,'Word'); - InsertString(wnd,2,'DWord'); - InsertString(wnd,3,'Ansi'); - InsertString(wnd,4,'Unicode'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; diff --git a/plugins/!Deprecated/Actman20/i_inoutxm.inc b/plugins/!Deprecated/Actman20/i_inoutxm.inc deleted file mode 100644 index 41e705f418..0000000000 --- a/plugins/!Deprecated/Actman20/i_inoutxm.inc +++ /dev/null @@ -1,1212 +0,0 @@ -{} -var - xmlparser:TXML_API_W; -const - // Nodes - ioRoot :PWideChar = 'ActMan_Export'; - ioAction :PWideChar = 'Action'; - ioSubAction :PWideChar = 'SubAction'; - ioContactWindow:PWideChar = 'Contact'; - ioCallService :PWideChar = 'Service'; - ioRunProgram :PWideChar = 'Program'; - ioInsertText :PWideChar = 'In/Out'; - ioAdvanced :PWideChar = 'Jump'; - ioLinkAction :PWideChar = 'Chain'; - ioProfile :PWideChar = 'Database'; - ioMessageBox :PWideChar = 'MessageBox'; - ioWParam :PWideChar = 'WPARAM'; - ioLParam :PWideChar = 'LPARAM'; - ioItem :PWideChar = 'ITEM'; - ioPost :PWideChar = 'POST'; - ioIf :PWideChar = 'IF'; - ioAct :PWideChar = 'ACT'; - ioOutput :PWideChar = 'OUTPUT'; - ioClass :PWideChar = 'class'; - // Attributes - ioType :PWideChar = 'type'; - ioInverse :PWideChar = 'inverse'; - ioName :PWideChar = 'name'; - ioDisabled :PWideChar = 'disabled'; - ioVolatile :PWideChar = 'volatile'; - ioLast :PWideChar = 'last'; - ioWindow :PWideChar = 'window'; - ioParallel :PWideChar = 'parallel'; - ioArgs :PWideChar = 'args'; - ioWait :PWideChar = 'wait'; - ioObject :PWideChar = 'object'; - ioOper :PWideChar = 'oper'; - ioMessage :PWideChar = 'message'; -// ioDest :PWideChar = 'dest'; - ioEnc :PWideChar = 'enc'; - ioValue :PWideChar = 'value'; - ioService :PWideChar = 'service'; - ioNot :PWideChar = 'not'; - ioCond :PWideChar = 'cond'; - ioVariables :PWideChar = 'variables'; - ioFileVariable :PWideChar = 'modvariables'; - ioArgVariable :PWideChar = 'argvariables'; - ioModule :PWideChar = 'module'; - ioSetting :PWideChar = 'setting'; - ioCProto :PWideChar = 'cproto'; - ioCUIDType :PWideChar = 'cuidtype'; - ioCUID :PWideChar = 'cuid'; - ioIsChat :pWideChar = 'ischat'; - ioTitle :PWideChar = 'title'; - ioFile :PWideChar = 'file'; - ioAsInt :PWideChar = 'asint'; - ioKeepOnly :PWideChar = 'keeponly'; - ioKeepLast :PWideChar = 'keeplast'; - ioReturn :PWideChar = 'return'; - ioLength :PWideChar = 'length'; - ioFree :PWideChar = 'free'; - ioPacked :PWideChar = 'packed'; - - // Values - ioNumber :PWideChar = 'number'; - ioCurrent :PWideChar = 'current'; - ioContact :PWideChar = 'contact'; - ioStruct :PWideChar = 'struct'; - ioResult :PWideChar = 'result'; - ioParam :PWideChar = 'param'; - ioByte :PWideChar = 'byte'; - ioWord :PWideChar = 'word'; - ioDword :PWideChar = 'dword'; - ioAnsi :PWideChar = 'ansi'; - ioUnicode :PWideChar = 'unicode'; -// ioWStruct :PWideChar = 'wordstruct'; -// ioBStruct :PWideChar = 'bytestruct'; - ioHex :PWideChar = 'hex'; - ioInt :PWideChar = 'int'; - ioSigned :PWideChar = 'signed'; - ioPopup :PWideChar = 'popup'; - ioMsgBox :PWideChar = 'msgbox'; - ioHidden :PWideChar = 'hidden'; - ioMinimized :PWideChar = 'minimized'; - ioMaximized :PWideChar = 'maximized'; - ioNormal :PWideChar = 'normal'; - ioClipboard :PWideChar = 'clipboard'; - ioCopy :PWideChar = 'copy'; - ioPaste :PWideChar = 'paste'; - ioBreak :PWideChar = 'break'; - ioJump :PWideChar = 'jump'; - ioNop :PWideChar = 'nop'; -// ioArray :PWideChar = 'array'; - ioScript :PWideChar = 'script'; - ioWrite :PWideChar = 'write'; - ioRead :PWideChar = 'read'; - ioAppend :PWideChar = 'append'; - ioDelete :PWideChar = 'delete'; - -const - imp_yes = 1; - imp_yesall = 2; - imp_no = 3; - imp_noall = 4; - imp_append = 5; - -function ReadStruct(act:HXML):int_ptr; -{ -var - child,i:integer; - tmp:pWideChar; - sub:HXML; - typ:pWideChar; -} -begin - result:=0; -(* - mGetMem (tmp ,32768); - FillChar(tmp^,32768,0); - result:=int_ptr(tmp); - with xmlparser do - begin -{ - typ:=getAttrValue(act,ioPacked); - if (typ<>nil) and (typ^<>#0) and (typ^<>'0') then - begin - tmp^:=char_packed; inc(tmp); - end; -} - child:=0; - repeat - sub:=getNextChild(act,ioItem,@child); - if sub=0 then break; - - typ:=getAttrValue(sub,ioType); - for i:=0 to MaxStructTypes-1 do - begin - if lstrcmpiw(typ,StructElems[i].short)=0 then break; - end; - if StrToInt(getAttrValue(sub,ioReturn))=1 then - begin - tmp^:=char_return; inc(tmp); - end; - if StrToInt(getAttrValue(sub,ioScript))=1 then - begin - tmp^:=char_script; inc(tmp); - end; - tmp:=StrCopyEW(tmp,typ); - tmp^:=' '; inc(tmp); - case StructElems[i].typ of - SST_LAST, SST_PARAM: ; - SST_BYTE, - SST_WORD, - SST_DWORD, - SST_QWORD, - SST_NATIVE: begin - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioValue)); - end; - SST_BARR, SST_WARR, - SST_BPTR, SST_WPTR: begin - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioLength)); - tmp^:=' '; inc(tmp); - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioValue)); - end; - end; - tmp^:='|'; inc(tmp); - until false; - dec(tmp); tmp^:=#0; - end; -*) -end; - -function ReadParam(act:HXML; var param:int_ptr;isvar:boolean):dword; -var - tmp:pWideChar; -begin - result:=0; - if act=0 then - exit; - with xmlparser do - begin - tmp:=getAttrValue(act,ioType); - if lstrcmpiw(tmp,ioCurrent)=0 then result:=result or ACF_WCURRENT - else if lstrcmpiw(tmp,ioResult )=0 then result:=result or ACF_WRESULT - else if lstrcmpiw(tmp,ioParam )=0 then result:=result or ACF_WPARAM - else if lstrcmpiw(tmp,ioNumber )=0 then - begin - result:=result or ACF_WPARNUM; - tmp:=getAttrValue(act,ioValue); - if isvar then - StrDupW(pWideChar(param),tmp) - else - param:=StrToInt(tmp); - end - else if lstrcmpiw(tmp,ioStruct)=0 then - begin - result:=result or ACF_WSTRUCT; - param:=ReadStruct(act); - end - else if lstrcmpiw(tmp,ioUnicode)=0 then - begin - result:=result or ACF_WUNICODE; - StrDupW(pWideChar(param),getAttrValue(act,ioValue)); - end - else if lstrcmpiw(tmp,ioAnsi)=0 then - begin - WideToAnsi(getAttrValue(act,ioValue),pAnsiChar(param),MirandaCP); - end; - end; -end; - -function ImportContact(node:HXML):THANDLE; -var - proto:pAnsiChar; - tmpbuf:array [0..63] of AnsiChar; - dbv:TDBVARIANT; - is_chat:boolean; - bufLen:int; -begin - with xmlparser do - begin - proto:=FastWideToAnsiBuf(getAttrValue(node,ioCProto),tmpbuf); - if (proto=nil) or (proto^=#0) then - begin - result:=0; - exit; - end; - is_chat:=StrToInt(getAttrValue(node,ioIsChat))<>0; - - if is_chat then - begin - dbv.szVal.W:=getAttrValue(node,ioCUID); - end - else - begin - FillChar(dbv,SizeOf(TDBVARIANT),0); - dbv._type:=StrToInt(getAttrValue(node,ioCUIDType)); - case dbv._type of - DBVT_BYTE : dbv.bVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_WORD : dbv.wVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_DWORD : dbv.dVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_ASCIIZ: FastWideToAnsi(getAttrValue(node,ioCUID),dbv.szVal.A); - DBVT_UTF8 : WideToUTF8(getAttrValue(node,ioCUID),dbv.szVal.A); - DBVT_WCHAR : StrDupW(dbv.szVal.W,getAttrValue(node,ioCUID)); - DBVT_BLOB : begin - dbv.pbVal := mir_base64_decode(FastWideToAnsi(getAttrValue(node,ioCUID),pAnsiChar(dbv.pbVal)), bufLen); - dbv.cpbVal := bufLen; - end; - end; - end; - end; - result:=FindContactHandle(proto,dbv,is_chat); - if not is_chat then - case dbv._type of - DBVT_WCHAR, - DBVT_ASCIIZ, - DBVT_UTF8 : mFreeMem(dbv.szVal.A); - DBVT_BLOB : mFreeMem(dbv.pbVal); - end; -end; - -function ImportAction(actnode:HXML):integer; -var - tmp:pWideChar; - act:tHKAction; - sub:HXML; -begin - FillChar(act,SizeOf(act),0); - with xmlparser,act do - begin - flags:=ACF_ASSIGNED; - if StrToInt(getAttrValue(actnode,ioDisabled))=1 then - flags:=flags or ACF_DISABLED; - - StrDupW(descr,getAttrValue(actnode,ioName)); - - actnode:=getChild(actnode,0); - tmp:=getName(actnode); -//MessageBoxW(0,tmp,'node',0); - - // CONTACT - if StrCmpW(tmp,ioContactWindow)=0 then - begin - actionType:=ACT_CONTACT; - contact:=ImportContact(actnode); -// contact:=StrToInt(getAttrValue(actnode,ioNumber)); - if StrToInt(getAttrValue(actnode,ioKeepOnly))=1 then - flags:=flags or ACF_KEEPONLY; - end - - // SERVICE - else if StrCmpW(tmp,ioCallService)=0 then - begin - actionType:=ACT_SERVICE; - FastWideToAnsi(getAttrValue(actnode,ioService),service); -//MessageBoxA(0,service,'service',0); - if StrToInt(getAttrValue(actnode,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_SRVC; - - sub:=getNthChild(actnode,ioWParam,0); - if StrToInt(getAttrValue(sub,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_WPAR; - if StrToInt(getAttrValue(sub,ioHex))=1 then - flags2:=flags2 or ACF2_SRV_WHEX; - flags:=flags or ReadParam(sub,int_ptr(wparam),(flags2 and ACF2_SRV_WPAR)<>0); - - sub:=getNthChild(actnode,ioLParam,0); - if StrToInt(getAttrValue(sub,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_LPAR; - if StrToInt(getAttrValue(sub,ioHex))=1 then - flags2:=flags2 or ACF2_SRV_LHEX; - flags:=flags or (ReadParam(sub,lparam,(flags2 and ACF2_SRV_LPAR)<>0) shl 1); - - sub:=getNthChild(actnode,ioOutput,0); - if StrToInt(getAttrValue(sub,ioMessage))=1 then flags:=flags or ACF_INSERT; - if StrToInt(getAttrValue(sub,ioPopup ))=1 then flags:=flags or ACF_POPUP; - if StrToInt(getAttrValue(sub,ioMsgBox ))=1 then flags:=flags or ACF_MESSAGE; - - if StrToInt(getAttrValue(sub,ioFree))=1 then flags2:=flags2 or ACF2_FREEMEM; - - tmp:=getAttrValue(sub,ioType); - if lstrcmpiw(tmp,ioUnicode)=0 then flags:=flags or ACF_UNICODE+ACF_STRING - else if lstrcmpiw(tmp,ioAnsi )=0 then flags:=flags or ACF_STRING - else if lstrcmpiw(tmp,ioSigned )=0 then flags:=flags or ACF_SIGNED - else if lstrcmpiw(tmp,ioHex )=0 then flags:=flags or ACF_HEX - else if lstrcmpiw(tmp,ioStruct )=0 then flags:=flags or ACF_STRUCT - else if lstrcmpiw(tmp,ioInt )=0 then ; -//MessageBoxW(0,'','end',0); - end - - // PROGRAM - else if StrCmpW(tmp,ioRunProgram)=0 then - begin - actionType:=ACT_PROGRAM; - StrDupW(prgname,getText(actnode)); - StrDupW(args,getAttrValue(actnode,ioArgs)); - if StrToInt(getAttrValue(actnode,ioCurrent))=1 then - flags:=flags or ACF_CURPATH; - - if StrToInt(getAttrValue(actnode,ioParallel))=1 then - flags:=flags or ACF_PRTHREAD - else - time:=StrToInt(getAttrValue(actnode,ioWait)); - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then - flags2:=flags2 or ACF2_PRG_PRG; - - if StrToInt(getAttrValue(actnode,ioArgVariable))=1 then - flags2:=flags2 or ACF2_PRG_ARG; - - tmp:=getAttrValue(actnode,ioWindow); - if lstrcmpiw(tmp,ioHidden )=0 then show:=SW_HIDE - else if lstrcmpiw(tmp,ioMinimized)=0 then show:=SW_SHOWMINIMIZED - else if lstrcmpiw(tmp,ioMaximized)=0 then show:=SW_SHOWMAXIMIZED - else show:=SW_SHOWNORMAL; - end - - // INSERT TEXT - else if StrCmpW(tmp,ioInsertText)=0 then - begin - actionType:=ACT_TEXT; - tmp:=getAttrValue(actnode,ioObject); - if lstrcmpiw(tmp,ioClipboard)=0 then - begin - flags:=flags or ACF_CLIPBRD; - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioCopy)=0 then flags:=flags or ACF_COPYTO; -// else if lstrcmpiw(tmp,'paste')=0 then ; - tmp:=getAttrValue(actnode,ioEnc); - if lstrcmpiw(tmp,ioAnsi)=0 then flags:=flags or ACF_ANSI; -// else if lstrcmpiw(tmp,'unicode')=0 then ; - end - else - begin - StrDupW(text,getText(actnode)); - - if StrToInt(getAttrValue(actnode,ioVariables))=1 then - flags2:=flags2 or ACF2_TXT_TEXT; - - if lstrcmpiw(tmp,ioFile)=0 then - begin - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then - flags2:=flags2 or ACF2_TXT_FILE; - - flags:=flags or ACF_FILE; - StrDupW(tfile,getAttrValue(actnode,ioFile)); - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioWrite )=0 then flags:=flags or ACF_FWRITE - else if lstrcmpiw(tmp,ioAppend)=0 then flags:=flags or ACF_FAPPEND; - case StrToInt(getAttrValue(actnode,ioEnc)) of - 0: flags:=flags or ACF_ANSI; - 1: flags:=flags or ACF_UTF8; - 2: flags:=flags or ACF_UTF8 or ACF_SIGN; - 3: flags:=flags or 0; - 4: flags:=flags or ACF_SIGN; - end; - end; - end; - end - - // ADVANCED - else if StrCmpW(tmp,ioAdvanced)=0 then - begin - actionType:=ACT_ADVANCE; - sub:=getNthChild(actnode,ioIf,0); - if sub<>0 then - begin - tmp:=getAttrValue(sub,ioCond); - if lstrcmpiw(tmp,'gt' )=0 then condition:=condition or ADV_COND_GT - else if lstrcmpiw(tmp,'lt' )=0 then condition:=condition or ADV_COND_LT - else if lstrcmpiw(tmp,'eq' )=0 then condition:=condition or ADV_COND_EQ - else if lstrcmpiw(tmp,ioNop)=0 then ; - - if StrToInt(getAttrValue(sub,ioNot))=1 then - condition:=condition or ADV_COND_NOT; - - value:=StrToInt(getAttrValue(sub,ioValue)); - end; - - sub:=getNthChild(actnode,ioAct,0); - tmp:=getAttrValue(sub,ioType); - if lstrcmpiw(tmp,ioValue)=0 then - begin - action:=action or ADV_ACT_MATH; - tmp:=getAttrValue(sub,ioOper); - if lstrcmpiw(tmp,ioInverse)=0 then - oper:=Cardinal(aeNot) - else - begin - case tmp^ of - '+': oper:=Cardinal(aeAdd); - '-': oper:=Cardinal(aeSub); - '*': oper:=Cardinal(aeMul); - '\': oper:=Cardinal(aeDiv); - '%': oper:=Cardinal(aeMod); - '&': oper:=Cardinal(aeAnd); - '|': oper:=Cardinal(aeOr ); - '^': oper:=Cardinal(aeXor); - '=': oper:=Cardinal(aeSet); - end; - mathval:=StrToInt(getAttrValue(sub,ioValue)); - end; - end - else if lstrcmpiw(tmp,ioScript)=0 then - begin - if StrToInt(getAttrValue(sub,ioAsInt))<>0 then - flags:=flags or ACF_VARASINT; - action:=action or ADV_ACT_VARS; - StrDupW(varval,getText(sub)); - end; - - sub:=getNthChild(actnode,ioPost,0); - if sub<>0 then - begin - tmp:=getAttrValue(sub,ioOper); - if lstrcmpiw(tmp,ioBreak)=0 then action:=action or ADV_ACT_BREAK - else if lstrcmpiw(tmp,ioJump )=0 then action:=action or ADV_ACT_JUMP - else if lstrcmpiw(tmp,ioNop )=0 then ; - - tmp:=getAttrValue(sub,ioValue); - case action and ADV_ACT_POST of - ADV_ACT_JUMP: StrDupW(operval,tmp); - end; - end; - end - - // CHAIN - else if StrCmpW(tmp,ioLinkAction)=0 then - begin - actionType:=ACT_CHAIN; - StrDupW(actname,getText(actnode)); - flags:=flags or ACF_BYNAME; - end - - // DBRW - else if StrCmpW(tmp,ioProfile)=0 then - begin - actionType:=ACT_RW; - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioDelete)=0 then flags:=flags or ACF_DBDELETE - else if lstrcmpiw(tmp,ioWrite )=0 then flags:=flags or ACF_DBWRITE; -// else if lstrcmpiw(tmp,ioRead)=0 then ; - tmp:=getAttrValue(actnode,ioContact); - if lstrcmpiw(tmp,ioCurrent)=0 then flags:=flags or ACF_CURRENT - else if lstrcmpiw(tmp,ioResult )=0 then flags:=flags or ACF_RESULT - else if lstrcmpiw(tmp,ioParam )=0 then flags:=flags or ACF_PARAM - else if lstrcmpiw(tmp,ioContact)=0 then - begin - contact:=ImportContact(actnode); - end; - - FastWideToAnsi(getAttrValue(actnode,ioModule ),dbmodule); - FastWideToAnsi(getAttrValue(actnode,ioSetting),dbsetting); - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then flags2:=flags2 or ACF2_RW_MVAR; - if StrToInt(getAttrValue(actnode,ioArgVariable ))=1 then flags2:=flags2 or ACF2_RW_SVAR; - if StrToInt(getAttrValue(actnode,ioVariables ))=1 then flags2:=flags2 or ACF2_RW_TVAR; - if StrToInt(getAttrValue(actnode,ioHex ))=1 then flags2:=flags2 or ACF2_RW_HEX; - - tmp:=getAttrValue(actnode,ioType); - if lstrcmpiw(tmp,ioByte )=0 then flags:=flags or ACF_DBBYTE - else if lstrcmpiw(tmp,ioWord )=0 then flags:=flags or ACF_DBWORD - else if lstrcmpiw(tmp,ioDword)=0 then - else // if lstrcmpiw(tmp,ioUnicode)=0 then - begin - if lstrcmpiw(tmp,ioAnsi)=0 then - flags:=flags or ACF_DBANSI - else - flags:=flags or ACF_DBUTEXT; - StrDupW(pWideChar(dbvalue),getText(actnode)); - end; - - if StrToInt(getAttrValue(actnode,ioLast))=1 then - flags:=flags or ACF_LAST - else if (flags and ACF_DBUTEXT)=0 then - begin - if (flags2 and ACF2_RW_TVAR)<>0 then - StrDupW(pWideChar(dbvalue),getText(actnode)) - else - dbvalue:=StrToInt(getAttrValue(actnode,ioValue)); - end; - end - - // MessageBox - else if StrCmpW(tmp,ioMessageBox)=0 then - begin - actionType:=ACT_MESSAGE; - StrDupW(msgtitle,getAttrValue(actnode,ioTitle)); - StrDupW(msgtext,getText(actnode)); - boxopts:=StrToInt(getAttrValue(actnode,ioType)); - if StrToInt(getAttrValue(actnode,ioArgVariable))=1 then flags2:=flags2 or ACF2_MSG_TXT; - if StrToInt(getAttrValue(actnode,ioVariables ))=1 then flags2:=flags2 or ACF2_MSG_TTL; - if StrToInt(getAttrValue(actnode,ioKeepLast ))=1 then flags :=flags or ACF_MSG_KEEP; - end - - else - begin - actionType:=ACT_UNKNOWN; - result:=0; - Exit; - end; - end; - result:=NewAction(ActionList,MaxActions); - move(act,ActionList^[result],SizeOf(tHKAction)); -end; - -function Import(fname:PWideChar;aflags:dword):integer; -var - f:THANDLE; - i,j:integer; - tmp,res:pWideChar; - root,actnode:HXML; - last,next:integer; - impact:integer; - buf:array [0..511] of WideChar; - oldid:dword; -begin - result:=0; - for i:=0 to MaxGroups-1 do - with GroupList[i] do - if (flags and (ACF_IMPORT or ACF_ASSIGNED))= - (ACF_IMPORT or ACF_ASSIGNED) then - flags:=flags and not (ACF_IMPORT or ACF_OVERLOAD); - - if (fname=nil) or (fname^=#0) then - exit; - i:=GetFSize(fname); - if i=0 then - exit; - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - -//MessageBoxW(0,res,'SRC',0); - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - root:=parseString(ChangeUnicode(res),@i,nil); - j:=0; - impact:=imp_yes; - repeat - actnode:=getNthChild(root,ioAction,j); - if actnode=0 then break; -//MessageBoxW(0,'not zero','actnode',0); -//?? if StrCmpW(getName(actnode),ioAction)<>0 then break; - tmp:=getAttrValue(actnode,ioName); -//MessageBoxW(0,tmp,'nodename',0); - if tmp<>nil then //!! - begin - i:=GetActIdxByName(tmp); - oldid:=$FFFFFFFF; - if i>=0 then - begin - if (impact<>imp_yesall) and (impact<>imp_noall) then - begin - StrCopyW(buf,TranslateW('Action "$" exists, do you want to rewrite it?')); - impact:=DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_ASK),0, - @QuestionDlg,TLPARAM(StrReplaceW(buf,'$',tmp))); - end; - if (impact=imp_yesall) or (impact=imp_yes) then - begin - oldid:=GroupList^[i].id; - FreeGroup(i); - end; - end; - if (i<0) or (impact=imp_yesall) or (impact=imp_yes) or (impact=imp_append) then - begin - with GroupList^[NewGroup(GroupList,MaxGroups)] do - begin - if (i>=0) and (oldid<>$FFFFFFFF) then // set old id to keep UseAction setting - begin - flags:=flags or ACF_IMPORT or ACF_OVERLOAD; - id:=oldid; - end; - flags:=flags or ACF_IMPORT; - if StrToInt(getAttrValue(actnode,ioDisabled))=1 then flags:=flags or ACF_DISABLED; - if StrToInt(getAttrValue(actnode,ioVolatile))=1 then flags:=flags or ACF_VOLATILE; - mFreeMem(descr); - StrDupW(descr,tmp); - i:=0; - last:=-1; -//MessageBoxW(0,descr,'descr',0); - repeat - next:=ImportAction(getChild(actnode,i)); - if next=0 then - break; - if last<0 then - firstAction:=next - else - ActionList[last].next:=next; - last:=next; - inc(i); - until false; - inc(result); - end; - end; - end; - inc(j); - until false; - DestroyNode(root); - end; - mFreeMem(res); -end; - -//-------------------------- - -procedure WriteStruct(node:HXML;struct:PWideChar); -{var - sub:HXML; - ppc,value,lsrc,p,pc:pWideChar; - i,len:integer; - typ:integer; -} -begin -(* - if struct=nil then exit; - - mGetMem(pc,4096); - lsrc:=pWideChar(struct); - with xmlparser do - begin -{ - if lsrc^=char_packed then - begin - AddAttrInt(node,ioPacked,1); - inc(lsrc); - end; -} - while lsrc^<>#0 do - begin - sub:=AddChild(node,ioItem,nil); - p:=StrScanW(lsrc,'|'); - StrCopyW(pc,lsrc,p-lsrc); - - ppc:=pc; - if ppc^=char_return then - begin - AddAttrInt(sub,ioReturn,1); - inc(ppc); - end; - - if ppc^=char_script then - begin - AddAttrInt(sub,ioScript,1); - inc(ppc); - end; - - typ:=GetOneElement(ppc,len,value); - - i:=0; - while i0 then - begin - s:=ioNumber; - if (flags2 and ACF2_SRV_WPAR)<>0 then - AddAttr(node,ioValue,PWideChar(param)) - else - AddAttrInt(node,ioValue,param); - end - else if (flags and ACF_WCURRENT)<>0 then - begin - s:=ioCurrent; - end - else if (flags and ACF_WRESULT)<>0 then - begin - s:=ioResult; - end - else if (flags and ACF_WPARAM)<>0 then - begin - s:=ioParam; - end - else if (flags and ACF_WSTRUCT)<>0 then - begin - s:=ioStruct; - WriteStruct(node,pointer(param)); - end - else if (flags and ACF_WUNICODE)<>0 then - begin - s:=ioUnicode; - AddAttr(node,ioValue,PWideChar(param)); - end - else - begin - s:=ioAnsi; - AddAttr(node,ioValue,AnsiToWide(PAnsiChar(param),tmp)); - mFreeMem(tmp); - end; - AddAttr(node,ioType,s); - end; -end; - -function ExportContact(node:HXML;hContact:THANDLE):integer; -var - proto,uid:pAnsiChar; - cws:TDBVARIANT; - p1:pAnsiChar; - p:pWideChar; - tmpbuf:array [0..63] of WideChar; - is_chat:boolean; -begin - result:=0; - proto:=GetContactProtoAcc(hContact); - if proto<>nil then - begin - is_chat:=IsChat(hContact); - if is_chat then - begin - with xmlparser do - begin - p:=DBReadUnicode(hContact,proto,'ChatRoomID'); - addAttr(node,ioCUID,p); - mFreeMem(p); - end; - result:=1; - end - else - begin - uid:=pAnsiChar(CallProtoService(proto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0)); - if DBReadSetting(hContact,proto,uid,@cws)=0 then - begin - result:=1; - with xmlparser do - begin - addAttrInt(node,ioCUIDType,cws._type); - case cws._type of - DBVT_BYTE : AddAttrInt(node,ioCUID,cws.bVal); - DBVT_WORD : AddAttrInt(node,ioCUID,cws.wVal); - DBVT_DWORD : AddAttrInt(node,ioCUID,cws.dVal); - DBVT_ASCIIZ: begin - AddAttr(node,ioCUID,FastAnsiToWide(cws.szVal.A,p)); - mFreeMem(p); - end; - DBVT_UTF8 : begin - AddAttr(node,ioCUID,UTF8ToWide(cws.szVal.A,p)); - // AddAttr(node,'cuid',FastAnsiToWide(cws.szVal.A,p)); - mFreeMem(p); - end; - DBVT_WCHAR : AddAttr(node,ioCUID,cws.szVal.W); - DBVT_BLOB : begin - p1:=mir_base64_encode(cws.pbVal,cws.cpbVal); - AddAttr(node,ioCUID,FastAnsiToWide(p1,p)); - mir_free(p1); - mFreeMem(p); - end; - end; - end; - end; - DBFreeVariant(@cws); - end; - if result<>0 then - begin - with xmlparser do - begin - addAttr (node,ioCProto,FastAnsiToWideBuf(proto,tmpbuf)); - addAttrInt(node,ioIsChat,ord(is_chat)); - end; - end; - end; -end; - -procedure WriteAction(actnode:HXML;idx:integer); -var - sub, act: HXML; - s:PWideChar; - i:integer; - tmp:pWideChar; -begin - with xmlparser,ActionList[idx] do - begin - actnode:=AddChild(actnode,ioSubAction,nil); - if descr<>nil then - AddAttr(actnode,ioName,descr); - if (flags and ACF_DISABLED)<>0 then - AddAttrInt(actnode,ioDisabled,1); - - case actionType of -// ----- CONTACT ----- - ACT_CONTACT: begin - AddAttr(actnode,ioClass,ioContactWindow); - sub:=actnode; -// sub:=AddChild(actnode,ioContactWindow,nil); - ExportContact(sub,contact); -// AddAttrInt(sub,ioNumber,0); // contact - if (flags and ACF_KEEPONLY)<>0 then AddAttrInt(sub,ioKeepOnly,1); - end; -// ----- SERVICE ----- - ACT_SERVICE: begin - AddAttr(actnode,ioClass,ioCallService); - sub:=actnode; -// sub:=AddChild(actnode,ioCallService,nil); - AddAttr(sub,ioService,FastAnsiToWide(service,tmp)); - if (flags2 and ACF2_SRV_SRVC)<>0 then AddAttrInt(sub,ioVariables,1); - mFreeMem(tmp); - act:=AddChild(sub,ioWParam,nil); WriteParam(act,flags ,wparam,flags2); - if (flags2 and ACF2_SRV_WPAR)<>0 then AddAttrInt(act,ioVariables,1); - if (flags2 and ACF2_SRV_WHEX)<>0 then AddAttrInt(act,ioHex ,1); - act:=AddChild(sub,ioLParam,nil); WriteParam(act,flags shr 1,lparam,flags2 shr 1); - if (flags2 and ACF2_SRV_LPAR)<>0 then AddAttrInt(act,ioVariables,1); - if (flags2 and ACF2_SRV_LHEX)<>0 then AddAttrInt(act,ioHex ,1); - - act:=AddChild(sub,ioOutput,nil); - if (flags and (ACF_MESSAGE+ACF_POPUP+ACF_INSERT))<>0 then - begin - if (flags and ACF_INSERT )<>0 then AddAttrInt(act,ioMessage,1); - if (flags and ACF_POPUP )<>0 then AddAttrInt(act,ioPopup ,1); - if (flags and ACF_MESSAGE)<>0 then AddAttrInt(act,ioMsgBox ,1); - end; - - if (flags2 and ACF2_FREEMEM)<>0 then AddAttrInt(sub,ioFree,1); - - if (flags and ACF_STRUCT)<>0 then - s:=ioStruct - else if (flags and ACF_STRING)<>0 then - begin - if (flags and ACF_UNICODE)<>0 then - s:=ioUnicode - else - s:=ioAnsi; - end - else - begin - if (flags and ACF_SIGNED)<>0 then s:=ioSigned - else if (flags and ACF_HEX )<>0 then s:=ioHex - else s:=ioInt; - end; - AddAttr(act,ioType,s); - end; -// ----- PROGRAM ----- - ACT_PROGRAM: begin - AddAttr(actnode,ioClass,ioRunProgram); - setText(actnode,prgname); - sub:=actnode; -// sub:=AddChild(actnode,ioRunProgram,prgname); - if args<>nil then - AddAttr(sub,ioArgs,args); - if (flags and ACF_CURPATH)<>0 then AddAttrInt(sub,ioCurrent,1); - if (flags and ACF_PRTHREAD)=0 then AddAttrInt(sub,ioWait,time) - else AddAttrInt(sub,ioParallel,1); - - if (flags2 and ACF2_PRG_PRG)<>0 then AddAttrInt(sub,ioFileVariable,1); - if (flags2 and ACF2_PRG_ARG)<>0 then AddAttrInt(sub,ioArgVariable ,1); - - case show of - SW_HIDE : s:=ioHidden; - SW_SHOWMINIMIZED: s:=ioMinimized; - SW_SHOWMAXIMIZED: s:=ioMaximized; - else - s:=ioNormal; - end; - AddAttr(sub,ioWindow,s); - end; -// ----- TEXT ----- - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)<>0 then - begin - AddAttr(actnode,ioClass,ioInsertText); - end - else - begin - if (flags and ACF_FILE)<>0 then - AddAttr(actnode,ioClass,ioInsertText) - else - begin - AddAttr(actnode,ioClass,'Text'); - setText(actnode,text); - end; - end; - sub:=actnode; -// sub:=AddChild(actnode,ioInsertText,tmp); - if (flags and ACF_CLIPBRD)<>0 then - begin - AddAttr(sub,ioObject,ioClipboard); - if (flags and ACF_COPYTO)<>0 then - s:=ioCopy - else - s:=ioPaste; - AddAttr(sub,ioOper,s); - if (flags and ACF_ANSI)=0 then - s:=ioUnicode - else - s:=ioAnsi; - AddAttr(sub,ioEnc,s); - end - else - begin - if (flags and ACF_FILE)<>0 then - begin - if (flags2 and ACF2_TXT_FILE)<>0 then - AddAttrInt(sub,ioFileVariable,1); - AddAttr(sub,ioObject,ioFile); - AddAttr(sub,ioFile,tfile); - if (flags and ACF_FWRITE )<>0 then AddAttr(sub,ioOper,ioWrite) - else if (flags and ACF_FAPPEND)<>0 then AddAttr(sub,ioOper,ioAppend); - - if (flags and ACF_ANSI)<>0 then - i:=0 - else if (flags and ACF_UTF8)<>0 then - begin - if (flags and ACF_SIGN)<>0 then - i:=2 - else - i:=1; - end - else if (flags and ACF_SIGN)<>0 then - i:=4 - else - i:=3; - AddAttrInt(sub,ioEnc,i); - end - else - AddAttr(sub,ioObject,ioWindow); - - if (flags2 and ACF2_TXT_TEXT)<>0 then - AddAttrInt(sub,ioVariables,1); - end; - end; -// ----- ADVANCED ----- - ACT_ADVANCE: begin - AddAttr(actnode,ioClass,ioAdvanced); - sub:=actnode; -// sub:=AddChild(actnode,ioAdvanced,nil); - if lobyte(condition)<>0 then - begin - act:=AddChild(sub,ioIf,nil); - if (lobyte(condition) and ADV_COND_NOT)<>0 then - AddAttrInt(act,ioNot,1); - case lobyte(condition) and not ADV_COND_NOT of - ADV_COND_GT: s:='gt'; - ADV_COND_LT: s:='lt'; - ADV_COND_EQ: s:='eq'; - else - s:=ioNop; - end; - AddAttr(act,ioOper,'math'); - AddAttr(act,ioCond,s); - AddAttrInt(act,ioValue,value); - end; - - if (action and not 3)<>ADV_ACT_VARS then - tmp:=nil - else - tmp:=varval; - act:=AddChild(sub,ioAct,tmp); - case action and ADV_ACTION of - ADV_ACT_MATH: begin - AddAttr(act,ioType,ioValue); - if tAdvExpr(oper)=aeNot then - AddAttr(act,ioOper,ioInverse) - else - begin - case tAdvExpr(oper) of - aeAdd: s:='+'; - aeSub: s:='-'; - aeMul: s:='*'; - aeDiv: s:='\'; - aeMod: s:='%'; - aeAnd: s:='&'; - aeOr : s:='|'; - aeXor: s:='^'; - aeSet: s:='='; - else - s:=nil; - end; - AddAttr(act,ioOper,s); - AddAttrInt(act,ioValue,mathval); - end; - end; - ADV_ACT_VARS: begin - if (flags and ACF_VARASINT)<>0 then - AddAttrInt(act,ioAsInt,1); - AddAttr(act,ioType,ioScript); - end; - end; - - if (action and ADV_ACT_POST)<>0 then - begin - act:=AddChild(sub,ioPost,nil); - case action and ADV_ACT_POST of - ADV_ACT_BREAK: s:=ioBreak; - ADV_ACT_JUMP : begin - s:=ioJump; - AddAttr(act,ioValue,operval); - end; - else - s:=ioNop - end; - AddAttr(act,ioOper,s); - end; - //!! - end; -// ----- LINK ----- - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - s:=actname - else - s:=GetActNameById(id); - AddAttr(actnode,ioClass,ioLinkAction); - setText(actnode,s); -// AddChild(actnode,ioLinkAction,s); - end; -// ----- DATABASE ----- - ACT_RW: begin - if ((flags and ACF_DBUTEXT)=0) and ((flags2 and ACF2_RW_TVAR)=0) then - tmp:=nil - else - tmp:=pWideChar(dbvalue); - AddAttr(actnode,ioClass,ioProfile); - setText(actnode,tmp); - sub:=actnode; -// sub:=AddChild(actnode,ioProfile,tmp); - if (flags and ACF_DBDELETE)<>0 then s:=ioDelete - else if (flags and ACF_DBWRITE )<>0 then s:=ioWrite - else s:=ioRead; - AddAttr(sub,ioOper,s); - if (flags and ACF_CURRENT)<>0 then s:=ioCurrent - else if (flags and ACF_RESULT )<>0 then s:=ioResult - else if (flags and ACF_PARAM )<>0 then s:=ioParam - else - begin - s:=ioContact; - ExportContact(sub,dbcontact); - end; - AddAttr(sub,ioContact,s); - AddAttr(sub,ioModule ,FastAnsiToWide(dbmodule ,tmp)); mFreeMem(tmp); - AddAttr(sub,ioSetting,FastAnsiToWide(dbsetting,tmp)); mFreeMem(tmp); - - if (flags and ACF_DBANSI )=ACF_DBANSI then s:=ioAnsi - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then s:=ioByte - else if (flags and ACF_DBWORD )=ACF_DBWORD then s:=ioWord - else if (flags and ACF_DBUTEXT)= 0 then s:=ioDword - else s:=ioUnicode; - AddAttr(sub,ioType,s); - - if (flags2 and ACF2_RW_MVAR)<>0 then AddAttrInt(sub,ioFileVariable,1); - if (flags2 and ACF2_RW_SVAR)<>0 then AddAttrInt(sub,ioArgVariable ,1); - if (flags2 and ACF2_RW_TVAR)<>0 then AddAttrInt(sub,ioVariables ,1); - if (flags2 and ACF2_RW_HEX )<>0 then AddAttrInt(sub,ioHex ,1); - - if ( flags and ACF_LAST )<>0 then AddAttrInt(sub,ioLast ,1) - else if ((flags and ACF_DBUTEXT )=0) and - ((flags2 and ACF2_RW_TVAR)=0) then AddAttrInt(sub,ioValue,dbvalue); - end; -// ----- MESSAGEBOX ----- - ACT_MESSAGE: begin - AddAttr(actnode,ioClass,ioMessageBox); - setText(actnode,msgtext); - sub:=actnode; -// sub:=AddChild(actnode,ioMessageBox,msgtext); - if (flags2 and ACF2_MSG_TTL)<>0 then AddAttrInt(sub,ioVariables ,1); - if (flags2 and ACF2_MSG_TXT)<>0 then AddAttrInt(sub,ioArgVariable,1); - if (flags and ACF_MSG_KEEP)<>0 then AddAttrInt(sub,ioKeepLast ,1); - AddAttr (sub,ioTitle,msgtitle); - AddAttrInt(sub,ioType ,boxopts); - end; - end; - end; -end; - -procedure Export({act:integer;}fname:pWideChar;aflags:dword); -var - i:integer; - f:THANDLE; - root,actnode:HXML; - res:pWideChar; - act:integer; -begin - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - root:=0; - with xmlparser do - begin - i:=0; - if (aflags and ACIO_APPEND)<>0 then - begin - i:=GetFSize(fname); - if i<>0 then - begin - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - root:=parseString(res,@i,nil); - mFreeMem(res); - i:=1; - end; - end; - if i=0 then // new file - root:=CreateNode(ioRoot,nil,false); - - for act:=0 to MaxGroups-1 do - if ((aflags and ACIO_SELECTED)=0) or - ((GroupList[act].flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED)) then - begin -// GroupList[act].flags:=GroupList[act].flags and not ACF_EXPORT; - actnode:=addChild(root,ioAction,nil); - AddAttr(actnode,ioName,GroupList[act].descr); - if (GroupList[act].flags and ACF_DISABLED)<>0 then - AddAttrInt(actnode,ioDisabled,1); - - i:=GroupList[act].firstAction; - if i<>0 then - repeat - WriteAction(actnode,i); - i:=ActionList[i].next; - until i=0; - end; - - res:=toString(root,@i); - if i>0 then - begin - f:=Rewrite(fname); - BlockWrite(f,res^,i*SizeOf(WideChar)); - CloseHandle(f); - end; - xmlparser.FreeMem(res); - DestroyNode(root); - end; -end; - -function ActInOut(wParam:WPARAM;lParam:LPARAM):int_ptr; cdecl; -begin - if (wParam and ACIO_EXPORT)=0 then - begin - result:=Import(pWideChar(lParam),wParam); - end - else - begin - result:=1; - Export(pWideChar(lParam),wParam); - end; - NotifyEventHooks(hevinout,wParam,lParam); -end; diff --git a/plugins/!Deprecated/Actman20/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/i_opt_dlg.inc deleted file mode 100644 index 3e07cd97ae..0000000000 --- a/plugins/!Deprecated/Actman20/i_opt_dlg.inc +++ /dev/null @@ -1,215 +0,0 @@ -{} -const - etHK = 1; // Groups changed - etACT = 2; // Actions changed -const - ACI_APPLY :PAnsiChar = 'ACI_Apply'; - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_UP :PAnsiChar = 'ACI_Up'; - ACI_DOWN :PAnsiChar = 'ACI_Down'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - ACI_RELOAD :PAnsiChar = 'ACI_Reload'; - ACI_TEST :PAnsiChar = 'ACI_Test'; - ACI_IMPORT :PAnsiChar = 'ACI_Import'; - ACI_EXPORT :PAnsiChar = 'ACI_Export'; -const - ACI_CONTACT = 'ACI_Contact'; - ACI_SERVICE = 'ACI_Service'; - ACI_PROGRAM = 'ACI_Program'; - ACI_INSERT = 'ACI_Insert'; - ACI_ADVANCE = 'ACI_Advanced'; - ACI_CHAIN = 'ACI_Chain'; - ACI_RW = 'ACI_Database'; - ACI_MESSAGE = 'ACI_Message'; - - ACI_FORMAT = 'ACI_Format'; - - ACI_VAR_UNCHECKED = 'ACI_VarUnChecked'; - ACI_VAR_CHECKED = 'ACI_VarChecked'; - -const - sresInt = 0; - sresHex = 1; - sresString = 2; - sresStruct = 3; -type - tActId = record - code:dword; - id :dword; - icon:PAnsiChar; - text:PAnsiChar; - end; -const - ActIds:array [0..ACT_MAXTYPE-1] of tActId = ( - (code:ACT_CONTACT; id:IDI_CONTACT; icon:ACI_CONTACT; text:'Open contact window'), - (code:ACT_SERVICE; id:IDI_SERVICE; icon:ACI_SERVICE; text:'Call service'), - (code:ACT_PROGRAM; id:IDI_PROGRAM; icon:ACI_PROGRAM; text:'Execute program'), - (code:ACT_TEXT ; id:IDI_INSERT ; icon:ACI_INSERT ; text:'Insert text'), - (code:ACT_ADVANCE; id:IDI_ADVANCE; icon:ACI_ADVANCE; text:'Advanced'), - (code:ACT_CHAIN ; id:IDI_CHAIN ; icon:ACI_CHAIN ; text:'Link to action'), - (code:ACT_RW ; id:IDI_RW ; icon:ACI_RW ; text:'Profile'), - (code:ACT_MESSAGE; id:IDI_MESSAGE; icon:ACI_MESSAGE; text:'MessageBox')); - -procedure RegisterIcon(var sid:TSKINICONDESC;id:uint_ptr;name:PAnsiChar;descr:PAnsiChar); -var - buf:array [0..63] of WideChar; -begin - sid.hDefaultIcon :=LoadImage(hInstance,MAKEINTRESOURCE(id),IMAGE_ICON,16,16,0); - sid.pszName :=name; - sid.szDescription.w:=FastAnsiToWideBuf(descr,buf); - Skin_AddIcon(@sid); - DestroyIcon(sid.hDefaultIcon); -end; - -procedure RegisterIcons; -var - sid:TSKINICONDESC; - i:integer; -begin - FillChar(sid,SizeOf(TSKINICONDESC),0); - sid.cbSize :=SizeOf(TSKINICONDESC); - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_UNICODE; - sid.szSection.w:='Actions'; - - RegisterIcon(sid,IDI_APPLY ,ACI_APPLY ,'Apply'); - RegisterIcon(sid,IDI_NEW ,ACI_NEW ,'New'); - RegisterIcon(sid,IDI_DELETE ,ACI_DELETE ,'Delete'); - RegisterIcon(sid,IDI_UP ,ACI_UP ,'Up'); - RegisterIcon(sid,IDI_DOWN ,ACI_DOWN ,'Down'); - RegisterIcon(sid,IDI_RELOAD ,ACI_RELOAD ,'Reload'); - RegisterIcon(sid,IDI_TEST ,ACI_TEST ,'Test'); - RegisterIcon(sid,IDI_IMPORT ,ACI_IMPORT ,'Import'); - RegisterIcon(sid,IDI_EXPORT ,ACI_EXPORT ,'Export'); - - RegisterIcon(sid,IDI_FORMAT ,ACI_FORMAT ,'Contact list format'); - - for i:=0 to ACT_MAXTYPE-1 do - with ActIds[i] do - RegisterIcon(sid,id,icon,text); - - sid.cx:=8; - sid.cy:=8; - RegisterIcon(sid,IDI_VAR_CHECKED ,ACI_VAR_CHECKED ,'Use Variables'); - RegisterIcon(sid,IDI_VAR_UNCHECKED,ACI_VAR_UNCHECKED,'Don''t use Variables'); -end; - -procedure SetStart; -begin - if NewGroupList=nil then - begin - NewGroupList:=GroupList; - NewMaxGroups:=MaxGroups; - end; - if NewActionList=nil then - begin - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - end; -end; - -procedure SetChanged(wnd:HWND;atype:integer); -begin - SendMessage(GetParent(wnd),PSM_CHANGED,0,0); - if ((atype and etHK )<>0) and (NewGroupList =GroupList ) then NewGroupList :=CloneGroupList; - if ((atype and etACT)<>0) and (NewActionList=ActionList) then NewActionList:=CloneActionList; -end; - -procedure SetSave(Dialog:HWND;curIdx:integer); -var - i,j:integer; - li:LV_ITEMW; - wnd:HWND; -begin - if NewGroupList<>GroupList then - begin - - DestroyGroups(GroupList,MaxGroups); - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - j:=SendMessageW(wnd,LVM_GETITEMCOUNT,0,0); - MaxGroups:=j; - if j>0 then - begin - GetMem (GroupList ,MaxGroups*SizeOf(tHKRecord)); - FillChar(GroupList^,MaxGroups*SizeOf(tHKRecord),0); - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - for i:=0 to j-1 do - begin - li.iItem:=i; - SendMessageW(wnd,LVM_GETITEMW,0,lparam(@li)); // GetLParam(wnd,i); - move(NewGroupList^[li.lParam],GroupList^[i],SizeOf(tHKRecord)); - li.lParam:=i; - SendMessageW(wnd,LVM_SETITEMW,0,lparam(@li)); - end; - end - else - GroupList:=nil; - - FreeMem(NewGroupList); - NewGroupList:=GroupList; - NewMaxGroups:=MaxGroups; - end; -end; - -procedure SetCancel; -begin - if NewActionList<>nil then - begin - if (NewActionList<>ActionList) then - DestroyActions(NewActionList,NewMaxActions); - NewActionList:=nil; - end; - if NewGroupList<>nil then - begin - if (NewGroupList<>GroupList) then - DestroyGroups(NewGroupList,NewMaxGroups); - NewGroupList:=nil; - end; -end; - -{$include i_opt_dlg2.inc} - -function OnOptInitialise(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - odp:TOPTIONSDIALOGPAGE; - ptr:pActionLink; - tmpl:pAnsiChar; - name:pansiChar; - proc:pointer; - i:integer; -begin - result:=0; - NoDescription :=TranslateW('No description'); - StrCopyW(xmlfilename,'c:\export.xml'); - - DoInitCommonControls(ICC_USEREX_CLASSES); - - FillChar(odp,SizeOf(odp),0); - odp.cbSize :=SizeOf(odp); - odp.flags :=ODPF_BOLDGROUPS; - odp.Position :=900003000; - odp.hInstance :=hInstance; - odp.szGroup.a :='Services'; - odp.szTitle.a :='Actions'; - odp.szTab.a :='Actions'; - odp.pfnDlgProc :=@DlgProcOpt2; - odp.pszTemplate:=PAnsiChar(IDD_ACTION); - Options_AddPage(wParam,@odp); - - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.AddOption<>nil then - begin - i:=ptr^.AddOption(tmpl,proc,name); - odp.pszTemplate:=tmpl; - odp.pfnDlgProc :=proc; - odp.szTab.a :=name; - Options_AddPage(wParam,@odp); - if i>0 then continue; - end; - ptr:=ptr^.Next; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_opt_dlg2.inc b/plugins/!Deprecated/Actman20/i_opt_dlg2.inc deleted file mode 100644 index 4462c12d7d..0000000000 --- a/plugins/!Deprecated/Actman20/i_opt_dlg2.inc +++ /dev/null @@ -1,2095 +0,0 @@ -{} - -const - inoutfilter:pWideChar = 'XML files'#0'*.xml'#0'All files'#0'*.*'#0#0; -const - NoChainText:PWideChar = 'not defined'; -const - ActionNames:array [0..ACT_MAXTYPE] of pWideChar=( - 'Unknown','Contact','Service','Program','Text','Advanced','Action','Profile','Message'); -const - checknames:array [BST_UNCHECKED..BST_CHECKED] of PAnsiChar=( - ACI_VAR_UNCHECKED,ACI_VAR_CHECKED); -const - MaxDescrLen = 128; -const - hlpContact = 0; - hlpService = 1; - hlpProgram = 2; - hlpText = 3; - hlpAdvance = 4; - hlpChain = 5; - hlpDBRW = 6; - hlpMessage = 7; - hlpVariables = 30; - hlpAdvVariables = 31; -const - ptNumber = 0; - ptString = 1; - ptUnicode = 2; - ptCurrent = 3; - ptResult = 4; - ptParam = 5; - ptStruct = 6; - -var - wstruct,lstruct:pAnsiChar; - DontReact:bool; - OldGroupTableProc, - OldActTableProc:pointer; - ChMask:dword; - -function GetNumValue(wnd:HWND;usevar:boolean;var dst):boolean; -var - tmp:pWideChar; -begin - result:=false; - pWideChar(dst):=GetDlgText(wnd); - if Pointer(dst)=nil then exit; - if not usevar then - begin - tmp:=PWideChar(dst); - if pWideChar(dst)^='$' then - begin - integer(dst):=HexToInt(pWideChar(dst)+1); - result:=true; - end - else - integer(dst):=StrToInt(pWideChar(dst)); - mFreeMem(tmp); - end; -end; - -function GetGroupName(id:dword):pWideChar; -var - i:integer; -begin - for i:=0 to NewMaxGroups-1 do - begin - if ((NewGroupList^[i].flags and ACF_ASSIGNED)<>0) and (id=NewGroupList^[i].id) then - begin - result:=NewGroupList^[i].descr; - exit; - end; - end; - result:=NoChainText; -end; - -function AddGroup(Dialog:HWND;HKnum:dword):integer; -var - li:LV_ITEMW; - list:HWND; -begin - with NewGroupList^[HKnum] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - list:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - li.mask :=LVIF_PARAM+LVIF_TEXT; - li.iItem :=SendMessage(list,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1; - li.iSubItem :=0; - li.lParam :=HKnum; - if descr=nil then - li.pszText:=NoDescription - else - li.pszText:=descr; - li.iItem :=SendMessageW(list,LVM_INSERTITEMW,0,lparam(@li)); - if li.iItem>0 then - dec(li.iItem); - ListView_SetItemState(list,li.iItem,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - result:=li.iItem; - end - else - result:=-1; - end; -end; - -// Fill action type combobox -procedure FillActTypeList(list:hwnd); -var - cbei:TCOMBOBOXEXITEMW; - il:HIMAGELIST; - i:integer; - buf:array [0..127] of WideChar; -begin - SendMessage(list,CB_RESETCONTENT,0,0); - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - - cbei.mask:=CBEIF_IMAGE or CBEIF_SELECTEDIMAGE or CBEIF_TEXT; //!! - for i:=0 to ACT_MAXTYPE-1 do - begin - ImageList_AddIcon(il,CallService(MS_SKIN2_GETICON,0,lparam(ActIds[i].icon))); - - cbei.pszText :=TranslateW(FastAnsiToWideBuf(ActIds[i].text,buf)); - cbei.iItem :=i; - cbei.iImage :=i; - cbei.iSelectedImage:=i; - if SendMessageW(list,CBEM_INSERTITEMW,0,lparam(@cbei))=-1 then break; - end; - ImageList_Destroy(SendMessage(list,CBEM_SETIMAGELIST,0,il)); - SendMessage(list,CB_SETCURSEL,0,0); -end; - -procedure FillSubList(Dialog:hwnd); -var - list,wnd:HWND; - i,act:integer; - arr:array [0..127] of WideChar; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_ADV_VAL2); - - SendMessage(wnd,CB_RESETCONTENT,0,0); - - list:=GetDlgItem(Dialog,IDC_ACTION_LIST); - act:=SendMessageW(list,LVM_GETITEMCOUNT,0,0); - i:=0; - li.mask :=LVIF_TEXT; - li.iSubItem :=0; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - while i=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_DELETE,0); - exit; - end; - VK_UP: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_UP,0); - exit; - end; - end; - VK_DOWN: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_DOWN,0); - exit; - end; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldGroupTableProc,Dialog,hMessage,wParam,lParam); -end; - -// action (chain) table procedure (key hook) -function NewActTableProc(Dialog:HWnd;hMessage:uint;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_UP: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_UP,0); - exit; - end; - end; - VK_DOWN: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_DOWN,0); - exit; - end; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldActTableProc,Dialog,hMessage,wParam,lParam); -end; - -// miranda button icon paint -procedure SetButtonIcons2(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=Dialog; - ti.hinst :=hInstance; - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_HELP); - ti.lpszText:=TranslateW('Help'); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_NEW); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_UP); - ti.lpszText:=TranslateW('Up'); - SetButtonIcon(ti.uId,ACI_UP); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_UP); - SetButtonIcon(ti.uId,ACI_UP); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_DOWN); - ti.lpszText:=TranslateW('Down'); - SetButtonIcon(ti.uId,ACI_DOWN); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_DOWN); - SetButtonIcon(ti.uId,ACI_DOWN); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_DELETE); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_RELOAD); - ti.lpszText:=TranslateW('Reload'); - SetButtonIcon(ti.uId,ACI_RELOAD); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_TEST); - ti.lpszText:=TranslateW('Test'); - SetButtonIcon(ti.uId,ACI_TEST); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_CNT_APPLY); - ti.lpszText:=TranslateW('Apply format'); - SetButtonIcon(ti.uId,ACI_FORMAT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_IMPORT); - ti.lpszText:=TranslateW('Import'); - SetButtonIcon(ti.uId,ACI_IMPORT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_EXPORT); - ti.lpszText:=TranslateW('Export'); - SetButtonIcon(ti.uId,ACI_EXPORT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.lpszText:=TranslateW('Use Variables'); - ti.uId:=GetDlgItem(Dialog,IDC_SRV_WPAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - -{ - pc:=TranslateW(''); - wnd:=GetDlgItem(Dialog,IDC_NEW); - SendMessage(hNew,BUTTONADDTOOLTIP,TWPARAM(pc),BATF_UNICODE); - SetButtonIcon(wnd,QS_NEW); -} - ti.uId:=GetDlgItem(Dialog,IDC_SRV_LPAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_SRV_SRVC); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_PRG_PRG); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_PRG_ARG); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_TXT_FILE); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_TXT_TEXT); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_MVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_SVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_TVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_MSG_TTL); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_MSG_TXT); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - -end; - -function MoveLVItem(list:HWND;num:integer;incr:integer):integer; -var - li:LV_ITEM; - buf:array [0..127] of WideChar; -begin - li.mask :=LVIF_PARAM+LVIF_STATE+LVIF_TEXT; - li.iItem :=num; - li.iSubItem :=0; - li.StateMask :=dword(-1); - li.pszText :=@buf; - li.cchTextMax:=127; - SendMessageW(list,LVM_GETITEMW,0,lparam(@li)); - SendMessageW(list,LVM_DELETEITEM,li.iItem,0); - inc(li.iItem,incr); - - SendMessageW(list,LVM_INSERTITEMW,0,lparam(@li)); - SendMessageW(list,LVM_SETITEMSTATE,li.iItem,lparam(@li)); - result:=li.iItem; -end; - -function MoveGroup(list:HWND;num:integer=-1;incr:integer=0):integer; -var - i,j:integer; -begin - if num<0 then - begin - result:=-1; - j:=SendMessage(list,LVM_GETITEMCOUNT,0,0)-1; - if incr<0 then // up, from beginning - begin - for i:=0 to j do - begin - if SendMessage(list,LVM_GETITEMSTATE,i,LVIS_SELECTED)<>0 then - begin - if i=0 then break; - LV_MoveItem(list,incr,i); -// MoveLVItem(list,i,incr); - if result<0 then result:=i+incr; - end; - end; - end - else // down, from the end - begin - for i:=j downto 0 do - begin - if SendMessage(list,LVM_GETITEMSTATE,i,LVIS_SELECTED)<>0 then - begin - if i=j then break; - LV_MoveItem(list,incr,i); -// MoveLVItem(list,i,incr); - if result<0 then result:=i+incr; - end; - end; - end; - end - else - begin - MoveLVItem(list,num,incr); - result:=num; - end; -end; - -{$include i_dlglists.inc} - -procedure SetNumValue(wnd:HWND;value:dword;isvar:boolean;ishex:boolean); -var - buf:array [0..31] of WideChar; -begin - if isvar then - SendMessageW(wnd,WM_SETTEXT,0,value) - else if ishex then - begin - buf[0]:='$'; - IntToHex(PWideChar(@buf[1]),value); - SendMessageW(wnd,WM_SETTEXT,0,tlparam(@buf)); - end - else - SendMessageW(wnd,WM_SETTEXT,0,tlparam(IntToStr(buf,value))); -end; - -function DlgProcOpt2(Dialog:HWnd;hMessage:uint;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; - - {$include i_visual.inc} - - procedure ShowHelp(code:integer); - var - buf:PAnsiChar; - vhi:TVARHELPINFO; - begin - case code of - hlpVariables: begin - FillChar(vhi,SizeOf(vhi),0); - with vhi do - begin - cbSize:=SizeOf(vhi); - flags:=VHF_NOINPUTDLG; - end; - CallService(MS_VARS_SHOWHELPEX,Dialog,tlparam(@vhi)); - end; - hlpAdvVariables: begin - FillChar(vhi,SizeOf(vhi),0); - with vhi do - begin - cbSize :=SizeOf(vhi); - flags :=VHF_FULLDLG or VHF_SETLASTSUBJECT; - hwndCtrl :=GetDlgItem(Dialog,IDC_ADV_VARS); - szSubjectDesc:='test your variables'; - end; - CallService(MS_VARS_SHOWHELPEX,Dialog,tlparam(@vhi)); - end; - hlpContact: begin - MessageBoxW(0, - TranslateW('Select contact to open its window'), - TranslateW('Contacts'),0); - end; - hlpService: begin - buf:=GetDlgText(Dialog,IDC_EDIT_SERVICE,true); -//!! if buf<>nil then - begin - ApiCard.Service:=buf; - mFreeMem(buf); - ApiCard.Show; - end; - end; - hlpProgram: begin - MessageBoxW(0, - TranslateW('Text replacing'#13#10+ - 'by last result'#13#10#13#10+ - 'Text replacing'#13#10+ - 'by parameter'), - TranslateW('Text'),0); - end; - hlpText: begin - MessageBoxW(0, - TranslateW('^s - selected (and replaced) part'#13#10+ - '^e - replaced by empty string'#13#10+ - '^v - paste text from Clipboard'#13#10+ - '^t - replaced by tabulation'#13#10+ - '^l - replaced by last result as unicode'#13#10+ - '^h - replaced by last result as hex'#13#10+ - '^a - in the end: autosend'#13#10+ - '^f(name[,str])'#13#10+ - ' paste line from text file.'#13#10+ - ' brackets contents must be w/o spaces'), - TranslateW('Text'),0); - end; - hlpAdvance: begin - end; - hlpChain: begin - MessageBoxW(0, - TranslateW('You can select another group from combobox, '+ - 'then it will be executed, after that current '+ - 'action group will be continued.'), - TranslateW('Macros'),0); - end; - hlpDBRW: begin - end; - hlpMessage: begin - MessageBoxW(0, - TranslateW( - 'Text replacing'#13#10+ - 'by last result'#13#10#13#10+ - 'Returns:'#13#10+ - '--------'#13#10+ - 'OK'#9'= 1'#13#10+ - 'CANCEL'#9'= 2'#13#10+ - 'ABORT'#9'= 3'#13#10+ - 'RETRY'#9'= 4'#13#10+ - 'IGNORE'#9'= 5'#13#10+ - 'YES'#9'= 6'#13#10+ - 'NO'#9'= 7'#13#10+ - 'CLOSE'#9'= 8'), - TranslateW('MessageBox'),0); - end; - end; - end; - - // enable/disable navigation chain buttons - procedure CheckGrpList(num:integer=-1); - var - wnd:HWND; - dir:integer; - okup,okdown:boolean; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// if num<0 then - begin - dir:=LV_CheckDirection(wnd); - okup :=odd(loword(dir)); - okdown:=(loword(dir) and 2)<>0; - end; -{ - else - begin - okup :=num>0; - okdown:=(num+1)0); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DOWN), - (num+1)0; - end; -{ - else - begin - okup :=num>0; - okdown:=(num+1)0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN), - (num+1)=0 then - begin - li.iSubItem:=0; - // getting SubAction number - li.mask:=LVIF_PARAM; - SendMessage(wnd,LVM_GETITEM,0,tlparam(@li)); - - // changing to default name - if str=nil then - begin - if num>=0 then // new item - screen only - str1:=TranslateW(ActionNames[ACT_CONTACT]) - else // change action type - begin - str1:=NewActionList[li.lParam].descr; - if str1=nil then // not in memory yet - str1:=TranslateW(ActionNames[acttype]) - else - exit; - end; - end - else // rename - begin - str1:=str; - mFreeMem(NewActionList[li.lParam].descr); - StrDupW (NewActionList[li.lParam].descr,str); - end; - -// screen - li.mask :=LVIF_TEXT; - li.pszText:=str1; - SendMessageW(wnd,LVM_SETITEMW,0,tlparam(@li)); - end; - end; - - // Fill Chain list - procedure MakeActionList(HK:pHKRecord); - var - i,idx:integer; - wnd:HWND; - li:LV_ITEMW; - p:pWideChar; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_UP),false); - if (HK=nil) or (HK^.firstAction=0) then - begin - SHWindows; - SHActButtons(SW_HIDE); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN ),false); - exit; - end; - SHActButtons(SW_SHOW); - - li.mask :=LVIF_TEXT or LVIF_PARAM; - li.iSubitem:=0; - i:=HK^.firstAction; - idx:=0; - repeat - p:=NewActionList^[i].descr; - if p=nil then - p:=TranslateW(ActionNames[NewActionList^[i].actionType]); - li.pszText:=p; - li.iItem :=idx; - li.lParam :=i; - SendMessageW(wnd,LVM_INSERTITEMW,0,tlparam(@li)); - ListView_SetCheckState(wnd,idx,(NewActionList^[i].flags and ACF_DISABLED)=0); - - i:=NewActionList^[i].next; - inc(idx); - until i=0; - - Listview_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN),idx>1); -// FillSubList(Dialog); - FillAction(HK^.firstAction); - CheckActList(0); - end; - - procedure SaveAction(listnum,actnum:integer); - var - wnd:HWND; - i:integer; - tmp:pWideChar; - arr: array [0..255] of WideChar; - li:LV_ITEMW; - begin - if (ChMask and ACTM_ACT)=0 then exit; - ChMask:=ChMask and not ACTM_ACT; - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - if listnum<0 then - begin - listnum:=SendMessageW(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if listnum<0 then - exit; - end; - if actnum<0 then - actnum:=LV_GetLParam(wnd,listnum); - StrDupW(tmp,NewActionList^[actnum].descr); // keeping old name - FreeAction(@NewActionList^[actnum]); - with NewActionList^[actnum] do - begin - flags :=ACF_ASSIGNED; - flags2:=0; - - descr:=tmp; - if descr=nil then - begin - li.iItem :=listnum; - li.mask :=LVIF_TEXT; - li.iSubItem :=0; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - SendDlgItemMessageW(Dialog,IDC_ACTION_LIST,LVM_GETITEMW,0,tlparam(@li)); - StrDupW(descr,arr); - end; - - if ListView_GetCheckState(wnd,listnum)=0 then - flags:=flags or ACF_DISABLED; - - actionType:=ActIds[SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)].code; - case actionType of - ACT_CONTACT: begin - contact:=SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETITEMDATA, - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETCURSEL,0,0),0); - if IsDlgButtonChecked(Dialog,IDC_CNT_KEEP)=BST_CHECKED then - flags:=flags or ACF_KEEPONLY; - end; - - ACT_SERVICE: begin - if IsDlgButtonChecked(Dialog,IDC_SRV_WPAR)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_WPAR; - if IsDlgButtonChecked(Dialog,IDC_SRV_LPAR)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_LPAR; - if IsDlgButtonChecked(Dialog,IDC_SRV_SRVC)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_SRVC; - - case CB_GetData(GetDlgItem(Dialog,IDC_FLAG_WPAR)) of - ptParam: begin - flags:=flags or ACF_WPARAM - end; - ptResult: begin - flags:=flags or ACF_WRESULT - end; - ptCurrent: begin - flags:=flags or ACF_WPARNUM or ACF_WCURRENT - end; - ptNumber: begin - flags:=flags or ACF_WPARNUM; - if GetNumValue(GetDlgItem(Dialog,IDC_EDIT_WPAR), - (flags2 and ACF2_SRV_WPAR)<>0,wparam) then - flags2:=flags2 or ACF2_SRV_WHEX; -// wparam:=GetDlgItemInt(Dialog,IDC_EDIT_WPAR,pbool(nil)^,true); - end; - ptStruct: begin - flags:=flags or ACF_WSTRUCT; - StrDup(pAnsiChar(wparam),wstruct); - end; - ptUnicode: begin - flags:=flags or ACF_WUNICODE; - pointer(wparam):=GetDlgText(Dialog,IDC_EDIT_WPAR); - end; - ptString: pointer(wparam):=GetDlgText(Dialog,IDC_EDIT_WPAR,true); - end; - - case CB_GetData(GetDlgItem(Dialog,IDC_FLAG_LPAR)) of - ptParam: begin - flags:=flags or ACF_LPARAM - end; - ptResult: begin - flags:=flags or ACF_LRESULT - end; - ptCurrent: begin - flags:=flags or ACF_LPARNUM or ACF_LCURRENT - end; - ptNumber: begin - flags:=flags or ACF_LPARNUM; - if GetNumValue(GetDlgItem(Dialog,IDC_EDIT_LPAR), - (flags2 and ACF2_SRV_LPAR)<>0,lparam) then - flags2:=flags2 or ACF2_SRV_LHEX; -// lparam:=GetDlgItemInt(Dialog,IDC_EDIT_LPAR,pbool(nil)^,true); - end; - ptStruct: begin - flags:=flags or ACF_LSTRUCT; - StrDup(pAnsiChar(lparam),lstruct); - end; - ptUnicode: begin - flags:=flags or ACF_LUNICODE; - pointer(lparam):=GetDlgText(Dialog,IDC_EDIT_LPAR); - end; - ptString: pointer(lparam):=GetDlgText(Dialog,IDC_EDIT_LPAR,true); - end; - - if IsDlgButtonChecked(Dialog,IDC_RES_INSERT)=BST_CHECKED then - flags:=flags or ACF_INSERT; - if IsDlgButtonChecked(Dialog,IDC_RES_MESSAGE)=BST_CHECKED then - flags:=flags or ACF_MESSAGE; - if IsDlgButtonChecked(Dialog,IDC_RES_POPUP)=BST_CHECKED then - flags:=flags or ACF_POPUP; - - case CB_GetData(GetDlgItem(Dialog,IDC_SRV_RESULT)) of - sresHex: flags:=flags or ACF_HEX; - sresInt: begin - if IsDlgButtonChecked(Dialog,IDC_RES_SIGNED)=BST_CHECKED then - flags:=flags or ACF_SIGNED; - end; - sresString: begin - flags:=flags or ACF_STRING; - if IsDlgButtonChecked(Dialog,IDC_RES_UNICODE)=BST_CHECKED then - flags:=flags or ACF_UNICODE; - if IsDlgButtonChecked(Dialog,IDC_RES_FREEMEM)=BST_CHECKED then - flags2:=flags2 or ACF2_FREEMEM; - end; - sresStruct: flags:=flags or ACF_STRUCT; - end; - - service:=GetDlgText(Dialog,IDC_EDIT_SERVICE,true); - - end; - - ACT_PROGRAM: begin - prgname:=GetDlgText(Dialog,IDC_EDIT_PRGPATH); - args:=GetDlgText(Dialog,IDC_EDIT_PRGARGS); - if IsDlgButtonChecked(Dialog,IDC_FLAG_PARALLEL)=BST_CHECKED then - flags:=flags or ACF_PRTHREAD; - if IsDlgButtonChecked(Dialog,IDC_FLAG_CURPATH)=BST_CHECKED then - flags:=flags or ACF_CURPATH; - time:=GetDlgItemInt(Dialog,IDC_EDIT_PROCTIME,pbool(nil)^,false); - if IsDlgButtonChecked(Dialog,IDC_FLAG_MINIMIZE)=BST_CHECKED then - show:=SW_SHOWMINIMIZED - else if IsDlgButtonChecked(Dialog,IDC_FLAG_MAXIMIZE)=BST_CHECKED then - show:=SW_SHOWMAXIMIZED - else if IsDlgButtonChecked(Dialog,IDC_FLAG_HIDDEN)=BST_CHECKED then - show:=SW_HIDE - else //if IsDlgButtonChecked(Dialog,IDC_FLAG_NORMAL)=BST_CHECKED then - show:=SW_SHOWNORMAL; - - if IsDlgButtonChecked(Dialog,IDC_PRG_PRG)=BST_CHECKED then - flags2:=flags2 or ACF2_PRG_PRG; - if IsDlgButtonChecked(Dialog,IDC_PRG_ARG)=BST_CHECKED then - flags2:=flags2 or ACF2_PRG_ARG; - end; - - ACT_TEXT: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_CLIP)<>BST_UNCHECKED then - begin - flags:=flags or ACF_CLIPBRD; - if IsDlgButtonChecked(Dialog,IDC_CLIP_COPYTO)<>BST_UNCHECKED then - flags:=flags or ACF_COPYTO; - end - else - begin - if IsDlgButtonChecked(Dialog,IDC_TXT_TEXT)=BST_CHECKED then - flags2:=flags2 or ACF2_TXT_TEXT; - text:=GetDlgText(Dialog,IDC_EDIT_INSERT); - if IsDlgButtonChecked(Dialog,IDC_FLAG_FILE)<>BST_UNCHECKED then - begin - flags:=flags or ACF_FILE; - case CB_GetData(GetDlgItem(Dialog,IDC_FILE_ENC)) of - 0: flags:=flags or ACF_ANSI; - 1: flags:=flags or ACF_UTF8; - 2: flags:=flags or ACF_UTF8 or ACF_SIGN; - 3: flags:=flags or 0; - 4: flags:=flags or ACF_SIGN; - end; - - if IsDlgButtonChecked(Dialog,IDC_TXT_FILE)=BST_CHECKED then - flags2:=flags2 or ACF2_TXT_FILE; - tfile:=GetDlgText(Dialog,IDC_FILE_PATH); - if IsDlgButtonChecked(Dialog,IDC_FILE_APPEND)<>BST_UNCHECKED then - flags:=flags or ACF_FAPPEND - else if IsDlgButtonChecked(Dialog,IDC_FILE_WRITE)<>BST_UNCHECKED then - flags:=flags or ACF_FWRITE; - end; - end; - end; - - ACT_ADVANCE: begin - condition:=ADV_COND_NOP; - if IsDlgButtonChecked(Dialog,IDC_FLAG_GT )=BST_CHECKED then - condition:=ADV_COND_GT - else if IsDlgButtonChecked(Dialog,IDC_FLAG_LT )=BST_CHECKED then - condition:=ADV_COND_LT - else if IsDlgButtonChecked(Dialog,IDC_FLAG_EQ )=BST_CHECKED then - condition:=ADV_COND_EQ; - value:=GetDlgItemInt(Dialog,IDC_ADV_VALUE,pbool(nil)^,false); - - if IsDlgButtonChecked(Dialog,IDC_FLAG_NOT)=BST_CHECKED then - condition:=condition or ADV_COND_NOT; - - if IsDlgButtonChecked(Dialog,IDC_FLAG_BREAK)=BST_CHECKED then - action:=ADV_ACT_BREAK - else if IsDlgButtonChecked(Dialog,IDC_FLAG_JUMP )=BST_CHECKED then - action:=ADV_ACT_JUMP - else - action:=ADV_ACT_NOP; - - case action of - ADV_ACT_JUMP: operval:=GetDlgText(Dialog,IDC_ADV_VAL2); - end; - - if IsDlgButtonChecked(Dialog,IDC_FLAG_VARS)<>BST_UNCHECKED then - begin - varval:=GetDlgText(Dialog,IDC_ADV_VARS); - action:=action or ADV_ACT_VARS; - if IsDlgButtonChecked(Dialog,IDC_ADV_ASINT)<>BST_UNCHECKED then - flags:=flags or ACF_VARASINT; - end -;{//!!executively!! - else }if IsDlgButtonChecked(Dialog,IDC_FLAG_MATH)=BST_CHECKED then - begin - mathval:=GetDlgItemInt(Dialog,IDC_ADV_VAL1,pbool(nil)^,true); - action :=action or ADV_ACT_MATH; - oper :=CB_GetData(GetDlgItem(Dialog,IDC_ADV_OPER)); -// oper :=SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_GETCURSEL,0,0); - end; - end; - - ACT_CHAIN: begin - wnd:=GetDlgItem(Dialog,IDC_GROUP_LIST); - i:=SendMessage(wnd,CB_GETCURSEL,0,0); - if i>0 then - id:=SendMessage(wnd,CB_GETITEMDATA,i,0) - else - id:=0; - end; - - ACT_RW: begin - if IsDlgButtonChecked(Dialog,IDC_RW_CURRENT)=BST_CHECKED then - flags:=flags or ACF_CURRENT - else if IsDlgButtonChecked(Dialog,IDC_RW_RESULT)=BST_CHECKED then - flags:=flags or ACF_RESULT - else if IsDlgButtonChecked(Dialog,IDC_RW_PARAM)=BST_CHECKED then - flags:=flags or ACF_PARAM - else - dbcontact:=SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETITEMDATA, - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETCURSEL,0,0),0); - dbmodule :=GetDlgText(Dialog,IDC_RW_MODULE ,true); - dbsetting:=GetDlgText(Dialog,IDC_RW_SETTING,true); - if IsDlgButtonChecked(Dialog,IDC_RW_MVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_MVAR; - if IsDlgButtonChecked(Dialog,IDC_RW_SVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_SVAR; - - if IsDlgButtonChecked(Dialog,IDC_RW_WRITE)=BST_CHECKED then - flags:=flags or ACF_DBWRITE - else if IsDlgButtonChecked(Dialog,IDC_RW_DELETE)=BST_CHECKED then - flags:=flags or ACF_DBDELETE; - - if IsDlgButtonChecked(Dialog,IDC_RW_LAST)=BST_CHECKED then - flags:=flags or ACF_LAST; - - if IsDlgButtonChecked(Dialog,IDC_RW_TVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_TVAR; - - i:=CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE)); - case i of - 0: flags:=flags or ACF_DBBYTE; - 1: flags:=flags or ACF_DBWORD; - 2: flags:=flags or 0; - 3: flags:=flags or ACF_DBANSI; - 4: flags:=flags or ACF_DBUTEXT; - end; - if i<3 then - begin - if (flags and ACF_LAST)=0 then - begin - if GetNumValue(GetDlgItem(Dialog,IDC_RW_VALUE), - (flags2 and ACF2_RW_TVAR)<>0,dbvalue) then - flags2:=flags2 or ACF2_RW_HEX; - end; - end - else - begin - if (flags and ACF_LAST)=0 then - pWideChar(dbvalue):=GetDlgText(Dialog,IDC_RW_TEXT); - end; - - if (IsDlgButtonChecked(Dialog,IDC_RW_LAST)=BST_CHECKED) or - ((flags and ACF_LAST)<>0) then - flags:=flags or ACF_LAST; - end; - - ACT_MESSAGE: begin - pWideChar(msgtitle):=GetDlgText(Dialog,IDC_MSG_TITLE); - pWideChar(msgtext ):=GetDlgText(Dialog,IDC_MSG_TEXT); - if IsDlgButtonChecked(Dialog,IDC_MSG_KEEP)=BST_CHECKED then - flags:=flags or ACF_MSG_KEEP; - if IsDlgButtonChecked(Dialog,IDC_MSG_TTL)=BST_CHECKED then - flags2:=flags2 or ACF2_MSG_TTL; - if IsDlgButtonChecked(Dialog,IDC_MSG_TXT)=BST_CHECKED then - flags2:=flags2 or ACF2_MSG_TXT; - - if IsDlgButtonChecked(Dialog,IDC_MSGB_OC )=BST_CHECKED then boxopts:=MB_OKCANCEL - else if IsDlgButtonChecked(Dialog,IDC_MSGB_ARI)=BST_CHECKED then boxopts:=MB_ABORTRETRYIGNORE - else if IsDlgButtonChecked(Dialog,IDC_MSGB_YNC)=BST_CHECKED then boxopts:=MB_YESNOCANCEL - else if IsDlgButtonChecked(Dialog,IDC_MSGB_YN )=BST_CHECKED then boxopts:=MB_YESNO - else if IsDlgButtonChecked(Dialog,IDC_MSGB_RC )=BST_CHECKED then boxopts:=MB_RETRYCANCEL - else{if IsDlgButtonChecked(Dialog,IDC_MSGB_OK )=BST_CHECKED then}boxopts:=MB_OK; - - if IsDlgButtonChecked(Dialog,IDC_MSGI_ERROR)=BST_CHECKED then boxopts:=boxopts or MB_ICONHAND - else if IsDlgButtonChecked(Dialog,IDC_MSGI_QUEST)=BST_CHECKED then boxopts:=boxopts or MB_ICONQUESTION - else if IsDlgButtonChecked(Dialog,IDC_MSGI_WARN )=BST_CHECKED then boxopts:=boxopts or MB_ICONWARNING - else if IsDlgButtonChecked(Dialog,IDC_MSGI_INFO )=BST_CHECKED then boxopts:=boxopts or MB_ICONINFORMATION - ;//else if IsDlgButtonChecked(Dialog,IDC_MSGI_NONE)=BST_CHECKED then ; - end; - - end; - end; - end; - - procedure BuildActionChain(group:integer=-1); - var - i,j,item:integer; - wnd:HWND; - act:pHKAction; - idx:integer; - begin - if (ChMask and ACTM_ACTS)=0 then exit; - ChMask:=ChMask and not ACTM_ACTS; - SaveAction(-1,-1); - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - i:=SendMessageW(wnd,LVM_GETITEMCOUNT,0,0); - idx:=LV_GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP),group); - if i>0 then - begin - j:=LV_GetLParam(wnd,0); - NewGroupList^[idx].firstAction:=j; - act:=@NewActionList^[j]; - for item:=1 to i-1 do - begin - j:=LV_GetLParam(wnd,item); - act^.next:=j; - act:=@NewActionList^[j]; - end; - act^.next:=0; - end - else - begin - if idx>=0 then - NewGroupList^[idx].firstAction:=0; - end; - end; - - procedure CheckActionList(next:integer); - var - i:integer; - wnd:HWND; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - i:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - if i>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP),true); - if next=i then - dec(next); - ListView_SetItemState(wnd,next, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - end - else - begin - SHWindows; - SHActButtons(SW_HIDE); - EnableWindow(wnd,false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - next:=0; - end; - CheckActList(next); - end; - - procedure CheckGroupList(next:integer); - var - i:integer; - wnd:HWND; - li:LV_ITEMW; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - i:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - if i>0 then - begin - if next=i then - dec(next); - ListView_SetItemState(wnd,next,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - li.iItem :=next; - li.iSubItem:=0; - li.mask :=LVIF_PARAM; - SendMessage(wnd,LVM_GETITEM,0,tlparam(@li)); - end - else - begin - EnableWindow(wnd,false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE),false); - CheckActionList(0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW),false); - end; - CheckGrpList(next); - end; - - // Fill action group list and disable chain controls - function FillGroupList{(Dialog:hwnd)}:integer; - var - CurGroup:pHKRecord; - i:integer; - list:HWND; - lvi:TLVITEMW; - begin - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - CheckActionList(-1); - list:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - - SendMessage(list,LVM_DELETEALLITEMS,0,0); - CurGroup:=@NewGroupList^; - result:=-1; - lvi.mask:=LVIF_TEXT+LVIF_PARAM; - lvi.iSubItem:=0; - for i:=0 to NewMaxGroups-1 do - begin - if (CurGroup^.flags and ACF_ASSIGNED)<>0 then - begin - lvi.iItem :=i; - lvi.lParam:=i; - if CurGroup^.descr=nil then - lvi.pszText:=NoDescription - else - lvi.pszText:=CurGroup^.descr; - SendMessageW(list,LVM_INSERTITEMW,0,tlparam(@lvi)); - inc(result); - end; - inc(CurGroup); - end; - - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_GROUP ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE ),result>=0); - if result<0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_UP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN ),false); - EnableWindow(GetDlgItem(Dialog,IDC_STAT_GROUPS ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE ),false); - end - else - result:=0; - SendMessage(list,CB_SETCURSEL,0,0); - SendMessage(list,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - ListView_SetItemState(list,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - end; - - procedure SHMath(show:boolean); - var - wnd:HWND; - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_ASINT),not show); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS ),not show); - - wnd:=GetDlgItem(Dialog,IDC_ADV_OPER); - EnableWindow(wnd,show); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1), - show and (CB_GetData(wnd)<>lresult(aeNot)));//(SendMessage(wnd,CB_GETCURSEL,0,0)<>0)); - end; - - procedure SetMBRadioIcon(h:THANDLE;id:dword;icon:uint_ptr); - begin - SendDlgItemMessage(Dialog,id,BM_SETIMAGE,IMAGE_ICON, - LoadImage(h,MAKEINTRESOURCE(icon),IMAGE_ICON,16,16,0{LR_SHARED})); - // SendDlgItemMessage(Dialog,id,BM_SETIMAGE,IMAGE_ICON,LoadIcon(0,icon)); - end; - - procedure SetMBRadioIcons; - var - h:THANDLE; - begin - h:=LoadLibrary('user32.dll'); - // SetMBRadioIcon(IDC_MSGI_NONE,IDI_); //? - SetMBRadioIcon(h,IDC_MSGI_ERROR,103{IDI_HAND}); - SetMBRadioIcon(h,IDC_MSGI_QUEST,102{IDI_QUESTION}); - SetMBRadioIcon(h,IDC_MSGI_WARN ,101{IDI_EXCLAMATION}); - SetMBRadioIcon(h,IDC_MSGI_INFO ,104{IDI_ASTERISK}); - FreeLibrary(h); - end; - - procedure FillFileName(idc:integer); - var - pw,ppw:pWideChar; - begin - mGetMem(pw,1024*SizeOf(WideChar)); - ppw:=GetDlgText(Dialog,idc); - if ShowDlgW(pw,ppw) then - SetDlgItemTextW(Dialog,idc,pw); - mFreeMem(ppw); - mFreeMem(pw); - end; - -var - wnd,wnd1,wnd2:HWND; - i,j:int_ptr; - lvflag:integer; - pc:pAnsiChar; - li:LV_ITEMW; - lv:LV_COLUMNW; - b:boolean; - ico:HICON; -begin - result:=0; - case hMessage of - WM_DESTROY: begin - ApiCard.Free; - SetCancel; - mFreeMem(wstruct); - mFreeMem(lstruct); - end; - - WM_INITDIALOG: begin - ApiCard:=CreateServiceCard(Dialog); - wstruct:=nil; - lstruct:=nil; - SetStart; - DontReact :=true; - SHWindows; - TranslateDialogDefault(Dialog); - SetButtonIcons2(Dialog); - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - MakeResultTypeList(GetDlgItem(Dialog,IDC_SRV_RESULT)); - MakeParamTypeList (GetDlgItem(Dialog,IDC_FLAG_WPAR)); - MakeParamTypeList (GetDlgItem(Dialog,IDC_FLAG_LPAR)); - MakeMathOperList (GetDlgItem(Dialog,IDC_ADV_OPER)); - MakeFileEncList (GetDlgItem(Dialog,IDC_FILE_ENC)); - MakeDataTypeList (GetDlgItem(Dialog,IDC_RW_DATATYPE)); - - // service list for RunService - ApiCard.FillList(GetDlgItem(Dialog,IDC_EDIT_SERVICE)); - // contact list for ContactMessage - FillContactList(GetDlgItem(Dialog,IDC_CONTACTLIST),fCLfilter,fCLformat); - // action type combobox - FillActTypeList(GetDlgItem(Dialog,IDC_ACTION_TYPE)); - - if isVarsInstalled then - begin - ico:=CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON); - SendDlgItemMessage(Dialog,IDC_HLP_FVARS,BM_SETIMAGE,IMAGE_ICON,ico); - SendDlgItemMessage(Dialog,IDC_HLP_VARS ,BM_SETIMAGE,IMAGE_ICON,ico); - SendDlgItemMessage(Dialog,IDC_ADV_HVARS,BM_SETIMAGE,IMAGE_ICON,ico); - end; - - if ServiceExists(MS_SYSTEM_GET_XI)=0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_EXPORT),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_IMPORT),false); - end; - - OldActTableProc :=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,long_ptr(@NewActTableProc))); - OldGroupTableProc:=pointer(SetWindowLongPtrW(GetDlgItem(Dialog,IDC_ACTION_GROUP), - GWL_WNDPROC,long_ptr(@NewGroupTableProc))); - - // fill group list - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW,0,tlparam(@lv)); - FillGroupList{(Dialog)}; - FillChainList(Dialog); - - SetMBRadioIcons; - - // fill current group - MakeActionList(@NewGroupList^); - ChMask:=0; - CheckGrpList(-1); - DontReact:=false; - end; - - WM_COMMAND: begin - if DontReact then exit; - case wParam shr 16 of - CBN_EDITCHANGE: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - EN_CHANGE: begin -// check for group renaming - if loword(wParam)<>IDC_EDIT_FORMAT then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - end; - CBN_SELCHANGE: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - case loword(wParam) of - IDC_SRV_RESULT: begin - i:=CB_GetData(lParam); - case i of - sresHex,sresInt,sresStruct: begin - SHControl(IDC_RES_FREEMEM,SW_HIDE); - SHControl(IDC_RES_UNICODE,SW_HIDE); - if i=sresInt then - SHControl(IDC_RES_SIGNED,SW_SHOW) - else - SHControl(IDC_RES_SIGNED,SW_HIDE); - end; - sresString: begin - SHControl(IDC_RES_FREEMEM,SW_SHOW); - SHControl(IDC_RES_UNICODE,SW_SHOW); - SHControl(IDC_RES_SIGNED ,SW_HIDE); - end; - end; - end; - - IDC_ADV_OPER: begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1), - (CB_GetData(lParam)<>lresult(aeNot))); -// SendMessage(lParam,CB_GETCURSEL,0,0)<>0); - end; - - IDC_RW_DATATYPE: begin - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - end - else - begin - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - end; - end; - - IDC_ACTION_TYPE: begin - i:=SendMessage(lParam,CB_GETCURSEL,0,0); - SHWindows(ActIds[i].code); - ChangeActionName(-1,i+1); - case ActIds[i].code of - ACT_CONTACT: EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - ACT_RW: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST), - (IsDlgButtonChecked(Dialog,IDC_RW_MANUAL)=BST_CHECKED)); - - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - end - else - begin - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - end; - - end; - ACT_ADVANCE: FillSubList(Dialog); - end; - end; -{ - IDC_EDIT_WPAR,IDC_EDIT_LPAR: begin - SendMessage(lParam,CB_GETLBTEXT, - SendMessage(lParam,CB_GETCURSEL,0,0),TLPARAM(@buf)); - if loword(wParam)=IDC_EDIT_WPAR then - FixParam(buf,IDC_EDIT_WPAR,IDC_FLAG_WPAR) - else - FixParam(buf,IDC_EDIT_LPAR,IDC_FLAG_LPAR) - end; -} - IDC_FLAG_WPAR,IDC_FLAG_LPAR: begin - if loword(wParam)=IDC_FLAG_WPAR then - begin - wnd :=GetDlgItem(Dialog,IDC_EDIT_WPAR); - wnd1:=GetDlgItem(Dialog,IDC_WSTRUCT); - wnd2:=GetDlgItem(Dialog,IDC_SRV_WPAR); - end - else - begin - wnd :=GetDlgItem(Dialog,IDC_EDIT_LPAR); - wnd1:=GetDlgItem(Dialog,IDC_LSTRUCT); - wnd2:=GetDlgItem(Dialog,IDC_SRV_LPAR); - end; - i:=CB_GetData(GetDlgItem(Dialog,loword(wParam))); - - if i=ptStruct then - begin - ShowWindow(wnd ,SW_HIDE); - ShowWindow(wnd2,SW_HIDE); - ShowWindow(wnd1,SW_SHOW); - end - else - begin - ShowWindow(wnd ,SW_SHOW); - ShowWindow(wnd2,SW_SHOW); - ShowWindow(wnd1,SW_HIDE); - if i in [ptCurrent,ptResult,ptParam] then - EnableWindow(wnd,false) - else - begin - EnableWindow(wnd,true); -{ - flag:=GetWindowLongPtr(wnd,GWL_STYLE); - if i=ptNumber then - flag:=flag or ES_NUMBER - else - flag:=flag and not ES_NUMBER; - SetWindowLongPtr(wnd,GWL_STYLE,flag); -} - end; - end; - end; - IDC_EDIT_SERVICE: ReloadService; - end; - end; - BN_CLICKED: begin - case loword(wParam) of - IDC_GROUP_RELOAD, // don't affect to saved (DB) datas - IDC_WSTRUCT, // 'Changed' on process - IDC_LSTRUCT, // 'Changed' on process - IDC_HLP_FVARS, - IDC_HLP_VARS, - IDC_ADV_HVARS, - IDC_ACTION_HELP, - IDC_GROUP_EXPORT, - IDC_CNT_APPLY, - IDC_CNT_FILTER, - IDC_GROUP_TEST: ; - - IDC_GROUP_UP, - IDC_GROUP_DOWN, - IDC_GROUP_NEW : SetChanged(Dialog,etHK); - - IDC_GROUP_DELETE, // action deleting with subactions - IDC_GROUP_IMPORT, - IDC_ACTION_NEW, - IDC_ACTION_DELETE, - IDC_ACTION_UP, - IDC_ACTION_DOWN: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etHK+etACT); - end; - else - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - - case loword(wParam) of - IDC_SRV_WPAR, - IDC_SRV_LPAR, - IDC_SRV_SRVC, - IDC_PRG_PRG , - IDC_PRG_ARG , - IDC_TXT_FILE, - IDC_TXT_TEXT, - IDC_RW_MVAR , - IDC_RW_SVAR , - IDC_RW_TVAR , - IDC_MSG_TTL , - IDC_MSG_TXT : SetButtonIcon(lParam,checknames[IsDlgButtonChecked(Dialog,loword(wParam))]); - end; - - case loword(wParam) of - IDC_CNT_FILTER, - IDC_CNT_APPLY: begin - if loword(wParam)=IDC_CNT_APPLY then - begin - mFreeMem(fCLformat); - fCLformat:=GetDlgText(Dialog,IDC_EDIT_FORMAT); - DBWriteUnicode(0,DBBranch,'CLformat',fCLformat); - end - else - begin - fCLfilter:=IsDlgButtonChecked(Dialog,IDC_CNT_FILTER)<>BST_UNCHECKED; - DBWriteByte(0,DBBranch,'CLfilter',ord(fCLfilter)); - end; -// Saving and restoring contact after list rebuild - wnd:=GetDlgItem(Dialog,IDC_CONTACTLIST); - i:=SendMessage(wnd,CB_GETITEMDATA,SendMessage(wnd,CB_GETCURSEL,0,0),0); - - FillContactList(wnd,fCLfilter,fCLformat); - - SendMessage(wnd,CB_SETCURSEL,FindContact(wnd,i),0); - end; - IDC_HLP_FVARS, - IDC_HLP_VARS : ShowHelp(hlpVariables); - IDC_ADV_HVARS: ShowHelp(hlpAdvVariables); - - IDC_GROUP_EXPORT: begin - if ShowDlgW(xmlfilename,xmlfilename,inoutfilter,false) then - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - for i:=0 to ListView_GetItemCount(wnd)-1 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - with GroupList[LV_GetLParam(wnd,i)] do - if (flags and ACF_ASSIGNED)<>0 then // must be always true - flags:=flags or ACF_EXPORT; - end - else - with GroupList[i] do - if (flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED) then - flags:=flags and not ACF_EXPORT; - end; - i:=ACIO_EXPORT or ACIO_SELECTED; - if GetFSize(xmlfilename)>0 then - if MessageBoxW(Dialog,TranslateW('Append data to file?'), - PluginName,MB_YESNO+MB_ICONWARNING)=IDYES then - i:=i or ACIO_APPEND; - CallService(MS_ACT_INOUT,i,TLPARAM(@xmlfilename)); -// Export({GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP)),}xmlfilename,i); - for i:=0 to MaxGroups-1 do - with GroupList[i] do - if (flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED) then - flags:=flags and not ACF_EXPORT; - end; - end; - - IDC_GROUP_IMPORT: begin - if ShowDlgW(xmlfilename,xmlfilename,inoutfilter) then - begin -// if Import(xmlfilename) then - if CallService(MS_ACT_INOUT,0,TLPARAM(@xmlfilename))<>0 then - begin - ChMask:=ChMask or ACTM_NEW; - SendMessage(Dialog,WM_COMMAND,IDC_GROUP_RELOAD+(BN_CLICKED shl 16), - GetDlgItem(Dialog,IDC_GROUP_RELOAD)); -//(in reload) FillChainList(Dialog); - end; - end; - end; - - IDC_WSTRUCT, IDC_LSTRUCT: begin - if loword(wParam)=IDC_WSTRUCT then - pc:=wstruct - else - pc:=lstruct; -//!!!! - pAnsiChar(j):=EditStructure(pAnsiChar(pc),Dialog); - if j<>0 then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - mFreeMem(pAnsiChar(pc)); - pc:=pAnsiChar(j); - - if loword(wParam)=IDC_WSTRUCT then - wstruct:=pc - else - lstruct:=pc; - end; - end; - - IDC_PROGRAM: begin - FillFileName(IDC_EDIT_PRGPATH); - end; - IDC_FILE_FILEBTN: begin - FillFileName(IDC_FILE_PATH); - end; - - IDC_GROUP_TEST: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,tlparam(@li)); - j:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - - ActionStarterWait(li.lParam); - // doubling from "reload" button - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - NewGroupList :=GroupList; - NewMaxGroups :=MaxGroups; - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - FillGroupList{(Dialog)}; - FillChainList(Dialog); - - Listview_SetItemState(wnd,0,0,LVIS_FOCUSED or LVIS_SELECTED); - Listview_SetItemState(wnd,i, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SendMessage(wnd,LVM_ENSUREVISIBLE,i,0); - - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - Listview_SetItemState(wnd,0,0,LVIS_FOCUSED or LVIS_SELECTED); - Listview_SetItemState(wnd,j, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SendMessage(wnd,LVM_ENSUREVISIBLE,j,0); - - end; - IDC_GROUP_NEW: begin - i:=AddGroup(Dialog,NewGroup(NewGroupList,NewMaxGroups)); - if i>=0 then - begin - ChMask:=ChMask or ACTM_NEW or ACTM_SORT; - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_GROUP),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW ),true); - FillChainList(Dialog); - CheckGrpList(i); - end; - end; - IDC_GROUP_DELETE: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - ChMask:=ChMask or ACTM_DELETE or ACTM_SORT; - - with NewGroupList^[LV_GetLParam(wnd,i)] do - begin - flags:=0; - mFreeMem(descr); - FreeActions(NewActionList,firstAction); - end; - - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - FillChainList(Dialog); - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - CheckGroupList(-1); -{ - i:=SendMessageW(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); //?? - if i>=0 then - begin - ChMask:=ChMask or ACTM_DELETE; - j:=GetLParam(wnd,i); - - with NewGroupList^[j] do - begin - flags:=0; - mFreeMem(descr); - FreeActions(NewActionList,firstAction); - end; - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - -//?? i:=ListView_GetNextItem(wnd,-1,LVNI_FOCUSED); - SendMessage(wnd,LVM_DELETEITEM,i,0); - FillChainList(Dialog); - CheckGroupList(i); - end; -} - end; - IDC_GROUP_RELOAD: begin - ChMask:=ChMask or ACTM_RELOAD; - SetCancel; - NewGroupList :=GroupList; - NewMaxGroups :=MaxGroups; - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - FillGroupList{(Dialog)}; - FillChainList(Dialog); - end; - - IDC_ACTION_HELP: begin - ShowHelp(SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)); - end; - - IDC_ACTION_NEW: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.mask :=LVIF_PARAM; - i :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - li.iItem :=i+1; - li.iSubItem:=0; - li.lParam :=NewAction(NewActionList,NewMaxActions); - SendMessageW(wnd,LVM_INSERTITEMW,0,tlparam(@li)); - ListView_SetCheckState(wnd,li.iItem,true); - if li.iItem=0 then - begin - ListView_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SHActButtons(SW_SHOW); - end; - ChangeActionName(li.iItem); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE ),true); - CheckActList(i); - - wnd:=GetDlgItem(Dialog,IDC_ADV_VAL2); - i:=SendMessage(wnd,CB_GETCURSEL,0,0); - FillSubList(Dialog); - SendMessage(wnd,CB_SETCURSEL,i,0); - end; - IDC_ACTION_DELETE: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - FreeAction(@NewActionList^[LV_GetLParam(wnd,i)]); - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - CheckActionList(0); -{ - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); //?? - if li.iItem>=0 then - begin - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - SendMessageW(wnd,LVM_GETITEM,0,TLPARAM(@li)); - FreeAction(@NewActionList^[li.lParam]); - - SendMessage(wnd,LVM_DELETEITEM,li.iItem,0); - CheckActionList(li.iItem); - end; -} - end; - - IDC_GROUP_UP: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i>0 then - begin - CheckGrpList(MoveGroup(wnd,-1,-1)); - ChMask:=ChMask or ACTM_SORT; - end; - end; - IDC_GROUP_DOWN: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i<(SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1) then - begin - CheckGrpList(MoveGroup(wnd,-1,1)); - ChMask:=ChMask or ACTM_SORT; - end; - end; - - IDC_ACTION_UP: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i>0 then - CheckActList(MoveGroup(wnd,-1,-1)); - end; - IDC_ACTION_DOWN: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i<(SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1) then - CheckActList(MoveGroup(wnd,-1,1)); - end; - - IDC_FILE_WRITE, IDC_FILE_READ, IDC_FILE_APPEND: - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT), - loword(wParam)<>IDC_FILE_APPEND); - - IDC_RW_DELETE, - IDC_RW_READ, - IDC_RW_WRITE: begin - b:=loword(wParam)<>IDC_RW_DELETE; - EnableWindow(GetDlgItem(Dialog,IDC_RW_DATATYPE),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_LAST ),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE ),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),b); - end; - - IDC_FLAG_CLIP,IDC_FLAG_FILE,IDC_FLAG_MESSAGE: begin - b:=loword(wParam)=IDC_FLAG_CLIP; -//!! +text read = disabled - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),b); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),b); - b:=b or ((loword(wParam)=IDC_FLAG_FILE) and - (IsDlgButtonChecked(Dialog,IDC_FILE_READ)<>BST_UNCHECKED)); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT),not b); - - b:=loword(wParam)=IDC_FLAG_FILE; - EnableWindow(GetDlgItem(Dialog,IDC_FILE_ENC ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),b); - end; - - IDC_FLAG_JUMP: begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),true); - end; - - IDC_FLAG_BREAK,IDC_FLAG_ANOP: - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - end; - - IDC_FLAG_VARS: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_VARS)<>BST_UNCHECKED then - begin - SHMath(false); - CheckDlgButton(Dialog,IDC_FLAG_MATH,BST_UNCHECKED); - end - else - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_ASINT),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS ),false); - end; - end; - IDC_FLAG_MATH: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_MATH)<>BST_UNCHECKED then - begin - SHMath(true); - CheckDlgButton(Dialog,IDC_FLAG_VARS,BST_UNCHECKED); - end - else - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - end; - end; - - IDC_RW_CURRENT, IDC_RW_RESULT, IDC_RW_PARAM: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end; - IDC_RW_MANUAL: EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - - IDC_RW_LAST: begin - b :=IsDlgButtonChecked(Dialog,IDC_RW_LAST )=BST_UNCHECKED; - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE), b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ), b); - end; - end; - end; - end; - end; - - WM_HELP: begin - if (PHELPINFO(lParam)^.iContextType=HELPINFO_WINDOW) then - ShowHelp(SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)); - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - BuildActionChain; - SetSave(Dialog,LV_GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP))); - - if ActionList<>NewActionList then - begin - DestroyActions(ActionList,MaxActions); - ActionList:=NewActionList; - MaxActions:=NewMaxActions; - end; - - SaveGroups; - - if ChMask<>0 then //?? - begin - NotifyEventHooks(hHookChanged,ChMask,0); - ChMask:=0; - end; - - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ITEMCHANGED: begin - if DontReact then exit; // bug when group moved avoid - - if wParam=IDC_ACTION_GROUP then - begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if lvflag>0 then // old focus - BuildActionChain(PNMLISTVIEW(lParam)^.iItem) - else if lvflag<0 then // new focus - begin - DontReact:=true; - - ClearDialogData; - MakeActionList(@NewGroupList^[PNMLISTVIEW(lParam)^.lParam]); - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - - DontReact:=false; - end - else - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_SELECTED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_SELECTED); - if lvflag<>0 then - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - end; - end; - end - else if wParam=IDC_ACTION_LIST then - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - if lvflag>0 then // old focus - SaveAction(PNMLISTVIEW(lParam)^.iItem, - PNMLISTVIEW(lParam)^.lParam) - else if lvflag<0 then // new focus - begin - DontReact:=true; - - ClearDialogData; - j:=PNMLISTVIEW(lParam)^.lParam; - FillAction(j); - CheckActList(PNMLISTVIEW(lParam)^.iItem); - - DontReact:=false; - end - else - begin // checkboxes - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_SELECTED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_SELECTED); - if lvflag<>0 then - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - - if (PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000 then - begin - if PNMLISTVIEW(lParam)^.uOldState=$1000 then - i:=0 - else - i:=ACF_DISABLED; - j:=PNMLISTVIEW(lParam)^.lParam; - NewActionList^[j].flags:=(NewActionList^[j].flags and not ACF_DISABLED) or dword(i); - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - end; - end; - end; - - LVN_ENDLABELEDITW: begin - if DontReact then exit; - if wParam=IDC_ACTION_GROUP then - begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - ChMask:=ChMask or ACTM_RENAME; - SetChanged(Dialog,etHK); - item.mask:=LVIF_TEXT; - if pWideChar(item.pszText)^=#0 then - pWideChar(item.pszText):=NoDescription; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,tlparam(@item)); - - with NewGroupList^[item.lParam] do - begin - mFreeMem(descr); - StrDupW(descr,item.pszText); - end; - - FillChainList(Dialog); - result:=1; - end; - end; - end - else if wParam=IDC_ACTION_LIST then - begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - ChangeActionName(item.iItem,0,pWideChar(item.pszText)); - result:=1; - end; -//?? - end; - end; - end; - - end; - end; - else -// {result:=}DefWindowProc(Dialog,hMessage,wParam,lParam); - end; -// {result:=}DefWindowProc(Dialog,hMessage,wParam,lParam); -end; diff --git a/plugins/!Deprecated/Actman20/i_options.inc b/plugins/!Deprecated/Actman20/i_options.inc deleted file mode 100644 index 26dd8e1f08..0000000000 --- a/plugins/!Deprecated/Actman20/i_options.inc +++ /dev/null @@ -1,459 +0,0 @@ -{Save/load options} - -const - opt_group = 'Group'; - opt_actions = 'Action'; - opt_numacts = 'numactions'; - opt_numhk = 'numgroups'; - opt_firstAction = 'firstaction'; - - opt_cproto = 'cproto'; - opt_cuid = 'cuid'; - opt_ischat = 'ischat'; - - opt_descr = 'descr'; - opt_id = 'id'; - opt_flags = 'flags'; - opt_flags2 = 'flags2'; - opt_time = 'time'; - opt_show = 'show'; - opt_action = 'action'; - opt_value = 'value'; - opt_file = 'file'; - - opt_next = 'next'; - opt_type = 'type'; - opt_contact = 'contact'; - opt_text = 'text'; - opt_prg = 'program'; - opt_args = 'arguments'; - opt_service = 'service'; - opt_wparam = 'wparam'; - opt_wlparam = 'wparamlen'; - opt_llparam = 'lparamlen'; - opt_lparam = 'lparam'; - opt_chain = 'chain'; - opt_cond = 'condition'; - opt_count = 'count'; - opt_module = 'module'; - opt_setting = 'setting'; - opt_oper = 'operation'; - opt_mathval = 'mathval'; - opt_operval = 'operval'; - opt_varval = 'varval'; - opt_msgtitle = 'msgtitle'; - opt_msgtext = 'msgtext'; - opt_boxopts = 'boxopts'; - - -//----- Save settings ----- - -procedure SaveNumValue(setting:pAnsiChar;value:uint_ptr;isvar:boolean); -begin - if isvar then - DBWriteUnicode(0,DBBranch,setting,pWideChar(value)) - else - DBWriteDWord (0,DBBranch,setting,value); -end; - -function SaveActions(section:pAnsiChar;first:integer):integer; -var - p,p1:PAnsiChar; - act:pHKAction; - i:integer; -begin - result:=0; - // in: section = "Group#/" - p1:=StrCopyE(StrEnd(section),opt_actions); // "Group#/Action" - DBDeleteGroup(0,DBBranch,section); - i:=1; - while first<>0 do - begin - act:=@ActionList[first]; - p:=StrEnd(IntToStr(p1,i)); //!!! - p^:='/'; inc(p); // "Group#/Action#/" - - StrCopy(p,opt_flags ); DBWriteDWord(0,DBBranch,section,act^.flags); - StrCopy(p,opt_flags2); DBWriteDWord(0,DBBranch,section,act^.flags2); - StrCopy(p,opt_type ); DBWriteByte (0,DBBranch,section,act^.actionType); - if act^.descr<>nil then - begin - StrCopy(p,opt_descr); DBWriteUnicode(0,DBBranch,section,act^.descr); - end; - - case act^.actionType of - ACT_CONTACT: begin - p^:=#0; - SaveContact(act^.contact,DBBranch,section); - end; - - ACT_SERVICE: begin - StrCopy(p,opt_service); DBWriteString(0,DBBranch,section,act^.service); - - if (act^.flags and (ACF_WCURRENT or ACF_WRESULT or ACF_WPARAM))=0 then - begin - StrCopy(p,opt_wparam); - if (act^.flags and ACF_WPARNUM)<>0 then - SaveNumValue(section,act^.wparam,(act^.flags2 and ACF2_SRV_WPAR)<>0) -// DBWriteDWord(0,DBBranch,section,act^.wparam) - else if act^.wparam<>0 then - begin - if (act^.flags and ACF_WSTRUCT)<>0 then - DBWriteUTF8(0,DBBranch,section,pAnsiChar(act^.wparam)) - else if (act^.flags and ACF_WUNICODE)<>0 then - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.wparam)) - else - DBWriteString(0,DBBranch,section,PAnsiChar(act^.wparam)); - end; - end; - - if (act^.flags and (ACF_LCURRENT or ACF_LRESULT or ACF_LPARAM))=0 then - begin - StrCopy(p,opt_lparam); - if (act^.flags and ACF_LPARNUM)<>0 then - SaveNumValue(section,act^.lparam,(act^.flags2 and ACF2_SRV_LPAR)<>0) -// DBWriteDWord(0,DBBranch,section,act^.lparam) - else if act^.lparam<>0 then - begin - if (act^.flags and ACF_LSTRUCT)<>0 then - DBWriteUTF8(0,DBBranch,section,pAnsiChar(act^.lparam)) - else if (act^.flags and ACF_LUNICODE)<>0 then - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.lparam)) - else - DBWriteString(0,DBBranch,section,PAnsiChar(act^.lparam)); - end; - end; - - end; - - ACT_PROGRAM: begin - StrCopy(p,opt_prg ); DBWriteUnicode(0,DBBranch,section,act^.prgname); - StrCopy(p,opt_args); DBWriteUnicode(0,DBBranch,section,act^.args); - StrCopy(p,opt_time); DBWriteDWord (0,DBBranch,section,act^.time); - StrCopy(p,opt_show); DBWriteDWord (0,DBBranch,section,act^.show); - end; - - ACT_TEXT: begin - if (act^.flags and ACF_CLIPBRD)=0 then - begin - StrCopy(p,opt_text); DBWriteUnicode(0,DBBranch,section,act^.text); - if (act^.flags and ACF_FILE)<>0 then - begin - StrCopy(p,opt_file); DBWriteUnicode(0,DBBranch,section,act^.tfile); - end; - end; - end; - - ACT_ADVANCE: begin - StrCopy(p,opt_cond ); DBWriteByte (0,DBBranch,section,act^.condition); - StrCopy(p,opt_value ); DBWriteDWord (0,DBBranch,section,act^.value); - StrCopy(p,opt_action ); DBWriteByte (0,DBBranch,section,act^.action); - StrCopy(p,opt_operval); DBWriteUnicode(0,DBBranch,section,act^.operval); - StrCopy(p,opt_oper ); DBWriteByte (0,DBBranch,section,act^.oper); - StrCopy(p,opt_mathval); DBWriteDWord (0,DBBranch,section,act^.mathval); - StrCopy(p,opt_varval ); DBWriteUnicode(0,DBBranch,section,act^.varval); - end; - - ACT_CHAIN: begin - StrCopy(p,opt_text); DBWriteDWord(0,DBBranch,section,act^.id); - end; - - ACT_RW: begin - if (act^.flags and ACF_NOCNTCT)=0 then - begin - p^:=#0; - SaveContact(act^.dbcontact,DBBranch,section); - end; - StrCopy(p,opt_module ); DBWriteString(0,DBBranch,section,act^.dbmodule); - StrCopy(p,opt_setting); DBWriteString(0,DBBranch,section,act^.dbsetting); - StrCopy(p,opt_value ); - if (act^.flags and ACF_DBUTEXT)=0 then - begin - SaveNumValue(section,act^.dbvalue,(act^.flags2 and ACF2_RW_TVAR)<>0); -// DBWriteDWord(0,DBBranch,section,act^.dbvalue) - end - else - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.dbvalue)); - end; - - ACT_MESSAGE: begin - StrCopy(p,opt_msgtitle); DBWriteUnicode(0,DBBranch,section,act^.msgtitle); - StrCopy(p,opt_msgtext ); DBWriteUnicode(0,DBBranch,section,act^.msgtext); - StrCopy(p,opt_boxopts ); DBWriteByte (0,DBBranch,section,act^.boxopts); //!! - end; - - end; - inc(result); - inc(i); - first:=ActionList^[first].next; - end; -end; - -procedure SaveGroups; -var - HK:pHKRecord; - NumHK:integer; - i,num:integer; - section:array [0..127] of AnsiChar; - p,p1:PAnsiChar; - Actions:integer; -begin -// even if crap in settings, skip on read -// DBDeleteGroup(0,DBBranch,opt_group); - HK:=@GroupList^; - i:=MaxGroups; - NumHK:=0; - Actions:=1; - DBWriteUnicode(0,DBBranch,'CLformat',fCLformat); - DBWriteByte (0,DBBranch,'CLfilter',ord(fCLfilter)); - - p1:=StrCopyE(section,opt_group); - while i>0 do - begin - with HK^ do - begin - if (flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then - begin - p:=StrEnd(IntToStr(p1,NumHK)); - p^:='/'; inc(p); - - StrCopy(p,opt_id ); DBWriteDWord(0,DBBranch,section,id); - StrCopy(p,opt_flags); DBWriteDWord(0,DBBranch,section,flags); - StrCopy(p,opt_descr); - if descr<>nil then - DBWriteUnicode (0,DBBranch,section,descr) - else - DBDeleteSetting(0,DBBranch,section); - - p^:=#0; - //?? - num:=SaveActions(section,firstAction); - StrCopy(p,opt_numacts); DBWriteWord(0,DBBranch,section,num); - - inc(Actions,num); - inc(NumHK); - end; - end; - inc(HK); - dec(i); - end; - DBWriteWord(0,DBBranch,opt_numhk ,NumHK); - DBWriteWord(0,DBBranch,opt_numacts,Actions-1); -end; - -//----- Load settings ----- - -function LoadNumValue(setting:pAnsiChar;isvar:boolean):uint_ptr; -begin - if isvar then - result:=uint_ptr(DBReadUnicode(0,DBBranch,setting,nil)) - else - result:=DBReadDWord(0,DBBranch,setting); -end; - -function LoadActions(section:pAnsiChar;count:integer):integer; -var - p,p1:PAnsiChar; - act:tHKAction; - i,num,oldnum:integer; -begin - result:=0; - p1:=StrCopyE(StrEnd(section),opt_actions); // "Group#/Action" - - oldnum:=0; - for i:=1 to count do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); // "Group#/Action#/" - FillChar(act,SizeOf(act),0); - - StrCopy(p,opt_flags ); act.flags :=DBReadDWord (0,DBBranch,section,0); - if (act.flags and ACF_ASSIGNED)<>0 then - begin - StrCopy(p,opt_flags2); act.flags2 :=DBReadDWord (0,DBBranch,section,0); - StrCopy(p,opt_descr ); act.descr :=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_type ); act.actionType:=DBReadByte (0,DBBranch,section,ACT_CONTACT); - - case act.actionType of - ACT_CONTACT: begin - p^:=#0; - act.contact:=LoadContact(DBBranch,section); - end; - - ACT_SERVICE: begin - StrCopy(p,opt_service); - act.service:=DBReadString(0,DBBranch,section,nil); - - if (act.flags and (ACF_WCURRENT or ACF_WRESULT or ACF_WPARAM))=0 then - begin - StrCopy(p,opt_wparam); - if (act.flags and ACF_WPARNUM)<>0 then - act.wparam:=LoadNumValue(section,(act.flags2 and ACF2_SRV_WPAR)<>0) - else if (act.flags and ACF_WSTRUCT)<>0 then - act.wparam:=wparam(DBReadUTF8(0,DBBranch,section,nil)) - else if (act.flags and ACF_WUNICODE)<>0 then - act.wparam:=wparam(DBReadUnicode(0,DBBranch,section,nil)) - else - act.wparam:=wparam(DBReadString (0,DBBranch,section,nil)); - end; - - if (act.flags and (ACF_LCURRENT or ACF_LRESULT or ACF_LPARAM))=0 then - begin - StrCopy(p,opt_lparam); - if (act.flags and ACF_LPARNUM)<>0 then - act.lparam:=LoadNumValue(section,(act.flags2 and ACF2_SRV_LPAR)<>0) - // act.lparam:=DBReadDWord(0,DBBranch,section,0) - else if (act.flags and ACF_LSTRUCT)<>0 then - act.lparam:=lparam(DBReadUTF8(0,DBBranch,section,nil)) - else if (act.flags and ACF_LUNICODE)<>0 then - act.lparam:=lparam(DBReadUnicode(0,DBBranch,section,nil)) - else - act.lparam:=lparam(DBReadString(0,DBBranch,section,nil)); - end; - - end; - - ACT_PROGRAM: begin - StrCopy(p,opt_prg ); act.prgname:=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_args); act.args :=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_time); act.time :=DBReadDWord (0,DBBranch,section,0); - StrCopy(p,opt_show); act.show :=DBReadDWord (0,DBBranch,section,SW_SHOW); - end; - - ACT_TEXT: begin - if (act.flags and ACF_CLIPBRD)=0 then - begin - StrCopy(p,opt_text); act.text:=DBReadUnicode(0,DBBranch,section,nil); - if (act.flags and ACF_FILE)<>0 then - begin - StrCopy(p,opt_file); act.tfile:=DBReadUnicode(0,DBBranch,section,nil); - end; - end; - end; - - ACT_ADVANCE: begin - StrCopy(p,opt_cond ); act.condition:=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_value ); act.value :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_action ); act.action :=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_oper ); act.oper :=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_mathval); act.mathval :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_operval); act.operval :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_varval ); act.varval :=DBReadUnicode(0,DBBranch,section); - end; - - ACT_CHAIN: begin - StrCopy(p,opt_text); act.id:=DBReadDWord(0,DBBranch,section); - end; - - ACT_RW: begin - if (act.flags and ACF_NOCNTCT)=0 then - begin - p^:=#0; - act.dbcontact:=LoadContact(DBBranch,section); - end; - StrCopy(p,opt_module ); act.dbmodule :=DBReadString(0,DBBranch,section); - StrCopy(p,opt_setting); act.dbsetting:=DBReadString(0,DBBranch,section); - StrCopy(p,opt_value ); - - if (act.flags and ACF_DBUTEXT)=0 then - act.dbvalue:=LoadNumValue(section,(act.flags2 and ACF2_RW_TVAR)<>0) - else - act.dbvalue:=uint_ptr(DBReadUnicode(0,DBBranch,section)); - end; - - ACT_MESSAGE: begin - StrCopy(p,opt_msgtitle); act.msgtitle:=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_msgtext ); act.msgtext :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_boxopts ); act.boxopts :=DBReadByte (0,DBBranch,section); - end; - - end; - num:=NewAction(ActionList,MaxActions); - move(act,ActionList^[num],SizeOf(tHKAction)); - if i=1 then - result:=num - else - ActionList^[oldnum].next:=num; - oldnum:=num; - end; - end; -end; - -procedure LoadGroups; -var - HK:pHKRecord; - i,num:cardinal; - p,p1:PAnsiChar; - section:array [0..127] of AnsiChar; - NumGroups,NumActions:cardinal; -begin -{ remove doubling - no need? (called just once) - if MaxGroups>0 then - begin - while MaxGroups>0 do - begin - FreeGroup(MaxGroups); - dec(MaxGroups); - end; - FreeMem(GroupList); - end; -} - NumGroups:=DBReadWord(0,DBBranch,opt_numhk,HKListPage); - if NumGroups0 then - begin - act:=@ActionList[1]; - while MaxActions>0 do - begin - FreeAction(act); - inc(act); - dec(MaxActions); - end; - FreeMem(ActionList); - end; -} - NumActions:=DBReadWord(0,DBBranch,opt_numacts,ActListPage); - if NumActions0 then // not needed in normal cases - begin - StrCopy(p,opt_id ); id :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_descr); descr:=DBReadUnicode(0,DBBranch,section,nil); - if descr=nil then - StrDupW(descr,TranslateW('No description')); - - StrCopy(p,opt_numacts); num:=DBReadWord(0,DBBranch,section); - p^:=#0; - firstAction:=LoadActions(section,num); - end; - end; - inc(HK); - inc(i); - end; - fCLfilter:=DBReadByte (0,DBBranch,'CLfilter',0)<>0; - fCLformat:=DBReadUnicode(0,DBBranch,'CLformat'); -end; diff --git a/plugins/!Deprecated/Actman20/i_services.inc b/plugins/!Deprecated/Actman20/i_services.inc deleted file mode 100644 index d835c9225a..0000000000 --- a/plugins/!Deprecated/Actman20/i_services.inc +++ /dev/null @@ -1,131 +0,0 @@ -{Basic ActMan services} - -function ActFreeList(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -begin - result:=0; - mFreeMem(PAnsiChar(lParam)); -end; - -function ActGetList(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - pc:^tChain; - p:pHKRecord; - i,cnt:integer; -begin - p:=@GroupList[0]; - cnt:=0; - for i:=0 to MaxGroups-1 do - begin - if (p^.flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then inc(cnt); - inc(p); - end; - result:=cnt; - if lParam=0 then exit; - if cnt>0 then - begin - mGetMem(pc,cnt*SizeOf(tChain)+4); - puint_ptr(lParam)^:=uint_ptr(pc); -// {$IFDEF WIN64}pqword{$ELSE}pdword{$ENDIF}(lParam)^:=uint_ptr(pc); - pdword(pc)^:=SizeOf(tChain); - inc(PByte(pc),4); - - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if (p^.flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then - begin - pc^.descr:=p^.descr; - pc^.id :=p^.id; - pc^.flags:=p^.flags; - inc(pc); - end; - inc(p); - end; - end - else - puint_ptr(lParam)^:=0; -// {$IFDEF WIN64}pqword{$ELSE}pdword{$ENDIF}(lParam)^:=0; -end; - -function ActRun(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (p^.id=dword(wParam)) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - if result>0 then - result:=ActionStarter(result,lParam,p); -end; - -function ActRunGroup(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (StrCmpW(p^.descr,pWideChar(wParam))=0) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - if result>0 then - result:=ActionStarter(result,lParam,p); -end; - -function ActRunParam(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - - if (pAct_Param(lParam)^.flags and ACTP_BYNAME)=0 then - begin - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (p^.id=pAct_Param(lParam)^.Id) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - end - else - begin - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and - (StrCmpW(p^.descr,pWideChar(pAct_Param(lParam)^.Id))=0) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - end; - - if result>0 then - begin - if (pAct_Param(lParam)^.flags and ACTP_WAIT)=0 then - result:=ActionStarter (result,pAct_Param(lParam)^.wParam,p,pAct_Param(lParam)^.lParam) - else - result:=ActionStarterWait(result,pAct_Param(lParam)^.wParam,p,pAct_Param(lParam)^.lParam); - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_vars.inc b/plugins/!Deprecated/Actman20/i_vars.inc deleted file mode 100644 index 4ca6764191..0000000000 --- a/plugins/!Deprecated/Actman20/i_vars.inc +++ /dev/null @@ -1,31 +0,0 @@ -{variables} -type - pHKList = ^tHKList; - tHKList = array [0..1023] of tHKRecord; - pActList = ^tActList; - tActList = array [0..1023] of tHKAction; -const - StructDelim = #7; -const - HKListPage = 8; - ActListPage = 16; -var - MaxGroups :cardinal=0; // current array size - MaxActions:cardinal=0; // current array size -var - GroupList :pHKList =nil; - ActionList:pActList=nil; -var - NoDescription:PWideChar; -var - NewGroupList :pHKList = nil; - NewActionList:pActList = nil; - NewMaxGroups :cardinal; - NewMaxActions:cardinal; -var - xmlfilename:array [0..511] of WideChar; -var - fCLfilter:boolean = true; - fCLformat:pWideChar = nil; -var - ApiCard:tmApiCard; \ No newline at end of file diff --git a/plugins/!Deprecated/Actman20/i_visual.inc b/plugins/!Deprecated/Actman20/i_visual.inc deleted file mode 100644 index ab32488165..0000000000 --- a/plugins/!Deprecated/Actman20/i_visual.inc +++ /dev/null @@ -1,1073 +0,0 @@ -{Dialog visual part, depends of Dialog window} - procedure SHControl(ctrl,mode:dword); - begin - ShowWindow(GetDlgItem(Dialog,ctrl),mode); - end; - - procedure SetupControls(group,mode:dword); - begin - case group of - ACT_CONTACT: begin - SHControl(IDC_STAT_CONTACT,mode); - SHControl(IDC_CONTACTLIST ,mode); - SHControl(IDC_CNT_KEEP ,mode); - SHControl(IDC_CNT_FILTER ,mode); - SHControl(IDC_STAT_FORMAT ,mode); - SHControl(IDC_EDIT_FORMAT ,mode); - SHControl(IDC_CNT_APPLY ,mode); - SHControl(IDC_STAT_FHELP ,mode); - end; - ACT_SERVICE: begin - SHControl(IDC_STAT_WPAR ,mode); - SHControl(IDC_STAT_LPAR ,mode); - SHControl(IDC_STAT_WPAR1 ,mode); - SHControl(IDC_STAT_LPAR1 ,mode); - SHControl(IDC_STAT_SERVICE,mode); - SHControl(IDC_EDIT_SERVICE,mode); - SHControl(IDC_SRV_SRVC ,mode); - SHControl(IDC_FLAG_WPAR ,mode); - SHControl(IDC_FLAG_LPAR ,mode); - - SHControl(IDC_RES_GROUP ,mode); - SHControl(IDC_RES_POPUP ,mode); - SHControl(IDC_RES_MESSAGE ,mode); - SHControl(IDC_RES_INSERT ,mode); - - SHControl(IDC_SRV_RESULT ,mode); - SHControl(IDC_SRV_RESSTAT ,mode); - - if mode=SW_SHOW then - begin -//!! Check parameter type - if CB_GetData(GetDlgItem(Dialog,IDC_FLAG_WPAR))=ptStruct then -// if SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_GETCURSEL,0,0)=ptStruct then - begin - SHControl(IDC_WSTRUCT ,SW_SHOW); - SHControl(IDC_EDIT_WPAR,SW_HIDE); - SHControl(IDC_SRV_WPAR ,SW_HIDE); - end - else - begin - SHControl(IDC_WSTRUCT ,SW_HIDE); - SHControl(IDC_EDIT_WPAR,SW_SHOW); - SHControl(IDC_SRV_WPAR ,SW_SHOW); - end; - if CB_GetData(GetDlgItem(Dialog,IDC_FLAG_LPAR))=ptStruct then -// if SendDlgItemMessage(Dialog,IDC_FLAG_LPAR,CB_GETCURSEL,0,0)=ptStruct then - begin - SHControl(IDC_LSTRUCT ,SW_SHOW); - SHControl(IDC_EDIT_LPAR,SW_HIDE); - SHControl(IDC_SRV_LPAR ,SW_HIDE); - end - else - begin - SHControl(IDC_LSTRUCT ,SW_HIDE); - SHControl(IDC_EDIT_LPAR,SW_SHOW); - SHControl(IDC_SRV_LPAR ,SW_SHOW); - end; - - case CB_GetData(GetDlgItem(Dialog,IDC_SRV_RESULT)) of - sresHex: ; - sresInt: SHControl(IDC_RES_SIGNED,SW_SHOW); - sresString: begin - SHControl(IDC_RES_UNICODE,SW_SHOW); - SHControl(IDC_RES_FREEMEM,SW_SHOW); - end; - sresStruct: ; - end; - - end - else - begin - SHControl(IDC_WSTRUCT ,SW_HIDE); - SHControl(IDC_LSTRUCT ,SW_HIDE); - SHControl(IDC_SRV_WPAR ,SW_HIDE); - SHControl(IDC_SRV_LPAR ,SW_HIDE); - SHControl(IDC_EDIT_WPAR ,SW_HIDE); - SHControl(IDC_EDIT_LPAR ,SW_HIDE); - SHControl(IDC_RES_FREEMEM,SW_HIDE); - SHControl(IDC_RES_UNICODE,SW_HIDE); - SHControl(IDC_RES_SIGNED ,SW_HIDE); - end; - end; - ACT_PROGRAM: begin - SHControl(IDC_PROCESS_GROUP,mode); - SHControl(IDC_PROGRAM ,mode); - SHControl(IDC_EDIT_PROCTIME,mode); - SHControl(IDC_EDIT_PRGPATH ,mode); - SHControl(IDC_PRG_PRG ,mode); - SHControl(IDC_EDIT_PRGARGS ,mode); - SHControl(IDC_PRG_ARG ,mode); - SHControl(IDC_STAT_PROCTIME,mode); - SHControl(IDC_STAT_PRGPATH ,mode); - SHControl(IDC_STAT_PRGARGS ,mode); - - SHControl(IDC_PRSTART_GROUP,mode); - SHControl(IDC_FLAG_NORMAL ,mode); - SHControl(IDC_FLAG_HIDDEN ,mode); - SHControl(IDC_FLAG_MAXIMIZE,mode); - SHControl(IDC_FLAG_MINIMIZE,mode); - - SHControl(IDC_FLAG_CURPATH,mode); - SHControl(IDC_FLAG_CONTINUE,mode); - SHControl(IDC_FLAG_PARALLEL,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_HLP_FVARS,SW_SHOW); - end - else - SHControl(IDC_HLP_FVARS,SW_HIDE); - end; - ACT_TEXT: begin - SHControl(IDC_FLAG_CLIP ,mode); - SHControl(IDC_FLAG_MESSAGE,mode); - SHControl(IDC_CLIP_COPYTO ,mode); - SHControl(IDC_CLIP_PASTE ,mode); - SHControl(IDC_CLIP_GROUP ,mode); - SHControl(IDC_FILE_ENC ,mode); - - SHControl(IDC_FLAG_FILE ,mode); - SHControl(IDC_FILE_PATH ,mode); - SHControl(IDC_TXT_FILE ,mode); - SHControl(IDC_FILE_FILEBTN,mode); - SHControl(IDC_FILE_READ ,mode); - SHControl(IDC_FILE_WRITE ,mode); - SHControl(IDC_FILE_APPEND ,mode); - SHControl(IDC_FILE_GROUP ,mode); - - SHControl(IDC_TXT_TEXT ,mode); - SHControl(IDC_EDIT_INSERT ,mode); - SHControl(IDC_STAT_INSERT ,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_HLP_VARS,SW_SHOW); - end - else - SHControl(IDC_HLP_VARS,SW_HIDE); - end; - ACT_ADVANCE: begin - SHControl(IDC_CONDITION,mode); - SHControl(IDC_FLAG_GT ,mode); - SHControl(IDC_FLAG_LT ,mode); - SHControl(IDC_FLAG_EQ ,mode); - SHControl(IDC_FLAG_NOP ,mode); - SHControl(IDC_FLAG_NOT ,mode); - SHControl(IDC_ADV_VALUE,mode); - SHControl(IDC_STAT_VAL ,mode); - SHControl(IDC_ADV_ASINT,mode); - - SHControl(IDC_OPERATION ,mode); - SHControl(IDC_FLAG_BREAK,mode); - SHControl(IDC_FLAG_JUMP ,mode); - SHControl(IDC_FLAG_ANOP ,mode); - - SHControl(IDC_FLAG_MATH,mode); - SHControl(IDC_ADV_OPER ,mode); - SHControl(IDC_ADV_VAL2 ,mode); - SHControl(IDC_ADV_VAL1 ,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_ADV_HVARS,SW_SHOW); - end - else - SHControl(IDC_ADV_HVARS,SW_HIDE); - SHControl(IDC_FLAG_VARS,mode); - SHControl(IDC_ADV_VARS ,mode); - end; - ACT_CHAIN: begin - SHControl(IDC_STAT_GROUPS,mode); - SHControl(IDC_GROUP_LIST ,mode); - end; - ACT_RW: begin - SHControl(IDC_STAT_CONTACT,mode); - SHControl(IDC_CONTACTLIST ,mode); - - SHControl(IDC_RW_OPER ,mode); - SHControl(IDC_RW_VAL ,mode); - SHControl(IDC_RW_READ ,mode); - SHControl(IDC_RW_WRITE ,mode); - SHControl(IDC_RW_DELETE ,mode); - SHControl(IDC_RW_STATM ,mode); - SHControl(IDC_RW_MODULE ,mode); - SHControl(IDC_RW_STATS ,mode); - SHControl(IDC_RW_SETTING,mode); - SHControl(IDC_RW_TVAR ,mode); - - if mode=SW_SHOW then - begin - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_VALUE,SW_HIDE); - SHControl(IDC_RW_TEXT ,SW_SHOW); - end - else - begin - SHControl(IDC_RW_VALUE,SW_SHOW); - SHControl(IDC_RW_TEXT ,SW_HIDE); - end - end - else - begin - SHControl(IDC_RW_VALUE,SW_HIDE); - SHControl(IDC_RW_TEXT ,SW_HIDE); - end; - SHControl(IDC_RW_DATATYPE,mode); - - SHControl(IDC_RW_CURRENT,mode); - SHControl(IDC_RW_PARAM ,mode); - SHControl(IDC_RW_RESULT ,mode); - SHControl(IDC_RW_MANUAL ,mode); - SHControl(IDC_RW_LAST ,mode); - - SHControl(IDC_RW_MVAR ,mode); - SHControl(IDC_RW_SVAR ,mode); - end; - ACT_MESSAGE: begin - SHControl(IDC_MSG_KEEP ,mode); - SHControl(IDC_MSG_STAT1 ,mode); - SHControl(IDC_MSG_STAT2 ,mode); - SHControl(IDC_MSG_TITLE ,mode); - SHControl(IDC_MSG_TEXT ,mode); - SHControl(IDC_MSG_BTNS ,mode); - SHControl(IDC_MSGB_ARI ,mode); - SHControl(IDC_MSGB_OK ,mode); - SHControl(IDC_MSGB_OC ,mode); - SHControl(IDC_MSGB_RC ,mode); - SHControl(IDC_MSGB_YN ,mode); - SHControl(IDC_MSGB_YNC ,mode); - SHControl(IDC_MSG_ICONS ,mode); - SHControl(IDC_MSGI_NONE ,mode); - SHControl(IDC_MSGI_WARN ,mode); - SHControl(IDC_MSGI_INFO ,mode); - SHControl(IDC_MSGI_QUEST,mode); - SHControl(IDC_MSGI_ERROR,mode); - - SHControl(IDC_MSG_TTL ,mode); - SHControl(IDC_MSG_TXT ,mode); - end; - end; - end; - - procedure SetButtonOnOff(ctrl,state:dword); - begin - CheckDlgButton(Dialog,ctrl,state); - case ctrl of - IDC_SRV_WPAR, - IDC_SRV_LPAR, - IDC_SRV_SRVC, - IDC_PRG_PRG , - IDC_PRG_ARG , - IDC_TXT_FILE, - IDC_TXT_TEXT, - IDC_RW_MVAR , - IDC_RW_SVAR , - IDC_RW_TVAR , - IDC_MSG_TTL , - IDC_MSG_TXT : SetButtonIcon(GetDlgItem(Dialog,ctrl),checknames[state]); - end; - end; - - procedure ButtonOff(ctrl:dword); {$IFDEF MSWINDOWS}inline;{$ENDIF} - begin - SetButtonOnOff(ctrl,BST_UNCHECKED); - end; - - procedure ButtonOn(ctrl:dword); {$IFDEF MSWINDOWS}inline;{$ENDIF} - begin - SetButtonOnOff(ctrl,BST_CHECKED); - end; - - procedure TextClear(ctrl:dword); - begin - SetDlgItemTextW(Dialog,ctrl,nil); - end; - - function FixParam(buf:PAnsiChar;flag:integer):integer; - begin - if lstrcmpia(buf,Translate('hContact' ))=0 then result:=ptCurrent - else if lstrcmpia(buf,Translate('parameter'))=0 then result:=ptParam - else if lstrcmpia(buf,Translate('result' ))=0 then result:=ptResult - else if lstrcmpia(buf,Translate('structure'))=0 then result:=ptStruct - else - begin - if (buf[0] in ['0'..'9']) or ((buf[0]='-') and (buf[1] in ['0'..'9'])) or - ((buf[0]='$') and (buf[1] in sHexNum)) then - result:=ptNumber - else - result:=ptString; - end; - - CB_SelectData(Dialog,flag,result); -// SendDlgItemMessage(Dialog,flag,CB_SETCURSEL,result,0); - SendMessage(Dialog,WM_COMMAND,(CBN_SELCHANGE shl 16) or flag,GetDlgItem(Dialog,flag)); - end; - - procedure ReloadService; - var - pc:pAnsiChar; - buf,buf1:array [0..MaxDescrLen] of AnsiChar; - wnd:hwnd; - i:integer; -// bufw:array [0..MaxDescrLen] of WideChar; - begin - wnd:=GetDlgItem(Dialog,IDC_EDIT_SERVICE); - SendMessageA(wnd,CB_GETLBTEXT,SendMessage(wnd,CB_GETCURSEL,0,0),tlparam(@buf)); - ApiCard.Service:=@buf; - - pc:=ApiCard.FillParams(GetDlgItem(Dialog,IDC_EDIT_WPAR),true); - if pc<>nil then - begin - if GetDlgItemTextA(Dialog,IDC_EDIT_WPAR,buf1,SizeOf(buf1))>0 then - case FixParam(@buf1,IDC_FLAG_WPAR) of - ptStruct: begin - mFreeMem(wstruct); - StrDup(wstruct,StrScan(pc,'|')+1); -// AnsiToWide(StrScan(pc,'|')+1,wstruct,MirandaCP); - end; - end; - mFreeMem(pc); - end; - - pc:=ApiCard.FillParams(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - if pc<>nil then - begin - if GetDlgItemTextA(Dialog,IDC_EDIT_LPAR,buf1,SizeOf(buf1))>0 then - case FixParam(@buf1,IDC_FLAG_LPAR) of - ptStruct: begin - mFreeMem(lstruct); - StrDup(lstruct,StrScan(pc,'|')+1); -// AnsiToWide(StrScan(pc,'|')+1,lstruct,MirandaCP); - end; - end; - mFreeMem(pc); - end; - - pc:=ApiCard.ResultType; - i:=sresInt; - if pc<>nil then - begin - if lstrcmpia(pc,'struct')=0 then i:=sresStruct - else if lstrcmpia(pc,'hex' )=0 then i:=sresHex - else if lstrcmpia(pc,'int')=0 then - begin - i:=sresInt; - ButtonOff(IDC_RES_SIGNED); - end - else if lstrcmpia(pc,'signed')=0 then - begin - i:=sresInt; - ButtonOn(IDC_RES_SIGNED); - end - else if lstrcmpia(pc,'str')=0 then - begin - i:=sresString; - ButtonOff(IDC_RES_UNICODE); - end - else if lstrcmpia(pc,'wide')=0 then - begin - i:=sresString; - ButtonOn(IDC_RES_UNICODE); - end; - mFreeMem(pc); - end; - CB_SelectData(Dialog,IDC_SRV_RESULT,i); - -// ApiCard.Show; - end; - - procedure SelectActionType(group:dword); - var - i:integer; - begin - for i:=0 to ACT_MAXTYPE-1 do - if ActIds[i].code=group then break; - SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_SETCURSEL,i,0); - end; - - procedure ClearControls(group:dword); - begin -//! SelectActionType(group); - case group of - ACT_CONTACT: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL,0,0); - ButtonOff(IDC_CNT_KEEP); - ButtonOff(IDC_CNT_FILTER); - TextClear(IDC_EDIT_FORMAT); - end; - ACT_SERVICE: begin - TextClear(IDC_EDIT_SERVICE); - TextClear(IDC_EDIT_WPAR); - TextClear(IDC_EDIT_LPAR); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),true); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),true); -// SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_SETCURSEL,0,0); -// SendDlgItemMessage(Dialog,IDC_FLAG_LPAR,CB_SETCURSEL,0,0); - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_WPAR),ptNumber); - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_LPAR),ptNumber); - - CB_SelectData(GetDlgItem(Dialog,IDC_SRV_RESULT),sresInt); - - SendMessage(GetDlgItem(Dialog,IDC_EDIT_WPAR),CB_RESETCONTENT,0,0); - SendMessage(GetDlgItem(Dialog,IDC_EDIT_LPAR),CB_RESETCONTENT,0,0); - - ButtonOff(IDC_RES_POPUP); - ButtonOff(IDC_RES_MESSAGE); - ButtonOff(IDC_RES_INSERT); - - ButtonOff(IDC_RES_FREEMEM); - ButtonOff(IDC_RES_UNICODE); - ButtonOff(IDC_RES_SIGNED); - - ButtonOff(IDC_SRV_WPAR); - ButtonOff(IDC_SRV_LPAR); - ButtonOff(IDC_SRV_SRVC); - end; - ACT_PROGRAM: begin - TextClear(IDC_EDIT_PROCTIME); - TextClear(IDC_EDIT_PRGPATH); - TextClear(IDC_EDIT_PRGARGS); - - ButtonOff(IDC_FLAG_NORMAL); - ButtonOff(IDC_FLAG_HIDDEN); - ButtonOff(IDC_FLAG_MINIMIZE); - ButtonOff(IDC_FLAG_MAXIMIZE); - - ButtonOff(IDC_FLAG_CURPATH); - ButtonOff(IDC_FLAG_CONTINUE); - ButtonOff(IDC_FLAG_PARALLEL); - - ButtonOff(IDC_PRG_PRG); - ButtonOff(IDC_PRG_ARG); - end; - ACT_TEXT: begin - ButtonOff(IDC_FLAG_CLIP); - ButtonOff(IDC_FLAG_MESSAGE); - ButtonOff(IDC_CLIP_COPYTO); - ButtonOff(IDC_CLIP_PASTE); - - ButtonOff(IDC_FLAG_FILE); - TextClear(IDC_FILE_PATH); - ButtonOff(IDC_FILE_READ); - ButtonOff(IDC_FILE_WRITE); - ButtonOff(IDC_FILE_APPEND); - - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT ),false); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO ),false); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),false); - - EnableWindow(GetDlgItem(Dialog,IDC_FILE_ENC ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),false); - - TextClear(IDC_EDIT_INSERT); - - ButtonOff(IDC_TXT_FILE); - ButtonOff(IDC_TXT_TEXT); - end; - ACT_ADVANCE: begin - ButtonOff(IDC_FLAG_GT); - ButtonOff(IDC_FLAG_LT); - ButtonOff(IDC_FLAG_EQ); - ButtonOff(IDC_FLAG_NOP); - ButtonOff(IDC_FLAG_NOT); - TextClear(IDC_ADV_VALUE); - - ButtonOff(IDC_FLAG_BREAK); - ButtonOff(IDC_FLAG_JUMP); - ButtonOff(IDC_FLAG_ANOP); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - - ButtonOff(IDC_FLAG_MATH); - SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,0,0); - TextClear(IDC_ADV_VAL1); - ButtonOff(IDC_ADV_ASINT); - - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS),false); - - ButtonOff(IDC_FLAG_VARS); - TextClear(IDC_ADV_VARS); - end; - ACT_CHAIN: begin -// FillChainList(Dialog); - SendDlgItemMessage(Dialog,IDC_GROUP_LIST,CB_SETCURSEL,0,0); - end; - ACT_RW: begin - ButtonOff(IDC_RW_READ); - ButtonOff(IDC_RW_WRITE); - ButtonOff(IDC_RW_DELETE); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL,0,0); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - TextClear(IDC_CONTACTLIST); - TextClear(IDC_RW_MODULE); - TextClear(IDC_RW_SETTING); - TextClear(IDC_RW_VALUE); - TextClear(IDC_RW_TEXT); - - ButtonOff(IDC_RW_CURRENT); - ButtonOff(IDC_RW_PARAM); - ButtonOff(IDC_RW_RESULT); - ButtonOff(IDC_RW_MANUAL); - ButtonOff(IDC_RW_LAST); - - ButtonOff(IDC_RW_MVAR); - ButtonOff(IDC_RW_SVAR); - ButtonOff(IDC_RW_TVAR); - end; - ACT_MESSAGE: begin - TextClear(IDC_MSG_TITLE); - TextClear(IDC_MSG_TEXT); - ButtonOff(IDC_MSG_KEEP); - ButtonOff(IDC_MSGB_OK); - ButtonOff(IDC_MSGB_OC); - ButtonOff(IDC_MSGB_ARI); - ButtonOff(IDC_MSGB_YNC); - ButtonOff(IDC_MSGB_YN); - ButtonOff(IDC_MSGB_RC); - ButtonOff(IDC_MSGI_NONE); - ButtonOff(IDC_MSGI_ERROR); - ButtonOff(IDC_MSGI_QUEST); - ButtonOff(IDC_MSGI_WARN); - ButtonOff(IDC_MSGI_INFO); - - ButtonOff(IDC_MSG_TTL); - ButtonOff(IDC_MSG_TXT); - end; - end; - end; - - procedure ClearDialogData; - begin - ClearControls(ACT_CONTACT); - ClearControls(ACT_SERVICE); - ClearControls(ACT_PROGRAM); - ClearControls(ACT_TEXT); - ClearControls(ACT_ADVANCE); - ClearControls(ACT_CHAIN); - ClearControls(ACT_RW); - ClearControls(ACT_MESSAGE); - mFreeMem(wstruct); - mFreeMem(lstruct); - end; - - procedure SHWindows(exclude:dword=0); - begin - SetupControls(ACT_CONTACT,SW_HIDE); - SetupControls(ACT_SERVICE,SW_HIDE); - SetupControls(ACT_PROGRAM,SW_HIDE); - SetupControls(ACT_TEXT ,SW_HIDE); - SetupControls(ACT_ADVANCE,SW_HIDE); - SetupControls(ACT_CHAIN ,SW_HIDE); - SetupControls(ACT_RW ,SW_HIDE); - SetupControls(ACT_MESSAGE,SW_HIDE); -{ - if exclude<>ACT_CONTACT then SetupControls(ACT_CONTACT,SW_HIDE); - if exclude<>ACT_SERVICE then SetupControls(ACT_SERVICE,SW_HIDE); - if exclude<>ACT_PROGRAM then SetupControls(ACT_PROGRAM,SW_HIDE); - if exclude<>ACT_TEXT then SetupControls(ACT_TEXT ,SW_HIDE); - if exclude<>ACT_ADVANCE then SetupControls(ACT_ADVANCE,SW_HIDE); - if exclude<>ACT_CHAIN then SetupControls(ACT_CHAIN ,SW_HIDE); - if exclude<>ACT_RW then SetupControls(ACT_RW ,SW_HIDE); -} - case exclude of - ACT_CONTACT, - ACT_SERVICE, - ACT_PROGRAM, - ACT_TEXT , - ACT_ADVANCE, - ACT_CHAIN , - ACT_RW , - ACT_MESSAGE: begin - SetupControls(exclude,SW_SHOW); - end; - end; - end; - - procedure SHActButtons(mode:integer); - begin - ShowWindow(GetDlgItem(Dialog,IDC_STAT_ACTION),mode); - ShowWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE),mode); - end; - - procedure InitDef(exclude:dword=0); - begin - if exclude<>ACT_CONTACT then - begin - ButtonOn(IDC_CNT_FILTER); - // do nothing - end; - if exclude<>ACT_SERVICE then - begin - CB_SelectData(Dialog,IDC_SRV_RESULT,sresInt); - end; - if exclude<>ACT_PROGRAM then - begin - ButtonOn(IDC_FLAG_PARALLEL); - ButtonOn(IDC_FLAG_NORMAL); - SetDlgItemInt(Dialog,IDC_EDIT_PROCTIME,0,false); - end; - if exclude<>ACT_TEXT then - begin - ButtonOn(IDC_FLAG_CLIP); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),true); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),true); - ButtonOn(IDC_CLIP_COPYTO); - - ButtonOn(IDC_FILE_READ); - // do nothing - end; - if exclude<>ACT_ADVANCE then - begin - ButtonOn(IDC_FLAG_NOP); - ButtonOn(IDC_FLAG_ANOP); - SetDlgItemInt(Dialog,IDC_ADV_VALUE,0,false); - SetDlgItemInt(Dialog,IDC_ADV_VAL1 ,0,false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); -// SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,0,0); - CB_SelectData(Dialog,IDC_ADV_OPER,ORD(aeNot)); - end; - if exclude<>ACT_CHAIN then - begin -// FillChainList(Dialog); - SendDlgItemMessage(Dialog,IDC_GROUP_LIST,CB_SETCURSEL,0,0); - end; - if exclude<>ACT_RW then - begin - ButtonOn(IDC_RW_READ); - SetDlgItemInt(Dialog,IDC_RW_VALUE,0,false); - ButtonOn(IDC_RW_MANUAL); - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE),true); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),true); - end; - if exclude<>ACT_MESSAGE then - begin - ButtonOn(IDC_MSGB_OK); - ButtonOn(IDC_MSGI_NONE); - end; - end; - - // set buttons by options - procedure FillAction(CurAction:integer); - var - i:integer; - bb:boolean; - wnd:HWND; - begin - with NewActionList^[CurAction] do - begin - if (flags and ACF_ASSIGNED)=0 then - exit; - if actionType=0 then - actionType:=ACT_CONTACT; - - InitDef(actionType); - SelectActionType(actionType); - case actionType of - - ACT_CONTACT: begin - if (flags and ACF_KEEPONLY)<>0 then - ButtonOn(IDC_CNT_KEEP); - if fCLfilter then - ButtonOn(IDC_CNT_FILTER); - SetDlgItemTextW(Dialog,IDC_EDIT_FORMAT,fCLformat); - - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL, - FindContact(GetDlgItem(Dialog,IDC_CONTACTLIST),contact),0); - end; - - ACT_SERVICE: begin - if SendDlgItemMessageA(Dialog,IDC_EDIT_SERVICE,CB_SELECTSTRING,twparam(-1),tlparam(service))<>CB_ERR then - ReloadService - else - SetDlgItemTextA(Dialog,IDC_EDIT_SERVICE,service); - - if (flags2 and ACF2_SRV_WPAR)<>0 then ButtonOn(IDC_SRV_WPAR); - if (flags2 and ACF2_SRV_LPAR)<>0 then ButtonOn(IDC_SRV_LPAR); - if (flags2 and ACF2_SRV_SRVC)<>0 then ButtonOn(IDC_SRV_SRVC); - - if (flags and ACF_MESSAGE)<>0 then ButtonOn(IDC_RES_MESSAGE); - if (flags and ACF_POPUP )<>0 then ButtonOn(IDC_RES_POPUP); - if (flags and ACF_INSERT )<>0 then ButtonOn(IDC_RES_INSERT); - - if (flags and ACF_HEX)<>0 then - i:=sresHex - else if (flags and ACF_STRUCT)<>0 then - i:=sresStruct - else if (flags and ACF_STRING)<>0 then - begin - i:=sresString; - if (flags and ACF_UNICODE )<>0 then ButtonOn(IDC_RES_UNICODE); - if (flags2 and ACF2_FREEMEM)<>0 then ButtonOn(IDC_RES_FREEMEM); - end - else - begin - i:=sresInt; - if (flags and ACF_SIGNED)<>0 then - ButtonOn(IDC_RES_SIGNED); - end; - CB_SelectData(Dialog,IDC_SRV_RESULT,i); - - if (flags and ACF_WPARAM)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptParam; - end - else if (flags and ACF_WRESULT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptResult; - end - else if (flags and ACF_WPARNUM)<>0 then - begin - if (flags and ACF_WCURRENT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptCurrent - end - else - begin - i:=ptNumber; - SetNumValue(GetDlgItem(Dialog,IDC_EDIT_WPAR),wparam, - (flags2 and ACF2_SRV_WPAR)<>0, - (flags2 and ACF2_SRV_WHEX)<>0); -// SetDlgItemInt(Dialog,IDC_EDIT_WPAR,wparam,true) - end; - end - else if (flags and ACF_WSTRUCT)<>0 then - begin - i:=ptStruct; - SHControl(IDC_EDIT_WPAR,SW_HIDE); - SHControl(IDC_WSTRUCT ,SW_SHOW); - mFreeMem(wstruct); - StrDup(wstruct,PAnsiChar(wparam)); - end - else if (flags and ACF_WUNICODE)<>0 then - begin - i:=ptUnicode; - SetDlgItemTextW(Dialog,IDC_EDIT_WPAR,pWideChar(wparam)); - end - else - begin - i:=ptString; - SetDlgItemTextA(Dialog,IDC_EDIT_WPAR,PAnsiChar(wparam)); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_WPAR),i); - SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_SETCURSEL,i,0); - - if (flags and ACF_LPARAM)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptParam; - end - else if (flags and ACF_LRESULT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptResult; - end - else if (flags and ACF_LPARNUM)<>0 then - begin - if (flags and ACF_LCURRENT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptCurrent; - end - else - begin - i:=ptNumber; - SetNumValue(GetDlgItem(Dialog,IDC_EDIT_LPAR),lparam, - (flags2 and ACF2_SRV_LPAR)<>0, - (flags2 and ACF2_SRV_LHEX)<>0); -// SetDlgItemInt(Dialog,IDC_EDIT_LPAR,lparam,true) - end; - end - else if (flags and ACF_LSTRUCT)<>0 then - begin - i:=ptStruct; - SHControl(IDC_EDIT_LPAR,SW_HIDE); - SHControl(IDC_LSTRUCT ,SW_SHOW); - mFreeMem(lstruct); - StrDup(lstruct,PAnsiChar(lparam)); - end - else if (flags and ACF_LUNICODE)<>0 then - begin - i:=ptUnicode; - SetDlgItemTextW(Dialog,IDC_EDIT_LPAR,pWideChar(lparam)); - end - else - begin - i:=ptString; - SetDlgItemTextA(Dialog,IDC_EDIT_LPAR,PAnsiChar(lparam)); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_LPAR),i); - - end; - - ACT_PROGRAM: begin - if (flags2 and ACF2_PRG_PRG)<>0 then - ButtonOn(IDC_PRG_PRG); - if (flags2 and ACF2_PRG_ARG)<>0 then - ButtonOn(IDC_PRG_ARG); - - SetDlgItemTextW(Dialog,IDC_EDIT_PRGPATH ,prgname); - SetDlgItemTextW(Dialog,IDC_EDIT_PRGARGS ,args); - SetDlgItemInt (Dialog,IDC_EDIT_PROCTIME,time,false); - case show of - SW_HIDE : ButtonOn(IDC_FLAG_HIDDEN); - SW_SHOWMINIMIZED: ButtonOn(IDC_FLAG_MINIMIZE); - SW_SHOWMAXIMIZED: ButtonOn(IDC_FLAG_MAXIMIZE); - else - {SW_SHOWNORMAL :} ButtonOn(IDC_FLAG_NORMAL); - end; - if (flags and ACF_CURPATH)<>0 then - ButtonOn(IDC_FLAG_CURPATH); - if (flags and ACF_PRTHREAD)<>0 then - ButtonOn(IDC_FLAG_PARALLEL) - else - ButtonOn(IDC_FLAG_CONTINUE); - - end; - - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)<>0 then - begin - ButtonOn(IDC_FLAG_CLIP); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),true); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),true); - if (flags and ACF_COPYTO)<>0 then - ButtonOn(IDC_CLIP_COPYTO) - else - ButtonOn(IDC_CLIP_PASTE); -// for switches - ButtonOn(IDC_FILE_READ); - end - - else - begin - if (flags and (ACF_FILE or ACF_FAPPEND or ACF_FWRITE))<>ACF_FILE then - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT),true); - SetDlgItemTextW(Dialog,IDC_EDIT_INSERT,text); -// for switches - ButtonOn(IDC_CLIP_COPYTO); - - if (flags2 and ACF2_TXT_TEXT)<>0 then - ButtonOn(IDC_TXT_TEXT); - - if (flags and ACF_FILE)<>0 then - begin - if (flags2 and ACF2_TXT_FILE)<>0 then - ButtonOn(IDC_TXT_FILE); - ButtonOn(IDC_FLAG_FILE); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),true); - - wnd:=GetDlgItem(Dialog,IDC_FILE_ENC); - EnableWindow(wnd,true); - if (flags and ACF_ANSI)<>0 then - CB_SelectData(wnd,0) - else if (flags and ACF_UTF8)<>0 then - begin - if (flags and ACF_SIGN)<>0 then - CB_SelectData(wnd,2) - else - CB_SelectData(wnd,1); - end - else if (flags and ACF_SIGN)<>0 then - CB_SelectData(wnd,4) - else - CB_SelectData(wnd,3); - - if (flags and ACF_FAPPEND)<>0 then ButtonOn(IDC_FILE_APPEND) - else if (flags and ACF_FWRITE )<>0 then ButtonOn(IDC_FILE_WRITE) - else ButtonOn(IDC_FILE_READ); - SetDlgItemTextW(Dialog,IDC_FILE_PATH,tfile); - end - else - begin - ButtonOn(IDC_FLAG_MESSAGE); -// for switches - ButtonOn(IDC_FILE_READ); - end; - end; - - end; - - ACT_ADVANCE: begin - FillSubList(Dialog); -// SendDlgItemMessage(Dialog,IDC_ADV_VAL2,CB_SETCURSEL,0,0); - - case condition and not ADV_COND_NOT of - ADV_COND_GT: ButtonOn(IDC_FLAG_GT); - ADV_COND_LT: ButtonOn(IDC_FLAG_LT); - ADV_COND_EQ: ButtonOn(IDC_FLAG_EQ); - else // ADV_COND_NOP - ButtonOn(IDC_FLAG_NOP); - end; - SetDlgItemInt(Dialog,IDC_ADV_VALUE,value,false); - if (condition and ADV_COND_NOT)<>0 then - ButtonOn(IDC_FLAG_NOT); - - SetDlgItemInt(Dialog,IDC_ADV_VAL1,mathval,true); - case action and ADV_ACTION of - ADV_ACT_MATH: begin - ButtonOn(IDC_FLAG_MATH); - CB_SelectData(GetDlgItem(Dialog,IDC_ADV_OPER),oper); -// SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,oper,0); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),true); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),true); - end; - ADV_ACT_VARS: begin - ButtonOn(IDC_FLAG_VARS); - if (flags and ACF_VARASINT)<>0 then - ButtonOn(IDC_ADV_ASINT); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS),true); - SetDlgItemTextW(Dialog,IDC_ADV_VARS,varval); - end; - end; - bb:=false; - case action and ADV_ACT_POST of - ADV_ACT_BREAK: ButtonOn(IDC_FLAG_BREAK); - ADV_ACT_JUMP : begin - SendDlgItemMessageW(Dialog,IDC_ADV_VAL2,CB_SELECTSTRING,twparam(-1),tlparam(operval)); - ButtonOn(IDC_FLAG_JUMP); - bb:=true; - end; - else // ADV_ACT_NOP - ButtonOn(IDC_FLAG_ANOP); - end; - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),bb); - end; - - ACT_CHAIN: begin -// FillChainList(Dialog); - if (flags and ACF_BYNAME)<>0 then - SendDlgItemMessageW(Dialog,IDC_GROUP_LIST,CB_SELECTSTRING,twparam(-1),tlparam(actname)) - else - SendDlgItemMessageW(Dialog,IDC_GROUP_LIST,CB_SELECTSTRING,twparam(-1),tlparam(GetGroupName(id))); - end; - - ACT_RW: begin - if (flags and ACF_DBDELETE)<>0 then ButtonOn(IDC_RW_DELETE) - else if (flags and ACF_DBWRITE )= 0 then ButtonOn(IDC_RW_READ) - else ButtonOn(IDC_RW_WRITE); - - bb:=false; - if (flags and ACF_CURRENT)<>0 then - begin - ButtonOn(IDC_RW_CURRENT); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else if (flags and ACF_PARAM)<>0 then - begin - ButtonOn(IDC_RW_PARAM); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else if (flags and ACF_RESULT)<>0 then - begin - ButtonOn(IDC_RW_RESULT); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else - begin - ButtonOn(IDC_RW_MANUAL); - bb:=true; - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL, - FindContact(GetDlgItem(Dialog,IDC_CONTACTLIST),dbcontact),0); - end; - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),bb); - - if (flags and ACF_LAST)<>0 then - begin - ButtonOn(IDC_RW_LAST); - bb:=false; - end - else - bb:=true; - if (flags and ACF_DBDELETE)<>0 then - bb:=false; - - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE),bb); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),bb); - - SetDlgItemTextA(Dialog,IDC_RW_MODULE ,dbmodule); - SetDlgItemTextA(Dialog,IDC_RW_SETTING,dbsetting); - if (flags2 and ACF2_RW_MVAR)<>0 then ButtonOn(IDC_RW_MVAR); - if (flags2 and ACF2_RW_SVAR)<>0 then ButtonOn(IDC_RW_SVAR); - if (flags2 and ACF2_RW_TVAR)<>0 then ButtonOn(IDC_RW_TVAR); - - - wnd:=GetDlgItem(Dialog,IDC_RW_DATATYPE); - if ((flags and ACF_DBANSI )=ACF_DBANSI) or - ((flags and ACF_DBUTEXT)=ACF_DBUTEXT) then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - if (flags and ACF_DBANSI)=ACF_DBANSI then - CB_SelectData(wnd,3) - else - CB_SelectData(wnd,4); - SetDlgItemTextW(Dialog,IDC_RW_TEXT,pWideChar(dbvalue)); - end - else - begin - if (flags and ACF_DBBYTE)=ACF_DBBYTE then - CB_SelectData(wnd,0) - else if (flags and ACF_DBWORD)=ACF_DBWORD then - CB_SelectData(wnd,1) - else - CB_SelectData(wnd,2); - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - - SetNumValue(GetDlgItem(Dialog,IDC_RW_VALUE),dbvalue, - (flags2 and ACF2_RW_TVAR)<>0, - (flags2 and ACF2_RW_HEX )<>0); - end; - - end; - - ACT_MESSAGE: begin - SetDlgItemTextW(Dialog,IDC_MSG_TITLE,msgtitle); - SetDlgItemTextW(Dialog,IDC_MSG_TEXT ,msgtext); - if (flags2 and ACF2_MSG_TTL)<>0 then ButtonOn(IDC_MSG_TTL); - if (flags2 and ACF2_MSG_TXT)<>0 then ButtonOn(IDC_MSG_TXT); - if (flags and ACF_MSG_KEEP)<>0 then ButtonOn(IDC_MSG_KEEP); - - case boxopts and $0F of - 1: ButtonOn(IDC_MSGB_OC); - 2: ButtonOn(IDC_MSGB_ARI); - 3: ButtonOn(IDC_MSGB_YNC); - 4: ButtonOn(IDC_MSGB_YN); - 5: ButtonOn(IDC_MSGB_RC); - else - ButtonOn(IDC_MSGB_OK); - end; - case boxopts and $F0 of - $10: ButtonOn(IDC_MSGI_ERROR); - $20: ButtonOn(IDC_MSGI_QUEST); - $30: ButtonOn(IDC_MSGI_WARN); - $40: ButtonOn(IDC_MSGI_INFO); - else - ButtonOn(IDC_MSGI_NONE); - end; - end; - end; - SHWindows(actionType); - end; - end; diff --git a/plugins/!Deprecated/Actman20/ico/advance.ico b/plugins/!Deprecated/Actman20/ico/advance.ico deleted file mode 100644 index 6cc054ccc3..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/advance.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/apply.ico b/plugins/!Deprecated/Actman20/ico/apply.ico deleted file mode 100644 index 27def2fb4b..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/apply.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/chain.ico b/plugins/!Deprecated/Actman20/ico/chain.ico deleted file mode 100644 index d3a9c9b59c..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/chain.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/contact.ico b/plugins/!Deprecated/Actman20/ico/contact.ico deleted file mode 100644 index 5f06f02312..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/contact.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/delete.ico b/plugins/!Deprecated/Actman20/ico/delete.ico deleted file mode 100644 index 3770daf2fc..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/delete.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/down.ico b/plugins/!Deprecated/Actman20/ico/down.ico deleted file mode 100644 index 79ec3929df..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/down.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/export.ico b/plugins/!Deprecated/Actman20/ico/export.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/export.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/format.ico b/plugins/!Deprecated/Actman20/ico/format.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/format.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/import.ico b/plugins/!Deprecated/Actman20/ico/import.ico deleted file mode 100644 index a3d5232741..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/import.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/insert.ico b/plugins/!Deprecated/Actman20/ico/insert.ico deleted file mode 100644 index a3d5232741..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/insert.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/message.ico b/plugins/!Deprecated/Actman20/ico/message.ico deleted file mode 100644 index 6cc054ccc3..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/message.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/new.ico b/plugins/!Deprecated/Actman20/ico/new.ico deleted file mode 100644 index fcfa03a6ad..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/new.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/program.ico b/plugins/!Deprecated/Actman20/ico/program.ico deleted file mode 100644 index 0ce8a9a24d..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/program.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/reload.ico b/plugins/!Deprecated/Actman20/ico/reload.ico deleted file mode 100644 index feadf04bf2..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/reload.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/rw.ico b/plugins/!Deprecated/Actman20/ico/rw.ico deleted file mode 100644 index df5cd0f6c7..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/rw.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/service.ico b/plugins/!Deprecated/Actman20/ico/service.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/service.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/test.ico b/plugins/!Deprecated/Actman20/ico/test.ico deleted file mode 100644 index 06db21a127..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/test.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/up.ico b/plugins/!Deprecated/Actman20/ico/up.ico deleted file mode 100644 index 6efc4d7257..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/up.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/vcheck.ico b/plugins/!Deprecated/Actman20/ico/vcheck.ico deleted file mode 100644 index d7c042119c..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/vcheck.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/vuncheck.ico b/plugins/!Deprecated/Actman20/ico/vuncheck.ico deleted file mode 100644 index 05c93a1281..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/vuncheck.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/m_actions.inc b/plugins/!Deprecated/Actman20/m_actions.inc deleted file mode 100644 index 7600d0dcdf..0000000000 --- a/plugins/!Deprecated/Actman20/m_actions.inc +++ /dev/null @@ -1,193 +0,0 @@ -// defined in interfaces.inc -//const MIID_ACTMANAGER:MUUID='{9584DA04-FB4F-40c1-9325-E4F9CAAFCB5D}'; - -// hotkey and action (common) flags -const - ACF_DISABLED = $10000000; // action disabled - ACF_USEDNOW = $20000000; // action in use (reserved) - ACF_DOBREAK = $40000000; // special, make break; - ACF_ASSIGNED = $80000000; // action assigned - ACF_EXPORT = $08000000; // action to export - ACF_IMPORT = ACF_EXPORT; // imported - ACF_VOLATILE = $04000000; // don't save in DB - ACF_PARALLEL = $02000000; // parallel action work (no wait thread) - ACF_OVERLOAD = $01000000; // imported action overwrite old - -// action flags -const - // ACT_CONTACT - ACF_KEEPONLY = $00000001; // keep contact handle in Last, don't show window - - // ACT_SERVICE - ACF_WPARNUM = $00000001; // wParam is number - ACF_LPARNUM = $00000002; // lParam is number - ACF_WUNICODE = $00000004; // wParam is Unicode string - ACF_LUNICODE = $00000008; // lParam is Unicode string - ACF_WCURRENT = $00000010; // wParam is ignored, used current user handle - // from current message window - ACF_LCURRENT = $00000020; // lParam is ignored, used current user handle - // from current message window - ACF_WPARHEX = $00000040; //!! Show as hex - ACF_LPARHEX = $00000080; //!! Show as hex - - ACF_WRESULT = $00010000; // wParam is previous action result - ACF_LRESULT = $00020000; // lParam is previous action result - ACF_WPARAM = $00040000; // wParam is Call parameter - ACF_LPARAM = $00080000; // lParam is Call parameter - ACF_WSTRUCT = $00100000; - ACF_LSTRUCT = $00200000; - ACF_WPARTYPE = ACF_WPARNUM or ACF_WUNICODE or ACF_WCURRENT or ACF_WPARAM or ACF_WSTRUCT; - ACF_LPARTYPE = ACF_LPARNUM or ACF_LUNICODE or ACF_LCURRENT or ACF_LPARAM or ACF_LSTRUCT; - - ACF_INSERT = $00000100; // Insert result in message - ACF_MESSAGE = $00000200; // Show service result as message - ACF_POPUP = $00000400; // Show service result as popup - ACF_STRING = $00000800; // Service result is string - ACF_UNICODE = $00001000; // Service result is Widestring - ACF_HEX = $00002000; // Result as Hex - ACF_SIGNED = $00004000; // Result as signed value -//!! - ACF_STRUCT = $00008000; // Service result in structure - - // ACT_TEXT - ACF_CLIPBRD = $00000002; // Clipboard operations, not window - ACF_ANSI = $00000004; // File: ANSI or Unicode (UTF8/UTF16) text - ACF_COPYTO = $00000008; // Clipboard operations: 'copy to' or 'paste from' - - ACF_FILE = $00000010; // File operations - ACF_FWRITE = $00000020; // read/write file - ACF_FAPPEND = $00000040; // append file - - ACF_UTF8 = $00000080; // File: UTF8 or UTF16 - ACF_SIGN = $00000100; // File: with signature or not - - // ACT_PROGRAM - ACF_CURPATH = $00000002; // Current (not program) path - ACF_PRTHREAD = $00000004; // parallel Program - - // ACT_ADVANCED - ACF_VARASINT = $00000001; // if variables script, translate to int - - // ACT_DBRW - ACF_DBWRITE = $00000001; // write to (not read from) DB - ACF_DBBYTE = $00000002; // read/write byte (def. dword) - ACF_DBWORD = $00000004; // read/write word (def. dword) - ACF_PARAM = $00000008; // hContact from parameter - ACF_CURRENT = $00000010; // hContact is 0 (user settings) - ACF_RESULT = $00000020; // hContact is last result value - ACF_LAST = $00000040; // use last result for DB writing - ACF_DBUTEXT = $00000080; // read/write Unicode string - ACF_DBANSI = $00000082; // read/write ANSI string - ACF_DBDELETE = $00000100; // delete setting - ACF_NOCNTCT = ACF_PARAM or ACF_CURRENT or ACF_RESULT; - - // ACT_CHAIN - ACF_BYNAME = $00000001; // Address action link by name, not Id - - // ACT_MESSAGE - ACF_MSG_KEEP = $00000001; // Keep past 'last result' - -const - // Variables use - ACF2_SRV_WPAR = $00000001; - ACF2_SRV_LPAR = $00000002; - ACF2_SRV_SRVC = $00000004; - ACF2_SRV_WHEX = $00000008; - ACF2_SRV_LHEX = $00000010; - ACF2_PRG_PRG = $00000001; - ACF2_PRG_ARG = $00000002; - ACF2_TXT_FILE = $00000001; - ACF2_TXT_TEXT = $00000002; - ACF2_RW_MVAR = $00000001; - ACF2_RW_SVAR = $00000002; - ACF2_RW_TVAR = $00000004; - ACF2_RW_HEX = $00000008; - ACF2_MSG_TTL = $00000001; - ACF2_MSG_TXT = $00000002; - - ACF2_FREEMEM = $00000100; - -const - ADV_COND_NOP = 0; - ADV_COND_GT = 1; - ADV_COND_LT = 2; - ADV_COND_EQ = 3; - ADV_COND_NOT = $80; - - ADV_ACT_NOP = 0; // two lower bits $03 mask - ADV_ACT_BREAK = 1; - ADV_ACT_JUMP = 2; - - ADV_ACT_POST = $0F; - - ADV_ACT_MATH = $10; // bit masks - ADV_ACT_VARS = $20; - - ADV_ACTION = $F0; - -const - ACT_UNKNOWN = 0; - ACT_CONTACT = 1; - ACT_SERVICE = 2; - ACT_PROGRAM = 3; - ACT_TEXT = 4; - ACT_ADVANCE = 5; - ACT_CHAIN = 6; - ACT_RW = 7; - ACT_MESSAGE = 8; - ACT_MAXTYPE = 8; - ACT_SPECIAL = ACT_MAXTYPE+1; - ACT_FINISH = ACT_SPECIAL+1; - -type - pHKRecord = ^tHKRecord; - tHKRecord = record - descr :pWideChar; // like name - id :dword; - flags :dword; // Assigned or not - firstAction:dword; // array [0..0] of dword - active :pointer; - end; - - pHKAction = ^tHKAction; - tHKAction = record - flags :dword; // See ACF_* constants - flags2:dword; // See ACF2_* constants (Variables use etc.) - next :dword; - descr :PWideChar; - case actionType:dword of - ACT_CONTACT: - (contact:THANDLE); - ACT_SERVICE: - (service:PAnsiChar; - wparam :WPARAM; - lparam :LPARAM); - ACT_PROGRAM: - (prgname:pWideChar; - args :pWideChar; - show :dword; - time :dword); - ACT_TEXT: - (text :pWideChar; - tfile :pWideChar); - ACT_ADVANCE: - (condition:dword; - value :uint_ptr; - action :dword; - operval :pWideChar; - oper :dword; - mathval :dword; - varval :pWideChar); - ACT_CHAIN: - (id :dword; - actname:pWideChar); - ACT_RW: - (dbcontact:THANDLE; - dbmodule :PAnsiChar; - dbsetting :PAnsiChar; - dbvalue :uint_ptr); - ACT_MESSAGE: - (boxopts:dword; - msgtitle:pWideChar; - msgtext :pWideChar); - end; diff --git a/plugins/!Deprecated/Actman20/make.bat b/plugins/!Deprecated/Actman20/make.bat deleted file mode 100644 index 7f324c52a0..0000000000 --- a/plugins/!Deprecated/Actman20/make.bat +++ /dev/null @@ -1,30 +0,0 @@ -@echo off -set p1=%1 -set p2=%2 -if "%p1%" == "" (echo "please specify target platform by adding 'fpc' or 'fpc64 parameter to command line!'"&&pause&&goto :EOF) -if "%p2%" == "" (echo "please specify target output directory by adding 10 for bin10 or 12 for bin12 to command line!'"&&pause&&goto :EOF) -if /i '%1' == 'fpc' ( - set OUTDIR="..\..\bin%2\Release\Plugins" - set FPCBIN=fpc.exe -) else if /i '%1' == 'fpc64' ( - set OUTDIR="..\..\bin%2\Release64\Plugins" - set FPCBIN=ppcrossx64.exe -) -set PROJECT=Actman - -if not exist %OUTDIR% mkdir %OUTDIR% -md tmp - -rem brcc32.exe %myopts% options.rc -fooptions.res -rem brcc32.exe %myopts% hooks\hooks.rc -fohooks\hooks.res -rem brcc32.exe %myopts% tasks\tasks.rc -fotasks\tasks.res -rem brcc32.exe %myopts% ua\ua.rc -foua\ua.res - -%FPCBIN% @..\Utils.pas\fpc.cfg %PROJECT%.dpr %3 %4 %5 %6 %7 %8 %9 -if errorlevel 1 exit /b 1 - -move .\tmp\%PROJECT%.dll %OUTDIR% -move .\tmp\%PROJECT%.map . -del /Q tmp\* -rd tmp -exit /b 0 diff --git a/plugins/!Deprecated/Actman20/options.rc b/plugins/!Deprecated/Actman20/options.rc deleted file mode 100644 index c221bf0f49..0000000000 --- a/plugins/!Deprecated/Actman20/options.rc +++ /dev/null @@ -1,328 +0,0 @@ -#include "i_const.inc" - -LANGUAGE 0,0 -/* -IDD_STRUCTURE DIALOGEX 0, 0, 332,184, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_VISIBLE | WS_THICKFRAME -CAPTION "Structure editor" -//EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "" , IDC_DATA_FULL, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | - LVS_SINGLESEL | LVS_REPORT, - 2, 2, 160, 180, WS_EX_CONTROLPARENT - - CONTROL "New" ,IDC_DATA_NEW ,"MButtonClass",WS_TABSTOP,166, 2,16,16,$18000000// | WS_GROUP - CONTROL "Up" ,IDC_DATA_UP ,"MButtonClass",WS_TABSTOP,166,22,16,16,$18000000 - CONTROL "Down" ,IDC_DATA_DOWN ,"MButtonClass",WS_TABSTOP,166,40,16,16,$18000000 - CONTROL "Delete",IDC_DATA_DELETE,"MButtonClass",WS_TABSTOP,166,60,16,16,$18000000 - - COMBOBOX IDC_DATA_TYPE , 186, 2, 142, 96, CBS_DROPDOWNLIST | WS_VSCROLL - EDITTEXT IDC_DATA_LEN , 186, 18, 32, 11 - LTEXT "Data length" ,-1 , 222, 18, 106, 11, SS_CENTERIMAGE - EDITTEXT IDC_DATA_EDIT, 186, 32, 142, 11, ES_AUTOHSCROLL - AUTOCHECKBOX "Use Variables", IDC_DATA_VARS, 186, 45, 142, 14 - - DEFPUSHBUTTON "&Change", IDC_DATA_CHANGE, 186, 62, 46, 14//, WS_GROUP - PUSHBUTTON "&OK" , IDOK , 234, 62, 46, 14 - PUSHBUTTON "C&ancel", IDCANCEL , 282, 62, 46, 14 - - AUTOCHECKBOX "Packed structure", IDC_DATA_PACKED, 166, 78, 162, 14 - - CTEXT "Use Byte array/pointer for ANSI strings\n"\ - "Use Word array/pointer for Unicode strings\n\n"\ - "$## replaces by byte with hex value ##\n"\ - "$#### replaces by word with hex value #### (for Unicode strings only)\n\n"\ - "All data length calculating in bytes", - IDC_DATA_HELP,166,94,162,88 - -} -*/ -IDD_ACTION DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "New" ,IDC_GROUP_NEW ,"MButtonClass",WS_TABSTOP,114, 1,16,16,$18000000 | WS_GROUP - CONTROL "Up" ,IDC_GROUP_UP ,"MButtonClass",WS_TABSTOP,114, 18,16,16,$18000000 - CONTROL "Down" ,IDC_GROUP_DOWN ,"MButtonClass",WS_TABSTOP,114, 34,16,16,$18000000 - CONTROL "Reload",IDC_GROUP_RELOAD,"MButtonClass",WS_TABSTOP,114, 51,16,16,$18000000 - CONTROL "Delete",IDC_GROUP_DELETE,"MButtonClass",WS_TABSTOP,114, 68,16,16,$18000000 - CONTROL "Test" ,IDC_GROUP_TEST ,"MButtonClass",WS_TABSTOP,114, 85,16,16,$18000000 - CONTROL "Export",IDC_GROUP_EXPORT,"MButtonClass",WS_TABSTOP,114,102,16,16,$18000000 - CONTROL "Import",IDC_GROUP_IMPORT,"MButtonClass",WS_TABSTOP,114,119,16,16,$18000000 - - CONTROL "", IDC_ACTION_GROUP, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL, - 0, 2, 110, 132, WS_EX_CONTROLPARENT - - CONTROL "", IDC_ACTION_LIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS| LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL - 0, 138, 110, 86, WS_EX_CONTROLPARENT - - CONTROL "Help" ,IDC_ACTION_HELP ,"MButtonClass",WS_TABSTOP,114,138,16,16,$18000000 | WS_GROUP - CONTROL "New" ,IDC_ACTION_NEW ,"MButtonClass",WS_TABSTOP,114,156,16,16,$18000000 - CONTROL "Up" ,IDC_ACTION_UP ,"MButtonClass",WS_TABSTOP,114,174,16,16,$18000000 - CONTROL "Down" ,IDC_ACTION_DOWN ,"MButtonClass",WS_TABSTOP,114,190,16,16,$18000000 - CONTROL "Delete",IDC_ACTION_DELETE,"MButtonClass",WS_TABSTOP,114,208,16,16,$18000000 - -// PUSHBUTTON "Reset", IDC_RESET, 264, 2, 40, 12 - GROUPBOX "" , -1, 132, 0, 172, 226 - - RTEXT "Action",IDC_STAT_ACTION, 135, 6, 63, 12, SS_CENTERIMAGE - CONTROL "", IDC_ACTION_TYPE, "ComboBoxEx32", - WS_TABSTOP | WS_VSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST, 200, 6, 101, 96 - -// Contact - RTEXT "Choose contact", IDC_STAT_CONTACT , 135, 24, 160, 10 - COMBOBOX IDC_CONTACTLIST, 135, 35, 166, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - AUTOCHECKBOX "Keep handle only" , IDC_CNT_KEEP , 135, 53, 160, 11 - AUTOCHECKBOX "Active accounts only",IDC_CNT_FILTER, 135, 65, 160, 11 - RTEXT "Dropdown list format",IDC_STAT_FORMAT, 135, 78, 160, 11 - EDITTEXT IDC_EDIT_FORMAT , 153, 92, 142, 12, ES_AUTOHSCROLL - CONTROL "Apply",IDC_CNT_APPLY,"MButtonClass",WS_TABSTOP,135,90,16,16,$18000000 - CTEXT "You can use %name%, %uid%, %account% and %group% macros",IDC_STAT_FHELP, 135, 107, 160, 24 - -// Service - RTEXT "wParam type", IDC_STAT_WPAR1, 135, 125, 63, 14, SS_CENTERIMAGE - COMBOBOX IDC_FLAG_WPAR , 200, 125, 102, 56, CBS_DROPDOWNLIST | WS_VSCROLL - RTEXT "lParam type", IDC_STAT_LPAR1, 135, 140, 63, 14, SS_CENTERIMAGE - COMBOBOX IDC_FLAG_LPAR , 200, 140, 102, 56, CBS_DROPDOWNLIST | WS_VSCROLL - - RTEXT "Service name", IDC_STAT_SERVICE, 135, 153, 160, 8 - AUTOCHECKBOX "", IDC_SRV_SRVC,135,162,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_SERVICE, 144, 162, 157, 96, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL | CBS_SORT - RTEXT "wParam" , IDC_STAT_WPAR , 135, 177, 160, 8 - AUTOCHECKBOX "", IDC_SRV_WPAR,135,186,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_WPAR , 144, 186, 157, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - RTEXT "lParam" , IDC_STAT_LPAR , 135, 201, 160, 8 - AUTOCHECKBOX "", IDC_SRV_LPAR,135,210,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_LPAR , 144, 210, 157, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - PUSHBUTTON "Structure" , IDC_WSTRUCT , 135, 186, 166, 14 - PUSHBUTTON "Structure" , IDC_LSTRUCT , 135, 210, 166, 14 - - GROUPBOX "Result action" , IDC_RES_GROUP , 135, 24, 166, 99, WS_GROUP - AUTOCHECKBOX "Show in popup" , IDC_RES_POPUP , 138, 34, 159, 11 - AUTOCHECKBOX "Show in messagebox" , IDC_RES_MESSAGE, 138, 45, 159, 11 - AUTOCHECKBOX "Insert into message", IDC_RES_INSERT , 138, 56, 159, 11 - - LTEXT "Service result" , IDC_SRV_RESSTAT, 138, 72, 159, 11 - COMBOBOX IDC_SRV_RESULT , 138, 83, 159, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - AUTOCHECKBOX "Free memory" , IDC_RES_FREEMEM, 138, 99, 159, 11 - AUTOCHECKBOX "Unicode string" , IDC_RES_UNICODE, 138, 110, 159, 11 - AUTOCHECKBOX "Signed value" , IDC_RES_SIGNED , 138, 99, 159, 11 - -// Program - GROUPBOX "Process options" , IDC_PROCESS_GROUP, 135, 24, 166, 46, WS_GROUP - AUTORADIOBUTTON "Parallel" , IDC_FLAG_PARALLEL, 138, 33, 161, 11 - AUTORADIOBUTTON "Continued" , IDC_FLAG_CONTINUE, 138, 44, 161, 11 - EDITTEXT IDC_EDIT_PROCTIME, 138, 56, 31, 11, ES_RIGHT | ES_NUMBER - LTEXT "Process time, ms", IDC_STAT_PROCTIME, 171, 56, 128, 11, SS_CENTERIMAGE - - AUTOCHECKBOX "Current path" , IDC_FLAG_CURPATH, 138, 72, 161, 11 - - GROUPBOX "Window option" , IDC_PRSTART_GROUP, 135, 83, 166, 55, WS_GROUP - AUTORADIOBUTTON "Start normal" , IDC_FLAG_NORMAL , 138, 92, 162, 11 - AUTORADIOBUTTON "Start hidden" , IDC_FLAG_HIDDEN , 138, 103, 162, 11 - AUTORADIOBUTTON "Start minimized", IDC_FLAG_MINIMIZE, 138, 114, 162, 11 - AUTORADIOBUTTON "Start maximized", IDC_FLAG_MAXIMIZE, 138, 125, 162, 11 - - CONTROL "V", IDC_HLP_FVARS, "MButtonClass",WS_TABSTOP, 285,139,16,16,$18000000 - RTEXT "Program path", IDC_STAT_PRGPATH, 135, 155, 160, 8 - AUTOCHECKBOX "", IDC_PRG_PRG,135,164,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_PRGPATH, 144, 164, 139, 12, ES_AUTOHSCROLL - PUSHBUTTON "..." , IDC_PROGRAM , 285, 164, 16, 12 - RTEXT "Program args", IDC_STAT_PRGARGS, 135, 179, 160, 8 - AUTOCHECKBOX "", IDC_PRG_ARG,135,186,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_PRGARGS, 144, 188, 157, 12, ES_AUTOHSCROLL - -// Text - AUTORADIOBUTTON "Clipboard" , IDC_FLAG_CLIP , 135, 20, 166, 11, WS_GROUP - AUTORADIOBUTTON "File" , IDC_FLAG_FILE , 135, 66, 166, 11 - AUTORADIOBUTTON "Message window", IDC_FLAG_MESSAGE, 135, 128, 166, 11 - - GROUPBOX "" , IDC_CLIP_GROUP , 135, 30, 166, 33 - AUTORADIOBUTTON "Copy to" , IDC_CLIP_COPYTO, 140, 36, 160, 11, WS_GROUP - AUTORADIOBUTTON "Paste from", IDC_CLIP_PASTE , 140, 47, 160, 11 - - GROUPBOX "" , IDC_FILE_GROUP , 135, 75, 166, 52 - AUTORADIOBUTTON "Read" , IDC_FILE_READ , 138, 83, 52, 11, WS_GROUP - AUTORADIOBUTTON "Write" , IDC_FILE_WRITE , 191, 83, 52, 11 - AUTORADIOBUTTON "Append" , IDC_FILE_APPEND , 244, 83, 52, 11 - AUTOCHECKBOX "", IDC_TXT_FILE,138,96,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_FILE_PATH , 147, 96, 131, 12, ES_AUTOHSCROLL - PUSHBUTTON "..." , IDC_FILE_FILEBTN, 281, 96, 16, 12 - COMBOBOX IDC_FILE_ENC , 138, 111, 160, 76, CBS_DROPDOWNLIST | WS_VSCROLL - - CONTROL "V", IDC_HLP_VARS, "MButtonClass",WS_TABSTOP, 285,139,16,16,$18000000 -// PUSHBUTTON "vars" , IDC_HLP_VARS , 264, 140, 37, 14 - RTEXT "Text to insert", IDC_STAT_INSERT , 135, 155, 160, 9 - AUTOCHECKBOX "", IDC_TXT_TEXT,135,164,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_INSERT , 144, 164, 157, 59, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - -// Advanced - GROUPBOX "Condition" , IDC_CONDITION , 135, 24, 166, 34, WS_GROUP - AUTORADIOBUTTON ">" , IDC_FLAG_GT , 138, 33, 32, 11 - AUTORADIOBUTTON "<" , IDC_FLAG_LT , 170, 33, 32, 11 - AUTORADIOBUTTON "=" , IDC_FLAG_EQ , 202, 33, 32, 11 - AUTORADIOBUTTON "NOP" , IDC_FLAG_NOP , 234, 33, 32, 11 - AUTOCHECKBOX "NOT" , IDC_FLAG_NOT , 138, 44, 32, 11 - RTEXT "Value" , IDC_STAT_VAL , 170, 44, 78, 11, SS_CENTERIMAGE - EDITTEXT IDC_ADV_VALUE , 250, 44, 48, 11, ES_RIGHT //| ES_NUMBER - - AUTOCHECKBOX "Math" , IDC_FLAG_MATH , 138, 61, 64, 13, WS_GROUP - COMBOBOX IDC_ADV_OPER , 204, 61, 44, 96, - CBS_DROPDOWNLIST | WS_VSCROLL - EDITTEXT IDC_ADV_VAL1 , 250, 61, 48, 13, ES_RIGHT //| ES_NUMBER - - AUTOCHECKBOX "Variables" , IDC_FLAG_VARS , 138, 78, 124, 12 - CONTROL "V", IDC_ADV_HVARS, "MButtonClass",WS_TABSTOP, 285,75,16,16,$18000000 -// PUSHBUTTON "vars" , IDC_ADV_HVARS , 264, 78, 37, 12 - EDITTEXT IDC_ADV_VARS , 144, 92, 157, 68, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - AUTOCHECKBOX "Result as integer", IDC_ADV_ASINT , 135, 161, 164, 13, BS_RIGHT | BS_LEFTTEXT - - GROUPBOX "Operation" , IDC_OPERATION , 135, 174, 166, 49, WS_GROUP - AUTORADIOBUTTON "JUMP" , IDC_FLAG_JUMP , 138, 183, 62, 12 - AUTORADIOBUTTON "BREAK" , IDC_FLAG_BREAK, 138, 196, 62, 12 - AUTORADIOBUTTON "NOP" , IDC_FLAG_ANOP , 138, 209, 62, 12 - COMBOBOX IDC_ADV_VAL2 , 200, 183, 99, 96, CBS_DROPDOWNLIST | WS_VSCROLL | CBS_AUTOHSCROLL - -// Chain - RTEXT "Other Action groups",IDC_STAT_GROUPS,135, 24, 160, 10 - COMBOBOX IDC_GROUP_LIST, 135, 35, 166, 128, - CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL - -// Read / write setting - - AUTORADIOBUTTON "Own settings", IDC_RW_CURRENT, 135, 50, 80, 11, BS_RIGHT | BS_LEFTTEXT | WS_GROUP - AUTORADIOBUTTON "Manual" , IDC_RW_MANUAL , 135, 62, 80, 11, BS_RIGHT | BS_LEFTTEXT - AUTORADIOBUTTON "Parameter" , IDC_RW_PARAM , 217, 50, 80, 11 - AUTORADIOBUTTON "Last result" , IDC_RW_RESULT , 217, 62, 80, 11 - - RTEXT "Module" , IDC_RW_STATM , 135, 75, 160, 8, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_RW_MVAR,135,84,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_MODULE , 144, 84, 157, 12, ES_AUTOHSCROLL - RTEXT "Setting" , IDC_RW_STATS , 135, 99, 160, 8, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_RW_SVAR,135,108,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_SETTING, 144, 108, 157, 12, ES_AUTOHSCROLL - - GROUPBOX "Operation" , IDC_RW_OPER , 135, 124, 166, 21, WS_GROUP - AUTORADIOBUTTON "Read" , IDC_RW_READ , 138, 133, 52, 11 - AUTORADIOBUTTON "Write" , IDC_RW_WRITE , 191, 133, 52, 11 - AUTORADIOBUTTON "Delete" , IDC_RW_DELETE , 244, 133, 52, 11 - - GROUPBOX "Value" , IDC_RW_VAL , 135, 146, 166, 76, WS_GROUP - - COMBOBOX IDC_RW_DATATYPE, 220, 155, 79, 96, - CBS_DROPDOWNLIST | WS_VSCROLL - - AUTOCHECKBOX "Last result" , IDC_RW_LAST , 140, 179, 156, 11, BS_RIGHT | BS_LEFTTEXT - EDITTEXT IDC_RW_VALUE , 149, 191, 147, 11, ES_AUTOHSCROLL | ES_RIGHT// | ES_NUMBER - AUTOCHECKBOX "", IDC_RW_TVAR,140,191,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_TEXT , 149, 191, 147, 29, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - -// MessageBox - - AUTOCHECKBOX "", IDC_MSG_TTL,135,32,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_MSG_TITLE, 144, 32, 157, 12, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - RTEXT "Message text" ,IDC_MSG_STAT2, 137, 46, 164, 11, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_MSG_TXT,135,58,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_MSG_TEXT , 144, 58, 157, 49, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - AUTOCHECKBOX "Keep last result" , IDC_MSG_KEEP, 138, 109, 163, 11, BS_RIGHT | BS_LEFTTEXT - - GROUPBOX "Icons" , IDC_MSG_ICONS , 135, 123, 166, 28, WS_GROUP - AUTORADIOBUTTON "Error" , IDC_MSGI_ERROR, 140, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Question", IDC_MSGI_QUEST, 166, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Warning" , IDC_MSGI_WARN , 192, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Info" , IDC_MSGI_INFO , 218, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "None" , IDC_MSGI_NONE , 246, 130, 53, 20//, BS_ICON - - GROUPBOX "Buttons" , IDC_MSG_BTNS, 135, 152, 166, 71, WS_GROUP - AUTORADIOBUTTON "OK" , IDC_MSGB_OK , 140, 161, 156, 10 - AUTORADIOBUTTON "OK, Cancel" , IDC_MSGB_OC , 140, 171, 156, 10 - AUTORADIOBUTTON "Abort, Retry, Ignore", IDC_MSGB_ARI, 140, 181, 156, 10 - AUTORADIOBUTTON "Yes, No, Cancel" , IDC_MSGB_YNC, 140, 191, 156, 10 - AUTORADIOBUTTON "Yes, No" , IDC_MSGB_YN , 140, 201, 156, 10 - AUTORADIOBUTTON "Retry, Cancel" , IDC_MSGB_RC , 140, 211, 156, 10 - - RTEXT "Message title",IDC_MSG_STAT1, 137, 20, 164, 11, SS_CENTERIMAGE -} - -IDD_ASK DIALOGEX 0, 0, 276, 72, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Choose action" -FONT 8, "MS Shell Dlg", 0, 0 -{ - CTEXT "", IDC_ASK,4,4,268,42,SS_CENTERIMAGE - - CONTROL "", -1, "STATIC", SS_ETCHEDHORZ, 2, 50, 272, 2 - - DEFPUSHBUTTON "&Yes" , IDOK , 4, 54, 40, 16 - PUSHBUTTON "&No" , IDCANCEL , 52, 54, 40, 16 - PUSHBUTTON "A&ppend" , IDC_APPEND, 100, 54, 52, 16 - PUSHBUTTON "Yes to &All", IDC_YESALL, 160, 54, 52, 16 - PUSHBUTTON "N&o to All" , IDC_NOALL , 220, 54, 52, 16 -} - -IDI_NEW ICON "ico\new.ico" -IDI_UP ICON "ico\up.ico" -IDI_DOWN ICON "ico\down.ico" -IDI_DELETE ICON "ico\delete.ico" -IDI_RELOAD ICON "ico\reload.ico" -IDI_TEST ICON "ico\test.ico" -IDI_EXPORT ICON "ico\export.ico" -IDI_IMPORT ICON "ico\import.ico" - -IDI_CONTACT ICON "ico\contact.ico" -IDI_SERVICE ICON "ico\service.ico" -IDI_PROGRAM ICON "ico\program.ico" -IDI_INSERT ICON "ico\insert.ico" -IDI_ADVANCE ICON "ico\advance.ico" -IDI_CHAIN ICON "ico\chain.ico" -IDI_RW ICON "ico\rw.ico" -IDI_MESSAGE ICON "ico\message.ico" -IDI_FORMAT ICON "ico\format.ico" - -IDI_APPLY ICON "ico\apply.ico" - -IDI_VAR_CHECKED ICON "ico\vcheck.ico" -IDI_VAR_UNCHECKED ICON "ico\vuncheck.ico" - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,2,0,1 - PRODUCTVERSION 0,2,0,1 - FILEFLAGSMASK $3F - FILEOS 4 - FILETYPE 2 - FILESUBTYPE 0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName","" - VALUE "Comments", "Plugin for managing different Miranda actions "0 - VALUE "FileDescription", "Action manager for Miranda NG"0 - VALUE "FileVersion", "0, 2, 0, 1 "0 - VALUE "InternalName", "ActManager"0 - VALUE "OriginalFilename", "actman.dll"0 - VALUE "ProductName", "Action Manager Dynamic Link Library (DLL)"0 - VALUE "ProductVersion", "0, 2, 0, 1 "0 - VALUE "SpecialBuild", "18.08.2011 "0 - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation",0,1200 - END -END diff --git a/plugins/!Deprecated/Actman20/options.res b/plugins/!Deprecated/Actman20/options.res deleted file mode 100644 index 6385d76f43..0000000000 Binary files a/plugins/!Deprecated/Actman20/options.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/question.pas b/plugins/!Deprecated/Actman20/question.pas deleted file mode 100644 index 84bbd60604..0000000000 --- a/plugins/!Deprecated/Actman20/question.pas +++ /dev/null @@ -1,51 +0,0 @@ -unit question; - -interface -uses windows,messages; - -function QuestionDlg(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall; - -implementation - -uses m_api; - -{$include i_const.inc} - -const - imp_yes = 1; - imp_yesall = 2; - imp_no = 3; - imp_noall = 4; - imp_append = 5; - -function QuestionDlg(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_INITDIALOG: begin - TranslateDialogDefault(Dialog); - SetDlgItemTextW(Dialog, IDC_ASK,pWideChar(lParam)); - result:=1; - end; - WM_COMMAND: begin - case loword(wParam) of - IDOK : i:=imp_yes; - IDCANCEL : i:=imp_no; - IDC_YESALL: i:=imp_yesall; - IDC_NOALL : i:=imp_noall; - IDC_APPEND: i:=imp_append; - else - i:=0; - end; - if i<>0 then - begin - EndDialog(Dialog,i); - result:=1; - end; - end; - end; -end; - -end. diff --git a/plugins/!Deprecated/Actman20/readme.txt b/plugins/!Deprecated/Actman20/readme.txt deleted file mode 100644 index 0c6359ebe3..0000000000 --- a/plugins/!Deprecated/Actman20/readme.txt +++ /dev/null @@ -1,126 +0,0 @@ -Note ----- -'Actions' is action groups which can be executed through services -'Subactions' is single simple action like 'Call service', 'run program' etc. - -Description ------------ -This service plugin can be used for defining, management and executing some -actions. -Action can be executed later through miranda service. - -Settings --------- -Main window consist of two parts. Left part is for action list and subaction list -for selected action. Navigation buttons for action list and subaction list positioned near -these lists. -'New' - to add new list item -'Delete' - to delete selected item -'Reload' - to reload settings from DB -'Test' - executes currently selected action -'Up','Down' - for place selected subaction upper or lower current position -With DblClick on action groups list item you can rename this item - -When action list is not empty, in right side you can see combobox for subaction type selecting. -At this moment only next types supported: - Open contact window - Call service - Execute program - Insert text - Advanced - Link to action - Profile - MessageBox - --- Open contact window -Just select needed contact from combobox. - --- Call service -This is one of hard to understand action type. -wParam and lParam comboboxes in upper part are for parameter type. - 'number' - just integer number (decimal or hex started from $ sign) - 'ANSI string' - single-byte character string - 'Unicode string' - double-byte character string - 'Current contact' - mean what parameter is current user handle. - Current user is active window owner - 'Last result' - result from previous action or calling parameter - 'Parameter' - parameter from calling service - 'Structure' - parameter is structure which can be edited in options dialog - but will not saving changes in runtime. - -wParam and lParam in lower part are for values, passed to service. -If service.ini file presents in plugins directory, you can press F1 to see short help -notes for selected from combobox service name. -Most upper part, 'result action' is for action, what we must to do with result: -show in popup, in message window or paste into text. -Option to translate result are: integer decimal value (signed or not), hex value or -string value (Unicode or ANSI) -'' in service name will be replaced by protocol name for contact handle in parameter - --- Execute program -More hard for understanding than the upper settings. -Process settings: 'parallel' means executing next subaction or return from executing action -immediately, 'continued' mean what next subaction will be only after finishing this program. -'Process time' option specifies a period of time, after which the process will be shut down. -'Current path' mean what program will run with current directory as start directory. -Window options are for starting window view: minimized, normal, maximized etc. -Several macros can be used in program name: - - parameter - - last result - --- Insert text -You can work with Clipboard or file/message window here. -In field below action type combobox you can write some text which will be inserted -into text field of miranda and other program. -Or, that text can be written to file or some text can be readed. -If you want help for text formatting, you can press F1. -You can use Variables plugin. If you want it, just mark checkbox. help button can -get help notes for available variables and functions. - --- Advanced -This block is the most difficult for understanding. Upper group is conditions for operation executing. -'Value' is value for comparing last subaction result with it. -Next actions will be if condition is true: -'Math' - mathematic operations with last result and presented in 'value' field value. -After math calculations (or w/o it) can be used next operations: -'Operation' block consist of several operations: - 'BREAK' - break action executing (and return for 'parent' action executing - if exist) - 'JUMP' - jump to subaction with selected name - 'NOP' - not operation - -As 'Math' alternative, you can use Variables plugin scripts. -Script can be written in text field below and checked by pressing 'Vars' button. -Variables %subject% and %extratext% can be used in the script. - --- Call chain -Select action from combobox below. This action will be executed. After that next subaction -will be executed. - --- Database -This subaction is for database reading/writing (see Operation block). -Value and value type is for type of data, reading or writing from/to database. -'Last result' mean that value is result of previous action. -Group of radioboxes is for contact type. - 'Own settings' - all settings only for our contact (our profle settings) - 'Parameter' - settings for contact with handle, passed from start parameter - 'Last result' - contact handle is result of last action - 'Manual' - contact handle selected from combobox -'' in module name will be replaced with contact protocol name - --- MessageBox - Subaction uses for standard windows MessageBox showing. text will be replaced -by last result value. - -Using ------ -Executing action from option dialog is possible but not recommended. -First way is assign action to button for toolbar (maybe through modern clist skin engine) -Second way is assign action to hotkey (miranda core not so good for this now) -Third way is to insert action into menu by other plugin. -Pluginmaker Vasilich wrote his plugin (UserActions) which works with ActMan and gives -access to ability to assign actions to some controls (menu, toolbar, hotkey). - -Byte/Word/DWord - numeric integer data -byte/word pointers - pointers to some data (really, like ANSI/Unicode strings) -byte/word array - array of mixed data (really, like ANSI/Unicode strings) -last result/param - current working data = dword diff --git a/plugins/!Deprecated/Actman20/services.ini b/plugins/!Deprecated/Actman20/services.ini deleted file mode 100644 index fcf82289c6..0000000000 --- a/plugins/!Deprecated/Actman20/services.ini +++ /dev/null @@ -1,497 +0,0 @@ -;Small Service list -;if wparam or lparam consists of list, "|" is separator -;in list: if translation not needed, just add space before help -;numeric parameter format: numberhelp -;hContact will setup "Current contact" feature -;structure will setup "structure" feature -;if "return" starts from int/hex/str/struct then separator, result type will set - - -;[Event:Event (name or constant] -;alias=constant name -;descr=text -;plugin=placement (including "core" and empty = "unknown" -;wparam= -;lparam= - -;full: full structure, with aliases -;short: smallest needed structure -;descr: structure description -;plugin: where defined - -[Service:CListFrames/HideALLFramesTB] -alias=MS_CLIST_FRAMES_HIDEALLFRAMESTB -wparam=0 -lparam=0 -return=int 0, if successful -descr=Hide All Titlebars - -[Service:CListFrames/ShowALLFrames] -alias=MS_CLIST_FRAMES_SHOWALLFRAMES -wparam=0 -lparam=0 -return=int 0, if successful -descr=Show All Frames - -[Service:CListFrames/ShowALLFramesTB] -alias=MS_CLIST_FRAMES_SHOWALLFRAMESTB -wparam=0 -lparam=0 -return=int 0, if successful -descr=Show All Titlebars - -[Service:CList/MenuBuildContact] -alias=MS_CLIST_MENUBUILDCONTACT -wparam=hContact -lparam=0 -return=int hMenu handle -descr=Built the context menu for a specific contact. Menu should be DestroyMenu()ed after done - -[Service:CList/SetHideOffline] -alias=MS_CLIST_SETHIDEOFFLINE -wparam=0 Show All Users|1 Show only Online Users|-1 Toggle status -lparam=0 -return=int 0, if successful -descr=Change 'hide offline contacts' option value - -[Service:CList/SetStatusMode] -alias=MS_CLIST_SETSTATUSMODE -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=0 -return=int 0, if successful -descr=Set global status - -[Service:CList/ShowHide] -alias=MS_CLIST_SHOWHIDE -wparam=0 -lparam=0 -return=int 0, if successful -descr=Switch contact list status - -[Service:CloseAction] -wparam=0 -lparam=0 -descr=Closes Miranda - -[Service:Console/Show/Hide] -wparam=0 -lparam=0 -plugin=Console (console.dll) -descr=Show or hide netlog console window - -[Service:DB/Contact/GetCount] -alias=MS_DB_CONTACT_GETCOUNT -wparam=0 -lparam=0 -return=int Value -descr=Returns contact amount, excluding user account - -[Service:DB/Module/Delete] -alias=MS_DB_MODULE_DELETE -wparam=0 -lparam=Ansi Text -descr=Removes all settings for the specified module - -[Service:DBEditorpp/Import] -alias=MS_DBEDIT_IMPORT -wparam=hContact -lparam=Ansi Text -return=int 0 -descr=Import settings\contacts from file -plugin=Database Editor++ (dbeditorpp.dll) - -[Service:DBEditorpp/MenuCommand] -alias=MS_DBEDIT_MENUCOMMAND -wparam=0 -lparam=0 -return=int 0 -plugin=Database Editor++ (dbeditorpp.dll) -descr=Opens or activate database editor - -[Service:FindAdd/FindAddCommand] -alias=MS_FINDADDFINDADD -wparam=0 -lparam=0 -return=int 0 -descr=Opens or activate user search dialog - -[Service:FtMgr/Show] -wparam=0 -lparam=0 -return=int 0 -descr=displays File Transfer window - -[Service:Help/AboutCommand] -wparam=0 on Desktop|parent window handle -lparam=0 -Show "About..." window - -[Service:Help/IndexCommand] -wparam=0 -lparam=0 -descr=Open support (originaly - Miranda wiki) page - -[Service:Help/WebsiteCommand] -wparam=0 -lparam=0 -descr=Go to Miranda IM Homepage - -[Service:Help/BugCommand] -wparam=0 -lparam=0 -descr=Open bug report page - -[Service:History/ShowContactHistory] -alias=MS_HISTORY_SHOWCONTACTHISTORY -wparam=0 System|hContact -lparam=0 -descr=Shows contact history or (wParam=0) system history - -[Service:History++/EmptyHistory] -alias=MS_HPP_EMPTYHISTORY -wparam=hContact -lparam=0 -plugin=History++ (historypp.dll) -descr=Erases contact's history. hContact can be NULL(0) to empty system history - -[Service:History++/ShowGlobalSearch] -alias=MS_HPP_SHOWGLOBALSEARCH -wparam=0 -lparam=0 -plugin=History++ (historypp.dll) -descr=Show Global history search window. If already opened, bring it to front. - -[Service:Ignore/Ignore] -alias=MS_IGNORE_IGNORE -wparam=hContact -lparam=-1 Ignore all|1 Ignore messages|2 Ignore URLs|3 Ignore files|4 Ignore User Online|5 Ignore requests|6 Ignore 'You were added' -return=int 0, if successful -descr=Ignore Contact - -[Service:Ignore/Unignore] -alias=MS_IGNORE_UNIGNORE -wparam=hContact -lparam=-1 Ignore all|1 Ignore messages|2 Ignore URLs|3 Ignore files|4 Ignore User Online|5 Ignore requests|6 Ignore 'You were added' -return=int 0, if successful -descr=Unignore Contact - -[Service:mDynDNS/GetIP] -wparam=0 auto|1 mDynDNS-checkip|2 DNS querry -lparam=structure|*b.arr 16| -return=struct -descr=Returns the IP (empty string on failure) - -[Service:MIMLocker/Lock] -wparam=0 -wparam=0 -plugin=MIMLocker (MIMLocker.dll) -descr=Locks & hides Miranda's contact list and message sessions until password is entered - -[Service:Miranda/System/Restart] -alias=MS_SYSTEM_RESTART -wparam=0 restart in default profile or profile manager|1 restart with current profile -lparam=0 -descr=Restarts Miranda ver.0.8+ - -[Service:mRadio/PlayStop] -alias=MS_RADIO_PLAYSTOP -wparam=hContact|Station name -lparam=0 wParam is Handle|1 wParam is Ansi station name|2 wParam is Unicode station name -descr=Starting or stopping radio station - -[Service:MyDetails/CicleThroughtProtocols] -alias=MS_MYDETAILS_CICLE_THROUGHT_PROTOCOLS -wparam=0 Stop cycle|1 Start cycle -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Start/stops the cycling throught protocols - -[Service:MyDetails/SetMyAvatarUI] -alias=MS_MYDETAILS_SETMYAVATARUI -wparam=0 -lparam=0 All protocols|Protocol -return=signed -2 if proto can't set this, -1 on protocol not found, else 0 -plugin=My Details (mydetails.dll) -descr=Shows a dialog to set the avatar for all possible protocols - -[Service:MyDetails/ShowNextProtocol] -alias=MS_MYDETAILS_SHOWNEXTPROTOCOL -wparam=0 -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Shows the next protocol in the frame - -[Service:MyDetails/ShowPreviousProtocol] -alias=MS_MYDETAILS_SHOWPREVIOUSPROTOCOL -wparam=0 -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Shows the previous protocol in the frame - -[Service:Options/OptionsCommand] -wparam=0 -lparam=0 -descr=Open Options dialog - -[Service:Opt/OpenOptions] -alias=MS_OPT_OPENOPTIONS -wparam=0 -lparam=structure|0|native|bptr|bptr|bptr| -return=int 0, if successful -descr=Opens the options dialog, optionally at the specified page - -[Service:Popup/EnableDisableMenuCommand] -wparam=0 -lparam=0 -plugin=Popup Plus (popup.dll) -descr=Enables or disables Popup windows - -[Service:Popup/ShowMessage] -alias=MS_POPUP_SHOWMESSAGE -wparam=Ansi Text -lparam=1 Warning|2 Notify|3 Error -return=int 0, if successful -plugin=YAPP or Popup -descr=Popup window - -[Service:Popup/ShowMessageW] -alias=MS_POPUP_SHOWMESSAGEW -wparam=Unicode Text -lparam=1 Warning|2 Notify|3 Error -return=int 0, if successful -plugin=YAPP only -descr=Popup window - -[Service:Popup/ToggleEnabled] -wparam=0 -lparam=0 -plugin=YAPP (yapp.dll) -descr=Enables or disables Popup windows - -[Service:Proto/CallContactService] -alias=MS_PROTO_CALLCONTACTSERVICE -wparam=0 -lparam=structure|0|native|b.ptr|native|native| -return=result of protocol service call -descr=Send a general request through the protocol chain for a contact - -[Service:Protos/ShowAccountManager] -alias=MS_PROTO_SHOWACCMGR -wparam=0 -lparam=0 -descr=displays the Account Manager - -[Service:QuickContacts/ShowDialog] -alias=MS_QC_SHOW_DIALOG -wparam=0 -lparam=0 -plugin=Quick Contacts (quickcontacts.dll) -descr=Show the dialog to select the contact - -[Service:QuickSearch_PLUGIN/Show] -wparam=0|filter text -lparam=0 wparam is unicode|1 wparam is Ansi|2 reserved -plugin=Quick Search (Mod) (quicksearch.dll) -descr= - -[Service:Skin/Sounds/Play] -alias=MS_SKIN_PLAYSOUND -wparam=0 -lparam=Name -descr=Plays sound added through Skin/Sounds/AddNew. If sound not found, standard Windows sound plays - -[Service:SREMail/SendCommand] -alias=MS_EMAIL_SENDEMAIL -wparam=hContact -lparam=0 -return=int 0, if successful -descr=Send Email to contact - -[Service:SRFile/GetReceivedFilesFolder] -alias=MS_FILE_GETRECEIVEDFILESFOLDER -wparam=hContact -lparam=structure|*b.arr 300| -return=struct -descr=Returns the received files folder for a contact - -[Service:SRFile/OpenContRecDir] -wparam=hContact -lparam=0 -descr=Open contact received file directory - -[Service:SRFile/SendCommand] -alias=MS_FILE_SENDFILE -wparam=hContact -lparam=0 -return=int 0, if successful -descr=Send file to contact. - -[Service:SRMsg/SendCommand] -alias=MS_MSG_SENDMESSAGE -wparam=hContact;parameter -lparam=0 -descr=Opens message window for contact with handle in wparam - -[Service:StopSpam/RemoveTempContacts] -alias=MS_STOPSPAM_REMTEMPCONTACTS -wparam=0 -lparam=0 -return=int 0 -plugin=StopSpam (stopspam.dll) -descr=remove all temporary contacts from db - -[Service:SV_Avatars/ContactOptions] -alias=MS_AV_CONTACTOPTIONS -wparam=hContact -lparam=0 -plugin=Avatar service (loadavatars.dll) -descr=Call avatar option dialog for contact - -[Service:SV_Avatars/SetAvatar] -alias=MS_AV_SETAVATAR -wparam=hContact -lparam=0|Filename -plugin=Avatar service (loadavatars.dll) -descr=Set (and optionally protect) a local contact picture for the given hContact. If lParam = NIL, the service will open a file selection dialog. - -[Service:Update/CheckForUpdates] -wparam=0 -lparam=0 -return=int 0 -plugin=Updater (updater.dll) -descr=Check for plugin updates - -[Service:UserInfo/ShowDialog] -alias=MS_USERINFO_SHOWDIALOG -wparam=0 System|hContact -lparam=0 -plugin=Extended UserInfo (uinfoex.dll) -descr=Shows contact property window. - -[Service:Utils/OpenURL] -alias=MS_UTILS_OPENURL -wparam=0 Open URL in current window -lparam=URL -return=int 0 -descr=Open URL in default browser - -[Service:Versioninfo/GetInfo] -alias=MS_VERSIONINFO_GETINFO -wparam=0 With formating|1 Don't use formating -lparam=structure|*b.ptr 0| -plugin=VersionInfo -return=int 0, if succesful -descr=Returns a string containing the versioninfo post - -[Service:VersionInfo/MenuCommand] -alias=MS_VERSIONINFO_MENU_COMMAND -wparam=0 -lparam=0 -plugin=VersionInfo -descr=Show or save (call default action) Modules version Info - -[Service:WATrack/ShowMusicInfo] -alias=MS_WAT_SHOWMUSICINFO -wparam=0 -lparam=0 -plugin=Winamp Track (watrack.dll) -descr=Show popup or Info window with current music information. - -[Service:WATrack/MakeReport] -alias=MS_WAT_MAKEREPORT -wparam=log filename| -lparam=report filename| -return=int 0, if unsuccessful -plugin=Winamp Track (watrack.dll) -descr=Create report from log and run it (if option is set). If wParam or lParam is empty then file names from options are used. - -[Service:WhenWasIt/List/Show] -alias=MS_WWI_LIST_SHOW -wparam=0 -lparam=0 -plugin=WhenWasIt Birthday Reminder (whenwasit.dll) -descr=display birthdays window - -[Service:/Bookmarks] -wparam=0 -lparam=0 -plugin=Jabber -descr=Manage Jabber Bookmarks - -[Service:/SetAwayMsg] -alias=PS_SETAWAYMSG -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=text -return=int 0, if successful -descr=Set status message - -[Service:/SetStatus] -alias=PS_SETSTATUS -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=0 -return=int 0, if successful -descr=Set protocol status - -[Service:/SetXStatus] -alias=PS_ICQ_SETCUSTOMSTATUS -;alias=JS_SETXSTATUSEX -wparam=0 None|1 Angry|2 Taking a bath|3 Tired|4 Birthday|5 Drinking beer|6 Thinking|7 Eating|8 Watching TV|9 Meeting|10 Coffee|11 Listening to music|12 Business|13 Shooting|14 Having fun|15 On the phone|16 Gaming|17 Studying|18 Shopping|19 Feeling sick|20 Sleeping|21 Surfing|22 Browsing|23 Working|24 Typing|25 Picnic|26 Cooking|27 Smoking|28 I'm high|29 On WC|30 To be or not to be|31 Watching pro7 on TV|32 Love -lparam=0 -plugin=ICQ -descr=Sets owner current custom status - -[Service:/ShowXStatusDetails] -alias=MS_XSTATUS_SHOWDETAILS -wparam=0|hContact -lparam=0 -plugin=ICQ -descr=Display xStatus detail - -[Event:Actions/Changed] -alias=ME_ACT_CHANGED -plugin=ActMan -descr='Action group list was changed: some was added or deleted' -wparam=ACTM_NEW|ACTM_DELETE|ACTM_RELOAD|ACTM_RENAME|ACTM_SORT|ACTM_LOADED -lparam=0 - -[Event:CList/PreBuildContactMenu] -alias=ME_CLIST_PREBUILDCONTACTMENU -plugin=contact list -descr='The context menu for a contact is about to be built' -wparam=hContact -lparam=0 - -[Event:CList/DoubleClicked] -alias=ME_CLIST_DOUBLECLICKED -plugin=contact list -descr='Double click on the contact list' -wparam=hContact -lparam=0 - -[Event:DB/Contact/Added] -alias=ME_DB_CONTACT_ADDED -plugin=database driver -descr='New contact added to database' -wparam=hContact -lparam=0 - -[Event:DB/Contact/Deleted] -alias=ME_DB_CONTACT_DELETED -plugin=database driver -descr='Contact deleting' -wparam=hContact -lparam=0 - -[Structure:CCSDATA] -; variant: Handle -> param -full=0| \ -param (HANDLE) hContact| \ -b.ptr (const char *) szProtoService| \ -native (WPARAM) wParam| \ -native (LPARAM) lParam| -short=0|param|b.ptr|native|native| -descr= -plugin= diff --git a/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc deleted file mode 100644 index c8025c278d..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc +++ /dev/null @@ -1,536 +0,0 @@ -{} -const - settings:HWND = 0; - -var - OldTableProc:pointer; - onactchanged:THANDLE; - -const - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - -procedure CheckTaskList(Dialog:HWND;enable:boolean); -begin - if not enable then - enable:=SendMessage(GetDlgItem(Dialog,IDC_TASK_NAME),LVM_GETITEMCOUNT,0,0)>0; - - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_DATEV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_TIMEV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_REPEAT ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_INTERVAL ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_BREAK ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_EVENT ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE ),enable); - if not enable then - begin - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),SW_HIDE); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),SW_HIDE); - end; -end; - -procedure FillTaskList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; -begin - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=i; - li.pszText :=name; - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - ListView_SetCheckState(wnd,li.iItem,(flags and ACF_DISABLED)=0); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -procedure ClearTaskData(Dialog:HWND); -var - st:TSystemTime; -begin - SendMessage(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE),CB_SETCURSEL,0,0); - CheckDlgButton(Dialog,IDC_TASK_BREAK ,BST_UNCHECKED); - CheckDlgButton(Dialog,IDC_TASK_EVENT ,BST_UNCHECKED); - CheckDlgButton(Dialog,IDC_TASK_ONCE ,BST_UNCHECKED); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE),false); - - SetDlgItemInt(Dialog,IDC_TASK_DAYSV ,1,false); - SetDlgItemInt(Dialog,IDC_TASK_REPEAT,0,false); - - FillChar(st,SizeOf(st),0); - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV ,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); -{ - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATET),SW_SHOW); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATEV),SW_SHOW); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),SW_HIDE); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),SW_HIDE); -} -end; - -procedure ShowDateType(Dialog:HWND;start:integer); -var - sh1,sh2,sh3:integer; -begin - case start of - 1: begin // start after - sh1:=SW_HIDE; - sh2:=SW_SHOW; - sh3:=SW_SHOW; - end; - 2: begin // start from - sh1:=SW_SHOW; - sh2:=SW_HIDE; - sh3:=SW_SHOW; - end; - else - begin -// 3: begin // start immediately - sh1:=SW_HIDE; - sh2:=SW_HIDE; - sh3:=SW_HIDE; - end; - end; - - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATET),sh1); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATEV),sh1); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),sh2); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),sh2); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_TIMET),sh3); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_TIMEV),sh3); -end; - -procedure ShowTaskData(Dialog:HWND; item:integer=-1); -var - st:TSystemTime; - lwnd:HWND; - start:integer; -begin - lwnd:=settings; - settings:=0; - - ClearTaskData(Dialog); - - with TaskList[LV_GetLParam(GetDlgItem(Dialog,IDC_TASK_NAME),item)] do - begin - // flags - - if (flags and TCF_NONZEROBREAK)<>0 then - CheckDlgButton(Dialog,IDC_TASK_BREAK,BST_CHECKED); - if (flags and TCF_MAKEEVENT)<>0 then - CheckDlgButton(Dialog,IDC_TASK_EVENT,BST_CHECKED); - if (flags and TCF_EVENTONCE)<>0 then - CheckDlgButton(Dialog,IDC_TASK_ONCE,BST_CHECKED); - - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE), - IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED); - - // action - CB_SelectData(GetDlgItem(Dialog,IDC_TASK_ACTION),action); - // times - FileTimeToSystemTime(starttime,st); - - if (flags and TCF_IMMEDIATELY)<>0 then - begin - start:=3; - end - else if (flags and TCF_ABSOLUTE)<>0 then - begin - start:=2; - SendDlgItemMessage(Dialog,IDC_TASK_DATEV,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)) - end - else - begin - start:=1; - SetDlgItemInt(Dialog,IDC_TASK_DAYSV,dayoffset,false); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE),start); - - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - - SetDlgItemInt(Dialog,IDC_TASK_REPEAT,count,true); - - FileTimeToSystemTime(interval,st); - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - SetDlgItemInt(Dialog,IDC_TASK_INTDAYS,intdays,false); - end; - - ShowDateType(Dialog,start); - - settings:=lwnd; -end; - -procedure SaveTaskData(Dialog:HWND; item:integer=-1); -var - wnd:HWND; - li:LV_ITEM; - st,st1:TSystemTime; - tmp:longbool; -begin - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) // LVNI_SELECTED - else - li.iItem:=item; - - if li.iItem>=0 then - begin - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - - with TaskList[li.lParam] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - flags:=ACF_ASSIGNED; - // flags - if ListView_GetCheckState(wnd,li.iItem)=0 then - flags:=flags or ACF_DISABLED; - - if IsDlgButtonChecked(Dialog,IDC_TASK_BREAK)<>BST_UNCHECKED then - flags:=flags or TCF_NONZEROBREAK; - if IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED then - begin - flags:=flags or TCF_MAKEEVENT; - if IsDlgButtonChecked(Dialog,IDC_TASK_ONCE )<>BST_UNCHECKED then - flags:=flags or TCF_EVENTONCE; - end; - // action - action:=CB_GetData(GetDlgItem(Dialog,IDC_TASK_ACTION)); - // times - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV,DTM_GETSYSTEMTIME,0,lParam(@st)); - - case CB_GetData(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE)) of - 1: begin - dayoffset:=GetDlgItemInt(Dialog,IDC_TASK_DAYSV,tmp,false); - end; - 2: begin - flags:=flags or TCF_ABSOLUTE; - SendDlgItemMessage(Dialog,IDC_TASK_DATEV,DTM_GETSYSTEMTIME,0,lParam(@st1)); - st.wYear :=st1.wYear; - st.wMonth :=st1.wMonth; - st.wDayOfWeek:=st1.wDayOfWeek; - st.wDay :=st1.wDay; - end; - 3: begin - flags:=flags or TCF_IMMEDIATELY; - end; - end; - SystemTimeToFileTime(st,starttime); - - count:=GetDlgItemInt(Dialog,IDC_TASK_REPEAT,tmp,true); - - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_GETSYSTEMTIME,0,lParam(@st)); - SystemTimeToFileTime(st,interval); - intdays:=GetDlgItemInt(Dialog,IDC_TASK_INTDAYS,tmp,false); - end; - end; - end; -end; - -function NewTask(Dialog:HWND;item:integer=-1):integer; -var - wnd:HWND; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - if item<0 then - li.iItem :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1 - else - li.iItem :=item; - li.iSubItem:=0; - li.mask :=LVIF_TEXT + LVIF_PARAM; - li.lParam :=CreateNewTask; - li.pszText :=TranslateW('Task sample'); - result:=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - ListView_SetCheckState(wnd,li.iItem, - (TaskList[li.lParam].flags and ACF_DISABLED)=0); - StrDupW(TaskList[li.lParam].name,li.pszText); - - CheckTaskList(Dialog,true); - - if li.iItem=0 then - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -function DeleteTask(Dialog:HWND):integer; -var - li:LV_ITEM; - wnd:HWND; - i:integer; -begin - result:=0; - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - li.iItem :=i; - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - - TaskList[li.lParam].flags:=TaskList[li.lParam].flags and not ACF_ASSIGNED; - - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - - CheckTaskList(Dialog,false); -end; - -function NewHKTableProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_TASK_NEW,0); - exit; - end; - - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_TASK_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldTableProc,Dialog,hMessage,wParam,lParam); -end; - -procedure FillStartTimeList(wnd:HWND); -begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - CB_AddStrDataW(wnd,TranslateW('Starting after' ),1); - CB_AddStrDataW(wnd,TranslateW('Starting from' ),2); - CB_AddStrDataW(wnd,TranslateW('Start immediately'),3); - SendMessage(wnd,CB_SETCURSEL,0,0); -end; - -procedure FillActionList(wnd:HWND); -var - ptr,ptr1:pChain; - i,cnt:integer; -begin - cnt:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SendMessage(wnd,CB_RESETCONTENT,0,0); - if cnt>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to cnt-1 do - begin - CB_AddStrDataW(wnd,ptr^.descr,ptr^.id); - inc(ptr); - end; - - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -begin - result:=0; - if settings<>0 then - FillActionList(GetDlgItem(settings,IDC_TASK_ACTION)); -end; - -procedure SetIcons(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=dialog; - ti.hinst :=hInstance; -{ - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_HELP); - ti.lpszText:=TranslateW('Help'); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -} - ti.uId :=GetDlgItem(Dialog,IDC_TASK_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_TASK_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - li:LV_ITEMW; - i:integer; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - UnhookEvent(onactchanged); - settings:=0; - end; - - WM_INITDIALOG: begin - settings:=0; - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - CreateUpDownControl( - WS_CHILD+WS_BORDER+WS_VISIBLE+UDS_ARROWKEYS+UDS_SETBUDDYINT+UDS_ALIGNRIGHT, - 190,112,14,18, - Dialog, IDC_TASK_UPDOWN, hInstance, GetDlgItem(Dialog,IDC_TASK_REPEAT), - 10000, -1, 0); - - OldTableProc:=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,LONG_PTR(@NewHKTableProc))); - TranslateDialogDefault(Dialog); - - SetIcons(Dialog); - - FillActionList(GetDlgItem(Dialog,IDC_TASK_ACTION)); - FillStartTimeList(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE)); - FillTaskList(wnd); - CheckTaskList(Dialog,false); - onactchanged:=HookEvent(ME_ACT_CHANGED,@ActListChange); - settings:=Dialog; - end; - - WM_COMMAND: begin - case wParam shr 16 of - CBN_SELCHANGE: begin - ShowDateType(Dialog,CB_GetData(lParam)); - end; - - EN_CHANGE: begin - end; - - BN_CLICKED: begin - case loword(wParam) of - IDC_TASK_NEW : NewTask(Dialog); - IDC_TASK_DELETE: DeleteTask(Dialog); - - IDC_TASK_EVENT: begin - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE), - IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED); - end; - end; - end; - end; - if settings<>0 then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveTaskData(Dialog); - SaveTasks; - SetAllTasks; - end; - - DTN_DATETIMECHANGE: begin - if settings<>0 then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ITEMCHANGED: begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - SaveTaskData(Dialog,PNMLISTVIEW(lParam)^.iItem) - else if i<0 then // new focus - begin - ShowTaskData(Dialog,PNMLISTVIEW(lParam)^.iItem); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - - LVN_ENDLABELEDITW: begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - item.mask:=LVIF_TEXT; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,TLPARAM(@item)); - - li.iItem :=item.iItem; - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(hdr.hWndFrom,LVM_GETITEMW,0,TLPARAM(@li)); - with TaskList[li.lParam] do - begin - mFreeMem(name); - StrDupW (name,item.pszText); - end; - end; - end; - result:=1; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_options.inc b/plugins/!Deprecated/Actman20/tasks/i_options.inc deleted file mode 100644 index 527e8d0c88..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_options.inc +++ /dev/null @@ -1,99 +0,0 @@ -{} -const - opt_task :PAnsiChar = 'Task'; - opt_tasks :PAnsiChar = 'Tasks'; - opt_count :PAnsiChar = 'numtasks'; - - opt_name :PAnsiChar = 'name'; - opt_flags :PAnsiChar = 'flags'; - opt_action :PAnsiChar = 'action'; - opt_repeat :PAnsiChar = 'repeat'; - opt_days :PAnsiChar = 'dayoffset'; - opt_intdays :PAnsiChar = 'intdays'; - - opt_time_lo :PAnsiChar = 'starttime_lo'; - opt_time_hi :PAnsiChar = 'starttime_hi'; - opt_interval_lo:PAnsiChar = 'interval_lo'; - opt_interval_hi:PAnsiChar = 'interval_hi'; - opt_lastcall_lo:PAnsiChar = 'lastcall_lo'; - opt_lastcall_hi:PAnsiChar = 'lastcall_hi'; - -procedure SaveTasks; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i,amount:integer; -begin - DBDeleteGroup(0,DBBranch,opt_tasks); - amount:=0; - p1:=StrCopyE(section,opt_tasks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_task); - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)=0 then - continue; - - p:=StrEnd(IntToStr(p1,amount)); - p^:='/'; inc(p); - with TaskList[i] do - begin - StrCopy(p,opt_flags ); DBWriteDWord (0,DBBranch,section,flags); - StrCopy(p,opt_name ); DBWriteUnicode(0,DBBranch,section,name); - StrCopy(p,opt_action); DBWriteDWord (0,DBBranch,section,action); - StrCopy(p,opt_repeat); DBWriteWord (0,DBBranch,section,count); - StrCopy(p,opt_days ); DBWriteByte (0,DBBranch,section,dayoffset); - //systemtime to filetime if needs - StrCopy(p,opt_time_lo ); DBWriteDWord(0,DBBranch,section,starttime.dwLowDateTime); - StrCopy(p,opt_time_hi ); DBWriteDWord(0,DBBranch,section,starttime.dwHighDateTime); - StrCopy(p,opt_interval_lo); DBWriteDWord(0,DBBranch,section,interval .dwLowDateTime); - StrCopy(p,opt_interval_hi); DBWriteDWord(0,DBBranch,section,interval .dwHighDateTime); - StrCopy(p,opt_intdays ); DBWriteByte (0,DBBranch,section,intdays); - StrCopy(p,opt_lastcall_lo); DBWriteDWord(0,DBBranch,section,lastcall .dwLowDateTime); - StrCopy(p,opt_lastcall_hi); DBWriteDWord(0,DBBranch,section,lastcall .dwHighDateTime); - end; - inc(amount); - end; - DBWriteByte(0,DBBranch,opt_count,amount); -end; - -function LoadTasks:integer; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i:integer; -begin - MaxTasks:=DBReadByte(0,DBBranch,opt_count); - result:=MaxTasks; - if MaxTasks>0 then - begin - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - p1:=StrCopyE(section,opt_tasks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_task); - for i:=0 to MaxTasks-1 do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); - - with TaskList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_name ); name :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_action); action :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_days ); dayoffset:=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_repeat); count :=Shortint(DBReadWord(0,DBBranch,section)); - - StrCopy(p,opt_time_lo ); starttime.dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_time_hi ); starttime.dwHighDateTime:=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_interval_lo); interval .dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_interval_hi); interval .dwHighDateTime:=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_intdays ); intdays:=DBReadByte(0,DBBranch,section); - StrCopy(p,opt_lastcall_lo); lastcall .dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_lastcall_hi); lastcall .dwHighDateTime:=DBReadDWord(0,DBBranch,section); - // filetime to systemtime if needs - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_service.inc b/plugins/!Deprecated/Actman20/tasks/i_service.inc deleted file mode 100644 index 376e75cba0..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_service.inc +++ /dev/null @@ -1,87 +0,0 @@ -{} -// wParam: 1/0 (enable/disable), lParam = task name -// works for all tasks with same started name -function TaskEnable(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(TaskList[i].name,pWideChar(lParam),j)=0 then - begin - if wParam=0 then // disable - begin - if (TaskList[i].flags and ACF_DISABLED)=0 then - begin - inc(result); - TaskList[i].flags:=TaskList[i].flags or ACF_DISABLED; - if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; - end - else - begin - if (TaskList[i].flags and ACF_DISABLED)<>0 then - begin - inc(result); - TaskList[i].flags:=TaskList[i].flags and not ACF_DISABLED; - SetTask(TaskList[i]); - end; - end; - end; - end; - end; -end; - -function TaskDelete(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(TaskList[i].name,pWideChar(lParam),j)=0 then - begin - TaskList[i].flags:=TaskList[i].flags and not ACF_ASSIGNED; - end; - end; - end; -end; - -function TaskCount(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(name,pWideChar(lParam),j)=0 then - begin - result:=count; - count:=wParam; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_task.inc b/plugins/!Deprecated/Actman20/tasks/i_task.inc deleted file mode 100644 index 2c860db85f..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_task.inc +++ /dev/null @@ -1,242 +0,0 @@ -{} -const - ACF_ASSIGNED = $80000000; // Task assigned - ACF_DISABLED = $10000000; // Task disabled - - TCF_ABSOLUTE = $00000001; - TCF_IMMEDIATELY = $00000002; - TCF_NONZEROBREAK = $00000004; - TCF_MAKEEVENT = $00000008; - TCF_EVENTONCE = $00000010; - -const - WM_RESETTASKS = WM_USER+1312; - WM_FIRSTTASK = WM_USER+1313; - WM_LASTTASK = WM_FIRSTTASK+1000; - -type - pTaskRec = ^tTaskRec; - tTaskRec = record - // option values - flags :dword; - name :PWideChar; // name for task - action :dword; // assigned action - intdays, // interval,days - dayoffset :integer; //!! offset, days - starttime, // task starttime - interval :TFileTime; // interval for repeat - count :integer; // repeat count - // support values - lastcall :TFileTime; // last timer event time - nextcall :TFileTime; // ?? next start time? - // runtime values - timer :uint_ptr; // timer handle - curcount :integer; // repeat count - inprocess :bool; // starting processing - inaction :bool; // timer event processing - end; - pTaskList = ^tTaskList; - tTaskList = array [0..1023] of tTaskRec; - -var - TaskList:pTaskList = nil; - MaxTasks:integer = 0; - -procedure TimerProc(wnd:HWND;uMsg:uint;idEvent:uint_ptr;dwTime:dword); stdcall; -var - ltime:uint; - i:integer; - res:int_ptr; - st:tSystemTime; -begin - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and (ACF_ASSIGNED or ACF_DISABLED))=ACF_ASSIGNED then - if timer=idEvent then - begin - inaction:=true; - if ((flags and TCF_MAKEEVENT)<>0) and - (((flags and TCF_EVENTONCE) =0) or (curcount=count)) then - NotifyEventHooks(hevent,count-curcount,lParam(name)); - - GetLocalTime(st); - SystemTimeToFileTime(st,lastcall); - - res:=CallService(MS_ACT_RUNBYID,action,0); - - if ((res<>0) and ((flags and TCF_NONZEROBREAK)<>0)) or // non-zero result - (count=0) or (curcount=0) then // no need to repeat or all repeats done - begin - KillTimer(0,idEvent); - timer:=0; - flags:=flags or ACF_DISABLED; - end - else - begin - if (count<>0) and (count=curcount) then // next timer - repeat interval - begin - KillTimer(0,idEvent); - FileTimeToSystemTime(interval,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+st.wHour*60*60*1000; - timer:=SetTimer(0,0,ltime,@TimerProc); - if count=-1 then - curcount:=1; - end; - if count>0 then - dec(curcount); - end; - inaction:=false; - break; - end; - end; - end; -end; - -procedure SetTask(var task:tTaskRec); -var - ltime:uint; - uli1,uli2:ULARGE_INTEGER; - sft:tFileTime; - st:tSystemTime; - dif:int64; -begin - task.inprocess:=true; - // Check task time - if (task.flags and TCF_IMMEDIATELY)<>0 then - begin - FileTimeToSystemTime(task.interval,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+ - st.wHour*60*60*1000; - end - else if (task.flags and TCF_ABSOLUTE)<>0 then - begin - uli1.LowPart :=task.starttime.dwLowDateTime; - uli1.HighPart:=task.starttime.dwHighDateTime; - GetLocalTime(st); - SystemTimeToFileTime(st,sft); - uli2.LowPart :=sft.dwLowDateTime; - uli2.HighPart:=sft.dwHighDateTime; - dif:=uli1.QuadPart-uli2.QuadPart; - if dif>0 then // time in future - ltime:=dif div 10000 // 100ns to 1 ms - else // was in past - begin - task.flags:=task.flags or ACF_DISABLED; - exit; - end; - end - else - begin - // days+hours+minutes+seconds+millseconds - FileTimeToSystemTime(task.starttime,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+ - st.wHour*60*60*1000+task.dayoffset*24*60*60*1000; - end; - // set timer - task.curcount:=task.count; - task.timer :=SetTimer(0,0,ltime,@TimerProc); - - if (task.flags and TCF_IMMEDIATELY)<>0 then - TimerProc(0,WM_TIMER,task.timer,0); - task.inprocess:=false; -end; - -procedure SetAllTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if (TaskList[i].flags and ACF_DISABLED)=0 then - SetTask(TaskList[i]) - else if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; - end; -end; - -procedure StopAllTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and (ACF_ASSIGNED or ACF_DISABLED))=ACF_ASSIGNED then - if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; -end; - -procedure ClearTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin -//!! if (flags and ACF_ASSIGNED)<>0 then - mFreeMem(name); - end; - end; - FreeMem(TaskList); - MaxTasks:=0; -end; - -function CreateNewTask:integer; -var - i:integer; - tmp:pTaskList; - st:tSystemTime; -begin - result:=-1; - // if list is not empty, search for hole - if MaxTasks>0 then - begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)=0 then - begin - FillChar(TaskList[i],SizeOf(tTaskRec),0); - result:=i; - break; - end; - end; - end; - if result<0 then - begin - // not found or empty list - i:=(MaxTasks+16)*SizeOf(tTaskRec); - GetMem (tmp ,i); - FillChar(tmp^,i,0); - if MaxTasks>0 then - begin - move(TaskList^,tmp^,MaxTasks*SizeOf(tTaskRec)); - FreeMem(TaskList); - end; - TaskList:=tmp; - result:=MaxTasks; - inc(MaxTasks,16); - end; - with TaskList^[result] do - begin - flags:=flags or ACF_ASSIGNED or ACF_DISABLED or TCF_ABSOLUTE; - GetLocalTime(st); - SystemTimeToFileTime(st,starttime); - //!!! CHEAT - st.wHour :=0; - st.wMinute:=0; - st.wSecond:=1; - SystemTimeToFileTime(st,interval); - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_tconst.inc b/plugins/!Deprecated/Actman20/tasks/i_tconst.inc deleted file mode 100644 index f4df810d32..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_tconst.inc +++ /dev/null @@ -1,27 +0,0 @@ -{resource constants} -const - IDD_TASKS = 2030; - - IDC_TASK_NAME = 1025; - - IDC_TASK_DATET = 1026; - IDC_TASK_DATEV = 1027; - IDC_TASK_DAYST = 1028; - IDC_TASK_DAYSV = 1029; - IDC_TASK_TIMET = 1030; - IDC_TASK_TIMEV = 1031; - - IDC_TASK_REPEAT = 1032; - IDC_TASK_BREAK = 1034; - IDC_TASK_INTERVAL = 1035; - IDC_TASK_EVENT = 1036; - IDC_TASK_ONCE = 1037; - IDC_TASK_UPDOWN = 1038; - IDC_TASK_ABSOLUTE = 1039; - - IDC_TASK_ACTION = 1040; - - IDC_TASK_INTDAYS = 1041; - - IDC_TASK_NEW = 1050; - IDC_TASK_DELETE = 1051; diff --git a/plugins/!Deprecated/Actman20/tasks/scheduler.pas b/plugins/!Deprecated/Actman20/tasks/scheduler.pas deleted file mode 100644 index 05e9cb6a58..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/scheduler.pas +++ /dev/null @@ -1,86 +0,0 @@ -unit scheduler; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global; - -{$R tasks.res} - -{$include m_actman.inc} - -var - hevent: THANDLE; - -{$include i_task.inc} -{$include i_tconst.inc} -{$include i_options.inc} -{$include i_opt_dlg.inc} -{$include i_service.inc} - -// ------------ base interface functions ------------- - -var - hendis, - hcount, - hdel: THANDLE; - -procedure Init; -begin - - if LoadTasks=0 then - begin - MaxTasks:=8; - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - end - else - SetAllTasks; - - hcount:=CreateServiceFunction(MS_ACT_TASKCOUNT ,@TaskCount); - hendis:=CreateServiceFunction(MS_ACT_TASKENABLE,@TaskEnable); - hdel :=CreateServiceFunction(MS_ACT_TASKDELETE,@TaskDelete); - hevent:=CreateHookableEvent(ME_ACT_BELL); - -end; - -procedure DeInit; -begin - StopAllTasks; - DestroyServiceFunction(hendis); - DestroyServiceFunction(hdel); - DestroyServiceFunction(hcount); - ClearTasks; -end; - -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -begin - result:=0; - tmpl:=PAnsiChar(IDD_TASKS); - proc:=@DlgProcOpt; - name:='Scheduler'; -end; - -var - amLink:tActionLink; - -procedure InitLink; -begin - amLink.Next :=ActionLink; - amLink.Init :=@Init; - amLink.DeInit :=@DeInit; - amLink.AddOption:=@AddOptionPage; - ActionLink :=@amLink; -end; - -initialization - InitLink; -end. diff --git a/plugins/!Deprecated/Actman20/tasks/tasks.rc b/plugins/!Deprecated/Actman20/tasks/tasks.rc deleted file mode 100644 index 2bc558fbc3..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/tasks.rc +++ /dev/null @@ -1,47 +0,0 @@ -#include "i_tconst.inc" - -LANGUAGE 0,0 - -IDD_TASKS DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "", IDC_TASK_NAME, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL, - 2, 2, 130, 174, WS_EX_CONTROLPARENT - - CTEXT "Action",-1 , 140, 2, 160, 12, SS_CENTERIMAGE - COMBOBOX IDC_TASK_ACTION, 140, 14, 160, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - - GROUPBOX "Start" , -1, 138, 30, 164, 54 - - COMBOBOX IDC_TASK_ABSOLUTE, 142, 40, 156, 60, CBS_DROPDOWNLIST | WS_VSCROLL - - CTEXT "Date", IDC_TASK_DATET, 140, 54, 76, 12, SS_CENTERIMAGE - CONTROL "Date", IDC_TASK_DATEV, "SysDateTimePick32", WS_TABSTOP, 150, 66, 56, 14 - - CTEXT "Days", IDC_TASK_DAYST, 140, 54, 76, 12, SS_CENTERIMAGE - EDITTEXT IDC_TASK_DAYSV, 162, 66, 32, 14 - - CTEXT "Time", IDC_TASK_TIMET, 220, 54, 76, 12, SS_CENTERIMAGE - CONTROL "Time", IDC_TASK_TIMEV, "SysDateTimePick32", WS_TABSTOP|$09, 230, 66, 56, 14 - - GROUPBOX "Repeat" , -1, 138, 88, 164, 88 - - CTEXT "Repeat, times", -1, 140, 98, 70, 14, SS_CENTERIMAGE - EDITTEXT IDC_TASK_REPEAT, 155, 114, 40, 14 - - CTEXT "Interval", -1, 212, 98, 84, 14, SS_CENTERIMAGE - EDITTEXT IDC_TASK_INTDAYS, 212, 114, 24, 14 - CONTROL "Interval", IDC_TASK_INTERVAL, "SysDateTimePick32", WS_TABSTOP|$09, 240, 114, 56, 14 - - AUTOCHECKBOX "Break on non-zero result", IDC_TASK_BREAK, 142, 132, 156, 14 - AUTOCHECKBOX "Send event on start time", IDC_TASK_EVENT, 142, 146, 156, 14 - AUTOCHECKBOX "Send event just once" , IDC_TASK_ONCE , 142, 160, 156, 14 - - CONTROL "New" ,IDC_TASK_NEW ,"MButtonClass",WS_TABSTOP, 2,178,16,16,$18000000 - CONTROL "Delete",IDC_TASK_DELETE,"MButtonClass",WS_TABSTOP,22,178,16,16,$18000000 -// CONTROL "Help" ,IDC_EVENT_HELP ,"MButtonClass",WS_TABSTOP,42,164,16,16,$18000000 -} diff --git a/plugins/!Deprecated/Actman20/tasks/tasks.res b/plugins/!Deprecated/Actman20/tasks/tasks.res deleted file mode 100644 index bc72f06406..0000000000 Binary files a/plugins/!Deprecated/Actman20/tasks/tasks.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ua/action.ico b/plugins/!Deprecated/Actman20/ua/action.ico deleted file mode 100644 index 06db21a127..0000000000 Binary files a/plugins/!Deprecated/Actman20/ua/action.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc b/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc deleted file mode 100644 index 098a262b1e..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc +++ /dev/null @@ -1,357 +0,0 @@ -{} -var - xmlparser:TXML_API_W; - -const - ioAction :PWideChar = 'Action'; - ioUA :PWideChar = 'UA'; - - ioName :PWideChar = 'name'; - - ioTwoState :PWideChar = 'twostate'; - ioSaveState :PWideChar = 'savestate'; - - ioHotkey :PWideChar = 'Hotkey'; - ioToolbar :PWideChar = 'Toolbar'; - ioTabSRMM :PWideChar = 'TabSRMM'; - ioMenuItem :PWideChar = 'Menu'; - - ioTooltip :PWideChar = 'tooltip'; - ioTooltipPressed :PWideChar = 'tt_pressed'; - - ioType :PWideChar = 'type'; - ioMenuPopup :PWideChar = 'Popup'; - ioMenuName :PWideChar = 'Name'; - ioMenuShow :PWideChar = 'Show'; - ioMenuUsed :PWideChar = 'Used'; - ioMenuSeparated :PWideChar = 'Separated'; - - -function ImportMenuItems(node:HXML;var MenuItem:tUAMenuItem):integer; -begin - result:=0; - - with xmlparser do - begin - with MenuItem do - begin - menu_opt:=0; - // popup - StrDupW(szMenuPopup,getAttrValue(node,ioMenuPopup)); - // name - StrDupW(szMenuNameVars,getAttrValue(node,ioMenuName)); - // show - StrDupW(szMenuShowWhenVars,getAttrValue(node,ioMenuShow)); - // used - if StrToInt(getAttrValue(node,ioMenuUsed))<>0 then - menu_opt:=menu_opt or UAF_MENUUSE; - // separated - if StrToInt(getAttrValue(node,ioMenuSeparated))<>0 then - menu_opt:=menu_opt or UAF_MENUSEP; - end; - end; -end; - -function ImportUAction(actnode:HXML;var UA:tMyActionItem):integer; -var - num,i:integer; - sub:HXML; -begin - result:=0; - if actnode=0 then exit; - - with xmlparser do - begin - // we don't need that node as is, just it's child for UA -// actnode:=GetNthChild(actnode,ioUA,0); - - UA.flags:=0; - // ----- Common ----- - if StrToInt(getAttrValue(actnode,ioTwoState))<>0 then - UA.flags:=UA.flags or UAF_2STATE; - - if StrToInt(getAttrValue(actnode,ioSaveState))<>0 then - UA.flags:=UA.flags or UAF_SAVESTATE; - - // sub:=AddChild(actnode,ioRegister,nil); - if StrToInt(getAttrValue(actnode,ioHotkey))<>0 then - UA.flags:=UA.flags or UAF_REGHOTKEY; - if StrToInt(getAttrValue(actnode,ioToolbar))<>0 then - UA.flags:=UA.flags or UAF_REGTTBB; - if StrToInt(getAttrValue(actnode,ioTabSRMM))<>0 then - UA.flags:=UA.flags or UAF_REGTABB; - - // ----- Hotkey ----- - // nothing - - // ----- Modern CList toolbar ----- - // source - ANSI text - sub:=GetNthChild(actnode,ioToolbar,0); - WideToAnsi(GetAttrValue(sub,ioTooltip ),UA.szTTBTooltip ,MirandaCP); - WideToAnsi(GetAttrValue(sub,ioTooltipPressed),UA.szTTBTooltipPressed,MirandaCP); - - // ----- TabSRMM toolbar ----- - sub:=GetNthChild(actnode,ioTabSRMM,0); - StrDupW(UA.szTabBTooltip ,getAttrValue(sub,ioTooltip)); - StrDupW(UA.szTabBTooltipPressed,getAttrValue(sub,ioTooltipPressed)); - - // ----- Menus ----- - num:=0; - repeat - sub:=getNextChild(actnode,ioMenuItem,@num); - if sub=0 then break; - - i:=StrToInt(getAttrValue(sub,ioType)); - ImportMenuItems(sub, - UA.UAMenuItem[tMenuType(i)]); - until false; - end; -end; - -function Import(fname:PWideChar;aflags:dword):integer; -var - i,j,act:integer; - root,actnode:HXML; - pcw,res:pWideChar; - f:THANDLE; - num,num1:integer; - ptr,ptr1:pChain; -begin - result:=0; - - if (fname=nil) or (fname^=#0) then - exit; - i:=GetFSize(fname); - if i=0 then - exit; - - num:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - if num=0 then exit; - ptr1:=ptr; - - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - root:=parseString(ChangeUnicode(res),@i,nil); - j:=0; - repeat - actnode:=getNthChild(root,ioAction,j); - if actnode=0 then break; - // search id by name? - pcw:=GetAttrValue(actnode,ioName); - ptr:=ptr1; - inc(pbyte(ptr),4); - for i:=0 to num-1 do - begin - if (ptr.flags and ACCF_IMPORTED)<>0 then - begin - if StrCmpw(pcw,ptr.descr)=0 then - begin - // delete old UA for overwrited actions - if (ptr.flags and ACCF_OVERLOAD)<>0 then - begin - for act:=0 to HIGH(UActionList) do - begin - if ptr.id=UActionList[act].dwActID then - begin - DeleteUAction(act); - break; - end; - end; - end; - num1:=AddUAction(-1,ptr); - ImportUAction(getNthChild(actnode,ioUA,0),UActionList[num1]); - break; - end; - end; - inc(ptr); - end; - - inc(j); - until false; - - DestroyNode(root); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - mFreeMem(res); - result:=1; - if settings<>0 then - begin - FillActionList(settings); - ShowAction(settings,-1); - end; -end; - -//-------------------------- - -function ExportMenuItems(node:HXML;MenuItem:tUAMenuItem):HXML; -begin - with xmlparser do - begin - result:=AddChild(node,ioMenuItem,nil); - with MenuItem do - begin - // popup - if (szMenuPopup<>nil) and (szMenuPopup^<>#0) then - AddAttr(result,ioMenuPopup,szMenuPopup); - // name - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - AddAttr(result,ioMenuName,szMenuNameVars); - // show - if (szMenuShowWhenVars<>nil) and (szMenuShowWhenVars^<>#0) then - AddAttr(result,ioMenuShow,szMenuShowWhenVars); - // used - AddAttrInt(result,ioMenuUsed,ord((menu_opt AND UAF_MENUUSE)<>0)); - // separated - AddAttrInt(result,ioMenuSeparated,ord((menu_opt AND UAF_MENUSEP)<>0)); - end; - end; -end; - -procedure WriteUAction(root:HXML;id:dword;name:pWideChar); -var - i:integer; - lmenu:tMenuType; - pc:pWideChar; - actnode,sub:HXML; - UA:pMyActionItem; -begin - with xmlparser do - begin - for i:=0 to HIGH(UActionList) do - begin - if UActionList[i].dwActID=id then - begin - UA:=@UActionList[i]; - actnode:=getChildByAttrValue(root,ioAction,ioName,name); - if actnode=0 then break; - // we don't need that node as is, just it's child for UA - actnode:=addChild(actnode,ioUA,nil); - - // ----- Common ----- - AddAttrInt(actnode,ioTwoState ,ORD((UA.flags and UAF_2STATE )<>0)); - AddAttrInt(actnode,ioSaveState,ORD((UA.flags and UAF_SAVESTATE)<>0)); - - // sub:=AddChild(actnode,ioRegister,nil); - AddAttrInt(actnode,ioHotkey ,ORD((UA.flags and UAF_REGHOTKEY)<>0)); - AddAttrInt(actnode,ioToolbar,ORD((UA.flags and UAF_REGTTBB )<>0)); - AddAttrInt(actnode,ioTabSRMM,ORD((UA.flags and UAF_REGTABB )<>0)); - - // ----- Hotkey ----- - // nothing - - // ----- Modern CList toolbar ----- - // source - ANSI text - if ((UA.szTTBTooltip <>nil) and (UA.szTTBTooltip^ <>#0)) or - ((UA.szTTBTooltipPressed<>nil) and (UA.szTTBTooltipPressed^<>#0)) then - begin - sub:=AddChild(actnode,ioToolbar,nil); - if (UA.szTTBTooltip<>nil) and (UA.szTTBTooltip^<>#0) then - begin - AnsiToWide(UA.szTTBTooltip,pc,MirandaCP); - AddAttr(sub,ioTooltip,pc); - mFreeMem(pc); - end; - if (UA.szTTBTooltipPressed<>nil) and (UA.szTTBTooltipPressed^<>#0) then - begin - AnsiToWide(UA.szTTBTooltipPressed,pc,MirandaCP); - AddAttr(sub,ioTooltipPressed,pc); - mFreeMem(pc); - end; - end; - - // ----- TabSRMM toolbar ----- - if ((UA.szTabBTooltip <>nil) and (UA.szTabBTooltip^ <>#0)) or - ((UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0)) then - begin - sub:=AddChild(actnode,ioTabSRMM,nil); - if (UA.szTabBTooltip<>nil) and (UA.szTabBTooltip^<>#0) then - AddAttr(sub,ioTooltip,UA.szTabBTooltip); - if (UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0) then - AddAttr(sub,ioTooltipPressed,UA.szTabBTooltipPressed); - end; - - // ----- Menus ----- - for lmenu:=main_menu to HIGH(tMenuType) do - begin - sub:=ExportMenuItems(actnode,UA.UAMenuItem[lmenu]); - AddAttrInt(sub,ioType,ORD(lmenu)); - end; - - break; - end; - end; - end; -end; - -function Export(fname:pWideChar;aflags:dword):integer; -var - i,num:integer; - f:THANDLE; - root:HXML; - res:pWideChar; - ptr,ptr1:pChain; -begin - result:=0; - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - // we need append file, not rewrite - i:=GetFSize(fname); - if i=0 then exit; - - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - root:=parseString(res,@i,nil); - mFreeMem(res); - - num:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - if num>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to num-1 do - begin - if ((aflags and ACIO_SELECTED)=0) or - ((ptr.flags and ACCF_EXPORT)<>0) then - begin - WriteUAction(root,ptr.id,ptr.descr); - end; - inc(ptr); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - end; - - res:=toString(root,@i); - - f:=Rewrite(fname); - BlockWrite(f,res^,i*SizeOf(WideChar)); - CloseHandle(f); - xmlparser.FreeMem(res); - DestroyNode(root); - end; - result:=1; -end; - -function ActInOut(wParam:WPARAM;lParam:LPARAM):int_ptr; cdecl; -begin - if (wParam and ACIO_EXPORT)=0 then - begin - result:=Import(pWideChar(lParam),wParam); - end - else - begin - result:=Export(pWideChar(lParam),wParam); - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc deleted file mode 100644 index e9d7dc5048..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc +++ /dev/null @@ -1,571 +0,0 @@ -{} -const - settings:HWND = 0; -const - NumControls = 17; - - IDsArray:array [0..NumControls-1] of integer =( - // Menu settings controls - IDC_UA_SEPARATE ,IDC_UA_POPUPT ,IDC_UA_POPUPV, - IDC_UA_VARNAMEST,IDC_UA_VARNAMESV,IDC_UA_VARNAMESH, - IDC_UA_SHOWVART ,IDC_UA_SHOWVARV ,IDC_UA_SHOWVARH, - IDC_UA_TWOSTATE ,IDC_UA_SAVSTATE ,IDC_UA_COMMON, - // toolbar settings controls - IDC_UA_TTNORMALT,IDC_UA_TTNORMALV,IDC_UA_TTPRESSEDT,IDC_UA_TTPRESSEDV, - IDC_UA_GLOBAL - ); - - // Show-hide controls by place type - SHArray:array [0..NumTypes-1, 0..NumControls-1] of integer = ( - // CList Modern toolbar - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE), - // TabSRMM toolbar - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, - SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW), - // Core Hotkey - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, - SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Main menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Contact menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW), - // Tray menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Protocol menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Status menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE) - ); - // additional show/hide controls check by Variables installings (1 - need to check) - SHVarArray:array [0..NumControls-1] of byte = ( - 0,0,0, 0,0,1, 1,1,1, - 0,0,0,0,0,0,0, 0); - // additional enable/disable controls check (1 - always enable) - EnDisArray:array [0..NumControls-1] of byte = ( - 0,0,0, 0,0,0, 0,0,0, - 1,1,1,0,0,0,0, 1); - -var - hIC:THANDLE; - -procedure CheckPlacesAbility; -var - i:integer; -begin - for i:=0 to NumTypes-1 do - begin - with NamesArray[i] do - begin - enable:=(service=nil) or (ServiceExists(service)<>0); - end; - end; -end; - -function CompareItem(lParam1,lParam2:LPARAM;SortType:LPARAM):int; stdcall; -begin - result:=UActionList[lParam1].wSortIndex-UActionList[lParam2].wSortIndex; -end; - -// Show or hide option items -procedure SetupControls(Dialog:HWND;atype:integer;item:integer=-1); -var - i: cardinal; - typ:integer; - wnd,wnd1:HWND; - enable:boolean; -begin - if atype<0 then - begin - for i:=0 to NumControls-1 do - begin - ShowWindow(GetDlgItem(Dialog,IDsArray[i]),SW_HIDE); - end; - end - else - begin - wnd1:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - if item<0 then - item:=SendMessage(wnd1,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - enable:=ListView_GetCheckState(wnd1,item)<>0; - - for i:=0 to NumControls-1 do - begin - typ:=SHArray[LoByte(atype)+HiByte(atype)][i]; - if typ=SW_SHOW then - if (SHVarArray[i]<>0) and (not IsVarsInstalled) then - typ:=SW_HIDE; - wnd:=GetDlgItem(Dialog,IDsArray[i]); - ShowWindow(wnd,typ); - EnableWindow(wnd,enable or (EnDisArray[i]<>0)); - end; - - // common settings - EnableWindow(GetDlgItem(Dialog,IDC_UA_SAVSTATE), - IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); - - // personal settings - case LoByte(atype) of - uaTTB, uaTAB: begin - enable:=false; - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then - if IsWindowEnabled(GetDlgItem(Dialog,IDC_UA_TTNORMALV)) then - enable:=true; - EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV),enable); - end; - end; - end; -end; - -// Clear all screen buttons/text fields (reset) -procedure ClearControls(Dialog:HWND); -var - s:HWND; -begin - s:=settings; - settings:=0; - CheckDlgButton (Dialog,IDC_UA_TWOSTATE ,BST_UNCHECKED); - CheckDlgButton (Dialog,IDC_UA_SAVSTATE ,BST_UNCHECKED); - - CheckDlgButton (Dialog,IDC_UA_SEPARATE ,BST_UNCHECKED); - SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,nil); - SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,nil); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,nil); - settings:=s; -end; - -procedure ShowSubAction(Dialog:HWND;aType:integer;item:integer=-1); -var - UA:pMyActionItem; - s:HWND; -begin - s:=settings; - settings:=0; - ClearControls(Dialog); - - // get UAction number - item:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - - UA:=@UActionList[item]; - - // common settings - if (UA.flags and UAF_2STATE)<>0 then - CheckDlgButton(Dialog,IDC_UA_TWOSTATE,BST_CHECKED); - - if (UA.flags and UAF_SAVESTATE)<>0 then - CheckDlgButton(Dialog,IDC_UA_SAVSTATE,BST_CHECKED); - - if (UA.flags and UAF_GLOBAL)=0 then - CheckDlgButton(Dialog,IDC_UA_GLOBAL,BST_CHECKED); - - // Show real UA settings - case LoByte(aType) of - uaTTB: begin // CList modern toolbar - SetDlgItemTextA(Dialog,IDC_UA_TTNORMALV ,UA.szTTBTooltip); - SetDlgItemTextA(Dialog,IDC_UA_TTPRESSEDV,UA.szTTBTooltipPressed); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,UA.szTTBShowWhenVars); - end; - - uaTAB: begin // TabSRMM toolbar - SetDlgItemTextW(Dialog,IDC_UA_TTNORMALV ,UA.szTabBTooltip); - SetDlgItemTextW(Dialog,IDC_UA_TTPRESSEDV,UA.szTabBTooltipPressed); - end; - - uaMenu: begin - with UA.UAMenuItem[tMenuType(HiByte(aType))] do - begin - if (menu_opt and UAF_MENUSEP)<>0 then - CheckDlgButton(Dialog,IDC_UA_SEPARATE,BST_CHECKED); - SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,szMenuPopup); - SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,szMenuNameVars); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,szMenuShowWhenVars); - end; - end; - - uaHotkey: begin // Hotkey - // Settings in Customize/Hotkeys - end; - end; - SetupControls(Dialog,aType,-1); - settings:=s; -end; - -function isPlaceActive(idx,place:integer):boolean; -begin - result:=false; - with UActionList[idx] do - case LoByte(place) of - uaTTB : result:=(flags and UAF_REGTTBB)<>0; - uaTAB : result:=(flags and UAF_REGTABB)<>0; - uaHotkey : result:=(flags and UAF_REGHOTKEY)<>0; - uaMenu: begin - result:=(UAMenuItem[tMenuType(HiByte(place))].menu_opt and UAF_MENUUSE)<>0 - end; - end; -end; - -procedure ShowAction(Dialog:HWND;item:integer=-1); -var - i,j:integer; - wnd:HWND; - li:LV_ITEMW; - buf:array [0..255] of WideChar; - lset:HWND; -begin - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - j:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - if j>=0 then - begin - with UActionList[j] do - begin - lset:=settings; - settings:=0; - // make "places" list - for i:=0 to NumTypes-1 do - begin - with NamesArray[i] do - begin - if enable then // cached ability flag - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=atype; //!!!!!! need to add subtype - li.pszText :=TranslateW(FastAnsiToWideBuf(name,buf)); - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - ListView_SetCheckState(wnd,li.iItem,isPlaceActive(j,atype)); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - // show first selected "place" - ShowSubAction(Dialog,LV_GetLParam(wnd)); - settings:=lset; - end; - end - else - begin - ClearControls(Dialog); - SetupControls(Dialog,-1,-1); - end; -end; - -procedure SetChangedFlag(Dialog:HWND); -var - num,atype:integer; -begin - num :=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1); - atype:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST ),-1); - UActionList[num].UAMenuItem[tMenuType(HiByte(atype))].changed:=true; -end; - -procedure SaveMenuSubAction(Dialog:HWND;var MenuItem:tUAMenuItem); -begin - with MenuItem do - begin - mFreeMem(szMenuPopup ); szMenuPopup :=GetDlgText(Dialog,IDC_UA_POPUPV); - mFreeMem(szMenuNameVars ); szMenuNameVars :=GetDlgText(Dialog,IDC_UA_VARNAMESV); - mFreeMem(szMenuShowWhenVars); szMenuShowWhenVars:=GetDlgText(Dialog,IDC_UA_SHOWVARV); - menu_opt:=0; - if IsDlgButtonchecked(Dialog,IDC_UA_SEPARATE)<>BST_UNCHECKED then - menu_opt:=menu_opt or UAF_MENUSEP; - end; -end; - -procedure SetPlaceActive(idx,place:integer;active:boolean); -begin - with UActionList[idx] do - case LoByte(place) of - uaTTB : if active then flags:=flags or UAF_REGTTBB else flags:=flags and not UAF_REGTTBB; - uaTAB : if active then flags:=flags or UAF_REGTABB else flags:=flags and not UAF_REGTABB; - uaHotkey: if active then flags:=flags or UAF_REGHOTKEY else flags:=flags and not UAF_REGHOTKEY; - uaMenu : - with UAMenuItem[tMenuType(HiByte(place))] do - if active then menu_opt:=menu_opt or UAF_MENUUSE - else menu_opt:=menu_opt and not UAF_MENUUSE; - end; -end; - -procedure SaveAction(Dialog:HWND;item:integer=-1;atype:integer=-1); -var - i,num:integer; - wnd:HWND; -begin - num:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - if num<0 then exit; - - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - atype:=LV_GetLParam(wnd,atype); - with UActionList[num] do - begin - // main flags - flags:=flags and not UAF_USING; - // common section - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then - flags:=flags or UAF_2STATE - else - flags:=flags and not UAF_2STATE; - - if IsDlgButtonChecked(Dialog,IDC_UA_SAVSTATE)<>BST_UNCHECKED then - flags:=flags or UAF_SAVESTATE - else - flags:=flags and not UAF_SAVESTATE; - - if IsDlgButtonChecked(Dialog,IDC_UA_GLOBAL)=BST_UNCHECKED then - flags:=flags or UAF_GLOBAL - else - flags:=flags and not UAF_GLOBAL; - - // custom data - case LoByte(atype) of - uaTTB: begin // CList modern toolbar - mFreeMem(szTTBTooltip ); szTTBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV ,true); - mFreeMem(szTTBTooltipPressed); szTTBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV,true); - mFreeMem(szTTBShowWhenVars ); szTTBShowWhenVars :=GetDlgText(Dialog,IDC_UA_SHOWVARV); - end; - - uaTAB: begin // TabSRMM toolbar - mFreeMem(szTabBTooltip ); szTabBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV); - mFreeMem(szTabBTooltipPressed); szTabBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV); - end; - - uaMenu: SaveMenuSubAction(Dialog,UAMenuItem[tMenuType(HiByte(atype))]); - - uaHotkey: begin // Hotkey - // Settings in Customize/Hotkeys - end; - end; - for i:=0 to SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1 do - begin - SetPlaceActive(num,LV_GetLParam(wnd,i),ListView_GetCheckState(wnd,i)<>0); - end; - //just after Action (not place) changes - if item<0 then - SaveUA(num); - end; -end; - -procedure FillActionList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; - il:HIMAGELIST; - lmenu:tMenuType; -begin - wnd:=GetDlgItem(wnd,IDC_UA_ACTIONLIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - for i:=0 to HIGH(UActionList) do - begin - li.mask :=LVIF_TEXT+LVIF_PARAM+LVIF_IMAGE; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=i; - li.pszText :=UActionList[i].szActDescr; - li.iImage:=ImageList_AddIcon(il, - HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,LPARAM(UActionList[i].hIcolibIcon)))); - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - for lmenu:=main_menu to HIGH(tMenuType) do - UActionList[i].UAMenuItem[lmenu].changed:=false; - end; - ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); - - SendMessage(wnd,LVM_SORTITEMS,0,LPARAM(@CompareItem)); - - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -// refresh icons in UA list (at least) -function IconChanged(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - i:integer; - li:LV_ITEMW; - il:HIMAGELIST; - wnd:HWND; -begin - result:=0; - wnd:=GetDlgItem(settings,IDC_UA_ACTIONLIST); - - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - for i:=0 to HIGH(UActionList) do - begin - li.mask :=LVIF_IMAGE; - li.iSubItem:=0; - li.iItem :=i; - li.iImage:=ImageList_AddIcon(il, - HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,TLPARAM(UActionList[i].hIcolibIcon)))); - SendMessageW(wnd,LVM_SETITEM,0,TLPARAM(@li)); - end; - ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); -//!!refresh? -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - i:integer; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - settings:=0; - UnhookEvent(hIC); - end; - - WM_INITDIALOG: begin - settings:=0; - TranslateDialogDefault(Dialog); - - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - wnd:=GetDlgItem(Dialog,IDC_UA_ACTIONLIST); -// SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - FillActionList(Dialog); - ShowAction(Dialog,-1); - -// if isVarsInstalled then - begin - SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); - SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); -// SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BUTTONSETASFLATBTN,0,0); -// SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH ,BUTTONSETASFLATBTN,0,0); - end; - - settings:=Dialog; - hIC:=HookEvent(ME_SKIN2_ICONSCHANGED,@IconChanged); - end; - - WM_COMMAND: begin - case wParam shr 16 of - EN_CHANGE: begin - if settings<>0 then - begin - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - if loword(wParam)=IDC_UA_POPUPV then - SetChangedFlag(Dialog); - end; - end; - - BN_CLICKED: begin - if settings<>0 then - begin - case loword(wParam) of - IDC_UA_TWOSTATE: begin - SetupControls(Dialog, - LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST)),-1); - { - EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV), - IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); - } - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)=BST_UNCHECKED then - DeleteIcolibIconP( - UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]) - else - AddIcolibIconP( - UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]); - - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - IDC_UA_VARNAMESH: ShowVarHelp(Dialog,IDC_UA_VARNAMESV); - IDC_UA_SHOWVARH : ShowVarHelp(Dialog,IDC_UA_SHOWVARV); - - IDC_UA_SAVSTATE, - IDC_UA_GLOBAL: SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - - IDC_UA_SEPARATE: begin - SetChangedFlag(Dialog); - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveAction(Dialog); - SaveUAs; - FillChar(arMenuRec[0],Length(arMenuRec)*SizeOf(tuaMenuRecA),0); - for i:=0 to HIGH(UActionList) do - begin - SetAllActionUsers(UActionList[i],false); - end; - end; - - LVN_ITEMCHANGED: begin - if settings=0 then exit; - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - begin - if wParam=IDC_UA_ACTIONLIST then - SaveAction(Dialog,PNMLISTVIEW(lParam)^.iItem) - else //if wParam=IDC_UA_PLACELIST then - SaveAction(Dialog,-1,PNMLISTVIEW(lParam)^.iItem); - end - else if i<0 then // new focus - begin - if wParam=IDC_UA_ACTIONLIST then - ShowAction(Dialog,PNMLISTVIEW(lParam)^.iItem) - else//if wParam=IDC_UA_PLACELIST then - ShowSubAction(Dialog, - LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST), - PNMLISTVIEW(lParam)^.iItem)); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - begin - // which type - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - if PNMLISTVIEW(lParam)^.iItem<> - SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) then - ListView_SetItemState(wnd,PNMLISTVIEW(lParam)^.iItem, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED) - else - SetupControls(Dialog,LV_GetLParam(wnd,PNMLISTVIEW(lParam)^.iItem), - PNMLISTVIEW(lParam)^.iItem); - - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_options.inc b/plugins/!Deprecated/Actman20/ua/i_options.inc deleted file mode 100644 index 91f54e89d8..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_options.inc +++ /dev/null @@ -1,337 +0,0 @@ -{} -const - opt_TTBTooltip :pAnsiChar = 'MTBTooltip'; - opt_TTBTooltipPressed :pAnsiChar = 'MTBTooltipPressed'; - opt_TTBShowWhenVars :pAnsiChar = 'MTBVarStr'; - - opt_TabBTooltip :pAnsiChar = 'TabBTooltip'; - opt_TabBTooltipPressed:pAnsiChar = 'TabBTooltipPressed'; - - opt_MenuPopup :pAnsiChar = 'MenuPopup'; - opt_MenuNameVars :pAnsiChar = 'MenuName'; - opt_MenuShowWhenVars:pAnsiChar = 'MenuVarStr'; - opt_MenuOptions :pAnsiChar = 'MenuOptions'; - -{} -procedure DeleteUASettings(idx:integer); -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); DBDeleteSetting(0,DBBranch,setting); - - StrCopy(p,opt_TTBTooltip ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TTBTooltipPressed ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TTBShowWhenVars ); DBDeleteSetting(0,DBBranch,setting); - - StrCopy(p,opt_TabBTooltip ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TabBTooltipPressed); DBDeleteSetting(0,DBBranch,setting); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - StrCopy(pm,opt_MenuPopup ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuNameVars ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuShowWhenVars); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuOptions ); DBDeleteSetting(0,DBBranch,setting); - end; - end; - end; -end; - -procedure addSaveUA(setting:pAnsiChar;txt:pWideChar); overload; -begin - if (txt=nil) or (txt^=#0) then DBDeleteSetting(0,DBBranch,setting) - else DBWriteUnicode(0,DBBranch,setting,txt); -end; - -procedure addSaveUA(setting:pAnsiChar;txt:pAnsiChar); overload; -begin - if (txt=nil) or (txt^=#0) then DBDeleteSetting(0,DBBranch,setting) - else DBWriteString(0,DBBranch,setting,txt); -end; - -procedure SaveUA(idx:integer); -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); DBWriteDWord(0,DBBranch,setting, - flags and not (UAF_REALTIME OR UAF_SPECIAL)); - - StrCopy(p,opt_TTBTooltip ); addSaveUA(setting,szTTBTooltip); - StrCopy(p,opt_TTBTooltipPressed); addSaveUA(setting,szTTBTooltipPressed); - StrCopy(p,opt_TTBShowWhenVars ); addSaveUA(setting,szTTBShowWhenVars); - - StrCopy(p,opt_TabBTooltip ); addSaveUA(setting,szTabBTooltip); - StrCopy(p,opt_TabBTooltipPressed); addSaveUA(setting,szTabBTooltipPressed); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - with UAMenuItem[lmenu] do - begin - StrCopy(pm,opt_MenuPopup ); addSaveUA(setting,szMenuPopup); - StrCopy(pm,opt_MenuNameVars ); addSaveUA(setting,szMenuNameVars); - StrCopy(pm,opt_MenuShowWhenVars); addSaveUA(setting,szMenuShowWhenVars); - StrCopy(pm,opt_MenuOptions ); DBWriteWord(0,DBBranch,setting,menu_opt); - end; - end; - end; - end; -end; - -procedure SaveUAs; -var - i:integer; -begin - for i:=0 to HIGH(UActionList) do - SaveUA(i); -end; - -function LoadUA(idx:integer):integer; -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - result:=0; - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); - flags:=DBReadDWord(0,DBBranch,setting,dword(UAF_SPECIAL)); - if flags=dword(UAF_SPECIAL) then // no settings - begin - flags:=0; - exit; - end; - // no need to use previous "pressed" state - if (flags and UAF_SAVESTATE)=0 then - flags:=flags and not UAF_PRESSED; - - flags:=flags and not UAF_REALTIME; - result:=1; - - StrCopy(p,opt_TTBTooltip ); szTTBTooltip :=DBReadString (0,DBBranch,setting); - StrCopy(p,opt_TTBTooltipPressed); szTTBTooltipPressed:=DBReadString (0,DBBranch,setting); - StrCopy(p,opt_TTBShowWhenVars ); szTTBShowWhenVars :=DBReadUnicode(0,DBBranch,setting); - - StrCopy(p,opt_TabBTooltip ); szTabBTooltip :=DBReadUnicode(0,DBBranch,setting); - StrCopy(p,opt_TabBTooltipPressed); szTabBTooltipPressed:=DBReadUnicode(0,DBBranch,setting); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - with UAMenuItem[lmenu] do - begin - StrCopy(pm,opt_MenuPopup ); szMenuPopup :=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuNameVars ); szMenuNameVars :=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuShowWhenVars); szMenuShowWhenVars:=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuOptions ); menu_opt :=DBReadWord (0,DBBranch,setting); - end; - end; - end; - end; -end; -(* -function LoadUAs:integer; -{ -var - section:array [0..63] of AnsiChar; - p:PAnsiChar; - i:integer; -} -begin - result:=0; -{ - MaxTasks:=DBReadByte(0,opt_tasks,opt_count); - result:=MaxTasks; - if MaxTasks>0 then - begin - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - for i:=0 to MaxTasks-1 do - begin - p:=StrEnd(IntToStr(section,i)); - with TaskList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,opt_tasks,section); - StrCopy(p,opt_name ); name :=DBReadUnicode(0,opt_tasks,section); - StrCopy(p,opt_action); action :=DBReadDWord (0,opt_tasks,section); - end; - end; - end; -} -end; -*) -procedure SetAllActionUsers(var ActionItem:tMyActionItem; initial:boolean); -var - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - luse:boolean; - lmenu:tMenuType; -begin - if NamesArray[uaHotkey].enable then - begin - if (ActionItem.flags and UAF_REGHOTKEY)<>0 then - AddCoreHotkey(ActionItem) - else - DeleteCoreHotkey(ActionItem); - end; - if not initial then - begin - if NamesArray[uaTTB].enable then - begin - DeleteTTBButton(ActionItem); // no modify command there, just delete, then insert back - if (ActionItem.flags and UAF_REGTTBB)<>0 then - AddTTBButton(ActionItem); - end; - - if NamesArray[uaTAB].enable then - begin - if (ActionItem.flags and UAF_REGTABB)<>0 then - AddTabBBButton(ActionItem) - else - DeleteTabBBButton(ActionItem); - end; - end; - - luse:=false; - for lmenu:=main_menu to HIGH(tMenuType) do - begin - if NamesArray[uaMenu+ORD(lmenu)].enable then - begin - if (ActionItem.UAMenuItem[lmenu].menu_opt and UAF_MENUUSE)<>0 then - begin - luse:=true; - if ActionItem.UAMenuItem[lmenu].changed then - DeleteMenuItem(ActionItem,lmenu); - CreateMenuItem(ActionItem,lmenu); - end - else - DeleteMenuItem(ActionItem,lmenu); - end; - end; - - if (not luse) and (ActionItem.hMenuService<>0) then - begin - DestroyServiceFunction(ActionItem.hMenuService); - ActionItem.hMenuService:=0; - end; - - // First run (ok ok, if ppl ask for it....) - p:=GetUABranch(setting,ActionItem.dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - StrCopy(p,'_FirstRun'); - if DBReadByte(0,DBBranch,setting,0)<>0 then - begin - CAllService(MS_ACT_RUNBYID,ActionItem.dwActID,0); - DBDeleteSetting(0,DBBranch,setting); - end; - end; - -end; - -procedure DeleteUAction(num:integer); -var - ActionItem:pMyActionItem; - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - luse:boolean; - lmenu:tMenuType; -begin - DeleteUASettings(num); - - ActionItem:=@UActionList[num]; - - DeleteIcolibIcon(ActionItem^); - - if (ActionItem.flags and UAF_REGHOTKEY)<>0 then - DeleteCoreHotkey(ActionItem^); - - if (ActionItem.flags and UAF_REGTTBB)<>0 then - DeleteTTBButton(ActionItem^); - mFreeMem(ActionItem.szTTBTooltip); - mFreeMem(ActionItem.szTTBTooltipPressed); - mFreeMem(ActionItem.szTTBShowWhenVars); - - if (ActionItem.flags and UAF_REGTABB)<>0 then - DeleteTabBBButton(ActionItem^); - mFreeMem(ActionItem.szTabBTooltip); - mFreeMem(ActionItem.szTabBTooltipPressed); - - luse:=false; - for lmenu:=main_menu to HIGH(tMenuType) do - begin - with ActionItem.UAMenuItem[lmenu] do - begin - if (menu_opt and UAF_MENUUSE)<>0 then - begin - luse:=true; - DeleteMenuItem(ActionItem^,lmenu); - end; - mFreeMem(szMenuPopup); - mFreeMem(szMenuNameVars); - mFreeMem(szMenuShowWhenVars); - end; - end; - - if (not luse) and (ActionItem.hMenuService<>0) then - begin - DestroyServiceFunction(ActionItem.hMenuService); - ActionItem.hMenuService:=0; - end; - - p:=GetUABranch(setting,ActionItem.dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - StrCopy(p,'_FirstRun'); - DBDeleteSetting(0,DBBranch,setting); - end; - - // Free Memory - mFreeMem(ActionItem.szNameID); - mFreeMem(ActionItem.szActDescr); - - // compact list - if num0 then - flags:=UAF_DISABLED; - StrDupW(szActDescr,ptr^.descr); - wSortIndex:=idx; - - // prepare for work - IntToStr(StrCopyE(buf,'Actions/Action_'),ptr^.id); - StrDup(szNameID,@buf); - AddIcolibIcon (UActionList[idx]); - end; - - SetLength(arMenuRec,Length(UActionList)+1); - FillChar (arMenuRec[HIGH(arMenuRec)],SizeOf(tuaMenuRecA),0); - result:=idx; -end; - -function CreateUActionList:integer; -var - ptr,ptr1:pChain; - i:integer; -begin - result:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SetLength(UActionList,result); - - SetLength(arMenuRec, result+1); - FillChar (arMenuRec[0],(result+1)*SizeOf(tuaMenuRecA),0); - - if result>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to result-1 do - begin - AddUAction(i,ptr); - LoadUA(i); // just here coz at list changes for new we don't have settings - if (UActionList[i].flags and UAF_2STATE)<>0 then - AddIcolibIconP(UActionList[i]); - SetAllActionUsers(UActionList[i],true); - inc(ptr); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -var - ptr,ptr1:pChain; - idx,i,j,count:integer; - bFound:boolean; -begin - result:=0; - - count:=CallService(MS_ACT_GETLIST,0,TLPARAM(@ptr)); - - if count>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - // maybe add ACTM_RELOAD (as NEW and DELETE) here too? - if (wParam and (ACTM_NEW or ACTM_RENAME or ACTM_SORT or ACTM_DELETE))<>0 then - for i:=0 to count-1 do - begin - // search corresponding element - idx:=-1; - for j:=0 to HIGH(UActionList) do - begin - if UActionList[j].dwActID=ptr^.id then - begin - idx:=j; - break; - end; - end; - // if we have no item in list for this action - then add new one - if idx<0 then - AddUAction(-1,ptr) - else - begin - if (wParam and ACTM_RENAME)<>0 then - begin - // check for time economy - no need to change ALL items - if StrCmpW(UActionList[idx].szActDescr,ptr^.descr)<>0 then - begin - mFreeMem(UActionList[idx].szActDescr); - StrDupW (UActionList[idx].szActDescr,ptr^.descr); - end; - end; - - if (wParam and (ACTM_SORT or ACTM_DELETE or ACTM_NEW))<>0 then - UActionList[idx].wSortIndex:=i; - end; - inc(ptr); - end; - end - else - ptr1:=nil; - - // now search deleted items - if (wParam and ACTM_DELETE)<>0 then - begin - for j:=HIGH(UActionList) downto 0 do - begin - bFound:=false; - if count>0 then - begin - ptr:=ptr1; - inc(pbyte(ptr),4); - for i:=0 to count-1 do - begin - if UActionList[j].dwActID=ptr^.id then - begin - bFound:=true; - break; - end; - inc(ptr); - end; - end; - if not bFound then - DeleteUAction(j); - end; - end; - - if count>0 then - CallService(MS_ACT_FREELIST,0,TLPARAM(ptr1)); - - if settings<>0 then - begin - FillActionList(settings); - ShowAction(settings,-1); - SendMessage(GetParent(settings),PSM_CHANGED,0,0); - end - else - begin - SaveUAs; - FillChar(arMenuRec[0],Length(arMenuRec)*SizeOf(tuaMenuRecA),0); - for i:=0 to HIGH(UActionList) do - begin - SetAllActionUsers(UActionList[i],false); - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc b/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc deleted file mode 100644 index 4b1f46a762..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc +++ /dev/null @@ -1,831 +0,0 @@ -{} - -const - MenuServices:array [tMenuType] of pAnsiChar = ( - 'CList/AddMainMenuItem' {MS_CLIST_ADDMAINMENUITEM }, - 'CList/AddContactMenuItem'{MS_CLIST_ADDCONTACTMENUITEM}, - 'CList/AddTrayMenuItem' {MS_CLIST_ADDTRAYMENUITEM }, - 'CList/AddProtoMenuItem' {MS_CLIST_ADDPROTOMENUITEM }, - 'CList/AddStatusMenuItem' {MS_CLIST_ADDSTATUSMENUITEM } - ); -type - tuaMenuRec = record - hMenuRoot:HMENU; - position :integer; - end; - tuaMenuRecA = array [tMenuType] of tuaMenuRec; - -var - arMenuRec: array of tuaMenuRecA; - -//===== Support ===== - -function ServiceCallWithLParam(wParam:WPARAM; lParam:LPARAM):int_ptr; cdecl; -begin - result:=CallService(MS_ACT_RUNBYID, lParam, wParam); -end; - -procedure SetTTBState(var ActionItem:tMyActionItem); -var - lflag:integer; -begin - if ActionItem.hTTBButton=0 then exit; - if (ActionItem.flags and UAF_2STATE)=0 then exit; - - lflag:=CallService(MS_TTB_GETBUTTONSTATE,ActionItem.hTTBButton,0); - if lflag=TTBST_PUSHED then - begin - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))<>(UAF_2STATE+UAF_PRESSED) then exit; - lflag:=0; - end - else - begin - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))=(UAF_2STATE+UAF_PRESSED) then exit; - if (ActionItem.flags and UAF_PRESSED)=0 then exit; - lflag:=TTBST_PUSHED; - end; - CallService(MS_TTB_SETBUTTONSTATE,ActionItem.hTTBButton,lflag); -end; - -procedure SetTABState(hContact:THANDLE;var ActionItem:tMyActionItem;pressed:integer); -var - tabb:TBBButton; - pc:pWideChar; -begin - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - - if pressed<>0 then - begin - pc:=ActionItem.szTabBTooltipPressed; - if pc=nil then pc:=ActionItem.szTabBTooltip; - tabb.hIcon:=ActionItem.hIcolibIconPressed; - tabb.bbbFlags:=BBSF_PUSHED; - end - else - begin - pc:=ActionItem.szTabBTooltip; - tabb.hIcon:=ActionItem.hIcolibIcon; - tabb.bbbFlags:=BBSF_RELEASED; - end; - if pc=nil then pc:=ActionItem.szActDescr; - tabb.szTooltip.w:=pc; - CallService(MS_BB_SETBUTTONSTATE,hContact,TLPARAM(@tabb)); -end; - -function IsLocalItem(const UAItem:tMyActionItem):boolean; -begin - result:=((UAItem.flags and UAF_GLOBAL)=0) and - (UAItem.UAMenuItem[main_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[tray_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[proto_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[status_menu].hMenuItem=0) and - (UAItem.hTTBButton=0); -end; - -function ServiceCallWithFParam(wParam:WPARAM; lParam:LPARAM; fParam:LPARAM):int_ptr; cdecl; -var - i:integer; - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - cnt:THANDLE; - state:integer; -begin - for i:=0 to HIGH(UActionList) do - begin - with UActionList[i] do - if dwActID=cardinal(fParam) then - if (flags and UAF_2STATE)<>0 then - begin - // sync buttons/menus - if IsLocalItem(UActionList[i]) then - begin - // if (flags and UAF_SAVESTATE)<>0 then - begin - state:=DBReadByte(lastContact,opt_ua,szNameID); - state:=state xor 1; - DBWriteByte(lastContact,opt_ua,szNameID,state); - cnt:=lastContact; - end; - end - else - begin - flags:=flags xor UAF_PRESSED; - // save "pressed" state - if (flags and UAF_SAVESTATE)<>0 then - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_ua); - p^:='/'; inc(p); - StrCopy(p,opt_flags); - DBWriteDWord(0,DBBranch,setting,flags and not UAF_REALTIME); - end; - end; - - if hTTBButton<>0 then - SetTTBState(UActionList[i]); - - cnt:=0; - state:=ORD(flags and UAF_PRESSED); - end; - if (flags and UAF_REGTABB)<>0 then - SetTABState(cnt,UActionList[i],state); - - break; - end; - end; - - result:=CallService(MS_ACT_RUNBYID, fParam, wParam); -end; - -function AddIcolibIconP(var ActionItem:tMyActionItem):THANDLE; -var - sid:TSKINICONDESC; - buf,buf1:array [0..63] of WideChar; -begin - if (ActionItem.hIcolibIconPressed=0) or - (ActionItem.hIcolibIconPressed=ActionItem.hIcolibIcon) then - begin - // add icon for action to icolib - fillChar(sid,SizeOf(sid),0); - sid.cbSize :=sizeof(sid); - sid.szSection .w:=ICOLIB_ACTSECTION; - sid.szDefaultFile.w:=szMyPath; - sid.iDefaultIndex :=-IDI_ACTION; - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_ALL_UNICODE; - // icon "off" - StrCopyW(StrCopyEW(buf,ActionItem.szActDescr),' (pressed)'); - sid.szDescription.w:=@buf; - StrCopy(StrCopyE(@buf1,ActionItem.szNameID),'_pressed'); - sid.pszName :=@buf1; - ActionItem.hIcolibIconPressed:=Skin_AddIcon(@sid); - end; - result:=ActionItem.hIcolibIconPressed; -end; - -function AddIcolibIcon(var ActionItem:tMyActionItem):THANDLE; -var - sid:TSKINICONDESC; -begin - if ActionItem.hIcolibIcon=0 then - begin - // add icon for action to icolib - fillChar(sid,SizeOf(sid),0); - sid.cbSize :=sizeof(sid); - sid.szSection .w:=ICOLIB_ACTSECTION; - sid.szDefaultFile.w:=szMyPath; - sid.iDefaultIndex :=-IDI_ACTION; - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_ALL_UNICODE; - // icon "on" - sid.szDescription.w:=ActionItem.szActDescr; - sid.pszName :=ActionItem.szNameID; - ActionItem.hIcolibIcon:=Skin_AddIcon(@sid); - end; - result:=ActionItem.hIcolibIcon; -end; - -procedure DeleteIcolibIconP(var ActionItem:tMyActionItem); -var - buf1:array [0..63] of WideChar; -begin - if (ActionItem.hIcolibIconPressed<>0) and - (ActionItem.hIcolibIconPressed<>ActionItem.hIcolibIcon) then - begin - StrCopy(StrCopyE(@buf1,ActionItem.szNameID),'_pressed'); - CallService(MS_SKIN2_REMOVEICON,0,LPARAM(@buf1)); - ActionItem.hIcolibIconPressed:=ActionItem.hIcolibIcon; - end; -end; - -procedure DeleteIcolibIcon(var ActionItem:tMyActionItem); -begin - DeleteIcolibIconP(ActionItem); - CallService(MS_SKIN2_REMOVEICON,0,LPARAM(ActionItem.szNameID)); - ActionItem.hIcolibIcon :=0; - ActionItem.hIcolibIconPressed:=0; -end; - -//===== Really places ===== - -//----- Hotkeys ----- - -function AddCoreHotkey(var ActionItem:tMyActionItem):boolean; -var - hkd:THOTKEYDESC; -begin - if (ActionItem.flags and UAF_HKREGGED)=0 then - begin - FillChar(hkd,SizeOf(hkd),0); - hkd.cbSize := SizeOf(hkd); - hkd.dwFlags := HKD_UNICODE; - hkd.pszName := ActionItem.szNameID; - hkd.pszDescription.w:= ActionItem.szActDescr; - hkd.pszSection .w:= MODULE_NAME; - hkd.pszService := SERVICE_WITH_LPARAM_NAME; - hkd.lParam := ActionItem.dwActID; - result:=Hotkey_Register(@hkd)<>0; - if result then - ActionItem.flags:=ActionItem.flags or UAF_HKREGGED; - end - else - result:=true; //!! -end; - -procedure DeleteCoreHotkey(var ActionItem:tMyActionItem); -begin - if // bCoreHotkeyPresents and - // (ServiceExists(MS_HOTKEY_UNREGISTER)<>0) and - ((ActionItem.flags and UAF_HKREGGED)<>0) then - begin - CallService(MS_HOTKEY_UNREGISTER,0,LParam(ActionItem.szNameID)); - ActionItem.flags:=ActionItem.flags and not UAF_HKREGGED; - end; -end; - -//----- Common menu functions ----- - -function AddRootMenuIcon(szPopupName:pWideChar):THANDLE; -var - sid:TSKINICONDESC; -begin - FillChar(sid,SizeOf(sid),0); - //first - register icon for root popup - sid.cbSize := sizeof(sid); - sid.szSection.w := ICOLIB_MNUSECTION; - sid.flags := SIDF_ALL_UNICODE; - sid.cx := 16; - sid.cy := 16; - sid.szDescription.w:= szPopupName; - sid.szDefaultFile.w:= szMyPath; - sid.iDefaultIndex := -IDI_ACTION; - WideToAnsi(szPopupName,sid.pszName); - result:=Skin_AddIcon(@sid); - mFreeMem(sid.pszName); -end; - -procedure DeleteMenuItem(var ActionItem:tMyActionItem;mtype:tMenuType); -var - i:integer; - hMenuRoot:THANDLE; - p:pMyActionItem; -begin - with ActionItem.UAMenuItem[mtype] do - begin - if hMenuItem=0 then exit; - CallService(MO_REMOVEMENUITEM,hMenuItem,0); - hMenuItem:=0; - end; - - hMenuRoot:=ActionItem.UAMenuItem[mtype].hMenuRoot; - if hMenuRoot<>0 then - begin - for i:=0 to HIGH(UActionList) do - begin - p:=@UActionList[i]; - // presents somethere else - if (p<>@ActionItem) and (p.UAMenuItem[mtype].hMenuRoot=hMenuRoot) then - exit; - end; - // menu array cleanup now? - for i:=0 to HIGH(arMenuRec) do - begin - if arMenuRec[i][mtype].hMenuRoot=hMenuRoot then - begin - FillChar(arMenuRec[i][mtype],SizeOf(tuaMenuRec),0); -// arMenuRec[i][mtype].hMenuRoot:=0; - break; - end; - end; - CallService(MO_REMOVEMENUITEM,hMenuRoot,0); - ActionItem.UAMenuItem[mtype].hMenuRoot:=0; - end; -end; - -function GetMenuPosition(hMenu:HMENU;mtype:tMenuType;toset:boolean):integer; -var - i:integer; -begin - result:=0; - for i:=0 to HIGH(arMenuRec) do - begin - if arMenuRec[i][mtype].hMenuRoot=hMenu then - begin - if toset then - inc(arMenuRec[i][mtype].position,100000); - result:=arMenuRec[i][mtype].position; - break; - end; - end; -end; - -function MakeMenuItem(mtype:tMenuType;clmi:PCListMenuItem):THANDLE; -begin - case mtype of - main_menu : result:=Menu_AddMainMenuItem(clmi); - contact_menu: result:=Menu_AddContactMenuItem(clmi); - tray_menu : result:=Menu_AddTrayMenuItem(clmi); - proto_menu : result:=Menu_AddProtoMenuItem(clmi); - status_menu : result:=Menu_AddStatusMenuItem(clmi); - else - result:=0; - end; -end; - -procedure CreateMenuItem(var ActionItem:tMyActionItem;mtype:tMenuType); -var - i:integer; - ActItem:pMyActionItem; - ActMItem,UAMenuItem:pUAMenuItem; - clmi:TCListMenuItem; - res:boolean; - extra:pWideChar; -begin -{} - UAMenuItem:=@ActionItem.UAMenuItem[mtype]; - if UAMenuItem.hMenuItem<>0 then exit; - - // create popup menu -{}{} - res:=true; - if (UAMenuItem.szMenuPopup<>nil) and (UAMenuItem.szMenuPopup^<>#0) then - begin - res:=false; - for i:=0 to HIGH(UActionList) do - begin - // try to find root popup with same name (if we already created one) - ActItem :=@UActionList[i]; - ActMItem:=@ActItem.UAMenuItem[mtype]; - - if (ActMItem.szMenuPopup<>nil) and - (ActMItem.hMenuRoot<>0) and - ( (ActItem<>@ActionItem) and - (StrCmpW(ActMItem.szMenuPopup,UAMenuItem.szMenuPopup)=0) ) then - begin - UAMenuItem.hMenuRoot:=ActMItem.hMenuRoot; - res:=true; - break; - end; - end; - end; - // popup menu not found - if not res then - begin - FillChar(clmi,SizeOf(clmi),0); - clmi.cbSize:=SizeOf(clmi); - clmi.flags :=CMIF_UNICODE; - - if (UAMenuItem.szMenuPopup<>nil) and (UAMenuItem.szMenuPopup^<>#0) then - clmi.szName.w:=ParseVarString(UAMenuItem.szMenuPopup) - else - clmi.szName.w:=ActionItem.szActDescr; - - clmi.hIcon :=AddRootMenuIcon(clmi.szName.w); - clmi.position:=ActionItem.wSortIndex*10; - - // position in Root Menu - inc(clmi.position,GetMenuPosition(0,mtype, - (UAMenuItem.menu_opt and UAF_MENUSEP)<>0)); - - UAMenuItem.hMenuRoot:=MakeMenuItem(mtype,@clmi); - //CallService(MenuServices[mtype],0,LPARAM(@clmi)); - if clmi.szName.w<>ActionItem.szActDescr then - mFreeMem(clmi.szName.w); - - for i:=1 to HIGH(arMenuRec) do - begin - with arMenuRec[i][mtype] do - if hMenuRoot=0 then - begin -// MenuName :=ActionItem.szActDescr; - hMenuRoot:=UAMenuItem.hMenuRoot; - break; - end; - end; - - end; -{}{} - - // Now Menu Item preparing -{}{} - FillChar(clmi,SizeOf(clmi),0); - clmi.cbSize:=SizeOf(clmi); - clmi.flags:=CMIF_UNICODE; - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))<>(UAF_2STATE+UAF_PRESSED) then - begin - clmi.hIcon:=ActionItem.hIcolibIcon; - extra:='0'; - end - else - begin - clmi.hIcon:=ActionItem.hIcolibIconPressed; - clmi.flags:=CMIF_UNICODE or CMIF_CHECKED; - extra:='1'; - end; - - with ActionItem.UAMenuItem[mtype] do - begin - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - clmi.szName.w:=ParseVarString(szMenuNameVars,0,extra) - else - clmi.szName.w:=ActionItem.szActDescr; - - if hMenuRoot<>0 then - begin - clmi.flags:=clmi.flags or CMIF_ROOTHANDLE; - clmi.szPopupName.w:=pWideChar(hMenuRoot); - end; - end; - - clmi.pszService:=ActionItem.szNameID; - if ActionItem.hMenuService=0 then - ActionItem.hMenuService:=CreateServiceFunctionParam( - clmi.pszService,@ServiceCallWithFParam,ActionItem.dwActID); - - clmi.position:=ActionItem.wSortIndex*10; -{}{} - inc(clmi.position,GetMenuPosition(UAMenuItem.hMenuRoot,mtype, - (UAMenuItem.menu_opt and UAF_MENUSEP)<>0)); - - UAMenuItem.hMenuItem:=MakeMenuItem(mtype,@clmi); - //CallService(MenuServices[mtype],0,LPARAM(@clmi)); - if clmi.szName.w<>ActionItem.szActDescr then - mFreeMem(clmi.szName.w); -{} - -end; - -function PreBuildMenu(mtype:tMenuType;hContact:THANDLE=0):int; -var - i:integer; - mi:TCListMenuItem; - p,extra:pWideChar; -begin - result:=0; - - FillChar(mi,SizeOf(mi),0); - mi.cbSize:=SizeOf(mi); - - for i:=0 to HIGH(UActionList) do - begin - mi.flags:=CMIM_FLAGS; - p:=nil; - with UActionList[i] do - begin - with UAMenuItem[mtype] do - begin - if hMenuItem<>0 then // it means, we process that item here - begin - mi.szName.w:=nil; - // Show / hide - if isVarsInstalled then - begin - if (szMenuShowWhenVars<>nil) and (szMenuShowWhenVars^<>#0) then - begin - p:=ParseVarString(szMenuShowWhenVars,hContact); - if p<>nil then - begin - if StrCmpW(p,'1')<>0 then - mi.flags:=CMIM_FLAGS or CMIF_HIDDEN; - mFreeMem(p); - end; - end; - end; - - // change if need to show only - // (popup can be used by many items, keep unchanged) - if (mi.flags and CMIF_HIDDEN)=0 then - begin - //!!!! icon (check for contact menu) - mi.flags:=mi.flags or CMIM_ICON or CMIM_FLAGS; - - if (mtype=contact_menu) and IsLocalItem(UActionList[i]) then - begin - lastContact:=hContact; - if ((flags and UAF_2STATE)<>0) and - (DBReadByte(hContact,opt_ua,szNameID)<>0) then - begin - mi.flags:=mi.flags or CMIF_CHECKED; - mi.hIcon:=hIcolibIconPressed; - extra:='1'; - flags:=flags or UAF_PRESSED; - end - else - begin - mi.hIcon:=hIcolibIcon; - flags:=flags and not UAF_PRESSED; - extra:='0'; - end; - - end - else - begin - if (flags and (UAF_2STATE+UAF_PRESSED))=(UAF_2STATE+UAF_PRESSED) then - begin - mi.flags:=mi.flags or CMIF_CHECKED; - mi.hIcon:=hIcolibIconPressed; - extra:='1'; - end - else - begin - mi.hIcon:=hIcolibIcon; - extra:='0'; - end; - end; - - // new name - mi.flags:=mi.flags or CMIM_NAME or CMIF_UNICODE; - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - mi.szName.w:=ParseVarString(szMenuNameVars,hContact,extra); - - if mi.szName.w=nil then - mi.szName.w:=szActDescr; - end; - - CallService(MS_CLIST_MODIFYMENUITEM,hMenuItem,LPARAM(@mi)); - if mi.szName.w<>szActDescr then - mFreeMem(mi.szName.w); - end; - end; - end; - - end; -end; - -function PreBuildMainMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(main_menu,wParam); -end; - -function PreBuildContactMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(contact_menu,wParam); -end; - -function PreBuildTrayMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(tray_menu,wParam); -end; - -//----- TopToolbar ----- - -procedure AddTTBButton(var ActionItem:tMyActionItem); -var - mtButton:TTBButton; - pc,pc1,pc2:pAnsiChar; - res:boolean; - p:pWideChar; -begin - if not NamesArray[uaTTB].enable then exit; - - if ActionItem.hTTBButton=0 then - begin - // Add or not - if isVarsInstalled then - begin - if (ActionItem.szTTBShowWhenVars<>nil) and (ActionItem.szTTBShowWhenVars^<>#0) then - begin - p:=ParseVarString(ActionItem.szTTBShowWhenVars); - if p<>nil then - begin - res:=StrCmpW(p,'1')<>0; - mFreeMem(p); - end - else - res:=true; - if res then - exit; - end; - end; - - FillChar(mtButton,SizeOf(mtButton),0); - mtButton.cbSize :=SizeOf(mtButton); - - mtButton.pszService:=TTB_SERVICE_NAME;//SERVICE_WITH_LPARAM_NAME; - mtButton.lParamUp :=ActionItem.dwActID; - mtButton.lParamDown:=ActionItem.dwActID; - - mtButton.hIconUp:=ActionItem.hIcolibIcon; - mtButton.hIconDn:=ActionItem.hIcolibIconPressed; - - WideToAnsi(ActionItem.szActDescr,pc); - - if (ActionItem.flags and UAF_2STATE)<>0 then - mtButton.dwFlags:=TTBBF_VISIBLE or TTBBF_SHOWTOOLTIP{ or TTBBF_ASPUSHBUTTON} - else - mtButton.dwFlags:=TTBBF_VISIBLE or TTBBF_SHOWTOOLTIP; - - if ActionItem.szTTBTooltip =nil then - pc1:=pc - else pc1:=ActionItem.szTTBTooltip; - - if ((ActionItem.flags and UAF_2STATE)=0) or - (ActionItem.szTTBTooltipPressed=nil) then - pc2:=pc1 - else - pc2:=ActionItem.szTTBTooltipPressed; - - mtButton.Name :=pc; - mtButton.pszTooltipUp :=pc1; - mtButton.pszTooltipDn :=pc2; - - ActionItem.hTTBButton:=TopToolbar_AddButton(@mtButton); - if ActionItem.hTTBButton=THANDLE(-1) then - ActionItem.hTTBButton:=0; - mFreeMem(pc); - end; -end; - -procedure DeleteTTBButton(var ActionItem:tMyActionItem); -begin - if ActionItem.hTTBButton<>0 then - begin - CallService(MS_TTB_REMOVEBUTTON,ActionItem.hTTBButton,0); - ActionItem.hTTBButton:=0; - end; -end; - -function TTBServiceCall(wParam:WPARAM; lParam:LPARAM):int_ptr; cdecl; -var - i,lflag:integer; -begin - result:=0; - for i:=0 to HIGH(UActionList) do - begin - if TLPARAM(UActionList[i].dwActID)=lParam then - begin - with UActionList[i] do - begin - if (flags and UAF_2STATE)<>0 then - begin - if CallService(MS_TTB_GETBUTTONSTATE,hTTBButton,0)=TTBST_PUSHED then - begin - lflag:=0; - end - else - begin - lflag:=TTBST_PUSHED; - end; - CallService(MS_TTB_SETBUTTONSTATE,hTTBButton,lflag); - end; - end; - - result:=ServiceCallWithFParam(0,0,lParam); - break; - end; - end; -end; - -function OnTTBLoaded(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - i:integer; -begin - result:=0; - for i:=HIGH(UActionList) downto 0 do - begin - if (UActionList[i].flags and UAF_REGTTBB)<>0 then - AddTTBButton(UActionList[i]); - end; -end; - -//----- TabSRMM Toolbar ----- - -const - TABTOOLBAR_INITPOS = 350; - -procedure AddTabBBButton(var ActionItem:tMyActionItem); -var - tabb:TBBButton; -begin - if not NamesArray[uaTAB].enable then exit; - - if (ActionItem.flags and UAF_TBREGGED)=0 then - begin - FillChar(tabb,SizeOf(tabb),0); - // register Tab ButtonBar button - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - tabb.dwDefPos :=(TABTOOLBAR_INITPOS+ActionItem.wSortIndex*10) and $7FFF; - tabb.iButtonWidth :=0; - tabb.hIcon :=ActionItem.hIcolibIcon; - if (ActionItem.flags and UAF_2STATE)<>0 then - tabb.bbbFlags:=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON or BBBF_ISPUSHBUTTON - else - tabb.bbbFlags:=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON; - - if ActionItem.szTabBTooltip<>nil then - tabb.szTooltip.w:=ActionItem.szTabBTooltip - else - tabb.szTooltip.w:=ActionItem.szActDescr; - - if CallService(MS_BB_ADDBUTTON,0,LPARAM(@tabb))=0 then - ActionItem.flags:=ActionItem.flags or UAF_TBREGGED; - end; -end; - -procedure DeleteTabBBButton(var ActionItem:tMyActionItem); -var - tabb:TBBButton; -begin - if (ActionItem.flags and UAF_TBREGGED)<>0 then - begin - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - CallService(MS_BB_REMOVEBUTTON,0,LPARAM(@tabb)); - ActionItem.flags:=ActionItem.flags and not UAF_TBREGGED; - end; -end; - -function OnTabButtonPressed(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - cbcd:pCustomButtonClickData; -// tabb:TBBButton; -// pc:pWideChar; - i:integer; -begin - result:=0; - cbcd:=pointer(lParam); - if StrCmp(cbcd.pszModule,MODULE_NAME)<>0 then - exit; - - for i:=0 to HIGH(UActionList) do - begin - with UActionList[i] do - begin - if cbcd.dwButtonId=dwActID then - begin -{ - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=cbcd.dwButtonId; - tabb.pszModuleName:=MODULE_NAME; - if (flags and UAF_2STATE)<>0 then - begin - CallService(MS_BB_GETBUTTONSTATE,cbcd.hContact,TLPARAM(@tabb)); - if IsLocalItem(UActionList[i]) then - begin - if DBReadByte(hContact,opt_ua,szNameID)<>0 then - end - else - begin - if (tabb.bbbFlags and BBSF_PUSHED)<>0 then - begin - pc:=szTabBTooltipPressed; - if pc=nil then pc:=szTabBTooltip; - tabb.hIcon:=hIcolibIconPressed; - end - else - begin - pc:=szTabBTooltip; - tabb.hIcon:=hIcolibIcon; - end; - if pc=nil then pc:=szActDescr; - tabb.szTooltip.w:=pc; - tabb.bbbFlags :=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON or BBBF_ISPUSHBUTTON; - end - else - begin - tabb.hIcon:=hIcolibIcon; - tabb.szTooltip.w:=szTabBTooltip; - if tabb.szTooltip.w=nil then tabb.szTooltip.w:=szActDescr; - tabb.bbbFlags :=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON; - end; - - tabb.iButtonWidth:=0; - tabb.dwDefPos :=(TABTOOLBAR_INITPOS+wSortIndex*10) and $7FFF; - CallService(MS_BB_MODIFYBUTTON,0,TLPARAM(@tabb)); -} - ServiceCallWithFParam(cbcd.hContact,0,cbcd.dwButtonId); - result:=1; - break; - end; - end; - end; - -end; - -function OnTabBBLoaded(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - i:integer; -begin - result:=0; - for i:=HIGH(UActionList) downto 0 do - begin - if (UActionList[i].flags and UAF_REGTABB)<>0 then - AddTabBBButton(UActionList[i]); - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_uavars.inc b/plugins/!Deprecated/Actman20/ua/i_uavars.inc deleted file mode 100644 index bab2ac12a1..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uavars.inc +++ /dev/null @@ -1,124 +0,0 @@ -{} -const - MODULE_NAME = 'Actions'; -const - opt_groups:PAnsiChar = 'Group'; - opt_ua :PAnsiChar = 'UA'; - opt_id :PAnsiChar = 'id'; - opt_flags :PAnsiChar = 'Flags'; - -const - ICOLIB_ACTSECTION = MODULE_NAME+'/Registered actions'; - ICOLIB_MNUSECTION = MODULE_NAME+'/Menu icons'; - - SERVICE_WITH_LPARAM_NAME = MODULE_NAME+'/CallAction'; - TTB_SERVICE_NAME = MODULE_NAME+'/TTBAction'; - -type - tMenuType = (main_menu,contact_menu,tray_menu,proto_menu,status_menu); - pUAMenuItem = ^tUAMenuItem; - tUAMenuItem = record - hMenuItem :THANDLE; - szMenuPopup :pWideChar; - szMenuNameVars :pWideChar; - szMenuShowWhenVars:pWideChar; - hMenuRoot :THANDLE; - menu_opt :dword; - changed :boolean; - end; -type - pMyActionItem = ^tMyActionItem; - tMyActionItem = record - flags :dword; - dwActID :dword; // action ID - wSortIndex :word; // list/menu/toolbar order - // UseActions/Action_ID - szNameID :pAnsiChar; // uaction ID - szActDescr :pWideChar; // action name - - hIcolibIcon, - hIcolibIconPressed :THANDLE; - - hTTBButton :THANDLE; // TopToolbar button - szTTBTooltip :PAnsiChar; - szTTBTooltipPressed :PAnsiChar; - szTTBShowWhenVars :pWideChar; - - szTabBTooltip :PWideChar; // TabSRMM toolbar button - szTabBTooltipPressed:PWideChar; - - lastContact :THANDLE; // for contact menu - hMenuService :THANDLE; // common menu service - UAMenuItem :array [tMenuType] of tUAMenuItem; - end; - -const - UAF_NONE = 0; - - UAF_REGHOTKEY = 1 shl 0; // hotkey - UAF_REGTTBB = 1 shl 1; // modern toolbar - - UAF_REGTABB = 1 shl 5; // TabSRMM toolbar - UAF_USING = UAF_REGHOTKEY or UAF_REGTTBB or UAF_REGTABB; - - UAF_2STATE = 1 shl 11; // Buttons/menu items are 2-state - UAF_PRESSED = 1 shl 12; // Button pressed/menu item selected - UAF_SAVESTATE = 1 shl 13; // Save or not "pressed" state - UAF_GLOBAL = 1 shl 14; // not contact related even if in contact menu only - - // realtime, no save - UAF_HKREGGED = 1 shl 16; // hotkey registered - UAF_TBREGGED = 1 shl 17; // TabSRMM button registered - UAF_DISABLED = 1 shl 30; // action disabled atm - UAF_REALTIME = UAF_HKREGGED or UAF_TBREGGED or UAF_DISABLED; - - UAF_SPECIAL = 1 shl 31; // for settings read - - // menu options - UAF_MENUSEP = 1 shl 1; // menu item separated - UAF_MENUUSE = 1 shl 8; // use this menu - -type - tNameRec = record - name :PAnsiChar; - service:PAnsiChar; - mask :dword; - atype :word; - enable :boolean; - end; - -const - NumTypes = 8; -const - uaTTB = 0; - uaTAB = 1; - uaHotkey = 2; - uaMenu = 3; - -const - NamesArray: array [0..NumTypes-1] of tNameRec = ( - (name:'TopToolbar'; service:'TopToolBar/AddButton'; - mask:UAF_REGTTBB ; atype:uaTTB; enable:false), - (name:'TabSRMM toolbar' ; service:'TabSRMM/ButtonsBar/AddButton'; - mask:UAF_REGTABB ; atype:uaTAB; enable:false), - (name:'Core Hotkey' ; service:nil{MS_HOTKEY_REGISTER}; - mask:UAF_REGHOTKEY; atype:uaHotkey; enable:false), - (name:'Main menu' ; service:nil; - mask:0; atype:uaMenu+(ORD(main_menu ) shl 8); enable:false), - (name:'Contact menu' ; service:nil; - mask:0; atype:uaMenu+(ORD(contact_menu) shl 8); enable:false), - (name:'Tray menu' ; service:'CList/AddTrayMenuItem'; - mask:0; atype:uaMenu+(ORD(tray_menu ) shl 8); enable:false), - (name:'Protocol menus' ; service:'CList/AddProtoMenuItem'; - mask:0; atype:uaMenu+(ORD(proto_menu ) shl 8); enable:false), - (name:'Status menu' ; service:'CList/AddStatusMenuItem'; - mask:0; atype:uaMenu+(ORD(status_menu ) shl 8); enable:false) - ); - -var - UActionList:array of tMyActionItem; -var - szMyPath:array [0..MAX_PATH] of WideChar; -var - hServiceWithLParam:THANDLE; - hTTBService:THANDLE; diff --git a/plugins/!Deprecated/Actman20/ua/i_uconst.inc b/plugins/!Deprecated/Actman20/ua/i_uconst.inc deleted file mode 100644 index 34dde3ee9e..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uconst.inc +++ /dev/null @@ -1,34 +0,0 @@ -{resource constants} -const - IDD_UA = 1031; - - IDC_UA_ACTIONLIST = 1025; - IDC_UA_PLACELIST = 1026; - - // menu settings - IDC_UA_SEPARATE = 1027; - IDC_UA_POPUPT = 1028; - IDC_UA_POPUPV = 1029; - - IDC_UA_VARNAMEST = 1030; - IDC_UA_VARNAMESV = 1031; - IDC_UA_VARNAMESH = 1032; - - IDC_UA_SHOWVART = 1033; - IDC_UA_SHOWVARV = 1034; - IDC_UA_SHOWVARH = 1035; - - // toolbar settings - IDC_UA_TTNORMALT = 2028; - IDC_UA_TTNORMALV = 2029; - IDC_UA_TTPRESSEDT = 2030; - IDC_UA_TTPRESSEDV = 2031; - - // common - IDC_UA_COMMON = 2000; - IDC_UA_TWOSTATE = 2001; - IDC_UA_SAVSTATE = 2002; - - IDC_UA_GLOBAL = 2003; - - IDI_ACTION = 101; diff --git a/plugins/!Deprecated/Actman20/ua/ua.pas b/plugins/!Deprecated/Actman20/ua/ua.pas deleted file mode 100644 index 62b9604286..0000000000 --- a/plugins/!Deprecated/Actman20/ua/ua.pas +++ /dev/null @@ -1,124 +0,0 @@ -unit ua; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global; - -{$R ua.res} - -{$include m_actman.inc} - -{$include i_uconst.inc} -{$include i_uavars.inc} - -// in - Action ID, out - action (group) number -function GetUABranch(setting:pAnsiChar;id:cardinal):pAnsiChar; -var - i:integer; - p,p1:pAnsiChar; -begin - result:=nil; - p1:=StrCopyE(setting,opt_groups); - for i:=0 to CallService(MS_ACT_GETLIST,0,0)-1 do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); - StrCopy(p,opt_id); - if DBReadDWord(0,DBBranch,setting)=id then - begin - p^:=#0; - result:=p; - break; - end; - end; -end; - -var - amLink:tActionLink; - -{$include i_uaplaces.inc} -{$include i_options.inc} -{$include i_opt_dlg.inc} -{$include i_ua.inc} -{$include i_inoutxm.inc} - -// ------------ base interface functions ------------- - -var - iohook:THANDLE; - hontabloaded, - honttbloaded, - ontabbtnpressed, - onactchanged:THANDLE; - hPreBuildMMenu, - hPreBuildCMenu, - hPreBuildTMenu:THANDLE; - -procedure Init; -begin - GetModuleFileNameW(hInstance,szMyPath,MAX_PATH); - - hServiceWithLParam:=CreateServiceFunction(SERVICE_WITH_LPARAM_NAME,@ServiceCallWithLParam); - hTTBService :=CreateServiceFunction(TTB_SERVICE_NAME ,@TTBServiceCall); - CheckPlacesAbility; - - CreateUActionList; - - honttbloaded :=HookEvent(ME_TTB_MODULELOADED ,@OnTTBLoaded); - hontabloaded :=HookEvent(ME_MSG_TOOLBARLOADED,@OnTabBBLoaded); - ontabbtnpressed:=HookEvent(ME_MSG_BUTTONPRESSED,@OnTabButtonPressed); - onactchanged :=HookEvent(ME_ACT_CHANGED ,@ActListChange); - - hPreBuildMMenu:=HookEvent(ME_CLIST_PREBUILDMAINMENU , PreBuildMainMenu); - hPreBuildCMenu:=HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PreBuildContactMenu); - hPreBuildTMenu:=HookEvent(ME_CLIST_PREBUILDTRAYMENU , PreBuildTrayMenu); - - iohook:=HookEvent(ME_ACT_INOUT,@ActInOut); -end; - -procedure DeInit; -begin - SetLength(arMenuRec,0); - - UnhookEvent(hPreBuildMMenu); - UnhookEvent(hPreBuildCMenu); - UnhookEvent(hPreBuildTMenu); - - UnhookEvent(honttbloaded); - UnhookEvent(hontabloaded); - UnhookEvent(ontabbtnpressed); - UnhookEvent(onactchanged); - UnhookEvent(iohook); - DestroyServiceFunction(hServiceWithLParam); - DestroyServiceFunction(hTTBService); -end; - -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -begin - result:=0; - tmpl:=PAnsiChar(IDD_UA); - proc:=@DlgProcOpt; - name:='Use Actions'; -end; - -procedure InitLink; -begin - amLink.Next :=ActionLink; - amLink.Init :=@Init; - amLink.DeInit :=@DeInit; - amLink.AddOption:=@AddOptionPage; - ActionLink :=@amLink; -end; - -initialization - InitLink; -end. diff --git a/plugins/!Deprecated/Actman20/ua/ua.rc b/plugins/!Deprecated/Actman20/ua/ua.rc deleted file mode 100644 index 76d8c0ad77..0000000000 --- a/plugins/!Deprecated/Actman20/ua/ua.rc +++ /dev/null @@ -1,51 +0,0 @@ -#include "i_uconst.inc" - -LANGUAGE 0,0 - -IDD_UA DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CTEXT "Action list",-1, 2,2,132,10, SS_CENTERIMAGE - CONTROL "", IDC_UA_ACTIONLIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SINGLESEL, - 2, 12, 132, 212, WS_EX_CONTROLPARENT - - CTEXT "Where to use",-1, 138,2,160,10, SS_CENTERIMAGE - CONTROL "", IDC_UA_PLACELIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SINGLESEL, - 138, 12, 160, 74, WS_EX_CONTROLPARENT - - GROUPBOX "Common" , IDC_UA_COMMON , 138, 88,160,38 - AUTOCHECKBOX "2 state button/item" , IDC_UA_TWOSTATE, 140, 96,156,14, BS_LEFTTEXT | BS_RIGHT - AUTOCHECKBOX "Save button/item state", IDC_UA_SAVSTATE, 140,110,156,14, BS_LEFTTEXT | BS_RIGHT - - AUTOCHECKBOX "Contact related", IDC_UA_GLOBAL, 138,128,160,14, BS_LEFTTEXT | BS_RIGHT - - // Buttons settings block - RTEXT "Normal button tooltip",IDC_UA_TTNORMALT, 138,148,160,8 - EDITTEXT IDC_UA_TTNORMALV, 138,158,160,12, ES_AUTOHSCROLL - - RTEXT "Pressed button tooltip",IDC_UA_TTPRESSEDT, 138,172,160,8 - EDITTEXT IDC_UA_TTPRESSEDV, 138,182,160,12, ES_AUTOHSCROLL - - // Menu settings block - AUTOCHECKBOX "Separated",IDC_UA_SEPARATE, 138,142,160,14, BS_LEFTTEXT | BS_RIGHT - - RTEXT "Root popup:",IDC_UA_POPUPT,138,158,80,12, SS_CENTERIMAGE - EDITTEXT IDC_UA_POPUPV, 218,158,80,12, ES_AUTOHSCROLL - - RTEXT "Menu item name:",IDC_UA_VARNAMEST, 138,172,140,8 - EDITTEXT IDC_UA_VARNAMESV, 138,182,140,12, ES_AUTOHSCROLL - CONTROL "V",IDC_UA_VARNAMESH,"MButtonClass",WS_TABSTOP, 282,180,16,16, $18000000 - - RTEXT "Show only if variables return 1",IDC_UA_SHOWVART, 138,200,140,8 - EDITTEXT IDC_UA_SHOWVARV,138,210,140,12,ES_AUTOHSCROLL - CONTROL "V",IDC_UA_SHOWVARH,"MButtonClass",WS_TABSTOP, 282,208,16,16, $18000000 - -} - -IDI_ACTION ICON "action.ico" diff --git a/plugins/!Deprecated/Actman20/ua/ua.res b/plugins/!Deprecated/Actman20/ua/ua.res deleted file mode 100644 index c8f5fd5ea1..0000000000 Binary files a/plugins/!Deprecated/Actman20/ua/ua.res and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj b/plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj deleted file mode 100644 index a5df001f7f..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/clist_mw_10.vcxproj.filters b/plugins/!Deprecated/Clist_mw/clist_mw_10.vcxproj.filters deleted file mode 100644 index c117a63633..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/clist_mw_12.vcxproj b/plugins/!Deprecated/Clist_mw/clist_mw_12.vcxproj deleted file mode 100644 index 45ddd741c8..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/clist_mw_12.vcxproj.filters b/plugins/!Deprecated/Clist_mw/clist_mw_12.vcxproj.filters deleted file mode 100644 index c117a63633..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/res/1.ico b/plugins/!Deprecated/Clist_mw/res/1.ico deleted file mode 100644 index df6c8fc04e..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/1.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/2.ico b/plugins/!Deprecated/Clist_mw/res/2.ico deleted file mode 100644 index ce05d2b327..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/2.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/3.ico b/plugins/!Deprecated/Clist_mw/res/3.ico deleted file mode 100644 index 4bdb2b9e8a..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/3.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/4.ico b/plugins/!Deprecated/Clist_mw/res/4.ico deleted file mode 100644 index 712f0b3905..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/4.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/5.ico b/plugins/!Deprecated/Clist_mw/res/5.ico deleted file mode 100644 index 4ab50eafd3..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/5.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/6.ico b/plugins/!Deprecated/Clist_mw/res/6.ico deleted file mode 100644 index 35629e8cd2..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/6.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/7.ico b/plugins/!Deprecated/Clist_mw/res/7.ico deleted file mode 100644 index cdb11c58bd..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/7.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/8.ico b/plugins/!Deprecated/Clist_mw/res/8.ico deleted file mode 100644 index 4489d84723..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/8.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/Miranda.ico b/plugins/!Deprecated/Clist_mw/res/Miranda.ico deleted file mode 100644 index db8dc77c09..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/Miranda.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/Version.rc b/plugins/!Deprecated/Clist_mw/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/res/addgoupp.ico b/plugins/!Deprecated/Clist_mw/res/addgoupp.ico deleted file mode 100644 index 539c32fcd9..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/addgoupp.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/delete.ico b/plugins/!Deprecated/Clist_mw/res/delete.ico deleted file mode 100644 index 3770daf2fc..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/delete.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/globus.ico b/plugins/!Deprecated/Clist_mw/res/globus.ico deleted file mode 100644 index dbf58aeb04..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/globus.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/icon1.ico b/plugins/!Deprecated/Clist_mw/res/icon1.ico deleted file mode 100644 index cad0e2a5cc..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/icon1.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/icon2.ico b/plugins/!Deprecated/Clist_mw/res/icon2.ico deleted file mode 100644 index 8ee933d416..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/icon2.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/mirandaclassic.ico b/plugins/!Deprecated/Clist_mw/res/mirandaclassic.ico deleted file mode 100644 index 0c8d999e70..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/mirandaclassic.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/notick.ico b/plugins/!Deprecated/Clist_mw/res/notick.ico deleted file mode 100644 index 2a78c302df..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/notick.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/notick1.ico b/plugins/!Deprecated/Clist_mw/res/notick1.ico deleted file mode 100644 index 0ba1d546f3..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/notick1.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/rename.ico b/plugins/!Deprecated/Clist_mw/res/rename.ico deleted file mode 100644 index 90848f1179..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/rename.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/resource.rc b/plugins/!Deprecated/Clist_mw/res/resource.rc deleted file mode 100644 index f3337f2f52..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/res/sendmail.ico b/plugins/!Deprecated/Clist_mw/res/sendmail.ico deleted file mode 100644 index 461ecc9557..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/sendmail.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/res/sms.ico b/plugins/!Deprecated/Clist_mw/res/sms.ico deleted file mode 100644 index 6d6ff2162b..0000000000 Binary files a/plugins/!Deprecated/Clist_mw/res/sms.ico and /dev/null differ diff --git a/plugins/!Deprecated/Clist_mw/src/BkgrCfg.cpp b/plugins/!Deprecated/Clist_mw/src/BkgrCfg.cpp deleted file mode 100644 index 8895bacbaa..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/BkgrCfg.h b/plugins/!Deprecated/Clist_mw/src/BkgrCfg.h deleted file mode 100644 index a47b53a603..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.cpp b/plugins/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.cpp deleted file mode 100644 index 0e7e64072c..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.cpp +++ /dev/null @@ -1,2860 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.h b/plugins/!Deprecated/Clist_mw/src/CLUIFrames/cluiframes.h deleted file mode 100644 index b38975ea8f..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/CLUIFrames/framesmenu.cpp b/plugins/!Deprecated/Clist_mw/src/CLUIFrames/framesmenu.cpp deleted file mode 100644 index d414bdc2f2..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/CLUIFrames/statusbar.cpp b/plugins/!Deprecated/Clist_mw/src/CLUIFrames/statusbar.cpp deleted file mode 100644 index 9df66c7368..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/Version.h b/plugins/!Deprecated/Clist_mw/src/Version.h deleted file mode 100644 index 961c80eef1..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/clc.cpp b/plugins/!Deprecated/Clist_mw/src/clc.cpp deleted file mode 100644 index c4f99eadfa..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clc.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clc.h b/plugins/!Deprecated/Clist_mw/src/clc.h deleted file mode 100644 index 8941573ee1..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clc.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcfonts.cpp b/plugins/!Deprecated/Clist_mw/src/clcfonts.cpp deleted file mode 100644 index d842b87759..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcfonts.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcidents.cpp b/plugins/!Deprecated/Clist_mw/src/clcidents.cpp deleted file mode 100644 index f2eaa16230..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcidents.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcitems.cpp b/plugins/!Deprecated/Clist_mw/src/clcitems.cpp deleted file mode 100644 index 602287900d..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcitems.cpp +++ /dev/null @@ -1,685 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcopts.cpp b/plugins/!Deprecated/Clist_mw/src/clcopts.cpp deleted file mode 100644 index 4876db99f9..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcopts.cpp +++ /dev/null @@ -1,548 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcpaint.cpp b/plugins/!Deprecated/Clist_mw/src/clcpaint.cpp deleted file mode 100644 index 11174cabdc..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcpaint.cpp +++ /dev/null @@ -1,662 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clcutils.cpp b/plugins/!Deprecated/Clist_mw/src/clcutils.cpp deleted file mode 100644 index c6f68a9f21..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clcutils.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clist.h b/plugins/!Deprecated/Clist_mw/src/clist.h deleted file mode 100644 index 84c8c687a1..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clist.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clistmenus.cpp b/plugins/!Deprecated/Clist_mw/src/clistmenus.cpp deleted file mode 100644 index 5db474041b..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clistmenus.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clistmod.cpp b/plugins/!Deprecated/Clist_mw/src/clistmod.cpp deleted file mode 100644 index 2f0ac61687..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clistmod.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clistopts.cpp b/plugins/!Deprecated/Clist_mw/src/clistopts.cpp deleted file mode 100644 index 94760d3450..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clistopts.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clistsettings.cpp b/plugins/!Deprecated/Clist_mw/src/clistsettings.cpp deleted file mode 100644 index 5c901eff67..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clistsettings.cpp +++ /dev/null @@ -1,340 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clisttray.cpp b/plugins/!Deprecated/Clist_mw/src/clisttray.cpp deleted file mode 100644 index 4b099be7c8..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clisttray.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/clui.cpp b/plugins/!Deprecated/Clist_mw/src/clui.cpp deleted file mode 100644 index 4e56ad17f2..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/clui.cpp +++ /dev/null @@ -1,765 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/cluiopts.cpp b/plugins/!Deprecated/Clist_mw/src/cluiopts.cpp deleted file mode 100644 index 72a8b62d7f..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/cluiopts.cpp +++ /dev/null @@ -1,373 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/cluiservices.cpp b/plugins/!Deprecated/Clist_mw/src/cluiservices.cpp deleted file mode 100644 index f6ace1ad65..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/cluiservices.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/commonheaders.cpp b/plugins/!Deprecated/Clist_mw/src/commonheaders.cpp deleted file mode 100644 index c76992e096..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/commonheaders.h b/plugins/!Deprecated/Clist_mw/src/commonheaders.h deleted file mode 100644 index ccbed35c8f..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/commonheaders.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/contact.cpp b/plugins/!Deprecated/Clist_mw/src/contact.cpp deleted file mode 100644 index ac83cee22f..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/contact.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/groupmenu.cpp b/plugins/!Deprecated/Clist_mw/src/groupmenu.cpp deleted file mode 100644 index cac5210a14..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/groupmenu.cpp +++ /dev/null @@ -1,566 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/init.cpp b/plugins/!Deprecated/Clist_mw/src/init.cpp deleted file mode 100644 index f15869c580..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/init.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/keyboard.cpp b/plugins/!Deprecated/Clist_mw/src/keyboard.cpp deleted file mode 100644 index d31aaae5d4..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/keyboard.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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/!Deprecated/Clist_mw/src/resource.h b/plugins/!Deprecated/Clist_mw/src/resource.h deleted file mode 100644 index a726d14957..0000000000 --- a/plugins/!Deprecated/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/!Deprecated/Clist_mw/src/stdafx.cpp b/plugins/!Deprecated/Clist_mw/src/stdafx.cpp deleted file mode 100644 index 048b14e9d2..0000000000 --- a/plugins/!Deprecated/Clist_mw/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 diff --git a/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj b/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj deleted file mode 100644 index f6e97438f8..0000000000 --- a/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj +++ /dev/null @@ -1,246 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree - {2D0BB338-FF3A-4FB5-A7A5-32B63967678C} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - false - true - Use - Interface.h - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin10\lib - - - - - Full - AnySuitable - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Fast - Level3 - true - true - true - Use - Interface.h - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - true - true - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - true - Use - Interface.h - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin10\lib - - - - - Full - AnySuitable - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Fast - Level3 - true - Use - Interface.h - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - true - true - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj.filters b/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj.filters deleted file mode 100644 index 729fc15db2..0000000000 --- a/plugins/!Deprecated/Dbx_tree/dbx_tree_10.vcxproj.filters +++ /dev/null @@ -1,189 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {9e004988-9f2b-4ba4-8f56-d0fadd675d27} - - - {456c2bea-e723-4178-815d-93f04e79c678} - - - {015b2001-dc24-47da-97f4-1b85117384cb} - - - {e1687ef4-a061-4986-8fba-5b5a66d40623} - - - {f612e60c-0040-4985-9d76-8a61c2f3df3c} - - - {3a265a80-f78a-44c0-87ca-759560867d83} - - - {b93e9ed7-b0c7-4a03-91e3-ccaaf6cacc9c} - - - {063a42d4-5023-435c-9040-f87607c13d58} - - - {de45f9d3-861f-4d67-908c-3a77d4fec7a0} - - - {b44370e5-0bf1-4d18-bbd7-7690a7bcad4b} - - - - - Resource - - - Resource - - - - - Resource - - - Resource - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\FileAccess\Encryption - - - Database\FileAccess\Encryption\SHA256 - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Interface\HeaderFiles - - - Interface\HeaderFiles - - - Interface\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - - - Database - - - Database - - - Database - - - Database - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess\Encryption - - - Database\FileAccess\Encryption\SHA256 - - - Interface - - - Interface - - - Interface - - - Interface - - - Utils - - - Utils - - - Utils - - - Utils - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj b/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj deleted file mode 100644 index 63ed1eb7c7..0000000000 --- a/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree - {2D0BB338-FF3A-4FB5-A7A5-32B63967678C} - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - false - true - Use - Interface.h - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin12\lib - false - - - - - Full - AnySuitable - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Fast - Level3 - true - true - true - Use - Interface.h - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - true - true - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin12\lib - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - true - Use - Interface.h - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin12\lib - - - - - Full - AnySuitable - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Fast - Level3 - true - Use - Interface.h - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - true - true - true - false - $(IntDir)$(TargetName).lib - Windows - 0x5130000 - $(ProfileDir)..\..\bin12\lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj.filters b/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj.filters deleted file mode 100644 index 1af88b98b8..0000000000 --- a/plugins/!Deprecated/Dbx_tree/dbx_tree_12.vcxproj.filters +++ /dev/null @@ -1,192 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {9e004988-9f2b-4ba4-8f56-d0fadd675d27} - - - {456c2bea-e723-4178-815d-93f04e79c678} - - - {015b2001-dc24-47da-97f4-1b85117384cb} - - - {e1687ef4-a061-4986-8fba-5b5a66d40623} - - - {f612e60c-0040-4985-9d76-8a61c2f3df3c} - - - {3a265a80-f78a-44c0-87ca-759560867d83} - - - {b93e9ed7-b0c7-4a03-91e3-ccaaf6cacc9c} - - - {063a42d4-5023-435c-9040-f87607c13d58} - - - {de45f9d3-861f-4d67-908c-3a77d4fec7a0} - - - {b44370e5-0bf1-4d18-bbd7-7690a7bcad4b} - - - - - Resource - - - Resource - - - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\HeaderFiles - - - Database\FileAccess\Encryption - - - Database\FileAccess\Encryption\SHA256 - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Database\FileAccess\HeaderFiles - - - Interface\HeaderFiles - - - Interface\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Utils\HeaderFiles - - - Interface\HeaderFiles - - - Interface\HeaderFiles - - - Interface\HeaderFiles - - - - - Database - - - Database - - - Database - - - Database - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess - - - Database\FileAccess\Encryption - - - Database\FileAccess\Encryption\SHA256 - - - Interface - - - Interface - - - Interface - - - Interface - - - Utils - - - Utils - - - Utils - - - Utils - - - Interface - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/docs/Filestructure.txt b/plugins/!Deprecated/Dbx_tree/docs/Filestructure.txt deleted file mode 100644 index 6128b5f993..0000000000 Binary files a/plugins/!Deprecated/Dbx_tree/docs/Filestructure.txt and /dev/null differ diff --git a/plugins/!Deprecated/Dbx_tree/res/Version.rc b/plugins/!Deprecated/Dbx_tree/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/Dbx_tree/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/!Deprecated/Dbx_tree/res/dbConfig.rc b/plugins/!Deprecated/Dbx_tree/res/dbConfig.rc deleted file mode 100644 index 0e5745acc9..0000000000 --- a/plugins/!Deprecated/Dbx_tree/res/dbConfig.rc +++ /dev/null @@ -1,113 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\dbConfig_rc.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DIALOGBAR DIALOGEX 0, 0, 429, 290 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_APPWINDOW -CAPTION "dbxTree Profile Wizard" -FONT 8, "MS Shell Dlg", 400, 0, 0x0 -BEGIN - PUSHBUTTON "Cancel",IDC_BUTTON1,316,267,54,16 - PUSHBUTTON "Next >",IDC_BUTTON2,254,267,54,16 - PUSHBUTTON "< Prev",IDC_BUTTON3,192,267,54,16 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,6,258,416,1 - LISTBOX IDC_LIST1,6,6,116,252,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_DIALOGBAR, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 422 - TOPMARGIN, 6 - BOTTOMMARGIN, 284 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// German (Germany) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\dbConfig_rc.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // German (Germany) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/Dbx_tree/res/dbVersion.rc b/plugins/!Deprecated/Dbx_tree/res/dbVersion.rc deleted file mode 100644 index 5717940ed4..0000000000 --- a/plugins/!Deprecated/Dbx_tree/res/dbVersion.rc +++ /dev/null @@ -1,105 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\dbVersion_rc.h" -#define INTERFACE_VERSION_ONLY -#include "..\src\Interface.h" -#undef INTERFACE_VERSION_ONLY - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// German (Germany) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\dbVersion_rc.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION gResVersion - PRODUCTVERSION gResVersion - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x3L -#else - FILEFLAGS 0x2L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", gAutor - VALUE "FileDescription", gDescription - VALUE "FileVersion", gResVersionString - VALUE "InternalName", gInternalName - VALUE "LegalCopyright", gCopyright - VALUE "OriginalFilename", "dbx_tree.dll" - VALUE "ProductName", gInternalNameLong - VALUE "ProductVersion", gResVersionString - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END - -#endif // German (Germany) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/Dbx_tree/src/BTree.h b/plugins/!Deprecated/Dbx_tree/src/BTree.h deleted file mode 100644 index f1d44ccd27..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/BTree.h +++ /dev/null @@ -1,1343 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "lockfree_hashmultimap.h" -#include "sigslot.h" -#include - -#include "Logger.h" - -template -class CBTree -{ -public: - typedef uint32_t TNodeRef; /// 32bit indices (not storing pointers) - typedef sigslot::signal2< void *, TNodeRef > TOnRootChanged; - - #pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - - typedef struct TNode { - uint16_t Info; /// Node information (IsLeaf and stored KeyCount) - uint16_t Signature; /// signature - TNodeRef Parent; /// Handle to the parent node - TKey Key[SizeParam * 2 - 1]; /// array with Keys - TNodeRef Child[SizeParam * 2]; /// array with child node handles - } TNode; - - #pragma pack(pop) - - class iterator - { - public: - iterator(); - iterator(CBTree* Tree, TNodeRef Node, uint16_t Index); - iterator(const iterator& Other); - ~iterator(); - - CBTree * Tree(); - - /** - \brief Keeps track of changes in the tree and refresh the iterator - **/ - void setManaged(); - bool wasDeleted(); - - operator bool() const; - bool operator !() const; - - const TKey & operator *(); - const TKey * operator->(); - - - bool operator == (iterator & Other); - bool operator < (iterator & Other); - bool operator > (iterator & Other); - - iterator& operator =(const iterator& Other); - - iterator& operator ++(); //pre ++i - iterator& operator --(); //pre --i - iterator operator ++(int); //post i++ - iterator operator --(int); //post i-- - - - protected: - friend class CBTree; - - TNodeRef m_Node; - uint16_t m_Index; - CBTree* m_Tree; - - bool m_Managed; - bool m_LoadedKey; - TKey m_ManagedKey; - bool m_ManagedDeleted; - - void Backup(); - void Dec(); - void Inc(); - void RemoveManaged(TNodeRef FromNode); - void InsertManaged(); - }; - - - CBTree(TNodeRef RootNode = 0); - virtual ~CBTree(); - - iterator Insert(const TKey & Key); - iterator Find(const TKey & Key); - iterator LowerBound(const TKey & Key); - iterator UpperBound(const TKey & Key); - bool Delete(const TKey & Key); - - typedef sigslot::signal3 TDeleteCallback; - void DeleteTree(TDeleteCallback * CallBack, uint32_t Param); - - TNodeRef getRoot(); - void setRoot(TNodeRef NewRoot); - - TOnRootChanged & sigRootChanged() {return m_sigRootChanged;}; - - -protected: - static const uint16_t cIsLeafMask = 0x8000; - static const uint16_t cKeyCountMask = 0x7FFF; - static const uint16_t cFullNode = SizeParam * 2 - 1; - static const uint16_t cEmptyNode = SizeParam - 1; - - typedef lockfree::hash_multimap TManagedMap; - - TNodeRef m_Root; - TOnRootChanged m_sigRootChanged; - TManagedMap m_ManagedIterators; - - bool m_DestroyTree; - - uint32_t m_AllocCount; - uint32_t m_Count; - uint32_t m_FreeIndex; - TNode * m_Alloc; - - virtual void PrepareInsertOperation(); - virtual TNode * CreateNewNode(TNodeRef & NodeRef); - virtual void DeleteNode(TNodeRef Node); - virtual TNode * Read(TNodeRef Node); - virtual void Write(TNodeRef Node); - - void DestroyTree(); - - -private: - friend class iterator; - - bool InNodeFind(const TNode * Node, const TKey & Key, uint16_t & GreaterEqual); - void SplitNode(TNodeRef Node, TNode * NodeData, TNodeRef & Left, TNodeRef & Right, TKey & UpKey, TNodeRef ParentNode, uint16_t ParentIndex); - TNodeRef MergeNodes(TNodeRef Left, TNode * LeftData, TNodeRef Right, TNode * RightData, const TKey & DownKey, TNodeRef ParentNode, uint16_t ParentIndex); - void KeyInsert(TNodeRef Node, TNode * NodeData, uint16_t Where); - void KeyDelete(TNodeRef Node, TNode * NodeData, uint16_t Where); - void KeyMove(TNodeRef Source, uint16_t SourceIndex, const TNode * SourceData, TNodeRef Dest, uint16_t DestIndex, TNode * DestData); -}; - - - - - - -template -CBTree::CBTree(TNodeRef RootNode = NULL) -: m_sigRootChanged(), - m_ManagedIterators() -{ - m_Root = RootNode; - m_DestroyTree = true; - - m_AllocCount = 0; - m_Count = 0; - m_FreeIndex = 0; - m_Alloc = NULL; -} - -template -CBTree::~CBTree() -{ - typename TManagedMap::iterator i = m_ManagedIterators.begin(); - while (i != m_ManagedIterators.end()) - { - i->second->m_Tree = NULL; - ++i; - } - - if (m_DestroyTree) - DestroyTree(); -} - -template -inline bool CBTree::InNodeFind(const TNode * Node, const TKey & Key, uint16_t & GreaterEqual) -{ - uint16_t l = 0; - uint16_t r = (Node->Info & cKeyCountMask); - bool res = false; - GreaterEqual = 0; - while ((l < r) && !res) - { - GreaterEqual = (l + r) >> 1; - if (Node->Key[GreaterEqual] < Key) - { - GreaterEqual++; - l = GreaterEqual; - } else if (Node->Key[GreaterEqual] == Key) - { - //r = -1; - res = true; - } else { - r = GreaterEqual; - } - } - - return res; -} - - -template -inline void CBTree::SplitNode(TNodeRef Node, TNode * NodeData, TNodeRef & Left, TNodeRef & Right, TKey & UpKey, TNodeRef ParentNode, uint16_t ParentIndex) -{ - const uint16_t upindex = SizeParam - 1; - TNode *ldata, *rdata; - Left = Node; - ldata = NodeData; - rdata = CreateNewNode(Right); - - typename TManagedMap::iterator it = m_ManagedIterators.find(Node); - while ((it != m_ManagedIterators.end()) && (it->first == Node)) - { - if (it->second->m_Index == upindex) - { - it->second->m_Index = ParentIndex; - it->second->m_Node = ParentNode; - m_ManagedIterators.insert(std::make_pair(ParentNode, it->second)); - it = m_ManagedIterators.erase(it); - } else if (it->second->m_Index > upindex) - { - it->second->m_Index = it->second->m_Index - upindex - 1; - it->second->m_Node = Right; - m_ManagedIterators.insert(std::make_pair(Right, it->second)); - it = m_ManagedIterators.erase(it); - } else { - ++it; - } - } - - UpKey = NodeData->Key[upindex]; - - memcpy(&(rdata->Key[0]), &(NodeData->Key[upindex+1]), sizeof(TKey) * (cFullNode - upindex)); - if ((NodeData->Info & cIsLeafMask) == 0) - { - memcpy(&(rdata->Child[0]), &(NodeData->Child[upindex+1]), sizeof(TNodeRef) * (cFullNode - upindex + 1)); - - for (int i = 0; i <= upindex; i++) - { - TNode * tmp = Read(rdata->Child[i]); - tmp->Parent = Right; - Write(rdata->Child[i]); - } - } - - rdata->Info = (NodeData->Info & cIsLeafMask) | upindex; - NodeData->Info = rdata->Info; - rdata->Parent = NodeData->Parent; - - Write(Left); - Write(Right); -} - -template -inline typename CBTree::TNodeRef CBTree::MergeNodes(TNodeRef Left, TNode * LeftData, TNodeRef Right, TNode * RightData, const TKey & DownKey, TNodeRef ParentNode, uint16_t ParentIndex) -{ - uint16_t downindex = LeftData->Info & cKeyCountMask; - LeftData->Key[downindex] = DownKey; - - typename TManagedMap::iterator it = m_ManagedIterators.find(Right); - while ((it != m_ManagedIterators.end()) && (it->first == Right)) - { - it->second->m_Index = it->second->m_Index + downindex + 1; - it->second->m_Node = Left; - m_ManagedIterators.insert(std::make_pair(Left, it->second)); - it = m_ManagedIterators.erase(it); - } - - it = m_ManagedIterators.find(ParentNode); - while ((it != m_ManagedIterators.end()) && (it->first == ParentNode)) - { - if (it->second->m_Index == ParentIndex) - { - it->second->m_Index = downindex; - it->second->m_Node = Left; - m_ManagedIterators.insert(std::make_pair(Left, it->second)); - it = m_ManagedIterators.erase(it); - } else { - ++it; - } - } - - memcpy(&(LeftData->Key[downindex+1]), &(RightData->Key[0]), sizeof(TKey) * (RightData->Info & cKeyCountMask)); - if ((LeftData->Info & cIsLeafMask) == 0) - { - memcpy(&(LeftData->Child[downindex+1]), &(RightData->Child[0]), sizeof(TNodeRef) * ((RightData->Info & cKeyCountMask) + 1)); - - for (int i = 0; i <= (RightData->Info & cKeyCountMask); i++) - { - TNode * tmp = Read(RightData->Child[i]); - tmp->Parent = Left; - Write(RightData->Child[i]); - } - } - - LeftData->Info = ((LeftData->Info & cIsLeafMask) | (downindex + 1 + (RightData->Info & cKeyCountMask))); - - Write(Left); - DeleteNode(Right); - - return Left; -} - - -template -inline void CBTree::KeyInsert(TNodeRef Node, TNode * NodeData, uint16_t Where) -{ - memcpy(&(NodeData->Key[Where+1]), &(NodeData->Key[Where]), sizeof(TKey) * ((NodeData->Info & cKeyCountMask) - Where)); - - if ((NodeData->Info & cIsLeafMask) == 0) - memcpy(&(NodeData->Child[Where+1]), &(NodeData->Child[Where]), sizeof(TNodeRef) * ((NodeData->Info & cKeyCountMask) - Where + 1)); - - NodeData->Info++; - - typename TManagedMap::iterator it = m_ManagedIterators.find(Node); - while ((it != m_ManagedIterators.end()) && (it->first == Node)) - { - if (it->second->m_Index >= Where) - it->second->m_Index++; - - ++it; - } -} - -template -inline void CBTree::KeyDelete(TNodeRef Node, TNode * NodeData, uint16_t Where) -{ - NodeData->Info--; - - typename TManagedMap::iterator it = m_ManagedIterators.find(Node); - while ((it != m_ManagedIterators.end()) && (it->first == Node)) - { - if (it->second->m_Index == Where) - { - it->second->Backup(); - } else if (it->second->m_Index > Where) - { - it->second->m_Index--; - } - - ++it; - } - - memcpy(&(NodeData->Key[Where]), &(NodeData->Key[Where+1]), sizeof(TKey) * ((NodeData->Info & cKeyCountMask) - Where)); - - if ((NodeData->Info & cIsLeafMask) == 0) - memcpy(&(NodeData->Child[Where]), &(NodeData->Child[Where+1]), sizeof(TNodeRef) * ((NodeData->Info & cKeyCountMask) - Where + 1)); -} - - -template -inline void CBTree::KeyMove(TNodeRef Source, uint16_t SourceIndex, const TNode * SourceData, TNodeRef Dest, uint16_t DestIndex, TNode * DestData) -{ - DestData->Key[DestIndex] = SourceData->Key[SourceIndex]; - - typename TManagedMap::iterator it = m_ManagedIterators.find(Source); - while ((it != m_ManagedIterators.end()) && (it->first == Source)) - { - if (it->second->m_Index == SourceIndex) - { - it->second->m_Index = DestIndex; - it->second->m_Node = Dest; - m_ManagedIterators.insert(std::make_pair(Dest, it->second)); - it = m_ManagedIterators.erase(it); - } else { - ++it; - } - } -} - -template -typename CBTree::iterator -CBTree::Insert(const TKey & Key) -{ - TNode *node, *node2; - TNodeRef actnode; - TNodeRef nextnode; - bool exists; - uint16_t ge; - - PrepareInsertOperation(); - - if (!m_Root) - { - node = CreateNewNode(m_Root); - node->Info = cIsLeafMask; - Write(m_Root); - m_sigRootChanged.emit(this, m_Root); - } - - actnode = m_Root; - node = Read(actnode); - if ((node->Info & cKeyCountMask) == cFullNode) // root split - { - // be a little tricky and let the main code handle the actual splitting. - // just assign a new root with keycount to zero and one child = old root - // the InNode test will fail with GreaterEqual = 0 - node2 = CreateNewNode(nextnode); - node2->Info = 0; - node2->Child[0] = actnode; - Write(nextnode); - - node->Parent = nextnode; - Write(actnode); - - node = node2; - actnode = nextnode; - - m_Root = nextnode; - m_sigRootChanged.emit(this, m_Root); - } - - while (actnode) - { - exists = InNodeFind(node, Key, ge); - if (exists) // already exists - { - return iterator(this, actnode, ge); - } else { - if (node->Info & cIsLeafMask) // direct insert to leaf node - { - KeyInsert(actnode, node, ge); - - node->Key[ge] = Key; - - Write(actnode); - - return iterator(this, actnode, ge); - - } else { // middle node - nextnode = node->Child[ge]; - node2 = Read(nextnode); - - if ((node2->Info & cKeyCountMask) == cFullNode) // split the childnode - { - KeyInsert(actnode, node, ge); - SplitNode(nextnode, node2, node->Child[ge], node->Child[ge+1], node->Key[ge], actnode, ge); - - Write(actnode); - if (node->Key[ge] == Key) - { - return iterator(this, actnode, ge); - } else { - if (node->Key[ge] < Key) - { - nextnode = node->Child[ge+1]; - } else { - nextnode = node->Child[ge]; - } - } - - } - actnode = nextnode; - node = Read(actnode); - - } // if (node.Info & cIsLeafMask) - } // if (exists) - } // while (actnode) - - // something went wrong - return iterator(this, 0, 0xFFFF); -} - - -template -typename CBTree::iterator -CBTree::Find(const TKey & Key) -{ - TNode * node; - TNodeRef actnode = m_Root; - uint16_t ge; - - if (!m_Root) return iterator(this, 0, 0xFFFF); - - node = Read(actnode); - - while (actnode) - { - if (InNodeFind(node, Key, ge)) - { - return iterator(this, actnode, ge); - } - - if (!(node->Info & cIsLeafMask)) - { - actnode = node->Child[ge]; - node = Read(actnode); - } else { - actnode = 0; - } - } - - return iterator(this, 0, 0xFFFF); -} - -template -typename CBTree::iterator -CBTree::LowerBound(const TKey & Key) -{ - TNode * node; - TNodeRef actnode = m_Root; - uint16_t ge; - - if (!m_Root) return iterator(this, 0, 0xFFFF); - - node = Read(actnode); - - while (actnode) - { - if (InNodeFind(node, Key, ge)) - { - return iterator(this, actnode, ge); - } - - if (node->Info & cIsLeafMask) - { - if (ge >= (node->Info & cKeyCountMask)) - { - iterator i(this, actnode, ge - 1); - ++i; - return i; - } else { - return iterator(this, actnode, ge); - } - } else { - actnode = node->Child[ge]; - node = Read(actnode); - } - } - - return iterator(this, 0, 0xFFFF); -} - -template -typename CBTree::iterator -CBTree::UpperBound(const TKey & Key) -{ - TNode * node; - TNodeRef actnode = m_Root; - uint16_t ge; - if (!m_Root) return iterator(this, 0, 0xFFFF); - - node = Read(actnode); - - while (actnode) - { - if (InNodeFind(node, Key, ge)) - { - return iterator(this, actnode, ge); - } - - if (node->Info & cIsLeafMask) - { - if (ge == 0) - { - iterator i(this, actnode, 0); - --i; - return i; - } else { - return iterator(this, actnode, ge - 1); - } - } else { - actnode = node->Child[ge]; - node = Read(actnode); - } - } - - return iterator(this, 0, 0xFFFF); -} - -template -bool CBTree::Delete(const TKey& Key) -{ - if (!m_Root) return false; - - TNode *node, *node2, *lnode, *rnode; - - TNodeRef actnode = m_Root; - TNodeRef nextnode, l, r; - bool exists, skipread; - uint16_t ge; - - bool foundininnernode = false; - bool wantleftmost = false; - TNodeRef innernode = 0; - TNode * innernodedata = NULL; - uint16_t innerindex = 0xFFFF; - - node = Read(actnode); - - while (actnode) - { - skipread = false; - - if (foundininnernode) - { - exists = false; - if (wantleftmost) - ge = 0; - else - ge = node->Info & cKeyCountMask; - - } else { - exists = InNodeFind(node, Key, ge); - } - - if (exists) - { - if (node->Info & cIsLeafMask) // delete in leaf - { - KeyDelete(actnode, node, ge); - Write(actnode); - - return true; - - } else { // delete in inner node - l = node->Child[ge]; - r = node->Child[ge+1]; - lnode = Read(l); - rnode = Read(r); - - - if (((rnode->Info & cKeyCountMask) == cEmptyNode) && ((lnode->Info & cKeyCountMask) == cEmptyNode)) - { // merge childnodes and keep going - nextnode = MergeNodes(l, lnode, r, rnode, node->Key[ge], actnode, ge); - - KeyDelete(actnode, node, ge); - node->Child[ge] = nextnode; - - if ((actnode == m_Root) && ((node->Info & cKeyCountMask) == 0)) - { // root node is empty. delete it - DeleteNode(actnode); - m_Root = nextnode; - m_sigRootChanged.emit(this, m_Root); - } else { - Write(actnode); - } - - } else { // need a key-data-pair from a leaf to replace deleted pair -> save position - foundininnernode = true; - innernode = actnode; - innerindex = ge; - innernodedata = node; - - if ((lnode->Info & cKeyCountMask) == cEmptyNode) - { - wantleftmost = true; - nextnode = r; - } else { - wantleftmost = false; - nextnode = l; - } - } - } - - } else if (node->Info & cIsLeafMask) { // we are at the bottom. finish it - if (foundininnernode) - { - if (wantleftmost) - { - KeyMove(actnode, 0, node, innernode, innerindex, innernodedata); - Write(innernode); - - KeyDelete(actnode, node, 0); - Write(actnode); - - } else { - KeyMove(actnode, (node->Info & cKeyCountMask) - 1, node, innernode, innerindex, innernodedata); - Write(innernode); - - //KeyDelete(actnode, node, node.Info & cKeyCountMask); - node->Info--; - Write(actnode); - } - } - return foundininnernode; - - } else { // inner node. go on and check if moving or merging is neccessary - nextnode = node->Child[ge]; - node2 = Read(nextnode); - - if ((node2->Info & cKeyCountMask) == cEmptyNode) // move or merge - { - // set l and r for easier access - if (ge > 0) - { - l = node->Child[ge - 1]; - lnode = Read(l); - } else - l = 0; - - if (ge < (node->Info & cKeyCountMask)) - { - r = node->Child[ge + 1]; - rnode = Read(r); - } else - r = 0; - - if ((r != 0) && ((rnode->Info & cKeyCountMask) > cEmptyNode)) // move a Key-Data-pair from the right - { - // move key-data-pair down from current to the next node - KeyMove(actnode, ge, node, nextnode, node2->Info & cKeyCountMask, node2); - - // move the child from right to next node - node2->Child[(node2->Info & cKeyCountMask) + 1] = rnode->Child[0]; - - // move key-data-pair up from right to current node - KeyMove(r, 0, rnode, actnode, ge, node); - Write(actnode); - - // decrement right node key count and remove the first key-data-pair - KeyDelete(r, rnode, 0); - - // increment KeyCount of the next node - node2->Info++; - - if ((node2->Info & cIsLeafMask) == 0) // update the parent property of moved child - { - TNode * tmp = Read(node2->Child[node2->Info & cKeyCountMask]); - tmp->Parent = nextnode; - Write(node2->Child[node2->Info & cKeyCountMask]); - } - - - Write(r); - Write(nextnode); - node = node2; - skipread = true; - - } else if ((l != 0) && ((lnode->Info & cKeyCountMask) > cEmptyNode)) // move a Key-Data-pair from the left - { - // increment next node key count and make new first key-data-pair - KeyInsert(nextnode, node2, 0); - - // move key-data-pair down from current to the next node - KeyMove(actnode, ge - 1, node, nextnode, 0, node2); - - // move the child from left to next node - node2->Child[0] = lnode->Child[lnode->Info & cKeyCountMask]; - - // move key-data-pair up from left to current node - KeyMove(l, (lnode->Info & cKeyCountMask) - 1, lnode, actnode, ge - 1, node); - Write(actnode); - - // decrement left node key count - lnode->Info--; - Write(l); - - if ((node2->Info & cIsLeafMask) == 0) // update the parent property of moved child - { - TNode * tmp = Read(node2->Child[0]); - tmp->Parent = nextnode; - Write(node2->Child[0]); - } - - Write(nextnode); - node = node2; - skipread = true; - - } else { - if (l != 0) // merge with the left node - { - nextnode = MergeNodes(l, lnode, nextnode, node2, node->Key[ge - 1], actnode, ge - 1); - KeyDelete(actnode, node, ge - 1); - node->Child[ge - 1] = nextnode; - - } else { // merge with the right node - nextnode = MergeNodes(nextnode, node2, r, rnode, node->Key[ge], actnode, ge); - KeyDelete(actnode, node, ge); - node->Child[ge] = nextnode; - } - - if ((actnode == m_Root) && ((node->Info & cKeyCountMask) == 0)) - { - DeleteNode(actnode); - m_Root = nextnode; - m_sigRootChanged(this, nextnode); - } else { - Write(actnode); - } - } - } - } // if (exists) else if (node.Info & cIsLeafMask) - - actnode = nextnode; - if (!skipread) - node = Read(actnode); - - } // while(actnode) - - return false; -} - -template -typename CBTree::TNodeRef CBTree::getRoot() -{ - return m_Root; -} - -template -void CBTree::setRoot(TNodeRef NewRoot) -{ - m_Root = NewRoot; - return; -} - -template -void CBTree::PrepareInsertOperation() -{ - if (m_Count + 64 > m_AllocCount) - { - m_AllocCount += 64; - m_Alloc = (TNode *)realloc(m_Alloc, sizeof(TNode) * m_AllocCount); - - for (TNodeRef i = m_AllocCount - 64; i < m_AllocCount; ++i) - m_Alloc[i].Parent = i + 1; - - m_Alloc[m_AllocCount - 1].Parent = 0; - - if (m_FreeIndex) - { - TNodeRef i = m_FreeIndex; - while (m_Alloc[i].Parent) - i = m_Alloc[i].Parent; - - m_Alloc[i].Parent = m_AllocCount - 64; - - } else { - m_FreeIndex = m_AllocCount - 63; - } - - } -} - -template -typename CBTree::TNode * CBTree::CreateNewNode(TNodeRef & NodeRef) -{ - NodeRef = m_FreeIndex; - m_FreeIndex = m_Alloc[m_FreeIndex].Parent; - m_Count++; - memset(m_Alloc + NodeRef, 0, sizeof(TNode)); - return m_Alloc + NodeRef; -} - -template -void CBTree::DeleteNode(TNodeRef Node) -{ - CHECK((Node > 0) && (Node < m_AllocCount), logERROR, _T("Invalid Node")); - m_Alloc[Node].Parent = m_FreeIndex; - m_FreeIndex = Node; - m_Count--; -} - -template -typename CBTree::TNode * CBTree::Read(TNodeRef Node) -{ - CHECK((Node > 0) && (Node < m_AllocCount), logERROR, _T("Invalid Node")); - return m_Alloc + Node; -} - -template -void CBTree::Write(TNodeRef Node) -{ - return; -} - -template -void CBTree::DestroyTree() -{ - std::stack s; - TNodeRef node; - TNode* nodedata; - uint16_t i; - - if (m_Root) - s.push(m_Root); - while (!s.empty()) - { - node = s.top(); - nodedata = Read(node); - s.pop(); - - if ((nodedata->Info & cIsLeafMask) == 0) - { - for (i = 0; i <= (nodedata->Info & cKeyCountMask); i++) - s.push(nodedata->Child[i]); - } - - DeleteNode(node); - } - - free(m_Alloc); - m_Alloc = NULL; - m_AllocCount = 0; - m_Count = 0; - m_FreeIndex = 0; -} - - -template -void CBTree::DeleteTree(TDeleteCallback * CallBack, uint32_t Param) -{ - std::stack s; - TNodeRef actnode; - TNode * node; - uint16_t i; - - typename TManagedMap::iterator it = m_ManagedIterators.begin(); - while (it != m_ManagedIterators.end()) - { - it->second->m_Node = 0; - it->second->m_Index = 0xffff; - ++it; - } - - if (m_Root) - s.push(m_Root); - - m_Root = 0; - m_sigRootChanged.emit(this, m_Root); - - while (!s.empty()) - { - actnode = s.top(); - s.pop(); - - node = Read(actnode); - - if ((node->Info & cIsLeafMask) == 0) - { - for (i = 0; i <= (node->Info & cKeyCountMask); i++) - s.push(node->Child[i]); - - } - if (CallBack) - { - for (i = 0; i < (node->Info & cKeyCountMask); i++) - CallBack->emit(this, node->Key[i], Param); - } - - DeleteNode(actnode); - } -} - - - - - - - -template -CBTree::iterator::iterator() -{ - m_Tree = NULL; - m_Node = 0; - m_Index = 0xFFFF; - m_Managed = false; - m_ManagedDeleted = false; - m_LoadedKey = false; -} -template -CBTree::iterator::iterator(CBTree* Tree, TNodeRef Node, uint16_t Index) -{ - m_Tree = Tree; - m_Node = Node; - m_Index = Index; - m_Managed = false; - m_ManagedDeleted = false; - m_LoadedKey = false; -} -template -CBTree::iterator::iterator(const iterator& Other) -{ - m_Tree = Other.m_Tree; - m_Node = Other.m_Node; - m_Index = Other.m_Index; - m_ManagedDeleted = Other.m_ManagedDeleted; - m_Managed = Other.m_Managed; - m_LoadedKey = Other.m_LoadedKey; - m_ManagedKey = Other.m_ManagedKey; - - if (m_Managed) - InsertManaged(); -} - -template -CBTree::iterator::~iterator() -{ - RemoveManaged(m_Node); -} - - -template -void CBTree::iterator::setManaged() -{ - if (!m_Managed) - InsertManaged(); - - m_Managed = true; -} - -template -inline void CBTree::iterator::RemoveManaged(TNodeRef FromNode) -{ - if (m_Managed && m_Tree) - { - typename TManagedMap::iterator i = m_Tree->m_ManagedIterators.find(FromNode); - - while ((i != m_Tree->m_ManagedIterators.end()) && (i->second != this) && (i->first == FromNode)) - ++i; - - if ((i != m_Tree->m_ManagedIterators.end()) && (i->second == this)) - m_Tree->m_ManagedIterators.erase(i); - } -} -template -inline void CBTree::iterator::InsertManaged() -{ - if (m_Tree) - m_Tree->m_ManagedIterators.insert(std::make_pair(m_Node, this)); -} - -template -bool CBTree::iterator::wasDeleted() -{ - return m_ManagedDeleted; -} - -template -void CBTree::iterator::Backup() -{ - if ((!m_ManagedDeleted) && (*this)) - { - TNode * tmp; - if (!m_LoadedKey) - { - tmp = m_Tree->Read(m_Node); - m_ManagedKey = tmp->Key[m_Index]; - } - m_LoadedKey = true; - } - - m_ManagedDeleted = true; -} - -template -CBTree * CBTree::iterator::Tree() -{ - return m_Tree; -} - -template -const TKey& CBTree::iterator::operator *() -{ - if (!m_LoadedKey) - { - TNode * node; - node = m_Tree->Read(m_Node); - m_ManagedKey = node->Key[m_Index]; - m_LoadedKey = true; - } - return m_ManagedKey; -} - -template -const TKey* CBTree::iterator::operator ->() -{ - if (!m_LoadedKey) - { - TNode * node; - node = m_Tree->Read(m_Node); - m_ManagedKey = node->Key[m_Index]; - m_LoadedKey = true; - } - return &m_ManagedKey; -} - -template -inline CBTree::iterator::operator bool() const -{ - if (m_Tree && m_Node) - { - TNode * node; - node = m_Tree->Read(m_Node); - return (m_Index < (node->Info & cKeyCountMask)); - } else - return false; -} - -template -inline bool CBTree::iterator::operator !() const -{ - if (m_Tree && m_Node) - { - TNode * node; - node = m_Tree->Read(m_Node); - return (m_Index > (node->Info & cKeyCountMask)); - } else - return true; -} - -template -inline bool CBTree::iterator::operator ==(iterator & Other) -{ - //return (m_Tree == Other.m_Tree) && (m_Node == Other.m_Node) && (m_Index == Other.m_Index) && (!m_ManagedDeleted) && (!Other.m_ManagedDeleted); - return Key() == Other.Key(); -} - -template -inline bool CBTree::iterator::operator < (iterator & Other) -{ - return Key() < Other.Key(); -} -template -inline bool CBTree::iterator::operator > (iterator & Other) -{ - return Key() > Other.Key(); -} - - -template -typename CBTree::iterator& -CBTree::iterator::operator =(const iterator& Other) -{ - RemoveManaged(m_Node); - - m_Tree = Other.m_Tree; - m_Node = Other.m_Node; - m_Index = Other.m_Index; - m_ManagedDeleted = Other.m_ManagedDeleted; - m_Managed = Other.m_Managed; - m_LoadedKey = Other.m_LoadedKey; - m_ManagedKey = Other.m_ManagedKey; - - if (m_Managed) - InsertManaged(); - - return *this; -} - -template -typename CBTree::iterator& -CBTree::iterator::operator ++() //pre ++i -{ - TNodeRef oldnode = m_Node; - if (m_Managed && m_ManagedDeleted) - { - TKey oldkey = m_ManagedKey; - m_LoadedKey = false; - m_ManagedDeleted = false; - iterator other = m_Tree->LowerBound(m_ManagedKey); - m_Node = other.m_Node; - m_Index = other.m_Index; - while (((**this) == oldkey) && (*this)) - Inc(); - - } else - Inc(); - - if (m_Managed && (oldnode != m_Node)) - { - RemoveManaged(oldnode); - InsertManaged(); - } - return *this; -} - -template -typename CBTree::iterator& -CBTree::iterator::operator --() //pre --i -{ - TNodeRef oldnode = m_Node; - if (m_Managed && m_ManagedDeleted) - { - TKey oldkey = m_ManagedKey; - m_LoadedKey = false; - - m_ManagedDeleted = false; - iterator other = m_Tree->UpperBound(m_ManagedKey); - m_Node = other.m_Node; - m_Index = other.m_Index; - while (((**this) == oldkey) && (*this)) - Dec(); - } else - Dec(); - - if (m_Managed && (oldnode != m_Node)) - { - RemoveManaged(oldnode); - InsertManaged(); - } - return *this; -} - -template -typename CBTree::iterator -CBTree::iterator::operator ++(int) //post i++ -{ - iterator tmp(*this); - ++(*this); - return tmp; -} -template -typename CBTree::iterator -CBTree::iterator::operator --(int) //post i-- -{ - iterator tmp(*this); - --(*this); - return tmp; -} - -template -void CBTree::iterator::Inc() -{ - TNode * node; - TNodeRef nextnode; - node = m_Tree->Read(m_Node); - - m_LoadedKey = false; - - if ((node->Info & cIsLeafMask) && ((node->Info & cKeyCountMask) > m_Index + 1)) // leaf - { - m_Index++; - return; - } - - if ((node->Info & cIsLeafMask) == 0) // inner node. go down - { - m_Node = node->Child[m_Index + 1]; - node = m_Tree->Read(m_Node); - - m_Index = 0; - - while ((node->Info & cIsLeafMask) == 0) // go down to a leaf - { - m_Node = node->Child[0]; - node = m_Tree->Read(m_Node); - } - - return; - } - - while (m_Index >= (node->Info & cKeyCountMask) - 1) // go up - { - if (m_Node == m_Tree->m_Root) // the root is the top, we cannot go further - { - m_Index = 0xFFFF; - m_Node = 0; - return; - } - - nextnode = node->Parent; - node = m_Tree->Read(nextnode); - m_Index = 0; - - while ((m_Index <= (node->Info & cKeyCountMask)) && (node->Child[m_Index] != m_Node)) - m_Index++; - - m_Node = nextnode; - - if (m_Index < (node->Info & cKeyCountMask)) - return; - } - -} - -template -void CBTree::iterator::Dec() -{ - TNode * node; - TNodeRef nextnode; - node = m_Tree->Read(m_Node); - - m_LoadedKey = false; - - if ((node->Info & cIsLeafMask) && (m_Index > 0)) // leaf - { - m_Index--; - return; - } - - if ((node->Info & cIsLeafMask) == 0) // inner node. go down - { - m_Node = node->Child[m_Index]; - node = m_Tree->Read(m_Node); - m_Index = (node->Info & cKeyCountMask) - 1; - - while ((node->Info & cIsLeafMask) == 0) // go down to a leaf - { - m_Node = node->Child[node->Info & cKeyCountMask]; - node = m_Tree->Read(m_Node); - m_Index = (node->Info & cKeyCountMask) - 1; - } - - return; - } - - while (m_Index == 0) // go up - { - if (m_Node == m_Tree->m_Root) // the root is the top, we cannot go further - { - m_Index = 0xFFFF; - m_Node = 0; - return; - } - - nextnode = node->Parent; - node = m_Tree->Read(nextnode); - m_Index = 0; - - while ((m_Index <= (node->Info & cKeyCountMask)) && (node->Child[m_Index] != m_Node)) - m_Index++; - - m_Node = nextnode; - - if (m_Index > 0) - { - m_Index--; - return; - } - } -} diff --git a/plugins/!Deprecated/Dbx_tree/src/BlockManager.cpp b/plugins/!Deprecated/Dbx_tree/src/BlockManager.cpp deleted file mode 100644 index b6a7d22feb..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/BlockManager.cpp +++ /dev/null @@ -1,963 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "BlockManager.h" -#include "Logger.h" - -CBlockManager::CBlockManager( - CFileAccess & FileAccess, - CEncryptionManager & EncryptionManager - ) -: m_BlockSync(), - m_FileAccess(FileAccess), - m_EncryptionManager(EncryptionManager), - m_BlockTable(1024), - m_FreeBlocks() -{ - m_Optimize.Thread = NULL; - m_Optimize.Source = 0; - m_Optimize.Dest = 0; - - m_CacheInfo.Growth = 0; - m_CacheInfo.Size = 0; - m_CacheInfo.LastPurge = time(NULL); - - m_PendingHead = NULL; - m_PendingTail = NULL; - m_PendingLast = NULL; - m_LastFlush = time(NULL); - m_BytesPending = 20; - m_FirstFreeIndex = 0; - - m_SaveMode = true; - m_ReadOnly = m_FileAccess.ReadOnly(); - - memset(m_Cache, 0, sizeof(m_Cache)); -} - -CBlockManager::~CBlockManager() -{ - m_BlockSync.BeginWrite(); - if (m_Optimize.Thread) - { - m_Optimize.Thread->FreeOnTerminate(false); - m_Optimize.Thread->Terminate(); - - m_BlockSync.EndWrite(); - m_Optimize.Thread->WaitFor(); - - delete m_Optimize.Thread; - } else { - m_BlockSync.EndWrite(); - } - - _PendingFlush(true); - - for (uint32_t buddy = 0; buddy < cCacheBuddyCount; buddy++) - { - TCacheEntry * i = m_Cache[buddy]; - while (i) - { - free(i->Cache); - - TCacheEntry * tmp = i; - i = i->Next; - free(tmp); - } - } -} - -// Optimize File Size -void CBlockManager::ExecuteOptimize() -{ /* - TBlockHeadFree h = {0,0}; - uint8_t * buf = (uint8_t*)malloc(1 << 18); // 256kb - uint32_t bufuse = 0; - uint32_t bufsize = 1 << 18; - uint32_t lastflush = 0; - - { - int i = 0; - while (!m_Optimize.Thread->Terminated() && (i < 600)) - { - ++i; - Sleep(100); // wait for Miranda to start - } - } - - TransactionBeginWrite(); - - while (!m_Optimize.Thread->Terminated() && (m_Optimize.Source < m_FileAccess.Size()) && !m_ReadOnly) - { - m_FileAccess.Read(&h, m_Optimize.Source, sizeof(h)); - if (h.ID == cFreeBlockID) - { - _RemoveFreeBlock(m_Optimize.Source, h.Size); - - m_Optimize.Source += h.Size; - } else { - - if (bufsize < bufuse + h.Size) - { - buf = (uint8_t*)realloc(buf, bufuse + h.Size); - bufsize = bufuse + h.Size; - } - m_FileAccess.Read(buf + bufuse, m_Optimize.Source, h.Size); - - m_BlockTable[h.ID >> 2].Addr = (m_Optimize.Dest + bufuse) >> 2; - - m_Optimize.Source += h.Size; - bufuse += h.Size; - } - - if ((m_BlockSync.Waiting() > 0) - || (bufuse + 1024 >= bufsize) - || (m_Optimize.Source >= m_FileAccess.Size())) // buffer is nearly full or EOF - { - if (m_Optimize.Dest != m_Optimize.Source) // move blocks - { - TBlockHeadFree h = {cFreeBlockID, m_Optimize.Source - m_Optimize.Dest}; - TBlockTailFree t = {m_Optimize.Source - m_Optimize.Dest, cFreeBlockID}; - - m_FileAccess.Write(buf, m_Optimize.Dest, bufuse); - - m_FileAccess.Write(&h, m_Optimize.Dest + bufuse, sizeof(h)); - m_FileAccess.Invalidate(m_Optimize.Dest + bufuse + sizeof(h), m_Optimize.Source - m_Optimize.Dest - bufuse - sizeof(h) - sizeof(t)); - m_FileAccess.Write(&t, m_Optimize.Dest + bufuse - sizeof(t), sizeof(t)); - - if (m_SaveMode) - { - m_FileAccess.CloseTransaction(); - m_FileAccess.Flush(); - m_FileAccess.UseJournal(false); - - m_FileAccess.Write(buf, m_Optimize.Dest, bufuse); - - m_FileAccess.Write(&h, m_Optimize.Dest + bufuse, sizeof(h)); - m_FileAccess.Invalidate(m_Optimize.Dest + bufuse + sizeof(h), m_Optimize.Source - m_Optimize.Dest - bufuse - sizeof(h) - sizeof(t)); - m_FileAccess.Write(&t, m_Optimize.Dest + bufuse - sizeof(t), sizeof(t)); - - m_FileAccess.Flush(); - m_FileAccess.CleanJournal(); - m_FileAccess.UseJournal(true); - } - - m_Optimize.Dest += bufuse; - bufuse = 0; - } - - if (m_BlockSync.Waiting() > 0) - { - unsigned int w = m_BlockSync.Waiting(); - m_BlockSync.EndWrite(); - Sleep(w * 64 + 1); - m_BlockSync.BeginWrite(); - m_FileAccess.UseJournal(m_SaveMode); - } - } - } - - if (m_Optimize.Source >= m_FileAccess.Size()) - m_FileAccess.Size(m_Optimize.Dest); - - m_Optimize.Thread = NULL; - m_Optimize.Source = 0; - m_Optimize.Dest = 0; - if (m_SaveMode) - TransactionEndWrite(); - else - m_BlockSync.EndWrite(); - - free(buf); */ - - m_Optimize.Thread = NULL; -} - -inline void CBlockManager::_PendingAdd(uint32_t BlockID, uint32_t Addr, uint32_t Size, TCacheEntry * Cache) -{ - TPendingOperation * p = NULL; - if (BlockID == cFreeBlockID) - { - p = (TPendingOperation*)malloc(sizeof(TPendingOperation)); - - p->BlockID = cFreeBlockID; - p->Addr = Addr; - p->Size = Size; - p->CacheEntry = NULL; - p->EncryptionBuffer = NULL; - - m_BytesPending += 24 + sizeof(TBlockHeadFree) + sizeof(TBlockTailFree); - if (Addr & cPendingInvalidate) - m_BytesPending += 12; - - } else { - if (Cache->Pending) - { - p = Cache->Pending; - _PendingRemove(Cache->Pending, false); - } else { - p = (TPendingOperation*)malloc(sizeof(TPendingOperation)); - } - - p->BlockID = BlockID; - p->Addr = Addr; - p->Size = Size; - p->CacheEntry = Cache; - p->EncryptionBuffer = NULL; - - m_BytesPending += 12 + Size; - - Cache->Pending = p; - } - - p->Next = NULL; - p->Prev = m_PendingTail; - if (m_PendingTail) - m_PendingTail->Next = p; - - m_PendingTail = p; - if (!m_PendingHead) - m_PendingHead = p; -} - -inline void CBlockManager::_PendingRemove(TPendingOperation * Pending, bool Free) -{ - if (Pending->Prev) - Pending->Prev->Next = Pending->Next; - else - m_PendingHead = Pending->Next; - - if (Pending->Next) - Pending->Next->Prev = Pending->Prev; - else - m_PendingTail = Pending->Prev; - - free(Pending->EncryptionBuffer); - - if (m_PendingLast == Pending) - m_PendingLast = Pending->Prev; - - Pending->CacheEntry->Pending = NULL; - if (Free) - free(Pending); -} - -inline void CBlockManager::_PendingFlush(bool FullFlush) -{ - TPendingOperation * i = NULL; - - if (m_ReadOnly) - return; - - if (FullFlush) - { - if (m_SaveMode) - { - _PendingFlush(false); // write to journal - m_FileAccess.Flush(); - m_FileAccess.UseJournal(false); - m_FileAccess.Size(m_FileAccess.Size()); // resize real file - } else { - m_FileAccess.UseJournal(false); - } - - i = m_PendingHead; - } else if (m_PendingLast) - { - i = m_PendingLast->Next; - m_FileAccess.UseJournal(m_SaveMode); - } else { - i = m_PendingHead; - m_FileAccess.UseJournal(m_SaveMode); - } - - while (i) - { - if (i->BlockID == cFreeBlockID) - { - uint32_t addr = i->Addr & ~cPendingInvalidate; - if (addr + i->Size <= m_FileAccess.Size()) - { - TBlockHeadFree h = {cFreeBlockID, i->Size}; - TBlockTailFree t = {i->Size, cFreeBlockID}; - - m_FileAccess.Write(&h, addr, sizeof(h)); - if (i->Addr & cPendingInvalidate) - m_FileAccess.Invalidate(addr + sizeof(h), i->Size - sizeof(h) - sizeof(t)); - m_FileAccess.Write(&t, addr + i->Size - sizeof(t), sizeof(t)); - } - - } else { - - if (i->BlockID && !i->EncryptionBuffer && m_EncryptionManager.IsEncrypted(i->BlockID)) - { - i->EncryptionBuffer = (TBlockHeadOcc*) malloc(i->Size); - memcpy(i->EncryptionBuffer, i->CacheEntry->Cache, i->Size); - m_EncryptionManager.Encrypt(i->EncryptionBuffer + 1, i->Size - sizeof(TBlockHeadOcc) - sizeof(TBlockTailOcc), i->BlockID, 0); - } - - if (i->EncryptionBuffer) - { - m_FileAccess.Write(i->EncryptionBuffer, i->Addr, i->Size); - } else { - m_FileAccess.Write(i->CacheEntry->Cache, i->Addr, i->Size); - } - } - - i = i->Next; - } // while - - if (FullFlush) - { - m_FileAccess.Flush(); - if (m_SaveMode) - m_FileAccess.CleanJournal(); - - m_BytesPending = 20; - m_LastFlush = time(NULL); - - i = m_PendingHead; - while (i) - { - free(i->EncryptionBuffer); - - if (i->CacheEntry) - i->CacheEntry->Pending = NULL; - - TPendingOperation * tmp = i; - i = i->Next; - free(tmp); - } - m_PendingHead = NULL; - m_PendingTail = NULL; - m_PendingLast = NULL; - } else { - m_PendingLast = m_PendingTail; - m_FileAccess.CloseTransaction(); - } -} - -inline CBlockManager::TCacheEntry * CBlockManager::_CacheInsert(uint32_t Idx, TBlockHeadOcc * Cache, bool Virtual) -{ - TCacheEntry * res; - uint32_t myidx = ROR_32(Idx, cCacheBuddyBits); - - res = (TCacheEntry *)malloc(sizeof(TCacheEntry)); - res->Cache = Cache; - res->Pending = NULL; - res->Idx = myidx; - res->Forced = Virtual; - - TCacheEntry * volatile * last = &m_Cache[Idx % cCacheBuddyCount]; - TCacheEntry * i; - do { - i = *last; - - while (i && (i->Idx < myidx)) - { - last = &i->Next; - i = i->Next; - } - - if (i && (i->Idx == myidx)) - { - free(res); - free(Cache); - - i->LastUse = time(NULL) >> 2; - return i; - } - - res->Next = i; - - } while (i != CMPXCHG_Ptr(*last, res, i)); - - res->LastUse = time(NULL) >> 2; - - m_BlockTable[Idx].InCache = true; - if (!Virtual) - XADD_32(m_CacheInfo.Growth, res->Cache->Size); - - return res; -} - -inline CBlockManager::TCacheEntry * CBlockManager::_CacheFind(uint32_t Idx) -{ - TCacheEntry * i = m_Cache[Idx % cCacheBuddyCount]; - uint32_t myidx = ROR_32(Idx, cCacheBuddyBits); - while (i && (i->Idx < myidx)) - i = i->Next; - - if (i && (i->Idx == myidx)) - return i; - else - return NULL; -} - -inline void CBlockManager::_CacheErase(uint32_t Idx) -{ - TCacheEntry * i = m_Cache[Idx % cCacheBuddyCount]; - TCacheEntry * volatile * l = &m_Cache[Idx % cCacheBuddyCount]; - - uint32_t myidx = ROR_32(Idx, cCacheBuddyBits); - - while (i->Idx < myidx) - { - l = &i->Next; - i = i->Next; - } - *l = i->Next; - - free(i->Cache); - free(i); -} - -inline void CBlockManager::_CachePurge() -{ - _PendingFlush(true); - - uint32_t ts = time(NULL); - if (m_CacheInfo.Size + m_CacheInfo.Growth > cCachePurgeSize) { - ts = ts - (ts - m_CacheInfo.LastPurge) * cCachePurgeSize / (m_CacheInfo.Size + 2 * m_CacheInfo.Growth); - } else if (m_CacheInfo.Growth > m_CacheInfo.Size) - { - ts = ts - (ts - m_CacheInfo.LastPurge) * m_CacheInfo.Size / m_CacheInfo.Growth; - } else if (m_CacheInfo.Size > m_CacheInfo.Growth) - { - ts = ts - (ts - m_CacheInfo.LastPurge) * m_CacheInfo.Growth / m_CacheInfo.Size; - } else { - ts = m_CacheInfo.LastPurge; - } - - m_CacheInfo.Size += m_CacheInfo.Growth; - m_CacheInfo.Growth = 0; - m_CacheInfo.LastPurge = time(NULL); - - for (uint32_t buddy = 0; buddy < cCacheBuddyCount; buddy++) - { - TCacheEntry * i = m_Cache[buddy]; - TCacheEntry * volatile * l = &m_Cache[buddy]; - - while (i) - { - if (!i->Forced && !i->KeepInCache && i->Idx && ((i->LastUse << 2) < ts)) - { - uint32_t idx = ROL_32(i->Idx, cCacheBuddyBits); - m_CacheInfo.Size -= i->Cache->Size; - m_BlockTable[idx].InCache = false; - free(i->Cache); - - *l = i->Next; - TCacheEntry * tmp = i; - i = i->Next; - free(tmp); - - } else { - l = &i->Next; - i = i->Next; - } - } - } -} - -inline uint32_t CBlockManager::_GetAvailableIndex() -{ - uint32_t id; - if (m_FirstFreeIndex) - { - id = m_FirstFreeIndex; - m_FirstFreeIndex = m_BlockTable[id].Addr; - TBlockTableEntry b = {false, false, 0}; - m_BlockTable[id] = b; - } else { - id = static_cast(m_BlockTable.size()); - if (id > (1 << 12)) - m_BlockTable.resize(id + (1 << 12)); - else - m_BlockTable.resize(id * 2); - - for (uint32_t i = static_cast(m_BlockTable.size() - 1); i > id; --i) - { - TBlockTableEntry b = {true, true, m_FirstFreeIndex}; - m_BlockTable[i] = b; - m_FirstFreeIndex = i; - } - } - return id; -} - -inline void CBlockManager::_InsertFreeBlock(uint32_t Addr, uint32_t Size, bool InvalidateData, bool Reuse) -{ - if (Addr + Size == m_FileAccess.Size()) - { - if (Reuse) // in FindFreePosition we would want to use that block - m_FileAccess.Size(Addr); - } else { - - if (Reuse) - m_FreeBlocks.insert(std::make_pair(Size, Addr)); - - if (!m_ReadOnly) - _PendingAdd(cFreeBlockID, InvalidateData ? Addr | cPendingInvalidate : Addr, Size, NULL); - - } -} - -inline void CBlockManager::_RemoveFreeBlock(uint32_t Addr, uint32_t Size) -{ - TFreeBlockMap::iterator i = m_FreeBlocks.find(Size); - while ((i != m_FreeBlocks.end()) && (i->first == Size)) - { - if (i->second == Addr) - { - m_FreeBlocks.erase(i); - i = m_FreeBlocks.end(); - } else { - ++i; - } - } -} - -inline uint32_t CBlockManager::_FindFreePosition(uint32_t Size) -{ - // try to find free block - TFreeBlockMap::iterator f; - TFreeBlockMap::iterator e = m_FreeBlocks.end(); - - if (m_FreeBlocks.size()) - { - f = m_FreeBlocks.find(Size); - if (f == e) - { - if (m_FreeBlocks.rbegin()->first > Size * 2) - { - f = m_FreeBlocks.end(); - --f; - } - } - } else { - f = e; - } - - uint32_t addr = 0; - - if (f == e) // no block found - expand file - { - addr = m_FileAccess.Size(); - m_FileAccess.Size(addr + Size); - - } else { - addr = f->second; - - if (f->first != Size) - { - _InsertFreeBlock(addr + Size, f->first - Size, false, true); - } - _InsertFreeBlock(addr, Size, false, false); - - m_FreeBlocks.erase(f); - } - - return addr; -} - -inline bool CBlockManager::_InitOperation(uint32_t BlockID, uint32_t & Addr, TCacheEntry * & Cache) -{ - if (!BlockID || (BlockID & 3) || ((BlockID >> 2) >= m_BlockTable.size())) - return false; - - uint32_t idx = BlockID >> 2; - TBlockTableEntry dat = m_BlockTable[idx]; - - if (dat.Deleted) // deleted or FreeIDList item - return false; - - Addr = dat.Addr << 2; - if (dat.InCache) - { - Cache = _CacheFind(idx); - } else if (Addr) - { - TBlockHeadOcc h; - - m_FileAccess.Read(&h, Addr, sizeof(h)); - - TBlockHeadOcc * block = (TBlockHeadOcc *) malloc(h.Size); - m_FileAccess.Read(block, Addr, h.Size); - - m_EncryptionManager.Decrypt(block + 1, h.Size - sizeof(TBlockHeadOcc) - sizeof(TBlockTailOcc), BlockID, 0); - - Cache = _CacheInsert(idx, block, false); - } else { - return false; - } - - return Cache != NULL; -} - -inline void CBlockManager::_UpdateBlock(uint32_t BlockID, TCacheEntry * CacheEntry, uint32_t Addr) -{ - CacheEntry->KeepInCache = m_ReadOnly; - - if (!CacheEntry->Forced) - { - if (!m_ReadOnly) - _PendingAdd(BlockID, Addr, CacheEntry->Cache->Size, CacheEntry); - } -} - - -uint32_t CBlockManager::ScanFile(uint32_t FirstBlockStart, uint32_t HeaderSignature, uint32_t FileSize) -{ - TBlockHeadOcc h, lasth = {0, 0, 0}; - uint32_t p; - uint32_t res = 0; - bool invalidateblock = false; - - p = FirstBlockStart; - m_FirstBlockStart = FirstBlockStart; - m_Optimize.Source = 0; - m_Optimize.Dest = 0; - - { // insert header cache element - void * header = malloc(FirstBlockStart); - m_FileAccess.Read(header, 0, FirstBlockStart); - _CacheInsert(0, (TBlockHeadOcc*)header, false); - } - - TransactionBeginWrite(); - - while (p < FileSize) - { - m_FileAccess.Read(&h, p, sizeof(h)); - if (CLogger::Instance().Level() >= CLogger::logERROR || !h.Size) - { - LOG(logCRITICAL, _T("Block-structure of file is corrupt!")); - return 0; - } - - if (h.ID == cFreeBlockID) - { - if (m_Optimize.Dest == 0) - m_Optimize.Dest = p; - - if (lasth.ID == cFreeBlockID) - { - lasth.Size += h.Size; - invalidateblock = true; - } else { - lasth = h; - } - - } else { - - if (lasth.ID == cFreeBlockID) - { - if (m_Optimize.Source == 0) - m_Optimize.Source = p; - - _InsertFreeBlock(p - lasth.Size, lasth.Size, invalidateblock, true); - } - lasth = h; - invalidateblock = false; - - while ((h.ID >> 2) >= m_BlockTable.size()) - m_BlockTable.resize(m_BlockTable.size() << 1); - - m_BlockTable[h.ID >> 2].Addr = p >> 2; - - if (h.Signature == HeaderSignature) - res = h.ID; - } - - p = p + h.Size; - } - - m_FirstFreeIndex = 0; - for (uint32_t i = static_cast(m_BlockTable.size() - 1); i > 0; --i) - { - if (m_BlockTable[i].Addr == 0) - { - TBlockTableEntry b = {true, true, m_FirstFreeIndex}; - m_BlockTable[i] = b; - m_FirstFreeIndex = i; - } - } - - TransactionEndWrite(); - - if (m_Optimize.Source && !m_FileAccess.ReadOnly()) - { - m_Optimize.Thread = new COptimizeThread(*this); - m_Optimize.Thread->Priority(CThread::tpLowest); - m_Optimize.Thread->FreeOnTerminate(true); - m_Optimize.Thread->Resume(); - } - - return res; -} - -void * CBlockManager::_CreateBlock(uint32_t & BlockID, const uint32_t Signature, uint32_t Size) -{ - uint32_t idx = _GetAvailableIndex(); - BlockID = idx << 2; - - Size = m_EncryptionManager.AlignSize(BlockID, (Size + 3) & 0xfffffffc); // align on cipher after we aligned on 4 bytes - - TBlockHeadOcc h = {BlockID, Size + sizeof(TBlockHeadOcc) + sizeof(TBlockTailOcc), Signature}; - TBlockTailOcc t = {BlockID}; - - TBlockHeadOcc * block = (TBlockHeadOcc*) malloc(Size + sizeof(h) + sizeof(t)); - *block = h; - memset(block + 1, 0, Size); - *(TBlockTailOcc*)(((uint8_t*)(block + 1)) + Size) = t; - - TCacheEntry * ce = _CacheInsert(idx, block, false); - - if (m_ReadOnly) - { - TBlockTableEntry b = {false, true, 0}; - m_BlockTable[idx] = b; - } else { - uint32_t addr = _FindFreePosition(Size + sizeof(h) + sizeof(t)); - TBlockTableEntry b = {false, true, addr >> 2 }; - m_BlockTable[idx] = b; - - _UpdateBlock(BlockID, ce, addr); - } - - return ce->Cache + 1; -} - -void * CBlockManager::_CreateBlockVirtual(uint32_t & BlockID, const uint32_t Signature, uint32_t Size) -{ - uint32_t idx = _GetAvailableIndex(); - BlockID = idx << 2; - - Size = m_EncryptionManager.AlignSize(BlockID, (Size + 3) & 0xfffffffc); // align on cipher after we aligned on 4 bytes - - TBlockHeadOcc h = {BlockID, Size + sizeof(TBlockHeadOcc) + sizeof(TBlockTailOcc), Signature}; - TBlockTailOcc t = {BlockID}; - - TBlockHeadOcc * block = (TBlockHeadOcc*) malloc(Size + sizeof(h) + sizeof(t)); - *block = h; - memset(block + 1, 0, Size); - *(TBlockTailOcc*)(((uint8_t*)(block + 1)) + Size) = t; - - return _CacheInsert(idx, block, true)->Cache + 1; -} - -bool CBlockManager::DeleteBlock(uint32_t BlockID) -{ - uint32_t idx = BlockID >> 2; - uint32_t addr; - uint32_t size; - TCacheEntry * ce; - if (!_InitOperation(BlockID, addr, ce)) - return false; - - if (!ce->Forced) - XADD_32(m_CacheInfo.Size, 0 - ce->Cache->Size); - - if (ce->Pending) - _PendingRemove(ce->Pending, true); - - size = ce->Cache->Size; - _CacheErase(idx); - - if (addr == 0) // Block in memory only - { - TBlockTableEntry b = {false, false, 0}; - m_BlockTable[idx] = b; - - } else if (m_ReadOnly) - { - m_BlockTable[idx].Deleted = true; - m_BlockTable[idx].InCache = false; - } else { - _InsertFreeBlock(addr, size, true, true); - - TBlockTableEntry b = {false, false, 0}; - m_BlockTable[idx] = b; - } - - return true; -} - -uint32_t CBlockManager::_ResizeBlock(uint32_t BlockID, void * & Buffer, uint32_t Size) -{ - uint32_t idx = BlockID >> 2; - uint32_t addr; - TCacheEntry * ce; - - if (Size == 0) - return 0; - - if (!_InitOperation(BlockID, addr, ce)) - return 0; - - Size = m_EncryptionManager.AlignSize(BlockID, (Size + 3) & 0xfffffffc); // align on cipher after we aligned on 4 bytes - - uint32_t os = ce->Cache->Size; - uint32_t ns = Size + sizeof(TBlockHeadOcc) + sizeof(TBlockTailOcc); - if (ns == ce->Cache->Size) - { - Buffer = ce->Cache + 1; - return Size; - } - - ce->Cache = (TBlockHeadOcc*) realloc(ce->Cache, ns); - ce->Cache->Size = ns; - TBlockTailOcc t = {BlockID}; - *(TBlockTailOcc*)(((uint8_t*)(ce->Cache + 1)) + Size) = t; - XADD_32(m_CacheInfo.Size, ns - os); - - Buffer = ce->Cache + 1; - ce->KeepInCache = m_ReadOnly; - - if (!m_ReadOnly && addr) - { - _InsertFreeBlock(addr, os, true, true); - addr = _FindFreePosition(ns); - m_BlockTable[idx].Addr = addr >> 2; - - _UpdateBlock(BlockID, ce, addr); // write down - } - - return Size; -} - -bool CBlockManager::IsForcedVirtual(uint32_t BlockID) -{ - TCacheEntry * ce = _CacheFind(BlockID >> 2); - return ce && ce->Forced; -} - -bool CBlockManager::WriteBlockToDisk(uint32_t BlockID) -{ - uint32_t addr; - TCacheEntry * ce; - - if (!_InitOperation(BlockID, addr, ce)) - return false; - - if (!ce->Forced) - return true; - - ce->Forced = false; - XADD_32(m_CacheInfo.Size, ce->Cache->Size); - - if (!m_ReadOnly) - { - addr = _FindFreePosition(ce->Cache->Size); - m_BlockTable[BlockID >> 2].Addr = addr >> 2; - _UpdateBlock(BlockID, ce, addr); - } - return true; -} - -bool CBlockManager::MakeBlockVirtual(uint32_t BlockID) -{ - uint32_t addr; - TCacheEntry * ce; - - if (!_InitOperation(BlockID, addr, ce)) - return false; - - if (ce->Forced) - return true; - - if (ce->Pending) // don't write down, we kill it anyway - _PendingRemove(ce->Pending, true); - - ce->Forced = true; - XADD_32(m_CacheInfo.Size, 0 - ce->Cache->Size); - - if (!m_ReadOnly) - { - _InsertFreeBlock(addr, ce->Cache->Size, true, true); - m_BlockTable[BlockID >> 2].Addr = 0; - } - return true; -} - -void * CBlockManager::_ReadBlock(uint32_t BlockID, uint32_t & Size, uint32_t & Signature) -{ - uint32_t addr; - TCacheEntry * ce; - - if ((BlockID == 0) && (Signature == -1)) - { - Size = m_FirstBlockStart; - return m_Cache[0]->Cache; - } - - if (!_InitOperation(BlockID, addr, ce)) - return NULL; - - if ((Signature != 0) && (Signature != ce->Cache->Signature)) - { - Signature = ce->Cache->Signature; - return NULL; - } - Signature = ce->Cache->Signature; - - if ((Size != 0) && (Size != ce->Cache->Size - sizeof(TBlockHeadOcc) - sizeof(TBlockTailOcc))) - { - Size = ce->Cache->Size - sizeof(TBlockHeadOcc) - sizeof(TBlockTailOcc); - return NULL; - } - Size = ce->Cache->Size - sizeof(TBlockHeadOcc) - sizeof(TBlockTailOcc); - - return ce->Cache + 1; -} - -bool CBlockManager::UpdateBlock(uint32_t BlockID, uint32_t Signature) -{ - uint32_t addr; - TCacheEntry * ce; - - if ((BlockID == 0) && (Signature == -1)) - { - if (!m_ReadOnly) - _PendingAdd(0, 0, m_FirstBlockStart, m_Cache[0]); - - return true; - } - - if (!_InitOperation(BlockID, addr, ce)) - return false; - - if (Signature) - ce->Cache->Signature = Signature; - - _UpdateBlock(BlockID, ce, addr); - - return true; -} - -// make file writeable: -// write all cached blocks to file and check for the old addresses -// remove virtual only from file -// update m_FreeBlocks along the way - diff --git a/plugins/!Deprecated/Dbx_tree/src/BlockManager.h b/plugins/!Deprecated/Dbx_tree/src/BlockManager.h deleted file mode 100644 index dcccd4f0b9..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/BlockManager.h +++ /dev/null @@ -1,401 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include -#include - -#include "stdint.h" -#include "FileAccess.h" -#include "EncryptionManager.h" -#include "MREWSync.h" -#include "Thread.h" -#include "intrinsics.h" - -class CBlockManager -{ -protected: - static const uint32_t cFreeBlockID = 0xFFFFFFFF; - - static const uint32_t cJournalFlushBytes = (1 << 20) - 2048; // flush before reserved journal-space is exhausted - static const uint32_t cJournalFlushTimeout = 300; // journal flush every 5 minutes - - static const uint32_t cCacheBuddyBits = 10; - static const uint32_t cCacheBuddyCount = 1 << cCacheBuddyBits; // count of static allocated buddy nodes - static const uint32_t cCacheBuddyCheck = 0xffffffff << cCacheBuddyBits; - - static const uint32_t cCacheMinimumTimeout = 2; // purge less than every n seconds (high priority) - static const uint32_t cCacheMaximumTimeout = 600; // purge every 10 minutes (high priority) - static const uint32_t cCachePurgeSize = 1 << 21; // cache up to 2MB - static const uint32_t cCacheMinimumGrowthForPurge = 1 << 19; // cache only when 512kb were added - - #pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - - typedef struct TBlockHeadFree { - uint32_t ID; - uint32_t Size; - } TBlockHeadFree; - typedef struct TBlockHeadOcc { - uint32_t ID; - uint32_t Size; - uint32_t Signature; /// if occupied block - } TBlockHeadOcc; - - typedef struct TBlockTailOcc { - uint32_t ID; - } TBlockTailOcc; - - typedef struct TBlockTailFree { - uint32_t Size; /// if free block - uint32_t ID; - } TBlockTailFree; - - #pragma pack(pop) - - //////////////////////////////////////////////////////////////////////////////////////////////////// - /// Block table entry. - /// - /// Addr Deleted InCache Meaning - /// 0 0 0 successfully deleted block - /// 0 0 1 virtual only block (either forced virtual or created on a read-only file) - /// 0 1 0 invalid - /// 0 1 1 FreeID list (last entry) - /// set 0 0 Normal in-file block - /// set 0 1 in file and cache (normal cache which could differ on a read-only file or forced virtual out of a read-only file - check TCacheEntry) - /// set 1 0 deleted block or a read-only file - /// set 1 1 FreeID list entry - /// - /// Michael "Protogenes" Kunz, 07.09.2010. - //////////////////////////////////////////////////////////////////////////////////////////////////// - typedef struct TBlockTableEntry { - uint32_t Deleted : 1; ///< Flag is set if the block was deleted but can't be removed, because the file is read-only - uint32_t InCache : 1; ///< Flag is set if block is in the cache (either forced virtual or from the file) - uint32_t Addr : 30; ///< The Offset in the file div 4, so we can address files up to 4GB - } TBlockTableEntry; - std::vector m_BlockTable; - - struct TPendingOperation; - typedef struct TCacheEntry { - TCacheEntry * volatile Next; - TBlockHeadOcc * volatile Cache; - TPendingOperation * Pending; - - uint32_t Idx; - uint32_t Forced : 1; - uint32_t KeepInCache : 1; - uint32_t LastUse : 30; - } TCacheEntry; - - TCacheEntry * m_Cache[cCacheBuddyCount]; - - struct { - uint32_t volatile Size; - uint32_t volatile Growth; - uint32_t volatile LastPurge; - } m_CacheInfo; - - CFileAccess & m_FileAccess; - CEncryptionManager & m_EncryptionManager; - CMultiReadExclusiveWriteSynchronizer m_BlockSync; - - uint32_t m_FirstBlockStart; - bool m_SaveMode; - bool m_ReadOnly; - - typedef std::multimap TFreeBlockMap; - TFreeBlockMap m_FreeBlocks; - uint32_t m_FirstFreeIndex; - - static const uint32_t cPendingInvalidate = 0x00000001; - typedef struct TPendingOperation { - TPendingOperation * Next; ///< The next - TPendingOperation * Prev; ///< The previous - uint32_t BlockID; ///< Identifier for the block - uint32_t Addr; ///< The address in the file - uint32_t Size; ///< The size of the block - TCacheEntry * CacheEntry; ///< The cache entry - TBlockHeadOcc * EncryptionBuffer; ///< Buffer for encrypted block - } TPendingOperation; - - TPendingOperation * m_PendingHead; ///< The double linked list head - TPendingOperation * m_PendingTail; ///< The double linked list tail - TPendingOperation * m_PendingLast; ///< The last processed item - - uint32_t m_LastFlush; ///< The last flush timestamp - uint32_t m_BytesPending; ///< The bytes pending for write - - class COptimizeThread : public CThread - { - protected: - CBlockManager & m_Owner; - void Execute() { m_Owner.ExecuteOptimize(); }; - public: - COptimizeThread(CBlockManager & Owner) : CThread(true), m_Owner(Owner) {}; - ~COptimizeThread() {}; - }; - - struct { - uint32_t Source; - uint32_t Dest; - COptimizeThread * Thread; - } m_Optimize; - void ExecuteOptimize(); - - uint32_t _GetAvailableIndex(); - void _InsertFreeBlock(uint32_t Addr, uint32_t Size, bool InvalidateData, bool Reuse); - void _RemoveFreeBlock(uint32_t Addr, uint32_t Size); - uint32_t _FindFreePosition(uint32_t Size); - - bool _InitOperation(uint32_t BlockID, uint32_t & Addr, TCacheEntry * & Cache); - void _UpdateBlock(uint32_t BlockID, TCacheEntry * CacheEntry, uint32_t Addr); - - void * _ReadBlock(uint32_t BlockID, uint32_t & Size, uint32_t & Signature); - void * _CreateBlock(uint32_t & BlockID, const uint32_t Signature, uint32_t Size); - void * _CreateBlockVirtual(uint32_t & BlockID, const uint32_t Signature, uint32_t Size); - uint32_t _ResizeBlock(uint32_t BlockID, void * & Buffer, uint32_t Size); - - TCacheEntry * _CacheInsert(uint32_t Idx, TBlockHeadOcc * Cache, bool Virtual); - TCacheEntry * _CacheFind(uint32_t Idx); - void _CacheErase(uint32_t Idx); - - void _CachePurge(); - void _PendingAdd(uint32_t BlockID, uint32_t Addr, uint32_t Size, TCacheEntry * Cache); - void _PendingRemove(TPendingOperation * Pending, bool Free); - void _PendingFlush(bool FullFlush); - - - - void TransactionBeginRead() - { - m_BlockSync.BeginRead(); - }; - - void TransactionEndRead() - { - m_BlockSync.EndRead(); - }; - - void TransactionBeginWrite() - { - m_BlockSync.BeginWrite(); - m_FileAccess.UseJournal(m_SaveMode); - }; - - void TransactionEndWrite() - { - if (m_BlockSync.WriteRecursionCount() == 1) - { - m_FileAccess.CompleteTransaction(); - m_BytesPending += 12; - - if ((m_CacheInfo.LastPurge + cCacheMaximumTimeout < time(NULL)) - || ((m_CacheInfo.Size + m_CacheInfo.Growth > cCachePurgeSize) - && (m_CacheInfo.Growth > cCacheMinimumGrowthForPurge) - && (m_CacheInfo.LastPurge + cCacheMinimumTimeout < time(NULL)))) - { - _CachePurge(); - } else if ((m_BytesPending >= cJournalFlushBytes) || (time(NULL) > m_LastFlush + cJournalFlushTimeout)) - { - _PendingFlush(true); - } else { - _PendingFlush(false); - } - } - - m_BlockSync.EndWrite(); - }; -public: - CBlockManager(CFileAccess & FileAccess, CEncryptionManager & EncryptionManager); - ~CBlockManager(); - - - class ReadTransaction - { - private: - CBlockManager * m_Owner; - uint32_t volatile * m_RefCount; - bool m_Closed; - public: - ReadTransaction() - : m_Owner(NULL), - m_RefCount(NULL), - m_Closed(true) - { - - }; - ReadTransaction(CBlockManager & BlockManager) - : m_Owner(&BlockManager), - m_RefCount(new uint32_t(1)), - m_Closed(false) - { - m_Owner->TransactionBeginRead(); - }; - ReadTransaction(const ReadTransaction & Other) - : m_Owner(Other.m_Owner), - m_RefCount(Other.m_RefCount), - m_Closed(Other.m_Closed) - { - if (!m_Closed) - INC_32(*m_RefCount); - }; - ~ReadTransaction() - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndRead(); - } - }; - - ReadTransaction & operator =(const ReadTransaction & Other) - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndRead(); - } - - m_Owner = Other.m_Owner; - m_RefCount = Other.m_RefCount; - m_Closed = Other.m_Closed; - if (!m_Closed) - INC_32(*m_RefCount); - - return *this; - } - - void Close() - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndRead(); - } - m_Closed = true; - } - - }; - class WriteTransaction - { - private: - CBlockManager * m_Owner; - uint32_t volatile * m_RefCount; - bool m_Closed; - public: - WriteTransaction() - : m_Owner(NULL), - m_RefCount(NULL), - m_Closed(true) - { - - }; - WriteTransaction(CBlockManager & BlockManager) - : m_Owner(&BlockManager), - m_RefCount(new uint32_t(1)), - m_Closed(false) - { - m_Owner->TransactionBeginWrite(); - }; - WriteTransaction(const WriteTransaction & Other) - : m_Owner(Other.m_Owner), - m_RefCount(Other.m_RefCount), - m_Closed(Other.m_Closed) - { - if (!m_Closed) - INC_32(*m_RefCount); - }; - ~WriteTransaction() - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndWrite(); - } - }; - - WriteTransaction & operator =(const WriteTransaction & Other) - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndWrite(); - } - - m_Owner = Other.m_Owner; - m_RefCount = Other.m_RefCount; - m_Closed = Other.m_Closed; - if (!m_Closed) - INC_32(*m_RefCount); - - return *this; - } - - void Close() - { - if (!m_Closed && (DEC_32(*m_RefCount) == 0)) - { - delete m_RefCount; - m_Owner->TransactionEndWrite(); - } - m_Closed = true; - } - - }; - - uint32_t ScanFile(uint32_t FirstBlockStart, uint32_t HeaderSignature, uint32_t FileSize); - - template - BlockType * ReadBlock(uint32_t BlockID, uint32_t & Size, uint32_t & Signature) - { - return reinterpret_cast(_ReadBlock(BlockID, Size, Signature)); - }; - - template - BlockType * CreateBlock(uint32_t & BlockID, const uint32_t Signature, uint32_t Size = sizeof(BlockType)) - { - return reinterpret_cast(_CreateBlock(BlockID, Signature, Size)); - }; - - template - BlockType * CreateBlockVirtual(uint32_t & BlockID, const uint32_t Signature, uint32_t Size = sizeof(BlockType)) - { - return reinterpret_cast(_CreateBlockVirtual(BlockID, Signature, Size)); - }; - - template - uint32_t ResizeBlock(uint32_t BlockID, BlockType * & Buffer, uint32_t Size) - { - void * tmp = Buffer; - uint32_t res = _ResizeBlock(BlockID, tmp, Size); - Buffer = reinterpret_cast(tmp); - return res; - }; - - bool UpdateBlock(uint32_t BlockID, uint32_t Signature = 0); - bool DeleteBlock(uint32_t BlockID); - - bool IsForcedVirtual(uint32_t BlockID); - bool WriteBlockToDisk(uint32_t BlockID); - bool MakeBlockVirtual(uint32_t BlockID); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/Cipher.h b/plugins/!Deprecated/Dbx_tree/src/Cipher.h deleted file mode 100644 index 26cd7424bb..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Cipher.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#ifdef _MSC_VER -#include "stdint.h" -#else -#include -#endif - -#include - -#pragma pack(push, 1) - -#ifdef __INTERFACE_ONLY__ -#define __INTERFACE_VIRTUAL__ -#else -#define __INTERFACE_VIRTUAL__ virtual -#endif - -class CCipher -{ -public: - typedef struct TCipherInterface - { - CCipher * self; - uint32_t Size; - void (__cdecl CCipher::*Destroy)(); - - const wchar_t* (__cdecl CCipher::*Name)(); - const wchar_t* (__cdecl CCipher::*Description)(); - const uint32_t (__cdecl CCipher::*BlockSizeBytes)(); - const bool (__cdecl CCipher::*IsStreamCipher)(); - - void (__cdecl CCipher::*SetKey)(void* Key, uint32_t KeyLength); - void (__cdecl CCipher::*Encrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - void (__cdecl CCipher::*Decrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - - } TCipherInterface; - TCipherInterface * m_Interface; - -#ifndef __INTERFACE_ONLY__ - virtual void __cdecl Destroy() - { - delete this; - } - - CCipher() - { - m_Interface = new TCipherInterface; - m_Interface->Size = sizeof(TCipherInterface); - m_Interface->self = this; - m_Interface->Destroy = &CCipher::Destroy; - m_Interface->Name = &CCipher::Name; - m_Interface->Description = &CCipher::Description; - m_Interface->BlockSizeBytes = &CCipher::BlockSizeBytes; - m_Interface->IsStreamCipher = &CCipher::IsStreamCipher; - m_Interface->SetKey = &CCipher::SetKey; - m_Interface->Encrypt = &CCipher::Encrypt; - m_Interface->Decrypt = &CCipher::Decrypt; - }; -#endif - -#ifdef __INTERFACE_ONLY__ - CCipher(TCipherInterface * Interface) - { - m_Interface = Interface; - }; -#endif - - __INTERFACE_VIRTUAL__ ~CCipher() -#ifdef __INTERFACE_ONLY__ - { - (m_Interface->self->*(m_Interface->Destroy))(); - } -#else - { } -#endif - ; - - __INTERFACE_VIRTUAL__ const wchar_t* __cdecl Name() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Name))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const wchar_t* __cdecl Description() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Description))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const uint32_t __cdecl BlockSizeBytes() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->BlockSizeBytes))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const bool __cdecl IsStreamCipher() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->IsStreamCipher))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ void __cdecl SetKey(void* Key, uint32_t KeyLength) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->SetKey))(Key, KeyLength); - } -#else - = 0 -#endif - ; - __INTERFACE_VIRTUAL__ void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Encrypt))(Data, Size, Nonce, StartByte); - } -#else - = 0 -#endif - ; - __INTERFACE_VIRTUAL__ void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Decrypt))(Data, Size, Nonce, StartByte); - } -#else - = 0 -#endif - ; - -}; - -typedef struct TCipherInfo -{ - uint32_t cbSize; - const uint32_t ID; - const wchar_t* Name; - const wchar_t* Description; - CCipher::TCipherInterface * (__cdecl *Create)(); -} TCipherInfo; - -#pragma pack(pop) diff --git a/plugins/!Deprecated/Dbx_tree/src/Compatibility.cpp b/plugins/!Deprecated/Dbx_tree/src/Compatibility.cpp deleted file mode 100644 index bc42386664..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Compatibility.cpp +++ /dev/null @@ -1,853 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Compatibility.h" -#include "Logger.h" -#define DB_NOHELPERFUNCTIONS -#include "m_database.h" -#include "m_db_int.h" -#undef DB_NOHELPERFUNCTIONS - -HANDLE gEvents[6] = {0,0,0,0,0,0}; - -HANDLE hEventDeletedEvent, - hEventAddedEvent, - hEventFilterAddedEvent, - hSettingChangeEvent, - hContactDeletedEvent, - hContactAddedEvent; - -int CDataBase::CheckProto(DBCachedContact *cc, const char *proto) -{ - if (cc->szProto == NULL) { - char protobuf[MAX_PATH] = {0}; - DBVARIANT dbv; - dbv.type = DBVT_ASCIIZ; - dbv.pszVal = protobuf; - dbv.cchVal = sizeof(protobuf); - if (GetContactSettingStatic(cc->contactID, "Protocol", "p", &dbv) != 0 || (dbv.type != DBVT_ASCIIZ)) - return 0; - - cc->szProto = m_cache->GetCachedSetting(NULL, protobuf, 0, (int)strlen(protobuf)); - } - - return !strcmp(cc->szProto, proto); -} - -STDMETHODIMP_(HANDLE) CDataBase::AddContact(void) -{ - TDBTEntity entity = {0,0,0,0}; - entity.hParentEntity = DBEntityGetRoot(0, 0); - entity.hAccountEntity = entity.hParentEntity; - - TDBTEntityHandle res = getEntities().CreateEntity(entity); - if (res == DBT_INVALIDPARAM) - return (HANDLE)1; - - m_cache->AddContactToCache(res); - - NotifyEventHooks(hContactAddedEvent, res, 0); - return (HANDLE)res; -} - -STDMETHODIMP_(LONG) CDataBase::DeleteContact(MCONTACT contactID) -{ - NotifyEventHooks(hContactDeletedEvent, contactID, 0); - - int res = DBEntityDelete(contactID, 0); - if (res == DBT_INVALIDPARAM) - return 1; - - if (res == 0) - m_cache->FreeCachedContact(contactID); - - return res; -} - -STDMETHODIMP_(BOOL) CDataBase::IsDbContact(MCONTACT contactID) -{ - int flags = DBEntityGetFlags(contactID, 0); - return (flags != DBT_INVALIDPARAM) && - ((flags & DBT_NFM_SpecialEntity) == 0); -} - -STDMETHODIMP_(LONG) CDataBase::GetContactCount(void) -{ - TDBTEntityIterFilter f = {0,0,0,0}; - f.cbSize = sizeof(f); - f.fDontHasFlags = DBT_NF_IsGroup | DBT_NF_IsVirtual | DBT_NF_IsAccount | DBT_NF_IsRoot; - f.Options = DBT_NIFO_OSC_AC | DBT_NIFO_OC_AC; - - TDBTEntityIterationHandle hiter = DBEntityIterInit((WPARAM)&f, getEntities().getRootEntity()); - int c = 0; - if ((hiter != 0) && (hiter != DBT_INVALIDPARAM)) - { - TDBTEntityHandle con = DBEntityIterNext(hiter, 0); - - while ((con != DBT_INVALIDPARAM) && (con != 0)) - { - if ((con != 0) && (con != DBT_INVALIDPARAM)) - c++; - - con = DBEntityIterNext(hiter, 0); - } - DBEntityIterClose(hiter, 0); - } - return c; -} - -STDMETHODIMP_(MCONTACT) CDataBase::FindFirstContact(const char* szProto) -{ - DBCachedContact *cc = m_cache->GetFirstContact(); - if (cc == NULL) - return NULL; - - if (!szProto || CheckProto(cc, szProto)) - return cc->contactID; - - return FindNextContact(cc->contactID, szProto); -} - -STDMETHODIMP_(MCONTACT) CDataBase::FindNextContact(MCONTACT contactID, const char* szProto) -{ - while (contactID) { - DBCachedContact *cc = m_cache->GetNextContact(contactID); - if (cc == NULL) - break; - - if (!szProto || CheckProto(cc, szProto)) - return cc->contactID; - - contactID = cc->contactID; - continue; - } - - return NULL; -} - -///////////////////////////////////////////////////////////////////////////////////////// - -static bool isEncrypted(LPCSTR szModule, LPCSTR szSetting) -{ - if (!_strnicmp(szSetting, "password", 8)) return true; - if (!strcmp(szSetting, "NLProxyAuthPassword")) return true; - if (!strcmp(szSetting, "LNPassword")) return true; - if (!strcmp(szSetting, "FileProxyPassword")) return true; - if (!strcmp(szSetting, "TokenSecret")) return true; - - if (!strcmp(szModule, "SecureIM")) { - if (!strcmp(szSetting, "pgp")) return true; - if (!strcmp(szSetting, "pgpPrivKey")) return true; - } - return false; -} - -//VERY VERY VERY BASIC ENCRYPTION FUNCTION - -static void Encrypt(char *msg, BOOL up) -{ - int jump = (up) ? 5 : -5; - for (int i = 0; msg[i]; i++) - msg[i] = msg[i] + jump; -} - -__forceinline void EncodeString(LPSTR buf) -{ - Encrypt(buf, TRUE); -} - -__forceinline void DecodeString(LPSTR buf) -{ - Encrypt(buf, FALSE); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -STDMETHODIMP_(BOOL) CDataBase::GetContactSetting(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv) -{ - dbv->type = 0; - - char namebuf[512]; - namebuf[0] = 0; - - if (!(szModule || szSetting)) - return -1; - - if (szModule) - strcpy_s(namebuf, szModule); - strcat_s(namebuf, "/"); - if (szSetting) - strcat_s(namebuf, szSetting); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - TDBTSetting set = {0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - desc.pszSettingName = namebuf; - - set.cbSize = sizeof(set); - set.Descriptor = &desc; - - if (DBSettingRead(reinterpret_cast(&set), 0) == DBT_INVALIDPARAM) - return -1; - - switch (set.Type) { - case DBT_ST_ANSI: - dbv->type = DBVT_ASCIIZ; - dbv->pszVal = set.Value.pAnsi; - dbv->cchVal = set.Value.Length - 1; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - break; - case DBT_ST_UTF8: - if (isEncrypted(szModule, szSetting)) - DecodeString(set.Value.pUTF8); - dbv->type = DBVT_WCHAR; - dbv->pwszVal = mir_utf8decodeW(set.Value.pUTF8); - if (dbv->pwszVal) - dbv->cchVal = static_cast(wcslen(dbv->pwszVal)); - else - dbv->cchVal = 0; - mir_free(set.Value.pUTF8); - break; - case DBT_ST_WCHAR: - dbv->type = DBVT_WCHAR; - dbv->pwszVal = set.Value.pWide; - dbv->cchVal = set.Value.Length - 1; - break; - case DBT_ST_BLOB: - dbv->type = DBVT_BLOB; - dbv->pbVal = set.Value.pBlob; - dbv->cpbVal = set.Value.Length; - break; - case DBT_ST_BOOL: - dbv->type = DBVT_BYTE; - dbv->bVal = (uint8_t)set.Value.Bool; - break; - case DBT_ST_BYTE: case DBT_ST_CHAR: - dbv->type = DBVT_BYTE; - dbv->bVal = set.Value.Byte; - break; - case DBT_ST_SHORT: case DBT_ST_WORD: - dbv->type = DBVT_WORD; - dbv->wVal = set.Value.Word; - break; - case DBT_ST_INT: case DBT_ST_DWORD: - dbv->type = DBVT_DWORD; - dbv->dVal = set.Value.DWord; - break; - case DBT_ST_INT64: case DBT_ST_QWORD: - case DBT_ST_DOUBLE: case DBT_ST_FLOAT: - dbv->type = DBVT_BLOB; - dbv->cpbVal = sizeof(set.Value); - dbv->pbVal = reinterpret_cast(mir_alloc(sizeof(set.Value))); - memcpy(dbv->pbVal, &set.Value, sizeof(set.Value)); - break; - - default: - return -1; - } - - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::GetContactSettingStr(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv) -{ - if ((dbv->type & DBVTF_VARIABLELENGTH) == 0) - { - FreeVariant(dbv); - dbv->type = 0; - } - - char namebuf[512]; - namebuf[0] = 0; - if (szModule) - strcpy_s(namebuf, szModule); - strcat_s(namebuf, "/"); - if (szSetting) - strcat_s(namebuf, szSetting); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - TDBTSetting set = {0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - desc.pszSettingName = namebuf; - - set.cbSize = sizeof(set); - set.Descriptor = &desc; - - switch (dbv->type) { - case DBVT_ASCIIZ: set.Type = DBT_ST_ANSI; break; - case DBVT_BLOB: set.Type = DBT_ST_BLOB; break; - case DBVT_UTF8: set.Type = DBT_ST_UTF8; break; - case DBVT_WCHAR: set.Type = DBT_ST_WCHAR; break; - } - - if (DBSettingRead(reinterpret_cast(&set), 0) == DBT_INVALIDPARAM) - return -1; - - switch (set.Type) { - case DBT_ST_ANSI: - dbv->type = DBVT_ASCIIZ; - dbv->pszVal = set.Value.pAnsi; - dbv->cchVal = set.Value.Length - 1; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - break; - case DBT_ST_UTF8: - dbv->type = DBVT_UTF8; - dbv->pszVal = set.Value.pUTF8; - dbv->cchVal = set.Value.Length - 1; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - break; - case DBT_ST_WCHAR: - if (dbv->type == DBVT_WCHAR) { - dbv->pwszVal = set.Value.pWide; - dbv->cchVal = set.Value.Length - 1; - } - else { - dbv->type = DBVT_UTF8; - dbv->pszVal = mir_utf8encodeW(set.Value.pWide); - dbv->cchVal = static_cast(strlen(dbv->pszVal)); - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - mir_free(set.Value.pWide); - } - break; - case DBT_ST_BLOB: - dbv->type = DBVT_BLOB; - dbv->pbVal = set.Value.pBlob; - dbv->cpbVal = set.Value.Length; - break; - case DBT_ST_BOOL: - dbv->type = DBVT_BYTE; - dbv->bVal = (uint8_t)set.Value.Bool; - break; - case DBT_ST_BYTE: case DBT_ST_CHAR: - dbv->type = DBVT_BYTE; - dbv->bVal = set.Value.Byte; - break; - case DBT_ST_SHORT: case DBT_ST_WORD: - dbv->type = DBVT_WORD; - dbv->wVal = set.Value.Word; - break; - case DBT_ST_INT: case DBT_ST_DWORD: - dbv->type = DBVT_DWORD; - dbv->dVal = set.Value.DWord; - break; - case DBT_ST_INT64: case DBT_ST_QWORD: - case DBT_ST_DOUBLE: case DBT_ST_FLOAT: - dbv->type = DBVT_BLOB; - dbv->cpbVal = sizeof(set.Value); - dbv->pbVal = reinterpret_cast(mir_alloc(sizeof(set.Value))); - memcpy(dbv->pbVal, &set.Value, sizeof(set.Value)); - break; - default: - return -1; - } - - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::GetContactSettingStatic(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv) -{ - char namebuf[512]; - namebuf[0] = 0; - if (szModule) - strcpy_s(namebuf, szModule); - strcat_s(namebuf, "/"); - if (szSetting) - strcat_s(namebuf, szSetting); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - TDBTSetting set = {0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - desc.pszSettingName = namebuf; - - set.cbSize = sizeof(set); - set.Descriptor = &desc; - - if (DBSettingRead(reinterpret_cast(&set), 0) == DBT_INVALIDPARAM) - return -1; - - if ((set.Type & DBT_STF_VariableLength) ^ (dbv->type & DBVTF_VARIABLELENGTH)) - { - if (set.Type & DBT_STF_VariableLength) - mir_free(set.Value.pBlob); - return -1; - } - - switch (set.Type) { - case DBT_ST_ANSI: - if (dbv->cchVal < set.Value.Length) { - memcpy(dbv->pszVal, set.Value.pAnsi, dbv->cchVal); - dbv->pszVal[dbv->cchVal - 1] = 0; - } - else memcpy(dbv->pszVal, set.Value.pAnsi, set.Value.Length); - - dbv->type = DBVT_ASCIIZ; - dbv->cchVal = set.Value.Length - 1; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - - mir_free(set.Value.pAnsi); - break; - case DBT_ST_UTF8: - set.Value.pUTF8 = mir_utf8decode(set.Value.pUTF8, NULL); - set.Value.Length = static_cast(strlen(set.Value.pUTF8)); - - if (dbv->cchVal < set.Value.Length) { - memcpy(dbv->pszVal, set.Value.pUTF8, dbv->cchVal); - dbv->pszVal[dbv->cchVal - 1] = 0; - } - else memcpy(dbv->pszVal, set.Value.pUTF8, set.Value.Length); - - dbv->type = DBVT_ASCIIZ; - dbv->cchVal = set.Value.Length - 1; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - - mir_free(set.Value.pUTF8); - break; - case DBT_ST_WCHAR: - { - char *tmp = mir_u2a(set.Value.pWide); - WORD l = static_cast(strlen(tmp)); - mir_free(set.Value.pWide); - - if (dbv->cchVal < l + 1) { - memcpy(dbv->pszVal, tmp, dbv->cchVal); - dbv->pszVal[l] = 0; - } - else memcpy(dbv->pszVal, tmp, l + 1); - - dbv->type = DBVT_ASCIIZ; - dbv->cchVal = l; - if (isEncrypted(szModule, szSetting)) - DecodeString(dbv->pszVal); - - mir_free(tmp); - } - break; - case DBT_ST_BLOB: - if (dbv->cchVal < set.Value.Length) - memcpy(dbv->pbVal, set.Value.pBlob, dbv->cchVal); - else - memcpy(dbv->pbVal, set.Value.pBlob, set.Value.Length); - - dbv->type = DBVT_BLOB; - dbv->cchVal = set.Value.Length; - mir_free(set.Value.pBlob); - break; - case DBT_ST_BOOL: - dbv->type = DBVT_BYTE; - dbv->bVal = set.Value.Bool ? TRUE : FALSE; - break; - case DBT_ST_BYTE: case DBT_ST_CHAR: - dbv->type = DBVT_BYTE; - dbv->bVal = set.Value.Byte; - break; - case DBT_ST_SHORT: case DBT_ST_WORD: - dbv->type = DBVT_WORD; - dbv->wVal = set.Value.Word; - break; - case DBT_ST_INT: case DBT_ST_DWORD: - dbv->type = DBVT_DWORD; - dbv->dVal = set.Value.DWord; - break; - default: - return -1; - } - - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::FreeVariant(DBVARIANT *dbv) -{ - if (dbv->type == DBVT_BLOB && dbv->pbVal) { - mir_free(dbv->pbVal); - dbv->pbVal = 0; - } - else if ((dbv->type & DBVTF_VARIABLELENGTH) && (dbv->pszVal)) { - mir_free(dbv->pszVal); - dbv->pszVal = NULL; - } - dbv->type = 0; - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::WriteContactSetting(MCONTACT contactID, DBCONTACTWRITESETTING *dbcws) -{ - char namebuf[512]; - namebuf[0] = 0; - if (dbcws->szModule) - strcpy_s(namebuf, dbcws->szModule); - strcat_s(namebuf, "/"); - if (dbcws->szSetting) - strcat_s(namebuf, dbcws->szSetting); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - TDBTSetting set = {0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - desc.pszSettingName = namebuf; - - set.cbSize = sizeof(set); - set.Descriptor = &desc; - - switch (dbcws->value.type) { - case DBVT_ASCIIZ: - set.Type = DBT_ST_ANSI; - set.Value.pAnsi = dbcws->value.pszVal; - if (isEncrypted(dbcws->szModule, dbcws->szSetting)) - EncodeString(dbcws->value.pszVal); - break; - case DBVT_UTF8: - if (isEncrypted(dbcws->szModule, dbcws->szSetting)) - EncodeString(dbcws->value.pszVal); - { - wchar_t * tmp = mir_utf8decodeW(dbcws->value.pszVal); - if (tmp == 0) { - if (IsDebuggerPresent()) - { - DebugBreak(); -#ifdef _DEBUG - } - else { - LOG(logWARNING, _T("Trying to write malformed UTF8 setting \"%hs\" in module \"%hs\""), dbcws->szSetting, dbcws->szModule); - CLogger::Instance().ShowMessage(); -#endif - } - return -1; - } - else mir_free(tmp); - } - - set.Type = DBT_ST_UTF8; - set.Value.pUTF8 = dbcws->value.pszVal; - break; - case DBVT_WCHAR: - set.Type = DBT_ST_WCHAR; - set.Value.pWide = dbcws->value.pwszVal; - break; - case DBVT_BLOB: - set.Type = DBT_ST_BLOB; - set.Value.pBlob = dbcws->value.pbVal; - set.Value.Length = dbcws->value.cpbVal; - break; - case DBVT_BYTE: - set.Type = DBT_ST_BYTE; - set.Value.Byte = dbcws->value.bVal; - break; - case DBVT_WORD: - set.Type = DBT_ST_WORD; - set.Value.Word = dbcws->value.wVal; - break; - case DBVT_DWORD: - set.Type = DBT_ST_DWORD; - set.Value.DWord = dbcws->value.dVal; - break; - default: - return -1; - } - - if (DBSettingWrite(reinterpret_cast(&set), 0) == DBT_INVALIDPARAM) - return -1; - - if (dbcws->value.type == DBVT_WCHAR) { - dbcws->value.type = DBVT_UTF8; - wchar_t * tmp = dbcws->value.pwszVal; - dbcws->value.pszVal = mir_utf8encodeW(dbcws->value.pwszVal); - NotifyEventHooks(hSettingChangeEvent, contactID, (LPARAM)dbcws); - mir_free(dbcws->value.pszVal); - dbcws->value.type = DBVT_WCHAR; - dbcws->value.pwszVal = tmp; - } - else NotifyEventHooks(hSettingChangeEvent, contactID, (LPARAM)dbcws); - - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::DeleteContactSetting(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting) -{ - char namebuf[512]; - namebuf[0] = 0; - if (szModule) - strcpy_s(namebuf, szModule); - strcat_s(namebuf, "/"); - if (szSetting) - strcat_s(namebuf, szSetting); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - desc.pszSettingName = namebuf; - - if (DBSettingDelete(reinterpret_cast(&desc), 0) == DBT_INVALIDPARAM) - return -1; - - { - DBCONTACTWRITESETTING tmp = {0,0,0,0}; - tmp.szModule = szModule; - tmp.szSetting = szSetting; - tmp.value.type = 0; - NotifyEventHooks(hSettingChangeEvent, contactID, (LPARAM)&tmp); - } - - return 0; -} - -STDMETHODIMP_(BOOL) CDataBase::EnumContactSettings(MCONTACT contactID, DBCONTACTENUMSETTINGS* pces) -{ - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.Entity = contactID; - - char namebuf[512]; - namebuf[0] = 0; - if (pces->szModule) - strcpy_s(namebuf, pces->szModule); - strcat_s(namebuf, "/"); - - TDBTSettingIterFilter filter = {0,0,0,0,0,0,0,0}; - filter.cbSize = sizeof(filter); - filter.Descriptor = &desc; - filter.hEntity = (WPARAM)contactID; - filter.NameStart = namebuf; - - TDBTSettingIterationHandle hiter = DBSettingIterInit(reinterpret_cast(&filter), 0); - if ((hiter == 0) || (hiter == DBT_INVALIDPARAM)) - return -1; - - int res = 0; - TDBTSettingHandle hset = DBSettingIterNext(hiter, 0); - while (hset != 0) - { - char * p = strchr(desc.pszSettingName, '/'); - if (p) { - ++p; - } else { - p = desc.pszSettingName; - } - - res = pces->pfnEnumProc(p, pces->lParam); - if (res == 0) - { - hset = DBSettingIterNext(hiter, 0); - } else { - hset = 0; - } - } - - DBSettingIterClose(hiter, 0); - - if (desc.pszSettingName) - mir_free(desc.pszSettingName); - - return res; -} - -STDMETHODIMP_(LONG) CDataBase::GetEventCount(MCONTACT contactID) -{ - if (contactID == 0) - contactID = getEntities().getRootEntity(); - - return DBEventGetCount(contactID, 0); -} - -STDMETHODIMP_(HANDLE) CDataBase::AddEvent(MCONTACT contactID, DBEVENTINFO *dbei) -{ - if (dbei->cbSize < sizeof(DBEVENTINFO)) - return (HANDLE)-1; - - int tmp = NotifyEventHooks(hEventFilterAddedEvent, contactID, (LPARAM)dbei); - if (tmp != 0) - return (HANDLE)tmp; - - if (contactID == 0) - contactID = getEntities().getRootEntity(); - - TDBTEvent ev = {0,0,0,0,0,0,0}; - ev.cbSize = sizeof(ev); - ev.ModuleName = dbei->szModule; - ev.Timestamp = dbei->timestamp; - ev.Flags = dbei->flags; - if (ev.Flags & DBEF_SENT) - ev.Flags = ev.Flags | DBEF_READ; - ev.EventType = dbei->eventType; - ev.cbBlob = dbei->cbBlob; - ev.pBlob = dbei->pBlob; - - int res = DBEventAdd(contactID, reinterpret_cast(&ev)); - if (res != DBT_INVALIDPARAM) - { - NotifyEventHooks(hEventAddedEvent, contactID, res); - return (HANDLE)res; - } - return NULL; -} - -STDMETHODIMP_(BOOL) CDataBase::DeleteEvent(MCONTACT contactID, HANDLE hDbEvent) -{ - int res = NotifyEventHooks(hEventDeletedEvent, contactID, (WPARAM)hDbEvent); - - if (contactID == 0) - contactID = getEntities().getRootEntity(); - - if (res == 0) - return DBEventDelete((WPARAM)hDbEvent, 0); - - return res; -} - -STDMETHODIMP_(LONG) CDataBase::GetBlobSize(HANDLE hDbEvent) -{ - int res = DBEventGetBlobSize((WPARAM)hDbEvent, 0); - if (res == DBT_INVALIDPARAM) - return -1; - - return res; -} - -STDMETHODIMP_(BOOL) CDataBase::GetEvent(HANDLE hDbEvent, DBEVENTINFO *dbei) -{ - if (dbei->cbSize < sizeof(DBEVENTINFO)) - return -1; - - TDBTEvent ev = {0,0,0,0,0,0,0}; - ev.cbSize = sizeof(ev); - ev.cbBlob = 0; - ev.pBlob = NULL; - - int res = DBEventGet((WPARAM)hDbEvent, reinterpret_cast(&ev)); - - dbei->szModule = ev.ModuleName; - dbei->timestamp = ev.Timestamp; - dbei->flags = ev.Flags; - if (dbei->flags & DBEF_SENT) - dbei->flags = dbei->flags & ~DBEF_READ; - dbei->eventType = ev.EventType; - - if (dbei->cbBlob && dbei->pBlob) - { - if (dbei->cbBlob >= ev.cbBlob) - memcpy(dbei->pBlob, ev.pBlob, ev.cbBlob); - else - memcpy(dbei->pBlob, ev.pBlob, dbei->cbBlob); - } - mir_free(ev.pBlob); - dbei->cbBlob = ev.cbBlob; - - if (res == DBT_INVALIDPARAM) - return 1; - - return res; -} - -STDMETHODIMP_(BOOL) CDataBase::MarkEventRead(MCONTACT contactID, HANDLE hDbEvent) -{ - int res = DBEventMarkRead((WPARAM)hDbEvent, 0); - if ((res != DBT_INVALIDPARAM) && (res & DBEF_SENT)) - res = res & ~DBEF_READ; - return res; -} - -STDMETHODIMP_(MCONTACT) CDataBase::GetEventContact(HANDLE hDbEvent) -{ - TDBTEntityHandle res = DBEventGetEntity((WPARAM)hDbEvent, 0); - if (res == getEntities().getRootEntity()) - res = 0; - - return res; -} - -STDMETHODIMP_(HANDLE) CDataBase::FindFirstEvent(MCONTACT contactID) -{ - if (contactID == 0) - contactID = getEntities().getRootEntity(); - - return (HANDLE)getEvents().compFirstEvent(contactID); -} - -STDMETHODIMP_(HANDLE) CDataBase::FindFirstUnreadEvent(MCONTACT contactID) -{ - if (contactID == 0) - contactID = getEntities().getRootEntity(); - return (HANDLE)getEvents().compFirstUnreadEvent(contactID); -} - -STDMETHODIMP_(HANDLE) CDataBase::FindLastEvent(MCONTACT contactID) -{ - if (contactID == 0) - contactID = getEntities().getRootEntity(); - return (HANDLE)getEvents().compLastEvent(contactID); -} - -STDMETHODIMP_(HANDLE) CDataBase::FindNextEvent(HANDLE hDbEvent) -{ - return (HANDLE)getEvents().compNextEvent((WPARAM)hDbEvent); -} - -STDMETHODIMP_(HANDLE) CDataBase::FindPrevEvent(HANDLE hDbEvent) -{ - return (HANDLE)getEvents().compPrevEvent((WPARAM)hDbEvent); -} - -STDMETHODIMP_(BOOL) CDataBase::EnumModuleNames(DBMODULEENUMPROC pCallback, void *pParam) -{ - if (!pCallback) - return -1; - - return getSettings().CompEnumModules(pCallback, (WPARAM)pParam); -} - -STDMETHODIMP_(BOOL) CDataBase::SetSettingResident(BOOL bIsResident, const char *pszSettingName) -{ - return FALSE; -} - -STDMETHODIMP_(BOOL) CDataBase::EnumResidentSettings(DBMODULEENUMPROC pFunc, void *pParam) -{ - return FALSE; -} - -STDMETHODIMP_(void) CDataBase::SetCacheSafetyMode(BOOL) {} - - -STDMETHODIMP_(BOOL) CDataBase::IsSettingEncrypted(LPCSTR szModule, LPCSTR szSetting) -{ - return FALSE; -} - -bool CompatibilityRegister() -{ - hEventDeletedEvent = CreateHookableEvent(ME_DB_EVENT_DELETED); - hEventAddedEvent = CreateHookableEvent(ME_DB_EVENT_ADDED); - hEventFilterAddedEvent = CreateHookableEvent(ME_DB_EVENT_FILTER_ADD); - hSettingChangeEvent = CreateHookableEvent(ME_DB_CONTACT_SETTINGCHANGED); - hContactDeletedEvent = CreateHookableEvent(ME_DB_CONTACT_DELETED); - hContactAddedEvent = CreateHookableEvent(ME_DB_CONTACT_ADDED); - return true; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Compatibility.h b/plugins/!Deprecated/Dbx_tree/src/Compatibility.h deleted file mode 100644 index 3b33980dad..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Compatibility.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include "Interface.h" -#include "DataBase.h" - -bool CompatibilityRegister(); - diff --git a/plugins/!Deprecated/Dbx_tree/src/DataBase.cpp b/plugins/!Deprecated/Dbx_tree/src/DataBase.cpp deleted file mode 100644 index 465ceae643..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DataBase.cpp +++ /dev/null @@ -1,372 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "DataBase.h" -#include "newpluginapi.h" -#include "Logger.h" - -CDataBase *gDataBase = NULL; - -CDataBase::CDataBase(const TCHAR *FileName) -{ - InitDbInstance(this); - //RegisterServices(); - - size_t len = _tcslen(FileName); - m_FileName[0] = new TCHAR[len + 1]; - _tcsncpy_s(m_FileName[0], len + 1, FileName, len); - m_FileName[0][len] = 0; - - TCHAR * tmp = _tcsrchr(m_FileName[0], '.'); - if (tmp) - { - m_FileName[1] = new TCHAR[len + 1]; - _tcsncpy_s(m_FileName[1], len + 1, m_FileName[0], tmp - m_FileName[0]); - _tcscat_s(m_FileName[1], len + 1, _T(".pri")); - } else { - m_FileName[1] = new TCHAR[len + 5]; - _tcscpy_s(m_FileName[1], len + 5, m_FileName[0]); - _tcscat_s(m_FileName[1], len + 5, _T(".pri")); - } - - m_Opened = false; - - for (int i = 0; i < DBFileMax; ++i) - { - m_BlockManager[i] = NULL; - m_FileAccess[i] = NULL; - m_EncryptionManager[i] = NULL; - m_HeaderBlock[i] = 0; - } - - m_Entities = NULL; - m_Settings = NULL; - m_Events = NULL; - -} -CDataBase::~CDataBase() -{ - delete m_Events; - delete m_Settings; - delete m_Entities; - - m_Entities = NULL; - m_Settings = NULL; - m_Events = NULL; - - for (int i = DBFileMax - 1; i >= 0; --i) - { - delete m_BlockManager[i]; - delete m_FileAccess[i]; - delete m_EncryptionManager[i]; - - m_BlockManager[i] = NULL; - m_FileAccess[i] = NULL; - m_EncryptionManager[i] = NULL; - - delete [] (m_FileName[i]); - } - DestroyDbInstance(this); -} - -int CDataBase::CreateDB() -{ - /// TODO: create and show wizard - if (!CreateNewFile(DBFileSetting) || - !CreateNewFile(DBFilePrivate)) - return EMKPRF_CREATEFAILED; - - return 0; -} - - -int CDataBase::CheckFile(TDBFileType Index) -{ - TGenericFileHeader h; - memset(&h, 0, sizeof(h)); - DWORD r = 0; - HANDLE htmp = CreateFile(m_FileName[Index], GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL); - if (htmp != INVALID_HANDLE_VALUE) - { - SetFilePointer(htmp, 0, NULL, FILE_BEGIN); - if (ReadFile(htmp, &h, sizeof(h), &r, NULL)) - { - if (0 != memcmp(h.Gen.Signature, cFileSignature[Index], sizeof(cFileSignature[Index]))) - { - CloseHandle(htmp); - return EGROKPRF_UNKHEADER; - } - - if (cDBVersion < h.Gen.Version) - { - CloseHandle(htmp); - return EGROKPRF_VERNEWER; - } - - CloseHandle(htmp); - return EGROKPRF_NOERROR; - } - CloseHandle(htmp); - } - - return EGROKPRF_CANTREAD; -} - -int CDataBase::CheckDB() -{ - int res = CheckFile(DBFileSetting); - - if (res != EGROKPRF_NOERROR) - return res; - - if (PrivateFileExists()) - res = CheckFile(DBFilePrivate); - - return res; -} - -int CDataBase::LoadFile(TDBFileType Index) -{ - TGenericFileHeader h; - m_EncryptionManager[Index] = new CEncryptionManager; - - m_FileAccess[Index] = new CMappedMemory(m_FileName[Index]); - - m_FileAccess[Index]->Read(&h, 0, sizeof(h)); - m_EncryptionManager[Index]->InitEncryption(h.Gen.FileEncryption); - - m_FileAccess[Index]->Size(h.Gen.FileSize); - m_FileAccess[Index]->sigFileSizeChanged().connect(this, &CDataBase::onFileSizeChanged); - - m_BlockManager[Index] = new CBlockManager(*m_FileAccess[Index], *m_EncryptionManager[Index]); - - CBlockManager::WriteTransaction trans(*m_BlockManager[Index]); // don't fire size event until header is loaded - - m_HeaderBlock[Index] = m_BlockManager[Index]->ScanFile(sizeof(h), cHeaderBlockSignature, h.Gen.FileSize); - - if (m_HeaderBlock[Index] == 0) - { - LOG(logCRITICAL, _T("Header Block not found! File damaged: \"%s\""), m_FileName[Index]); - return -1; - } - - uint32_t size = sizeof(h); - uint32_t sig = -1; - m_Header[Index] = m_BlockManager[Index]->ReadBlock(0, size, sig); - - sig = cHeaderBlockSignature; - TGenericFileHeader * buf = m_BlockManager[Index]->ReadBlock(m_HeaderBlock[Index], size, sig); - if (!buf) - { - LOG(logCRITICAL, _T("Header Block cannot be read! File damaged: \"%s\""), m_FileName[Index]); - return -1; - } - - buf->Gen.Obscure = 0; - - if (memcmp(m_Header[Index], buf, size)) - { - LOG(logCRITICAL, _T("Header Block in \"%s\" damaged!"), m_FileName[Index]); - return -1; - } - - return 0; -} - -int CDataBase::OpenDB() -{ - if (!PrivateFileExists()) - { - // TODO WIZARD - if (!CreateNewFile(DBFilePrivate)) - return -1; - } - - int res = LoadFile(DBFileSetting); - if ((res != 0) && (CLogger::logERROR <= CLogger::Instance().ShowMessage())) - { - return res; - } - - res = LoadFile(DBFilePrivate); - - if ((res != 0) && (CLogger::logERROR <= CLogger::Instance().ShowMessage())) - { - return res; - } - if (CLogger::logERROR <= CLogger::Instance().ShowMessage()) - return -1; - - m_Entities = new CEntities(*m_BlockManager[DBFilePrivate], - m_Header[DBFilePrivate]->Pri.RootEntity, - m_Header[DBFilePrivate]->Pri.Entities, - m_Header[DBFilePrivate]->Pri.Virtuals); - - m_Entities->sigRootChanged().connect(this, &CDataBase::onEntitiesRootChanged); - m_Entities->sigVirtualRootChanged().connect(this, &CDataBase::onVirtualsRootChanged); - - if (m_Entities->getRootEntity() != m_Header[DBFilePrivate]->Pri.RootEntity) - { - m_Header[DBFilePrivate]->Pri.RootEntity = m_Entities->getRootEntity(); - ReWriteHeader(DBFilePrivate); - } - - m_Settings = new CSettings(*m_BlockManager[DBFileSetting], - *m_BlockManager[DBFilePrivate], - m_Header[DBFileSetting]->Set.Settings, - *m_Entities); - - m_Settings->sigRootChanged().connect(this, &CDataBase::onSettingsRootChanged); - - m_Events = new CEvents(*m_BlockManager[DBFilePrivate], - *m_EncryptionManager[DBFilePrivate], - *m_Entities, - *m_Settings); - - for (MCONTACT id = m_Entities->compFirstContact(); id != 0; id = m_Entities->compNextContact(id)) { - DBCachedContact *cc = m_cache->AddContactToCache(id); - CheckProto(cc, ""); - } - - return 0; -} - -bool CDataBase::PrivateFileExists() -{ - HANDLE htmp = CreateFile(m_FileName[DBFilePrivate], GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL); - if (htmp != INVALID_HANDLE_VALUE) - { - CloseHandle(htmp); - return true; - } - - return false; -} - - -bool CDataBase::CreateNewFile(TDBFileType File) -{ - CEncryptionManager enc; - CDirectAccess fa(m_FileName[File]); - fa.Size(sizeof(TGenericFileHeader)); - CBlockManager bm(fa, enc); - bm.ScanFile(sizeof(TGenericFileHeader), 0, sizeof(TGenericFileHeader)); - - CBlockManager::WriteTransaction trans(bm); - - uint32_t block; - TGenericFileHeader * buf = bm.CreateBlock(block, cHeaderBlockSignature); - uint32_t size = 0; - uint32_t sig = -1; - TGenericFileHeader * h = bm.ReadBlock(0, size, sig); - - memset(h, 0, sizeof(TGenericFileHeader)); - memcpy(&h->Gen.Signature, &cFileSignature[File], sizeof(h->Gen.Signature)); - h->Gen.Version = cDBVersion; - h->Gen.FileSize = fa.Size(); - - memcpy(buf, h, sizeof(TGenericFileHeader)); - bm.UpdateBlock(block, 0); - bm.UpdateBlock(0, -1); - - return true; -} - -inline void CDataBase::ReWriteHeader(TDBFileType Index) -{ - m_BlockManager[Index]->UpdateBlock(0, -1); - uint32_t size = 0, sig = 0; - TGenericFileHeader * h = m_BlockManager[Index]->ReadBlock(m_HeaderBlock[Index], size, sig); - - *h = *m_Header[Index]; - h->Gen.Obscure = GetTickCount(); - m_BlockManager[Index]->UpdateBlock(m_HeaderBlock[Index], 0); -} - - -void CDataBase::onSettingsRootChanged(CSettings* Settings, CSettingsTree::TNodeRef NewRoot) -{ - m_Header[DBFileSetting]->Set.Settings = NewRoot; - ReWriteHeader(DBFileSetting); -} -void CDataBase::onVirtualsRootChanged(void* Virtuals, CVirtuals::TNodeRef NewRoot) -{ - m_Header[DBFilePrivate]->Pri.Virtuals = NewRoot; - ReWriteHeader(DBFilePrivate); -} -void CDataBase::onEntitiesRootChanged(void* Entities, CEntities::TNodeRef NewRoot) -{ - m_Header[DBFilePrivate]->Pri.Entities = NewRoot; - ReWriteHeader(DBFilePrivate); -} -void CDataBase::onFileSizeChanged(CFileAccess * File, uint32_t Size) -{ - if (File == m_FileAccess[DBFileSetting]) - { - m_Header[DBFileSetting]->Gen.FileSize = Size; - ReWriteHeader(DBFileSetting); - } else { - m_Header[DBFilePrivate]->Gen.FileSize = Size; - ReWriteHeader(DBFilePrivate); - } -} - -int CDataBase::getProfileName(int BufferSize, char * Buffer) -{ - TCHAR * slash = _tcsrchr(m_FileName[DBFileSetting], '\\'); - if (slash) - slash++; - else - slash = m_FileName[DBFileSetting]; - - int l = static_cast(_tcslen(slash)); - if (BufferSize < l + 1) - return -1; - - char * tmp = mir_t2a(slash); - strcpy_s(Buffer, BufferSize, tmp); - mir_free(tmp); - - return 0; -} -int CDataBase::getProfilePath(int BufferSize, char * Buffer) -{ - TCHAR * slash = _tcsrchr(m_FileName[DBFileSetting], '\\'); - if (!slash) - return -1; - - int l = slash - m_FileName[DBFileSetting]; - - if (BufferSize < l + 1) - { - return -1; - } - - *slash = 0; - char * tmp = mir_t2a(m_FileName[DBFileSetting]); - strcpy_s(Buffer, BufferSize, tmp); - mir_free(tmp); - *slash = '\\'; - - return 0; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/DataBase.h b/plugins/!Deprecated/Dbx_tree/src/DataBase.h deleted file mode 100644 index 6f3cc07b6e..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DataBase.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "MREWSync.h" - -#include "Events.h" -#include "Settings.h" -#include "Entities.h" - -#include "FileAccess.h" -#include "MappedMemory.h" -#include "DirectAccess.h" -#include "Blockmanager.h" - -#include "sigslot.h" - -#include "EncryptionManager.h" - -typedef enum TDBFileType { - DBFileSetting = 0, - DBFilePrivate = 1, - DBFileMax = 2 -} TDBFileType; - -static const uint8_t cFileSignature[DBFileMax][20] = {"Miranda IM Settings", "Miranda IM DataTree"}; -static const uint32_t cDBVersion = 0x00000001; - -static const uint32_t cHeaderBlockSignature = 0x7265491E; - -#pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - -typedef struct TSettingsHeader { - uint8_t Signature[20]; /// signature must be cSettingsHeader - uint32_t Version; /// internal DB version cDataBaseVersion - uint32_t Obscure; - TFileEncryption FileEncryption; /// Encryption Method - uint32_t FileStructureBlock; /// Offset of CBlockManager master block - uint32_t FileSize; /// Offset to the last used byte + 1 - uint32_t Settings; /// Offset to the SettingsBTree RootNode - uint8_t Reserved[256 - sizeof(TFileEncryption) - 20 - 5*sizeof(uint32_t)]; /// reserved storage -} TSettingsHeader; - -typedef struct TPrivateHeader { - uint8_t Signature[20]; /// signature must be CDataHeader - uint32_t Version; /// internal DB version cDataBaseVersion - uint32_t Obscure; - TFileEncryption FileEncryption; /// Encryption Method - uint32_t FileStructureBlock; /// Offset of CBlockManager master block - uint32_t FileSize; /// Offset to the last used byte + 1 - uint32_t RootEntity; /// Offset to the Root CList Entity - uint32_t Entities; /// Offset to the EntityBTree RootNode - uint32_t Virtuals; /// Offset to the VirtualsBTree RootNode - uint8_t Reserved[256 - sizeof(TFileEncryption) - 20 - 7*sizeof(uint32_t)]; /// reserved storage -} TPrivateHeader; - - -typedef union TGenericFileHeader { - struct { - uint8_t Signature[20]; /// signature must be cSettingsHeader - uint32_t Version; /// internal DB version cDataBaseVersion - uint32_t Obscure; - TFileEncryption FileEncryption; /// Encryption Method - uint32_t FileStructureBlock; /// Offset of CBlockManager master block - uint32_t FileSize; /// Offset to the last used byte + 1 - uint8_t Reserved[256 - sizeof(TFileEncryption) - 20 - 4*sizeof(uint32_t)]; /// reserved storage - } Gen; - TSettingsHeader Set; - TPrivateHeader Pri; -} TGenericFileHeader; - -#pragma pack(pop) - -class CDataBase : public sigslot::has_slots<>, public MIDatabase -{ -private: - TCHAR* m_FileName[DBFileMax]; - bool m_Opened; - - CBlockManager *m_BlockManager[DBFileMax]; - CFileAccess *m_FileAccess[DBFileMax]; - TGenericFileHeader * m_Header[DBFileMax]; - CEncryptionManager *m_EncryptionManager[DBFileMax]; - - uint32_t m_HeaderBlock[DBFileMax]; - - void onSettingsRootChanged(CSettings* Settings, CSettingsTree::TNodeRef NewRoot); - void onVirtualsRootChanged(void* Virtuals, CVirtuals::TNodeRef NewRoot); - void onEntitiesRootChanged(void* Entities, CEntities::TNodeRef NewRoot); - void onFileSizeChanged(CFileAccess * File, uint32_t Size); - - bool PrivateFileExists(); - bool CreateNewFile(TDBFileType File); - - int CheckFile(TDBFileType Index); - int LoadFile(TDBFileType Index); -protected: - CEntities *m_Entities; - CSettings *m_Settings; - CEvents *m_Events; - - void ReWriteHeader(TDBFileType Index); - -public: - CDataBase(const TCHAR* FileName); - virtual ~CDataBase(); - - int CreateDB(); - int CheckDB(); - int OpenDB(); - - CEntities & getEntities() - { - return *m_Entities; - } - CSettings & getSettings() - { - return *m_Settings; - } - CEvents & getEvents() - { - return *m_Events; - } - - int getProfileName(int BufferSize, char * Buffer); - int getProfilePath(int BufferSize, char * Buffer); - -public: // services - INT_PTR __cdecl DBEntityGetRoot(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl DBEntityChildCount(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBEntityGetParent(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBEntityMove(WPARAM hEntity, LPARAM hParent); - INT_PTR __cdecl DBEntityGetFlags(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBEntityIterInit(WPARAM pFilter, LPARAM hParent); - INT_PTR __cdecl DBEntityIterNext(WPARAM hIteration, LPARAM lParam); - INT_PTR __cdecl DBEntityIterClose(WPARAM hIteration, LPARAM lParam); - INT_PTR __cdecl DBEntityDelete(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBEntityCreate(WPARAM pEntity, LPARAM lParam); - INT_PTR __cdecl DBEntityGetAccount(WPARAM hEntity, LPARAM lParam); - - INT_PTR __cdecl DBVirtualEntityCreate(WPARAM hEntity, LPARAM hParent); - INT_PTR __cdecl DBVirtualEntityGetParent(WPARAM hVirtualEntity, LPARAM lParam); - INT_PTR __cdecl DBVirtualEntityGetFirst(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBVirtualEntityGetNext(WPARAM hVirtualEntity, LPARAM lParam); - - INT_PTR __cdecl DBSettingFind(WPARAM pSettingDescriptor, LPARAM lParam); - INT_PTR __cdecl DBSettingDelete(WPARAM pSettingDescriptor, LPARAM lParam); - INT_PTR __cdecl DBSettingDeleteHandle(WPARAM hSetting, LPARAM lParam); - INT_PTR __cdecl DBSettingWrite(WPARAM pSetting, LPARAM lParam); - INT_PTR __cdecl DBSettingWriteHandle(WPARAM pSetting, LPARAM hSetting); - INT_PTR __cdecl DBSettingRead(WPARAM pSetting, LPARAM lParam); - INT_PTR __cdecl DBSettingReadHandle(WPARAM pSetting, LPARAM hSetting); - INT_PTR __cdecl DBSettingIterInit(WPARAM pFilter, LPARAM lParam); - INT_PTR __cdecl DBSettingIterNext(WPARAM hIteration, LPARAM lParam); - INT_PTR __cdecl DBSettingIterClose(WPARAM hIteration, LPARAM lParam); - - INT_PTR __cdecl DBEventGetBlobSize(WPARAM hEvent, LPARAM lParam); - INT_PTR __cdecl DBEventGet(WPARAM hEvent, LPARAM pEvent); - INT_PTR __cdecl DBEventGetCount(WPARAM hEntity, LPARAM lParam); - INT_PTR __cdecl DBEventDelete(WPARAM hEvent, LPARAM lParam); - INT_PTR __cdecl DBEventAdd(WPARAM hEntity, LPARAM pEvent); - INT_PTR __cdecl DBEventMarkRead(WPARAM hEvent, LPARAM lParam); - INT_PTR __cdecl DBEventWriteToDisk(WPARAM hEvent, LPARAM lParam); - INT_PTR __cdecl DBEventGetEntity(WPARAM hEvent, LPARAM lParam); - INT_PTR __cdecl DBEventIterInit(WPARAM pFilter, LPARAM lParam); - INT_PTR __cdecl DBEventIterNext(WPARAM hIteration, LPARAM lParam); - INT_PTR __cdecl DBEventIterClose(WPARAM hIteration, LPARAM lParam); - - bool RegisterServices(); - - typedef INT_PTR ( __cdecl CDataBase::*DbServiceFunc )( WPARAM, LPARAM ); - void CreateDbService(const char *szServiceName, DbServiceFunc pFunc); - -protected: // to be compatible with the standard Miranda databases - STDMETHODIMP_(void) SetCacheSafetyMode(BOOL); - - STDMETHODIMP_(LONG) GetContactCount(void); - STDMETHODIMP_(MCONTACT) FindFirstContact(const char* szProto = NULL); - STDMETHODIMP_(MCONTACT) FindNextContact(MCONTACT contactID, const char* szProto = NULL); - STDMETHODIMP_(LONG) DeleteContact(MCONTACT contactID); - STDMETHODIMP_(HANDLE) AddContact(void); - STDMETHODIMP_(BOOL) IsDbContact(MCONTACT contactID); - - STDMETHODIMP_(LONG) GetEventCount(MCONTACT contactID); - STDMETHODIMP_(HANDLE) AddEvent(MCONTACT contactID, DBEVENTINFO *dbe); - STDMETHODIMP_(BOOL) DeleteEvent(MCONTACT contactID, HANDLE hDbEvent); - STDMETHODIMP_(LONG) GetBlobSize(HANDLE hDbEvent); - STDMETHODIMP_(BOOL) GetEvent(HANDLE hDbEvent, DBEVENTINFO *dbe); - STDMETHODIMP_(BOOL) MarkEventRead(MCONTACT contactID, HANDLE hDbEvent); - STDMETHODIMP_(MCONTACT) GetEventContact(HANDLE hDbEvent); - STDMETHODIMP_(HANDLE) FindFirstEvent(MCONTACT contactID); - STDMETHODIMP_(HANDLE) FindFirstUnreadEvent(MCONTACT contactID); - STDMETHODIMP_(HANDLE) FindLastEvent(MCONTACT contactID); - STDMETHODIMP_(HANDLE) FindNextEvent(HANDLE hDbEvent); - STDMETHODIMP_(HANDLE) FindPrevEvent(HANDLE hDbEvent); - - STDMETHODIMP_(BOOL) EnumModuleNames(DBMODULEENUMPROC pFunc, void *pParam); - - STDMETHODIMP_(BOOL) GetContactSetting(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv); - STDMETHODIMP_(BOOL) GetContactSettingStr(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv); - STDMETHODIMP_(BOOL) GetContactSettingStatic(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting, DBVARIANT *dbv); - STDMETHODIMP_(BOOL) FreeVariant(DBVARIANT *dbv); - STDMETHODIMP_(BOOL) WriteContactSetting(MCONTACT contactID, DBCONTACTWRITESETTING *dbcws); - STDMETHODIMP_(BOOL) DeleteContactSetting(MCONTACT contactID, LPCSTR szModule, LPCSTR szSetting); - STDMETHODIMP_(BOOL) EnumContactSettings(MCONTACT contactID, DBCONTACTENUMSETTINGS* dbces); - STDMETHODIMP_(BOOL) SetSettingResident(BOOL bIsResident, const char *pszSettingName); - STDMETHODIMP_(BOOL) EnumResidentSettings(DBMODULEENUMPROC pFunc, void *pParam); - STDMETHODIMP_(BOOL) IsSettingEncrypted(LPCSTR szModule, LPCSTR szSetting); - - int CheckProto(DBCachedContact *cc, const char *proto); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.cpp b/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.cpp deleted file mode 100644 index e48ebfff08..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "DatabaseLink.h" - -/* - profile: pointer to a string which contains full path + name - Affect: The database plugin should create the profile, the filepath will not exist at - the time of this call, profile will be C:\..\.dat - Note: Do not prompt the user in anyway about this operation. - Note: Do not initialise internal data structures at this point! - Returns: 0 on success, non zero on failure - error contains extended error information, see EMKPRF_* -*/ - -static int makeDatabase(const TCHAR *profile) -{ - std::auto_ptr db( new CDataBase(profile)); - return db->CreateDB(); -} - -/* - profile: [in] a null terminated string to file path of selected profile - error: [in/out] pointer to an int to set with error if any - Affect: Ask the database plugin if it supports the given profile, if it does it will - return 0, if it doesnt return 1, with the error set in error -- EGROKPRF_* can be valid error - condition, most common error would be [EGROKPRF_UNKHEADER] - Note: Just because 1 is returned, doesnt mean the profile is not supported, the profile might be damaged - etc. - Returns: 0 on success, non zero on failure -*/ -static int grokHeader(const TCHAR *profile) -{ - std::auto_ptr db( new CDataBase(profile)); - return db->CheckDB(); -} - -/* -Affect: Tell the database to create all services/hooks that a 3.xx legecy database might support into link, - which is a PLUGINLINK structure -Returns: 0 on success, nonzero on failure -*/ - -static MIDatabase* LoadDatabase(const TCHAR *profile) -{ - CDataBase* pDb = new CDataBase(profile); - pDb->OpenDB(); - return pDb; -} - -/* -Affect: The database plugin should shutdown, unloading things from the core and freeing internal structures -Returns: 0 on success, nonzero on failure -Note: Unload() might be called even if Load(void) was never called, wasLoaded is set to 1 if Load(void) was ever called. -*/ - -static int UnloadDatabase(MIDatabase* db) -{ - delete (CDataBase*)db; - return 0; -} - -DATABASELINK gDBLink = { - sizeof(DATABASELINK), - __INTERNAL_NAME, - _T("dbx tree driver"), - makeDatabase, - grokHeader, - LoadDatabase, - UnloadDatabase, - NULL // does not support file checking -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.h b/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.h deleted file mode 100644 index ebc61c5047..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DatabaseLink.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 -#include -#include "Interface.h" -#include "Database.h" -#include "Compatibility.h" \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/src/DirectAccess.cpp b/plugins/!Deprecated/Dbx_tree/src/DirectAccess.cpp deleted file mode 100644 index 7095bdaa8a..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DirectAccess.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "DirectAccess.h" -#include "Logger.h" - -CDirectAccess::CDirectAccess(const TCHAR* FileName) -: CFileAccess(FileName) -{ - m_File = CreateFile(FileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0); - CHECKSYS(m_File != INVALID_HANDLE_VALUE, - logCRITICAL, _T("CreateFile failed")); - - m_MinAllocGranularity = 0x00001000; // 4kb to avoid heavy fragmentation - m_AllocGranularity = 0x00008000; // 32kb - m_MaxAllocGranularity = 0x00100000; // 1mb for fast increasing - - uint32_t size = GetFileSize(m_File, NULL); - size = (size + m_AllocGranularity - 1) & ~(m_AllocGranularity - 1); - - if (size == 0) - size = m_AllocGranularity; - - m_AllocSize = size; - - InitJournal(); -} - -CDirectAccess::~CDirectAccess() -{ - if (m_File) - { - if (INVALID_SET_FILE_POINTER != SetFilePointer(m_File, m_Size, NULL, FILE_BEGIN)) - SetEndOfFile(m_File); - - CloseHandle(m_File); - } -} - -uint32_t CDirectAccess::_Read(void* Buf, uint32_t Source, uint32_t Size) -{ - DWORD read = 0; - - CHECKSYS(INVALID_SET_FILE_POINTER != SetFilePointer(m_File, Source, NULL, FILE_BEGIN), - logERROR, _T("SetFilePointer failed")); - - CHECKSYS(ReadFile(m_File, Buf, Size, &read, NULL), - logERROR, _T("ReadFile failed")); - - return read; -} -uint32_t CDirectAccess::_Write(void* Buf, uint32_t Dest, uint32_t Size) -{ - DWORD written = 0; - - CHECKSYS(INVALID_SET_FILE_POINTER != SetFilePointer(m_File, Dest, NULL, FILE_BEGIN), - logERROR, _T("SetFilePointer failed")); - - CHECKSYS(WriteFile(m_File, Buf, Size, &written, NULL), - logERROR, _T("WriteFile failed")); - - return written; -} - -uint32_t CDirectAccess::_SetSize(uint32_t Size) -{ - CHECKSYS(INVALID_SET_FILE_POINTER != SetFilePointer(m_File, Size, NULL, FILE_BEGIN), - logERROR, _T("SetFilePointer failed")); - - CHECKSYS(SetEndOfFile(m_File), - logERROR, _T("SetEndOfFile failed")); - - return Size; -} - -void CDirectAccess::_Invalidate(uint32_t Dest, uint32_t Size) -{ - DWORD written; - uint8_t buf[4096]; - memset(buf, 0, sizeof(buf)); - - CHECKSYS(INVALID_SET_FILE_POINTER != SetFilePointer(m_File, Dest, NULL, FILE_BEGIN), - logERROR, _T("SetFilePointer failed")); - - while (Size > sizeof(buf)) - { - Size -= sizeof(buf); - CHECKSYS(WriteFile(m_File, buf, sizeof(buf), &written, NULL), - logERROR, _T("WriteFile failed")); - } - CHECKSYS(WriteFile(m_File, buf, Size, &written, NULL), - logERROR, _T("WriteFile failed")); -} - -void CDirectAccess::_Flush() -{ - CHECKSYS(FlushFileBuffers(m_File), - logERROR, _T("FlushFileBuffers failed")); -} diff --git a/plugins/!Deprecated/Dbx_tree/src/DirectAccess.h b/plugins/!Deprecated/Dbx_tree/src/DirectAccess.h deleted file mode 100644 index cc4241c235..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/DirectAccess.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "FileAccess.h" - -class CDirectAccess : public CFileAccess -{ -private: - - HANDLE m_File; -protected: - uint32_t _Read(void* Buf, uint32_t Source, uint32_t Size); - uint32_t _Write(void* Buf, uint32_t Dest, uint32_t Size); - void _Invalidate(uint32_t Dest, uint32_t Size); - uint32_t _SetSize(uint32_t Size); - void _Flush(); -public: - CDirectAccess(const TCHAR* FileName); - virtual ~CDirectAccess(); - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.cpp b/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.cpp deleted file mode 100644 index ceaff9a015..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "EncryptionManager.h" -#include - -uint32_t CEncryptionManager::CipherListRefCount = 0; -CEncryptionManager::TCipherList* CEncryptionManager::CipherList = NULL; - -static const uint32_t cFileBlockMask = 0xfffff000; - -void CEncryptionManager::LoadCipherList() -{ - if (CipherList) - return; - - CipherList = new TCipherList; - CipherListRefCount++; - - WIN32_FIND_DATA search; - TCHAR path[MAX_PATH * 8]; - GetModuleFileName(NULL, path, sizeof(path)); - TCHAR * file = _tcsrchr(path, '\\'); - if (!file) - file = path; - - _tcscpy_s(file, sizeof(path) / sizeof(path[0]) - (file - path), _T("\\plugins\\encryption\\*.dll")); - file += 20; - - HANDLE hfinder = FindFirstFile(path, &search); - if (hfinder != INVALID_HANDLE_VALUE) - { - TCipherItem item; - TCipherInfo* (__cdecl *CipherInfoProc)(void *); - do { - _tcscpy_s(file, sizeof(path) / sizeof(path[0]) - (file - path), search.cFileName); - HMODULE hmod = LoadLibrary(path); - if (hmod) - { - CipherInfoProc = (TCipherInfo*(__cdecl*)(void*)) GetProcAddress(hmod, "CipherInfo"); - if (CipherInfoProc) - { - TCipherInfo* info = CipherInfoProc(NULL); - if (info && (info->cbSize == sizeof(TCipherInfo)) && (CipherList->find(info->ID) == CipherList->end())) - { - item.ID = info->ID; - item.Name = _wcsdup(info->Name); - item.Description = _wcsdup(info->Description); - item.FilePath = _tcsdup(path); - item.FileName = item.FilePath + (file - path); - - CipherList->insert(std::make_pair(item.ID, item)); - } - } - - FreeLibrary(hmod); - - } - } while (FindNextFile(hfinder, &search)); - - FindClose(hfinder); - } -} - -CEncryptionManager::CEncryptionManager() -{ - m_Ciphers[CURRENT].Cipher = NULL; - m_Ciphers[OLD].Cipher = NULL; - m_Changing = false; - m_ChangingProcess = 0; - - LoadCipherList(); -} -CEncryptionManager::~CEncryptionManager() -{ - delete m_Ciphers[CURRENT].Cipher; - m_Ciphers[CURRENT].Cipher = NULL; - delete m_Ciphers[OLD].Cipher; - m_Ciphers[OLD].Cipher = NULL; - - CipherListRefCount--; - if (!CipherListRefCount) - { - TCipherList::iterator i = CipherList->begin(); - while (i != CipherList->end()) - { - free(i->second.Description); - free(i->second.Name); - free(i->second.FilePath); - // do not free Filename... it's a substring of FilePath - ++i; - } - - delete CipherList; - CipherList = NULL; - } -} - -bool CEncryptionManager::InitEncryption(TFileEncryption & Enc) -{ - if (Enc.ConversionProcess) - { - m_Changing = true; - m_ChangingProcess = Enc.ConversionProcess; - } - - for (int c = (int)CURRENT; c < (int)COUNT; c++) - { - TCipherList::iterator i = CipherList->find(Enc.CipherID); - if (i != CipherList->end()) - { - m_Ciphers[c].CipherDLL = LoadLibrary(i->second.FilePath); - if (m_Ciphers[c].CipherDLL) - { - TCipherInfo* (__cdecl *cipherinfoproc)(void *); - cipherinfoproc = (TCipherInfo*(__cdecl*)(void*)) GetProcAddress(m_Ciphers[c].CipherDLL, "CipherInfo"); - if (cipherinfoproc) - { - TCipherInfo* info = cipherinfoproc(NULL); - if (info && (info->cbSize == sizeof(TCipherInfo))) - m_Ciphers[c].Cipher = new CCipher(info->Create()); - - } - - if (!m_Ciphers[c].Cipher) - { - FreeLibrary(m_Ciphers[c].CipherDLL); - m_Ciphers[c].CipherDLL = NULL; - } - } - } - } - - return true; -} - -bool CEncryptionManager::AlignData(uint32_t ID, uint32_t & Start, uint32_t & End) -{ - if (m_Ciphers[CURRENT].Cipher && (!m_Changing || (ID < m_ChangingProcess))) - { - if (m_Ciphers[CURRENT].Cipher->IsStreamCipher()) - { - Start = 0; - End = End - End % m_Ciphers[CURRENT].Cipher->BlockSizeBytes() + m_Ciphers[CURRENT].Cipher->BlockSizeBytes(); - } else { - Start = Start - Start % m_Ciphers[CURRENT].Cipher->BlockSizeBytes(); - if (End % m_Ciphers[CURRENT].Cipher->BlockSizeBytes()) - End = End - End % m_Ciphers[CURRENT].Cipher->BlockSizeBytes() + m_Ciphers[CURRENT].Cipher->BlockSizeBytes(); - } - - return true; - } else if (m_Ciphers[OLD].Cipher && m_Changing && (ID >= m_ChangingProcess)) - { - if (m_Ciphers[OLD].Cipher->IsStreamCipher()) - { - Start = 0; - End = End - End % m_Ciphers[OLD].Cipher->BlockSizeBytes() + m_Ciphers[OLD].Cipher->BlockSizeBytes(); - } else { - Start = Start - Start % m_Ciphers[OLD].Cipher->BlockSizeBytes(); - if (End % m_Ciphers[OLD].Cipher->BlockSizeBytes()) - End = End - End % m_Ciphers[OLD].Cipher->BlockSizeBytes() + m_Ciphers[OLD].Cipher->BlockSizeBytes(); - } - - return true; - } - - return false; -} -uint32_t CEncryptionManager::AlignSize(uint32_t ID, uint32_t Size) -{ - if (m_Ciphers[CURRENT].Cipher && (!m_Changing || (ID < m_ChangingProcess))) - { - if (Size % m_Ciphers[CURRENT].Cipher->BlockSizeBytes()) - return Size - Size % m_Ciphers[CURRENT].Cipher->BlockSizeBytes() + m_Ciphers[CURRENT].Cipher->BlockSizeBytes(); - - } else if (m_Ciphers[OLD].Cipher && m_Changing && (ID >= m_ChangingProcess)) - { - if (Size % m_Ciphers[OLD].Cipher->BlockSizeBytes()) - return Size - Size % m_Ciphers[OLD].Cipher->BlockSizeBytes() + m_Ciphers[OLD].Cipher->BlockSizeBytes(); - - } - - return Size; -} - -bool CEncryptionManager::IsEncrypted(uint32_t ID) -{ - return (m_Ciphers[CURRENT].Cipher && (!m_Changing || (ID < m_ChangingProcess))) || - (m_Ciphers[OLD].Cipher && m_Changing && (ID >= m_ChangingProcess)); -} - -void CEncryptionManager::Encrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte) -{ - if (m_Ciphers[CURRENT].Cipher && (!m_Changing || (ID < m_ChangingProcess))) - { - m_Ciphers[CURRENT].Cipher->Encrypt(Data, DataLength, ID, StartByte); - } else if (m_Ciphers[OLD].Cipher && m_Changing && (ID >= m_ChangingProcess)) - { - m_Ciphers[OLD].Cipher->Encrypt(Data, DataLength, ID, StartByte); - } -} -void CEncryptionManager::Decrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte) -{ - if (m_Ciphers[CURRENT].Cipher && (!m_Changing || (ID < m_ChangingProcess))) - { - m_Ciphers[CURRENT].Cipher->Decrypt(Data, DataLength, ID, StartByte); - } else if (m_Ciphers[OLD].Cipher && m_Changing && (ID >= m_ChangingProcess)) - { - m_Ciphers[OLD].Cipher->Decrypt(Data, DataLength, ID, StartByte); - } -} - -bool CEncryptionManager::CanChangeCipher() -{ - return false; -} -bool CEncryptionManager::ChangeCipher(TEncryption & Encryption) -{ - return false; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.h b/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.h deleted file mode 100644 index 5bd04360a2..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/EncryptionManager.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "sigslot.h" - -#define __INTERFACE_ONLY__ -#include "Cipher.h" -#undef __INTERFACE_ONLY__ - -#include "SHA256.h" -#include "Interface.h" -//#include "Thread.h" -#include -#include - -static const uint32_t cEncryptionChangingFlag = 0x80000000; - -#pragma pack(push, 1) - -typedef struct TFileEncryption { - uint32_t CipherID; - uint32_t CipherOldID; - uint32_t ConversionProcess; - uint8_t SHA[32]; - uint8_t SHAOld[32]; - uint32_t Reserved[2]; -} TFileEncryption, *PFileEncryption; - -#pragma pack(pop) - -typedef struct TEncryption { - uint32_t CipherID; - wchar_t * Password; -} TEncryption, *PEncryption; - -class CEncryptionManager -{ -public: - CEncryptionManager(); - ~CEncryptionManager(); - - typedef struct { - TCHAR * FilePath; - TCHAR * FileName; - uint32_t ID; - wchar_t * Name; - wchar_t * Description; - } TCipherItem; - typedef std::map TCipherList; - - static TCipherList* CipherList; // = NULL; see cpp - static uint32_t CipherListRefCount; // = 0; see cpp - static void LoadCipherList(); - - bool InitEncryption(TFileEncryption & Enc); - - bool AlignData(uint32_t ID, uint32_t & Start, uint32_t & End); - uint32_t AlignSize(uint32_t ID, uint32_t Size); - bool IsEncrypted(uint32_t ID); - void Encrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte); - void Decrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte); - - bool CanChangeCipher(); - bool ChangeCipher(TEncryption & Encryption); -private: - bool m_Changing; - uint32_t m_ChangingProcess; - - typedef enum TUsedCiphers { - CURRENT = 0, - OLD = 1, - COUNT = 2 - } TUsedCiphers; - - struct - { - CCipher * Cipher; - HMODULE CipherDLL; - } m_Ciphers[COUNT]; - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/Entities.cpp b/plugins/!Deprecated/Dbx_tree/src/Entities.cpp deleted file mode 100644 index 590cf6f85b..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Entities.cpp +++ /dev/null @@ -1,1028 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Entities.h" - -CVirtuals::CVirtuals(CBlockManager & BlockManager, TNodeRef RootNode) -: CFileBTree::CFileBTree(BlockManager, RootNode, cVirtualNodeSignature) -{ - -} - -CVirtuals::~CVirtuals() -{ - -} - -TDBTEntityHandle CVirtuals::_DeleteRealEntity(TDBTEntityHandle hRealEntity) -{ - TDBTEntityHandle result; - TVirtualKey key; - TEntity * entity; - bool copies = false; - uint32_t size = sizeof(TEntity); - uint32_t sig = cEntitySignature; - - key.RealEntity = hRealEntity; - key.Virtual = 0; - - iterator i = LowerBound(key); - result = i->Virtual; - i.setManaged(); - Delete(*i); - - while ((i) && (i->RealEntity == hRealEntity)) - { - key = *i; - Delete(key); - - key.RealEntity = result; - Insert(key); - - entity = m_BlockManager.ReadBlock(key.Virtual, size, sig); - if (entity) - { - entity->VParent = result; - m_BlockManager.UpdateBlock(key.Virtual); - - copies = true; - } // TODO log - } - - entity = m_BlockManager.ReadBlock(result, size, sig); - if (entity) - { - entity->Flags = entity->Flags & ~(DBT_NF_HasVirtuals | DBT_NF_IsVirtual); - if (copies) - entity->Flags |= DBT_NF_HasVirtuals; - - m_BlockManager.UpdateBlock(result); - } // TODO log - return result; -} - -bool CVirtuals::_InsertVirtual(TDBTEntityHandle hRealEntity, TDBTEntityHandle hVirtual) -{ - TVirtualKey key; - key.RealEntity = hRealEntity; - key.Virtual = hVirtual; - - Insert(key); - - return true; -} -void CVirtuals::_DeleteVirtual(TDBTEntityHandle hRealEntity, TDBTEntityHandle hVirtual) -{ - TVirtualKey key; - key.RealEntity = hRealEntity; - key.Virtual = hVirtual; - - Delete(key); -} -TDBTEntityHandle CVirtuals::getParent(TDBTEntityHandle hVirtual) -{ - TEntity * entity; - uint32_t size = sizeof(TEntity); - uint32_t sig = cEntitySignature; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - entity = m_BlockManager.ReadBlock(hVirtual, size, sig); - if (!entity || ((entity->Flags & DBT_NF_IsVirtual) == 0)) - return DBT_INVALIDPARAM; - - return entity->VParent; -} -TDBTEntityHandle CVirtuals::getFirst(TDBTEntityHandle hRealEntity) -{ - TEntity * entity; - uint32_t size = sizeof(TEntity); - uint32_t sig = cEntitySignature; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - entity = m_BlockManager.ReadBlock(hRealEntity, size, sig); - if (!entity || ((entity->Flags & DBT_NF_HasVirtuals) == 0)) - return DBT_INVALIDPARAM; - - TVirtualKey key; - key.RealEntity = hRealEntity; - key.Virtual = 0; - - iterator i = LowerBound(key); - - if (i && (i->RealEntity == hRealEntity)) - key.Virtual = i->Virtual; - else - key.Virtual = 0; - - return key.Virtual; -} -TDBTEntityHandle CVirtuals::getNext(TDBTEntityHandle hVirtual) -{ - TEntity * entity; - uint32_t size = sizeof(TEntity); - uint32_t sig = cEntitySignature; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - entity = m_BlockManager.ReadBlock(hVirtual, size, sig); - if (!entity || ((entity->Flags & DBT_NF_IsVirtual) == 0)) - return DBT_INVALIDPARAM; - - TVirtualKey key; - key.RealEntity = entity->VParent; - key.Virtual = hVirtual + 1; - - iterator i = LowerBound(key); - - if ((i) && (i->RealEntity == entity->VParent)) - key.Virtual = i->Virtual; - else - key.Virtual = 0; - - return key.Virtual; -} - - - - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CEntities::CEntities(CBlockManager & BlockManager, TDBTEntityHandle RootEntity, TNodeRef EntityRoot, CVirtuals::TNodeRef VirtualRoot) -: CFileBTree::CFileBTree(BlockManager, EntityRoot, cEntityNodeSignature), - m_Virtuals(BlockManager, VirtualRoot), - - m_sigEntityDelete(), - m_sigInternalDeleteEvents(), - m_sigInternalDeleteSettings(), - m_sigInternalMergeSettings(), - m_sigInternalTransferEvents() -{ - if (RootEntity == 0) - m_RootEntity = _CreateRootEntity(); - else - m_RootEntity = RootEntity; - -} - -CEntities::~CEntities() -{ - -} - -TDBTEntityHandle CEntities::_CreateRootEntity() -{ - TEntity * entity; - TEntityKey key = {0,0,0}; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - entity = m_BlockManager.CreateBlock(key.Entity, cEntitySignature); - entity->Flags = DBT_NF_IsGroup | DBT_NF_IsRoot; - m_BlockManager.UpdateBlock(key.Entity); - Insert(key); - return key.Entity; -} - -void CEntities::_InternalTransferContacts(TDBTEntityHandle OldAccount, TDBTEntityHandle NewAccount) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - TEntityKey key = {0,0,0}; - iterator i = LowerBound(key); - - while (i) - { - sig = cEntitySignature; - TEntity * entity = m_BlockManager.ReadBlock(i->Entity, size, sig); - if (entity && (entity->Account == OldAccount)) - { - entity->Account = NewAccount; - m_BlockManager.UpdateBlock(i->Entity); - } - - ++i; - } -} - -uint32_t CEntities::_getSettingsRoot(TDBTEntityHandle hEntity) -{ - /*CSettingsTree::TNodeRef*/ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return DBT_INVALIDPARAM; - - return entity->Settings; -} -bool CEntities::_setSettingsRoot(TDBTEntityHandle hEntity, /*CSettingsTree::TNodeRef*/ uint32_t NewRoot) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return false; - - entity->Settings = NewRoot; - m_BlockManager.UpdateBlock(hEntity); - - return true; -} - -uint32_t CEntities::_getEventsRoot(TDBTEntityHandle hEntity) -{ - /*CEventsTree::TNodeRef*/ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return DBT_INVALIDPARAM; - - return entity->Events; -} -bool CEntities::_setEventsRoot(TDBTEntityHandle hEntity, /*CEventsTree::TNodeRef*/ uint32_t NewRoot) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return false; - entity->Events = NewRoot; - m_BlockManager.UpdateBlock(hEntity); - - return true; -} - -uint32_t CEntities::_getEventCount(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return DBT_INVALIDPARAM; - - return entity->EventCount; -} - -uint32_t CEntities::_adjustEventCount(TDBTEntityHandle hEntity, int32_t Adjust) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return DBT_INVALIDPARAM; - - if (((Adjust < 0) && ((uint32_t)(-Adjust) <= entity->EventCount)) || - ((Adjust > 0) && ((0xffffffff - entity->EventCount) > (uint32_t)Adjust))) - { - entity->EventCount += Adjust; - m_BlockManager.UpdateBlock(hEntity); - } - - return entity->EventCount; -} - -bool CEntities::_getFirstUnreadEvent(TDBTEntityHandle hEntity, uint32_t & hEvent, uint32_t & Timestamp) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return false; - - Timestamp = entity->FirstUnreadEventTimestamp; - hEvent = entity->FirstUnreadEventHandle; - return true; -} -bool CEntities::_setFirstUnreadEvent(TDBTEntityHandle hEntity, uint32_t hEvent, uint32_t Timestamp) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return false; - entity->FirstUnreadEventTimestamp = Timestamp; - entity->FirstUnreadEventHandle = hEvent; - m_BlockManager.UpdateBlock(hEntity); - - return true; -} - -TDBTEntityHandle CEntities::getParent(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - if (!entity) - return DBT_INVALIDPARAM; - - return entity->ParentEntity; -} -TDBTEntityHandle CEntities::setParent(TDBTEntityHandle hEntity, TDBTEntityHandle hParent) -{ - TEntity *entity, *newparent, *oldparent; - uint32_t size = sizeof(TEntity); - uint32_t sig = cEntitySignature; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - entity = m_BlockManager.ReadBlock(hEntity, size, sig); - newparent = m_BlockManager.ReadBlock(hParent, size, sig); - if (!entity || !newparent) - return DBT_INVALIDPARAM; - - oldparent = m_BlockManager.ReadBlock(entity->ParentEntity, size, sig); - if (!oldparent) - return DBT_INVALIDPARAM; - - // update parents - if (--oldparent->ChildCount == 0) - oldparent->Flags &= ~DBT_NF_HasChildren; - - if (++newparent->ChildCount == 1) - newparent->Flags |= DBT_NF_HasChildren; - - - m_BlockManager.UpdateBlock(entity->ParentEntity); - m_BlockManager.UpdateBlock(hParent); - - // update rest - - TEntityKey key; - int dif = newparent->Level - entity->Level + 1; - - if (dif == 0) // no level difference, update only moved Entity - { - key.Entity = hEntity; - key.Level = entity->Level; - key.Parent = entity->ParentEntity; - Delete(key); - key.Parent = hParent; - Insert(key); - - entity->ParentEntity = hParent; - m_BlockManager.UpdateBlock(hEntity); - - } else { - TDBTEntityIterFilter filter = {0,0,0,0}; - filter.cbSize = sizeof(filter); - filter.Options = DBT_NIFO_OSC_AC | DBT_NIFO_OC_AC; - - TDBTEntityIterationHandle iter = IterationInit(filter, hEntity); - - key.Entity = IterationNext(iter); - - while ((key.Entity != 0) && (key.Entity != DBT_INVALIDPARAM)) - { - size = sizeof(TEntity); - sig = cEntitySignature; - TEntity * child = m_BlockManager.ReadBlock(key.Entity, size, sig); - - if (child) - { - key.Level = child->Level; - key.Parent = child->ParentEntity; - Delete(key); - - if (key.Entity == hEntity) - { - key.Parent = hParent; - entity->ParentEntity = hParent; - } - - child->Level += dif; - key.Level += dif; - m_BlockManager.UpdateBlock(key.Entity); - - Insert(key); - } // TODO log - key.Entity = IterationNext(iter); - } - - IterationClose(iter); - } - - /// TODO raise event - - return entity->ParentEntity; -} - -uint32_t CEntities::getChildCount(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - if (!entity) - return DBT_INVALIDPARAM; - - return entity->ChildCount; -} - -uint32_t CEntities::getFlags(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - if (!entity) - return DBT_INVALIDPARAM; - - return entity->Flags; -} - -uint32_t CEntities::getAccount(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - if (!entity) - return DBT_INVALIDPARAM; - - if (entity->Flags & DBT_NF_IsVirtual) - return getAccount(entity->VParent); - else if (entity->Flags & (DBT_NF_IsAccount | DBT_NF_IsGroup | DBT_NF_IsRoot)) - return 0; - - return entity->Flags; -} - -TDBTEntityHandle CEntities::CreateEntity(const TDBTEntity & Entity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TDBTEntityHandle haccount = 0; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - TEntity * parent = m_BlockManager.ReadBlock(Entity.hParentEntity, size, sig); - - if (!parent) - return DBT_INVALIDPARAM; - - // check account specification - if ((Entity.fFlags == 0) && (Entity.hAccountEntity != m_RootEntity)) // TODO disable root account thing, after conversion - { - TEntity * account = m_BlockManager.ReadBlock(Entity.hAccountEntity, size, sig); - if (!account || !(account->Flags & DBT_NF_IsAccount)) - return DBT_INVALIDPARAM; - - if (account->Flags & DBT_NF_IsVirtual) - { - haccount = VirtualGetParent(Entity.hAccountEntity); - } else { - haccount = Entity.hAccountEntity; - } - } - - TDBTEntityHandle hentity; - TEntity * entityblock = m_BlockManager.CreateBlock(hentity, cEntitySignature); - if (!entityblock) - return DBT_INVALIDPARAM; - - TEntityKey key; - - entityblock->Level = parent->Level + 1; - entityblock->ParentEntity = Entity.hParentEntity; - entityblock->Flags = Entity.fFlags; - entityblock->Account = haccount; - - m_BlockManager.UpdateBlock(hentity); - - key.Level = entityblock->Level; - key.Parent = entityblock->ParentEntity; - key.Entity = hentity; - - Insert(key); - - if (parent->ChildCount == 0) - parent->Flags = parent->Flags | DBT_NF_HasChildren; - - ++parent->ChildCount; - m_BlockManager.UpdateBlock(Entity.hParentEntity); - - return hentity; -} - -unsigned int CEntities::DeleteEntity(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TDBTEntityHandle haccount = 0; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (!entity) - return DBT_INVALIDPARAM; - - TEntity * parent = m_BlockManager.ReadBlock(entity->ParentEntity, size, sig); - if (!parent) - return DBT_INVALIDPARAM; - - m_sigEntityDelete.emit(this, hEntity); - - if (entity->Flags & DBT_NF_HasVirtuals) - { - // move virtuals and make one of them real - TDBTEntityHandle newreal = m_Virtuals._DeleteRealEntity(hEntity); - - TEntity * realblock = m_BlockManager.ReadBlock(newreal, size, sig); - if (realblock) - { - realblock->EventCount = entity->EventCount; - realblock->Events = entity->Events; - - m_BlockManager.UpdateBlock(newreal); - - m_sigInternalTransferEvents.emit(this, hEntity, newreal); - m_sigInternalMergeSettings.emit(this, hEntity, newreal); - - if (entity->Flags & DBT_NF_IsAccount) - _InternalTransferContacts(hEntity, newreal); - } // TODO log - } else { - m_sigInternalDeleteEvents.emit(this, hEntity); - m_sigInternalDeleteSettings.emit(this, hEntity); - - if ((entity->Flags & DBT_NF_IsAccount) && !(entity->Flags & DBT_NF_IsVirtual)) - _InternalTransferContacts(hEntity, m_RootEntity); - - } - - TEntityKey key; - key.Level = entity->Level; - key.Parent = entity->ParentEntity; - key.Entity = hEntity; - Delete(key); - - if (entity->Flags & DBT_NF_HasChildren) // keep the children - { - parent->Flags |= DBT_NF_HasChildren; - parent->ChildCount += entity->ChildCount; - - TDBTEntityIterFilter filter = {0,0,0,0}; - filter.cbSize = sizeof(filter); - filter.Options = DBT_NIFO_OSC_AC | DBT_NIFO_OC_AC; - - TDBTEntityIterationHandle iter = IterationInit(filter, hEntity); - if (iter != DBT_INVALIDPARAM) - { - IterationNext(iter); - key.Entity = IterationNext(iter); - - while ((key.Entity != 0) && (key.Entity != DBT_INVALIDPARAM)) - { - size = sizeof(TEntity); - sig = cEntitySignature; - TEntity * child = m_BlockManager.ReadBlock(key.Entity, size, sig); - if (child) - { - key.Parent = child->ParentEntity; - key.Level = child->Level; - Delete(key); - - if (key.Parent == hEntity) - { - key.Parent = entity->ParentEntity; - child->ParentEntity = entity->ParentEntity; - } - - key.Level--; - m_BlockManager.UpdateBlock(key.Entity); - - Insert(key); - - } - key.Entity = IterationNext(iter); - } - - IterationClose(iter); - } - } - - if (--parent->ChildCount == 0) - parent->Flags = parent->Flags & (~DBT_NF_HasChildren); - - m_BlockManager.UpdateBlock(entity->ParentEntity); - - m_BlockManager.DeleteBlock(hEntity); // we needed this block, delete it now - - return 0; -} - - - -TDBTEntityIterationHandle CEntities::IterationInit(const TDBTEntityIterFilter & Filter, TDBTEntityHandle hParent) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TDBTEntityHandle haccount = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntity * parent = m_BlockManager.ReadBlock(hParent, size, sig); - - if (!parent) - return DBT_INVALIDPARAM; - - PEntityIteration iter = new TEntityIteration; - iter->filter = Filter; - iter->q = new std::deque; - iter->parents = new std::deque; - iter->accounts = new std::deque; - iter->returned = new stdext::hash_set; - iter->returned->insert(hParent); - - TEntityIterationItem it; - it.Flags = parent->Flags; - it.Handle = hParent; - it.Level = parent->Level; - it.Options = Filter.Options & 0x000000ff; - it.LookupDepth = 0; - - iter->q->push_back(it); - - return (TDBTEntityIterationHandle)iter; -} -TDBTEntityHandle CEntities::IterationNext(TDBTEntityIterationHandle Iteration) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - PEntityIteration iter = reinterpret_cast(Iteration); - TEntityIterationItem item; - TDBTEntityHandle result = 0; - - if (iter->q->empty()) - { - std::deque * tmp = iter->q; - iter->q = iter->parents; - iter->parents = tmp; - } - - if (iter->q->empty()) - { - std::deque * tmp = iter->q; - iter->q = iter->accounts; - iter->accounts = tmp; - } - - if (iter->q->empty() && - (iter->filter.Options & DBT_NIFO_GF_USEROOT) && - (iter->returned->find(m_RootEntity) == iter->returned->end())) - { - item.Handle = m_RootEntity; - item.Level = 0; - item.Options = 0; - item.Flags = 0; - item.LookupDepth = 255; - - iter->filter.Options = iter->filter.Options & ~DBT_NIFO_GF_USEROOT; - - iter->q->push_back(item); - } - - if (iter->q->empty()) - return 0; - - do { - item = iter->q->front(); - iter->q->pop_front(); - - TEntityIterationItem newitem; - - // children - if ((item.Flags & DBT_NF_HasChildren) && - (item.Options & DBT_NIFO_OSC_AC)) - { - TEntityKey key; - key.Parent = item.Handle; - key.Level = item.Level + 1; - - newitem.Level = item.Level + 1; - newitem.LookupDepth = item.LookupDepth; - newitem.Options = (iter->filter.Options / DBT_NIFO_OC_AC * DBT_NIFO_OSC_AC) & (DBT_NIFO_OSC_AC | DBT_NIFO_OSC_AO | DBT_NIFO_OSC_AOC | DBT_NIFO_OSC_AOP); - - if (iter->filter.Options & DBT_NIFO_GF_DEPTHFIRST) - { - key.Entity = 0xffffffff; - - CEntities::iterator c = UpperBound(key); - while ((c) && (c->Parent == item.Handle)) - { - newitem.Handle = c->Entity; - - if (iter->returned->find(newitem.Handle) == iter->returned->end()) - { - TEntity * tmp = m_BlockManager.ReadBlock(newitem.Handle, size, sig); - if (tmp) - { - newitem.Flags = tmp->Flags; - if (((newitem.Flags & DBT_NF_IsGroup) == 0) || ((DBT_NF_IsGroup & iter->filter.fHasFlags) == 0)) // if we want only groups, we don't need to trace down Entities... - { - iter->q->push_front(newitem); - iter->returned->insert(newitem.Handle); - } - } - } - - --c; - } - } else { - key.Entity = 0; - - CEntities::iterator c = LowerBound(key); - while ((c) && (c->Parent == item.Handle)) - { - newitem.Handle = c->Entity; - - if (iter->returned->find(newitem.Handle) == iter->returned->end()) - { - TEntity * tmp = m_BlockManager.ReadBlock(newitem.Handle, size, sig); - if (tmp) - { - newitem.Flags = tmp->Flags; - if (((newitem.Flags & DBT_NF_IsGroup) == 0) || ((DBT_NF_IsGroup & iter->filter.fHasFlags) == 0)) // if we want only groups, we don't need to trace down Entities... - { - iter->q->push_back(newitem); - iter->returned->insert(newitem.Handle); - } - } - } - - ++c; - } - - } - } - - // parent... - if ((item.Options & DBT_NIFO_OSC_AP) && (item.Handle != m_RootEntity)) - { - newitem.Handle = getParent(item.Handle); - if ((iter->returned->find(newitem.Handle) == iter->returned->end()) && - (newitem.Handle != DBT_INVALIDPARAM)) - { - TEntity * tmp = m_BlockManager.ReadBlock(newitem.Handle, size, sig); - if (tmp) - { - newitem.Level = item.Level - 1; - newitem.LookupDepth = item.LookupDepth; - newitem.Options = (iter->filter.Options / DBT_NIFO_OP_AC * DBT_NIFO_OSC_AC) & (DBT_NIFO_OSC_AC | DBT_NIFO_OSC_AP | DBT_NIFO_OSC_AO | DBT_NIFO_OSC_AOC | DBT_NIFO_OSC_AOP); - newitem.Flags = tmp->Flags; - - if ((newitem.Flags & iter->filter.fDontHasFlags & DBT_NF_IsGroup) == 0) // if we don't want groups, stop it - { - iter->parents->push_back(newitem); - iter->returned->insert(newitem.Handle); - } - } - } - } - - // virtual lookup, original Entity is the next one - if ((item.Flags & DBT_NF_IsVirtual) && - (item.Options & DBT_NIFO_OSC_AO) && - (((iter->filter.Options >> 28) >= item.LookupDepth) || ((iter->filter.Options >> 28) == 0))) - { - newitem.Handle = VirtualGetParent(item.Handle); - - if ((iter->returned->find(newitem.Handle) == iter->returned->end()) && - (newitem.Handle != DBT_INVALIDPARAM)) - { - TEntity * tmp = m_BlockManager.ReadBlock(newitem.Handle, size, sig); - if (tmp) - { - newitem.Level = tmp->Level; - newitem.Options = 0; - newitem.Flags = tmp->Flags; - - if ((item.Options & DBT_NIFO_OSC_AOC) == DBT_NIFO_OSC_AOC) - newitem.Options |= DBT_NIFO_OSC_AC; - if ((item.Options & DBT_NIFO_OSC_AOP) == DBT_NIFO_OSC_AOP) - newitem.Options |= DBT_NIFO_OSC_AP; - - newitem.LookupDepth = item.LookupDepth + 1; - - iter->q->push_front(newitem); - iter->returned->insert(newitem.Handle); - } - } - } - - if (((iter->filter.fHasFlags & item.Flags) == iter->filter.fHasFlags) && - ((iter->filter.fDontHasFlags & item.Flags) == 0)) - { - result = item.Handle; - - // account lookup - if (((item.Flags & (DBT_NF_IsAccount | DBT_NF_IsGroup | DBT_NF_IsRoot)) == 0) && - ((item.Options & DBT_NIFO_OC_USEACCOUNT) == DBT_NIFO_OC_USEACCOUNT)) - { - TDBTEntityHandle acc = item.Handle; - if (item.Flags & DBT_NF_IsVirtual) - acc = VirtualGetParent(item.Handle); - - acc = getAccount(acc); - - std::deque::iterator acci = iter->accounts->begin(); - - while ((acci != iter->accounts->end()) && (acc != 0)) - { - if (acci->Handle == acc) - acc = 0; - ++acci; - } - if (acc != 0) - { - TEntity * tmp = m_BlockManager.ReadBlock(acc, size, sig); - if (tmp) - { - newitem.Options = 0; - newitem.LookupDepth = 0; - newitem.Handle = acc; - newitem.Flags = tmp->Flags; - newitem.Level = tmp->Level; - iter->accounts->push_back(newitem); - } - } - } - } - - } while ((result == 0) && !iter->q->empty()); - - if (result == 0) - result = IterationNext(Iteration); - - return result; -} -unsigned int CEntities::IterationClose(TDBTEntityIterationHandle Iteration) -{ - PEntityIteration iter = reinterpret_cast(Iteration); - - delete iter->q; - delete iter->parents; - delete iter->accounts; - delete iter->returned; - delete iter; - - return 0; -} - - -TDBTEntityHandle CEntities::VirtualCreate(TDBTEntityHandle hRealEntity, TDBTEntityHandle hParent) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - TDBTEntityHandle haccount = 0; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - TEntity * realentity = m_BlockManager.ReadBlock(hRealEntity, size, sig); - - if (!realentity || (realentity->Flags & (DBT_NF_IsGroup | DBT_NF_IsRoot))) - return DBT_INVALIDPARAM; - - TDBTEntity entity = {0,0,0,0}; - entity.hParentEntity = hParent; - entity.fFlags = DBT_NF_IsVirtual | (realentity->Flags & DBT_NF_IsAccount); - entity.hAccountEntity = 0; - - TDBTEntityHandle result = CreateEntity(entity); - if (result == DBT_INVALIDPARAM) - return DBT_INVALIDPARAM; - - TEntity * entityblock = m_BlockManager.ReadBlock(result, size, sig); - if (!entityblock) - return DBT_INVALIDPARAM; - - if (realentity->Flags & DBT_NF_IsVirtual) - { - hRealEntity = realentity->VParent; - realentity = m_BlockManager.ReadBlock(hRealEntity, size, sig); - - if (!realentity) - return DBT_INVALIDPARAM; - } - - entityblock->VParent = hRealEntity; - m_BlockManager.UpdateBlock(result); - - if ((realentity->Flags & DBT_NF_HasVirtuals) == 0) - { - realentity->Flags |= DBT_NF_HasVirtuals; - m_BlockManager.UpdateBlock(hRealEntity); - } - - m_Virtuals._InsertVirtual(hRealEntity, result); - return result; -} - - -TDBTEntityHandle CEntities::compFirstContact() -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntityKey key = {0,0,0}; - iterator i = LowerBound(key); - TDBTEntityHandle res = 0; - - while (i && (res == 0)) - { - TEntity * tmp = m_BlockManager.ReadBlock(i->Entity, size, sig); - if (tmp) - { - if ((tmp->Flags & DBT_NFM_SpecialEntity) == 0) - res = i->Entity; - } - if (res == 0) - ++i; - } - - return res; -} -TDBTEntityHandle CEntities::compNextContact(TDBTEntityHandle hEntity) -{ - uint32_t sig = cEntitySignature; - uint32_t size = sizeof(TEntity); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEntityKey key; - key.Entity = hEntity; - TDBTEntityHandle res = 0; - - TEntity * entity = m_BlockManager.ReadBlock(hEntity, size, sig); - - if (entity) - { - key.Level = entity->Level; - key.Parent = entity->ParentEntity; - key.Entity++; - iterator i = LowerBound(key); - - while (i && (res == 0)) - { - entity = m_BlockManager.ReadBlock(i->Entity, size, sig); - if (entity) - { - if ((entity->Flags & DBT_NFM_SpecialEntity) == 0) - res = i->Entity; - } - if (res == 0) - ++i; - } - } - - return res; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Entities.h b/plugins/!Deprecated/Dbx_tree/src/Entities.h deleted file mode 100644 index 9cb3a6fea3..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Entities.h +++ /dev/null @@ -1,291 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include "Interface.h" -#include "FileBTree.h" -#include "MREWSync.h" -#include -#include - -#pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - - -/** - \brief Key Type of the VirtualsBTree - - This BTree don't hold data itself, it's just for organisation - The virtual Entities are sorted first based on their real Entity. - That is for enumeration of one Entity's virtual copies, which are all stored in one block in the BTree -**/ -typedef struct TVirtualKey { - TDBTEntityHandle RealEntity; /// hEntity of the duplicated RealEntity - TDBTEntityHandle Virtual; /// hEntity of the virtual duplicate - - bool operator < (const TVirtualKey & Other) const - { - if (RealEntity != Other.RealEntity) return RealEntity < Other.RealEntity; - if (Virtual != Other.Virtual) return Virtual < Other.Virtual; - return false; - } - //bool operator <= (const TVirtualKey & Other); - bool operator == (const TVirtualKey & Other) const - { - return (RealEntity == Other.RealEntity) && (Virtual == Other.Virtual); - } - //bool operator >= (const TVirtualKey & Other); - bool operator > (const TVirtualKey & Other) const - { - if (RealEntity != Other.RealEntity) return RealEntity > Other.RealEntity; - if (Virtual != Other.Virtual) return Virtual > Other.Virtual; - return false; - } -} TVirtualKey; - -/** - \brief Key Type of the EntityBTree - - The Entities are sorted first based on their level. (root is first node, followed by its children) - That is for enumeration of one Entity's children, which are all stored in one block in the BTree -**/ -typedef struct TEntityKey { - uint16_t Level; /// Level where Entity is located or parent-steps to root. Root.Level == 0, root children have level 1 etc. - TDBTEntityHandle Parent; /// hEntity of the Parent. Root.Parent == 0 - TDBTEntityHandle Entity; /// hEntity of the stored Entity itself - - bool operator < (const TEntityKey & Other) const - { - if (Level != Other.Level) return Level < Other.Level; - if (Parent != Other.Parent) return Parent < Other.Parent; - if (Entity != Other.Entity) return Entity < Other.Entity; - return false; - } - //bool operator <= (const TEntityKey & Other); - bool operator == (const TEntityKey & Other) const - { - return (Level == Other.Level) && (Parent == Other.Parent) && (Entity == Other.Entity); - } - //bool operator >= (const TEntityKey & Other); - bool operator > (const TEntityKey & Other) const - { - if (Level != Other.Level) return Level > Other.Level; - if (Parent != Other.Parent) return Parent > Other.Parent; - if (Entity != Other.Entity) return Entity > Other.Entity; - return false; - } -} TEntityKey; - -/** - \brief The data of an Entity -**/ -typedef struct TEntity { - uint16_t Level; /// Level where Entity is located or parent-steps to root. Root.Level == 0, root children have level 1 etc. !used in the BTreeKey! - uint16_t ChildCount; /// Count of the children !invalid for Virtual Entity! - TDBTEntityHandle ParentEntity; /// hEntity of the Parent. Root.Parent == 0 !used in the BTreeKey! - union { - TDBTEntityHandle VParent; /// if the Entity is Virtual this is the hEntity of the related Realnode - TDBTEntityHandle Account; /// if the Entity's account, only for real real normal Entities - }; - uint32_t Flags; /// flags, see cEF_* - /*CSettingsTree::TNodeRef*/ - uint32_t Settings; /// Offset to the SettingsBTree RootNode of this Entity, NULL if no settings are present - /*CEventsTree::TNodeRef*/ - uint32_t Events; /// Offset to the EventsBTree RootNode of this Entity, NULL if no events are present !invalid for Virtal Entity! - uint32_t EventCount; /// Count of the stored events !invalid for Virtual Entity! - uint32_t FirstUnreadEventTimestamp; /// timestamp of the first unread event - uint32_t FirstUnreadEventHandle;/// ID of the first unread event - uint8_t Reserved[4]; /// reserved storage -} TEntity; - -#pragma pack(pop) // pop the alignment from stack - - - - -/** - \brief Manages the Virtual Entities in the Database - - A virtual Entity is stored as normal Entity in the database-structure, but doesn't hold own settings/events. - Such an Entity has the virtual flag set and refers its original duplicate. - All copies are stored in this BTree sorted to the RealEntity. - If the RealEntity should be deleted take the first virtual duplicate and make it real. Also change the relation of other copies. -**/ -class CVirtuals : public CFileBTree -{ -private: - -protected: - -public: - CVirtuals(CBlockManager & BlockManager, TNodeRef Root); - virtual ~CVirtuals(); - - /** - \brief Changes reference for all copies to the first Virtual in list - - \return New Original (previously first Virtual) to associate data with - **/ - TDBTEntityHandle _DeleteRealEntity(TDBTEntityHandle hRealEntity); - - bool _InsertVirtual(TDBTEntityHandle hRealEntity, TDBTEntityHandle hVirtual); - void _DeleteVirtual(TDBTEntityHandle hRealEntity, TDBTEntityHandle hVirtual); - - // services: - TDBTEntityHandle getParent(TDBTEntityHandle hVirtual); - TDBTEntityHandle getFirst(TDBTEntityHandle hRealEntity); - TDBTEntityHandle getNext(TDBTEntityHandle hVirtual); -}; - - -static const uint32_t cEntitySignature = 0x9A6B3C0D; -static const uint16_t cEntityNodeSignature = 0x65A9; -static const uint16_t cVirtualNodeSignature = 0x874E; -/** - \brief Manages the Entities in the Database - - A hEntity is equivalent to the fileoffset of its related TEntity structure -**/ -class CEntities : public CFileBTree -{ - -public: - CEntities(CBlockManager & BlockManager, TDBTEntityHandle RootEntity, TNodeRef EntityRoot, CVirtuals::TNodeRef VirtualRoot); - virtual ~CEntities(); - - typedef sigslot::signal2 TOnEntityDelete; - typedef sigslot::signal2 TOnInternalDeleteSettings; - typedef sigslot::signal2 TOnInternalDeleteEvents; - - typedef sigslot::signal3 TOnInternalMergeSettings; - typedef sigslot::signal3 TOnInternalTransferEvents; - - CVirtuals::TOnRootChanged & sigVirtualRootChanged() - { - return m_Virtuals.sigRootChanged(); - }; - - TOnEntityDelete & sigEntityDelete() - { - return m_sigEntityDelete; - }; - TOnInternalDeleteEvents & _sigDeleteEvents() - { - return m_sigInternalDeleteEvents; - }; - TOnInternalDeleteSettings & _sigDeleteSettings() - { - return m_sigInternalDeleteSettings; - }; - TOnInternalMergeSettings & _sigMergeSettings() - { - return m_sigInternalMergeSettings; - }; - TOnInternalTransferEvents & _sigTransferEvents() - { - return m_sigInternalTransferEvents; - }; - - //internal helpers: - /*CSettingsTree::TNodeRef*/ - uint32_t _getSettingsRoot(TDBTEntityHandle hEntity); - bool _setSettingsRoot(TDBTEntityHandle hEntity, /*CSettingsTree::TNodeRef*/ uint32_t NewRoot); - uint32_t _getEventsRoot(TDBTEntityHandle hEntity); - bool _setEventsRoot(TDBTEntityHandle hEntity, /*CSettingsTree::TNodeRef*/ uint32_t NewRoot); - uint32_t _getEventCount(TDBTEntityHandle hEntity); - uint32_t _adjustEventCount(TDBTEntityHandle hEntity, int32_t Adjust); - bool _getFirstUnreadEvent(TDBTEntityHandle hEntity, uint32_t & hEvent, uint32_t & Timestamp); - bool _setFirstUnreadEvent(TDBTEntityHandle hEntity, uint32_t hEvent, uint32_t Timestamp); - - CVirtuals & _getVirtuals() - { - return m_Virtuals; - }; - - //compatibility: - TDBTEntityHandle compFirstContact(); - TDBTEntityHandle compNextContact(TDBTEntityHandle hEntity); - //Services: - TDBTEntityHandle CEntities::getRootEntity() - { - return m_RootEntity; - }; - - TDBTEntityHandle getParent(TDBTEntityHandle hEntity); - TDBTEntityHandle setParent(TDBTEntityHandle hEntity, TDBTEntityHandle hParent); - uint32_t getChildCount(TDBTEntityHandle hEntity); - uint32_t getFlags(TDBTEntityHandle hEntity); - uint32_t getAccount(TDBTEntityHandle hEntity); - - TDBTEntityHandle CreateEntity(const TDBTEntity & Entity); - unsigned int DeleteEntity(TDBTEntityHandle hEntity); - - TDBTEntityIterationHandle IterationInit(const TDBTEntityIterFilter & Filter, TDBTEntityHandle hParent); - TDBTEntityHandle IterationNext(TDBTEntityIterationHandle Iteration); - unsigned int IterationClose(TDBTEntityIterationHandle Iteration); - - TDBTEntityHandle VirtualCreate(TDBTEntityHandle hRealEntity, TDBTEntityHandle hParent); - TDBTEntityHandle VirtualGetParent(TDBTEntityHandle hVirtual) - { - return m_Virtuals.getParent(hVirtual); - }; - TDBTEntityHandle VirtualGetFirst(TDBTEntityHandle hRealEntity) - { - return m_Virtuals.getFirst(hRealEntity); - }; - TDBTEntityHandle VirtualGetNext(TDBTEntityHandle hVirtual) - { - return m_Virtuals.getNext(hVirtual); - }; -private: - -protected: - - typedef struct TEntityIterationItem { - uint8_t Options; - uint8_t LookupDepth; - uint16_t Level; - TDBTEntityHandle Handle; - uint32_t Flags; - } TEntityIterationItem; - - typedef struct TEntityIteration { - TDBTEntityIterFilter filter; - std::deque * q; - std::deque * parents; - std::deque * accounts; - stdext::hash_set * returned; - } TEntityIteration, *PEntityIteration; - - TDBTEntityHandle m_RootEntity; - CVirtuals m_Virtuals; - - TDBTEntityHandle _CreateRootEntity(); - void _InternalTransferContacts(TDBTEntityHandle OldAccount, TDBTEntityHandle NewAccount); - - TOnEntityDelete m_sigEntityDelete; - TOnInternalDeleteEvents m_sigInternalDeleteEvents; - TOnInternalDeleteSettings m_sigInternalDeleteSettings; - TOnInternalMergeSettings m_sigInternalMergeSettings; - TOnInternalTransferEvents m_sigInternalTransferEvents; - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/Events.cpp b/plugins/!Deprecated/Dbx_tree/src/Events.cpp deleted file mode 100644 index 11870f1d1f..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Events.cpp +++ /dev/null @@ -1,983 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Events.h" - -CEventsTypeManager::CEventsTypeManager(CEntities & Entities, CSettings & Settings) -: m_Entities(Entities), - m_Settings(Settings), - m_Map() -{ - m_Settings._EnsureModuleExists("$EventTypes"); -} -CEventsTypeManager::~CEventsTypeManager() -{ - TTypeMap::iterator it = m_Map.begin(); - - while (it != m_Map.end()) - { - delete [] it->second->ModuleName; - delete it->second; - ++it; - } -} - -uint32_t CEventsTypeManager::MakeGlobalID(char* Module, uint32_t EventType) -{ - uint32_t l = static_cast(strlen(Module)); - void * buf = malloc(l + sizeof(uint32_t)); - memcpy(buf, Module, l); - memcpy(((char*)buf) + l, &EventType, sizeof(uint32_t)); - - uint32_t h = Hash(buf, l + sizeof(uint32_t)); - free(buf); - - char * m; - uint32_t t; - while (GetType(h, m, t) && ((t != EventType) || (strcmp(m, Module) != 0))) - { - ++h; - } - - return h; -} -bool CEventsTypeManager::GetType(uint32_t GlobalID, char * & Module, uint32_t & EventType) -{ - TTypeMap::iterator it = m_Map.find(GlobalID); - - if (it == m_Map.end()) - { - char n[256]; - - TDBTSettingDescriptor d = {0,0,0,0,0,0,0,0}; - d.cbSize = sizeof(d); - d.Entity = m_Entities.getRootEntity(); - d.pszSettingName = n; - - TDBTSetting sid = {0,0,0,0}; - TDBTSetting sname = {0,0,0,0}; - - sid.cbSize = sizeof(sid); - sid.Descriptor = &d; - sid.Type = DBT_ST_INT; - - sname.cbSize = sizeof(sname); - sname.Descriptor = &d; - sname.Type = DBT_ST_ANSI; - - mir_snprintf(n, SIZEOF(n), "$EventTypes/%08x/ModuleID", GlobalID); - TDBTSettingHandle h = m_Settings.ReadSetting(sid); - - if ((h != DBT_INVALIDPARAM) && (h != 0)) - { - mir_snprintf(n, SIZEOF(n), "$EventTypes/%08x/ModuleName", GlobalID); - d.Flags = 0; - h = m_Settings.ReadSetting(sname); - - if ((h != DBT_INVALIDPARAM) && (h != 0)) - { - PEventType t = new TEventType; - - t->EventType = sid.Value.Int; - - t->ModuleName = new char[sname.Value.Length]; - strcpy_s(t->ModuleName, sname.Value.Length, sname.Value.pAnsi); - - m_Map.insert(std::make_pair(GlobalID, t)); - - mir_free(sname.Value.pAnsi); - - Module = t->ModuleName; - EventType = t->EventType; - - return true; - } - } - } else { - Module = it->second->ModuleName; - EventType = it->second->EventType; - - return true; - } - - return false; -} - -uint32_t CEventsTypeManager::EnsureIDExists(char* Module, uint32_t EventType) -{ - uint32_t res = MakeGlobalID(Module, EventType); - char * m; - uint32_t t; - if (!GetType(res, m, t)) - { - char n[256]; - - TDBTSettingDescriptor d = {0,0,0,0,0,0,0,0}; - d.cbSize = sizeof(d); - d.pszSettingName = n; - d.Entity = m_Entities.getRootEntity(); - - TDBTSetting s = {0,0,0,0}; - s.cbSize = sizeof(s); - s.Descriptor = &d; - - mir_snprintf(n, SIZEOF(n), "$EventTypes/%08x/ModuleID", res); - s.Type = DBT_ST_INT; - s.Value.Int = EventType; - m_Settings.WriteSetting(s); - - mir_snprintf(n, SIZEOF(n), "$EventTypes/%08x/ModuleName", res); - d.Flags = 0; - s.Type = DBT_ST_ANSI; - s.Value.Length = static_cast(strlen(Module) + 1); - s.Value.pAnsi = Module; - m_Settings.WriteSetting(s); - - m_Settings._EnsureModuleExists(Module); - } - - return res; -} - - -CEvents::CEvents( - CBlockManager & BlockManager, - CEncryptionManager & EncryptionManager, - CEntities & Entities, - CSettings & Settings -) -: m_BlockManager(BlockManager), - m_EncryptionManager(EncryptionManager), - m_Entities(Entities), - m_Types(Entities, Settings), - m_EntityEventsMap() -{ - m_Entities._sigDeleteEvents().connect(this, &CEvents::onDeleteEvents); - m_Entities._sigTransferEvents().connect(this, &CEvents::onTransferEvents); -} - -CEvents::~CEvents() -{ - TEntityEventsMap::iterator i = m_EntityEventsMap.begin(); - while (i != m_EntityEventsMap.end()) - { - delete i->second->RealTree; - delete i->second->VirtualTree; - delete i->second; - ++i; - } -} - -void CEvents::onRootChanged(void* EventsTree, CEventsTree::TNodeRef NewRoot) -{ - m_Entities._setEventsRoot(reinterpret_cast(EventsTree)->Entity(), NewRoot); -} - -void CEvents::onDeleteEventCallback(void * Tree, const TEventKey & Key, uint32_t Param) -{ - m_BlockManager.DeleteBlock(Key.Event); -} - -void CEvents::onDeleteVirtualEventCallback(void * Tree, const TEventKey & Key, uint32_t Param) -{ - m_BlockManager.DeleteBlock(Key.Event); -} -void CEvents::onDeleteEvents(CEntities * Entities, TDBTEntityHandle hEntity) -{ - PEntityEventsRecord record = getEntityRecord(hEntity); - - if (record == NULL) - return; - - m_Entities._setEventsRoot(hEntity, 0); - - if (record->VirtualCount) - { - CVirtualEventsTree::TDeleteCallback callback; - callback.connect(this, &CEvents::onDeleteVirtualEventCallback); - - record->VirtualTree->DeleteTree(&callback, hEntity); - } - delete record->VirtualTree; - - CEventsTree::TDeleteCallback callback; - callback.connect(this, &CEvents::onDeleteEventCallback); - record->RealTree->DeleteTree(&callback, hEntity); - delete record->RealTree; - m_EntityEventsMap.erase(hEntity); -} -void CEvents::onTransferEvents(CEntities * Entities, TDBTEntityHandle Source, TDBTEntityHandle Dest) -{ - PEntityEventsRecord record = getEntityRecord(Source); - - if (record == NULL) - return; - - if (record->VirtualCount) - { - TEventKey key = {0,0}; - - CVirtualEventsTree::iterator i = record->VirtualTree->LowerBound(key); - - while (i) - { - uint32_t sig = cEventSignature; - uint32_t size = 0; - TEvent * tmp = m_BlockManager.ReadBlock(i->Event, size, sig); - if (tmp) - { - tmp->Entity = Dest; - m_BlockManager.UpdateBlock(i->Event); - } - ++i; - } - } - - { - TEventKey key = {0,0}; - - CEventsTree::iterator i = record->RealTree->LowerBound(key); - while (i) - { - uint32_t sig = cEventSignature; - uint32_t size = 0; - TEvent * tmp = m_BlockManager.ReadBlock(i->Event, size, sig); - if (tmp) - { - tmp->Entity = Dest; - m_BlockManager.UpdateBlock(i->Event); - } - ++i; - } - - m_Entities._setEventsRoot(Source, 0); - m_Entities._setEventsRoot(Dest, record->RealTree->getRoot()); - m_Entities._adjustEventCount(Dest, m_Entities._getEventCount(Source)); - m_Entities._getFirstUnreadEvent(Source, key.Event, key.TimeStamp); - m_Entities._setFirstUnreadEvent(Dest, key.Event, key.TimeStamp); - } - - record->VirtualTree->Entity(Dest); - record->RealTree->Entity(Dest); - m_EntityEventsMap.erase(Source); - m_EntityEventsMap.insert(std::make_pair(Dest, record)); -} - -CEvents::PEntityEventsRecord CEvents::getEntityRecord(TDBTEntityHandle hEntity) -{ - TEntityEventsMap::iterator i = m_EntityEventsMap.find(hEntity); - if (i != m_EntityEventsMap.end()) - return i->second; - - uint32_t root = m_Entities._getEventsRoot(hEntity); - if (root == DBT_INVALIDPARAM) - return NULL; - - PEntityEventsRecord res = new TEntityEventsRecord; - res->RealTree = new CEventsTree(m_BlockManager, root, hEntity); - res->RealTree->sigRootChanged().connect(this, &CEvents::onRootChanged); - res->VirtualTree = new CVirtualEventsTree(hEntity); - res->VirtualCount = 0; - res->FirstVirtualUnread.TimeStamp = 0; - res->FirstVirtualUnread.Event = 0; - m_EntityEventsMap.insert(std::make_pair(hEntity, res)); - - return res; -} - -inline uint32_t CEvents::adjustVirtualEventCount(PEntityEventsRecord Record, int32_t Adjust) -{ - if (((Adjust < 0) && ((uint32_t)(-Adjust) <= Record->VirtualCount)) || - ((Adjust > 0) && ((0xffffffff - Record->VirtualCount) > (uint32_t)Adjust))) - { - Record->VirtualCount += Adjust; - } - - return Record->VirtualCount; -} - -inline bool CEvents::MarkEventsTree(TEventBase::iterator Iterator, TDBTEventHandle FirstUnread) -{ - uint32_t sig, size; - bool b = true; - bool res = false; - while (Iterator && b) - { - sig = cEventSignature; - size = 0; - TEvent * event = m_BlockManager.ReadBlock(Iterator->Event, size, sig); - if (event) - { - if (Iterator->Event == FirstUnread) - res = true; - - if ((event->Flags & DBT_EF_READ) == 0) - { - event->Flags |= DBT_EF_READ; - m_BlockManager.UpdateBlock(Iterator->Event); - --Iterator; - } else { - b = false; - } - } else { - --Iterator; - } - } - return res; -} -inline void CEvents::FindNextUnreadEvent(TEventBase::iterator & Iterator) -{ - uint32_t sig, size; - while (Iterator) - { - sig = cEventSignature; - size = 0; - TEvent * event = m_BlockManager.ReadBlock(Iterator->Event, size, sig); - if (event) - { - if (event->Flags & DBT_EF_READ) - ++Iterator; - else - return; - } else { - ++Iterator; - } - } -} - -unsigned int CEvents::GetBlobSize(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - if (!event) - return DBT_INVALIDPARAM; - - return event->DataLength; -} - -unsigned int CEvents::Get(TDBTEventHandle hEvent, TDBTEvent & Event) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - if (!event) - return DBT_INVALIDPARAM; - - uint8_t * blob = reinterpret_cast(event + 1); - - if (!m_Types.GetType(event->Type, Event.ModuleName, Event.EventType)) - { - Event.EventType = event->Type; - Event.ModuleName = "???"; - } - - Event.Flags = event->Flags; - if (m_BlockManager.IsForcedVirtual(hEvent)) - Event.Flags |= DBT_EF_VIRTUAL; - - Event.Timestamp = event->TimeStamp; - - if (Event.cbBlob < event->DataLength) - Event.pBlob = (uint8_t*) mir_realloc(Event.pBlob, event->DataLength); - - memcpy(Event.pBlob, blob, event->DataLength); - Event.cbBlob = event->DataLength; - - return 0; -} - -unsigned int CEvents::GetCount(TDBTEntityHandle hEntity) -{ - CBlockManager::ReadTransaction trans(m_BlockManager); - - uint32_t res = m_Entities._getEventCount(hEntity); - PEntityEventsRecord record = getEntityRecord(hEntity); - - if ((res == DBT_INVALIDPARAM) || !record) - return DBT_INVALIDPARAM; - - res = res + record->VirtualCount; // access to Virtual Count need sync, too - - return res; -} - -unsigned int CEvents::Delete(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - TEventKey key = {0, hEvent}; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - if (!event) - return DBT_INVALIDPARAM; - - key.TimeStamp = event->TimeStamp; - - PEntityEventsRecord record = getEntityRecord(event->Entity); - if (!record) - return DBT_INVALIDPARAM; - - if (m_BlockManager.IsForcedVirtual(hEvent)) - { - if (record->VirtualTree->Delete(key)) - { - adjustVirtualEventCount(record, -1); - - if (record->FirstVirtualUnread.Event == hEvent) - { - CVirtualEventsTree::iterator vi = record->VirtualTree->LowerBound(key); - FindNextUnreadEvent(vi); - if (vi) - { - record->FirstVirtualUnread = *vi; - } else { - record->FirstVirtualUnread.TimeStamp = 0; - record->FirstVirtualUnread.Event = 0; - } - } - } - } else { // real event - if (record->RealTree->Delete(key)) - { - m_Entities._adjustEventCount(event->Entity, -1); - TEventKey unreadkey; - m_Entities._getFirstUnreadEvent(event->Entity, unreadkey.Event, unreadkey.TimeStamp); - if (unreadkey.Event == hEvent) - { - CEventsTree::iterator it = record->VirtualTree->LowerBound(key); - FindNextUnreadEvent(it); - if (it) - { - m_Entities._setFirstUnreadEvent(event->Entity, it->Event, it->TimeStamp); - } else { - m_Entities._setFirstUnreadEvent(event->Entity, 0, 0); - } - } - } - } - m_BlockManager.DeleteBlock(hEvent); - - return 0; -} - -TDBTEventHandle CEvents::Add(TDBTEntityHandle hEntity, TDBTEvent & Event) -{ - TDBTEventHandle res = 0; - TEvent * event; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - uint32_t eflags = m_Entities.getFlags(hEntity); - PEntityEventsRecord record = getEntityRecord(hEntity); - - if ((eflags == DBT_INVALIDPARAM) || - ((eflags & (DBT_NF_IsGroup | DBT_NF_IsRoot)) == DBT_NF_IsGroup) || // forbid events in groups. but allow root to have system history - !record) - { - return DBT_INVALIDPARAM; - } - - if (eflags & DBT_NF_IsVirtual) - hEntity = m_Entities.VirtualGetParent(hEntity); - - uint8_t *blobdata = Event.pBlob; - bool bloballocated = false; - - if (Event.Flags & DBT_EF_VIRTUAL) - { - event = m_BlockManager.CreateBlockVirtual(res, cEventSignature, sizeof(TEvent) + Event.cbBlob); - } else { - event = m_BlockManager.CreateBlock(res, cEventSignature, sizeof(TEvent) + Event.cbBlob); - } - - if (!event) - return DBT_INVALIDPARAM; - - TEventKey key = {0,0}; - - event->TimeStamp = Event.Timestamp; - event->Flags = Event.Flags & ~DBT_EF_VIRTUAL; - event->Type = m_Types.EnsureIDExists(Event.ModuleName, Event.EventType); - event->DataLength = Event.cbBlob; - event->Entity = hEntity; - - key.TimeStamp = event->TimeStamp; - key.Event = res; - memcpy(event + 1, Event.pBlob, Event.cbBlob); - - m_BlockManager.UpdateBlock(res); - - if (Event.Flags & DBT_EF_VIRTUAL) - { - record->VirtualTree->Insert(key); - adjustVirtualEventCount(record, +1); - if (!(Event.Flags & DBT_EF_READ) && ((record->FirstVirtualUnread.Event == 0) || (key < record->FirstVirtualUnread))) - { - record->FirstVirtualUnread = key; - } - } else { - record->RealTree->Insert(key); - m_Entities._adjustEventCount(hEntity, +1); - - if (!(Event.Flags & DBT_EF_READ)) - { - TEventKey unreadkey; - if (m_Entities._getFirstUnreadEvent(hEntity, unreadkey.Event, unreadkey.TimeStamp) && - ((unreadkey.Event == 0) || (key < unreadkey))) - { - m_Entities._setFirstUnreadEvent(hEntity, key.Event, key.TimeStamp); - } - } - } - - return res; -} -unsigned int CEvents::MarkRead(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - TEventKey key = {0, hEvent}; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - - if (!event) - return DBT_INVALIDPARAM; - - key.TimeStamp = event->TimeStamp; - - if (event->Flags & DBT_EF_READ) - return event->Flags; - - PEntityEventsRecord record = getEntityRecord(event->Entity); - if (!record) - return DBT_INVALIDPARAM; - - CEventsTree::iterator it = record->RealTree->UpperBound(key); - CVirtualEventsTree::iterator vi = record->VirtualTree->UpperBound(key); - - m_Entities._getFirstUnreadEvent(event->Entity, key.Event, key.TimeStamp); - if (MarkEventsTree(it, key.Event)) - { - FindNextUnreadEvent(++it); - if (it) - { - m_Entities._setFirstUnreadEvent(event->Entity, it->Event, it->TimeStamp); - } else { - m_Entities._setFirstUnreadEvent(event->Entity, 0, 0); - } - } - if (MarkEventsTree(vi, record->FirstVirtualUnread.Event)) - { - FindNextUnreadEvent(++vi); - if (vi) - { - record->FirstVirtualUnread = *it; - } else { - record->FirstVirtualUnread.TimeStamp = 0; - record->FirstVirtualUnread.Event = 0; - } - } - - return event->Flags | DBT_EF_READ; -} -unsigned int CEvents::WriteToDisk(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - TEventKey key; - key.Event = hEvent; - - CBlockManager::WriteTransaction trans(m_BlockManager); - - if (!m_BlockManager.IsForcedVirtual(hEvent)) - return DBT_INVALIDPARAM; - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - if (!event || (size < sizeof(TEvent))) - return DBT_INVALIDPARAM; - - PEntityEventsRecord record = getEntityRecord(event->Entity); - if (!record) - return DBT_INVALIDPARAM; - - key.TimeStamp = event->TimeStamp; - key.Event = hEvent; - - if (record->VirtualTree->Delete(key)) - adjustVirtualEventCount(record, -1); - - if (record->RealTree->Insert(key)) - m_Entities._adjustEventCount(event->Entity, +1); - m_BlockManager.WriteBlockToDisk(hEvent); - - return 0; -} - -TDBTEntityHandle CEvents::getEntity(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - if (!event) - return DBT_INVALIDPARAM; - - return event->Entity; -} - -TDBTEventIterationHandle CEvents::IterationInit(TDBTEventIterFilter & Filter) -{ - CBlockManager::ReadTransaction trans(m_BlockManager); - - PEntityEventsRecord record = getEntityRecord(Filter.hEntity); - - if (!record) - return DBT_INVALIDPARAM; - - std::queue q; - q.push(record->RealTree); - q.push(record->VirtualTree); - - TDBTEntityIterFilter f = {0,0,0,0}; - f.cbSize = sizeof(f); - f.Options = Filter.Options; - - TDBTEntityIterationHandle citer = m_Entities.IterationInit(f, Filter.hEntity); - if (citer != DBT_INVALIDPARAM) - { - m_Entities.IterationNext(citer); - TDBTEntityHandle c = m_Entities.IterationNext(citer); - while (c != 0) - { - record = getEntityRecord(c); - if (record) - { - q.push(record->RealTree); - q.push(record->VirtualTree); - } - - c = m_Entities.IterationNext(citer); - } - - m_Entities.IterationClose(citer); - } - - for (unsigned j = 0; j < Filter.ExtraCount; ++j) - { - record = getEntityRecord(Filter.ExtraEntities[j]); - if (record) - { - q.push(record->RealTree); - q.push(record->VirtualTree); - } - } - - PEventIteration iter = new TEventIteration; - iter->Filter = Filter; - iter->LastEvent = 0; - iter->Heap = NULL; - - TEventKey key; - key.TimeStamp = Filter.tSince; - key.Event = 0; - - while (!q.empty()) - { - TEventBase * b = q.front(); - q.pop(); - - TEventBase::iterator it = b->LowerBound(key); - if (it) - { - TEventBase::iterator * it2 = new TEventBase::iterator(it); - it2->setManaged(); - if (iter->Heap) - { - iter->Heap->Insert(*it2); - } else { - iter->Heap = new TEventsHeap(*it2, TEventsHeap::ITForward, true); - } - } - } - - if (iter->Heap == NULL) - { - delete iter; - iter = (PEventIteration)DBT_INVALIDPARAM; - } - - return reinterpret_cast(iter); -} - -TDBTEventHandle CEvents::IterationNext(TDBTEventIterationHandle Iteration) -{ - PEventIteration iter = reinterpret_cast(Iteration); - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TDBTEventHandle res = 0; - TEventBase::iterator it = iter->Heap->Top(); - - while ((it) && (it.wasDeleted() || ((it->TimeStamp <= iter->Filter.tTill) && (it->Event == iter->LastEvent)))) - { - iter->Heap->Pop(); - it = iter->Heap->Top(); - } - - if ((it) && !it.wasDeleted() && (it->TimeStamp <= iter->Filter.tTill)) - { - res = it->Event; - iter->Heap->Pop(); - } - - if (res) - { - iter->LastEvent = res; - if (iter->Filter.Event) - { - iter->Filter.Event->EventType = 0; - Get(res, *iter->Filter.Event); - } - } - - return res; -} - -unsigned int CEvents::IterationClose(TDBTEventIterationHandle Iteration) -{ - PEventIteration iter = reinterpret_cast(Iteration); - - CBlockManager::ReadTransaction trans(m_BlockManager); - delete iter->Heap; - delete iter; - return 0; -} - - -TDBTEventHandle CEvents::compFirstEvent(TDBTEntityHandle hEntity) -{ - CBlockManager::ReadTransaction trans(m_BlockManager); - - TDBTEventHandle res = 0; - - PEntityEventsRecord record = getEntityRecord(hEntity); - if (!record) - return 0; - - TEventKey key = {0,0}; - CEventsTree::iterator i = record->RealTree->LowerBound(key); - CVirtualEventsTree::iterator vi = record->VirtualTree->LowerBound(key); - - if (i && vi) - { - if (*i < *vi) - { - res = i->Event; - } else { - res = vi->Event; - } - } else if (i) - { - res = i->Event; - } else if (vi) - { - res = vi->Event; - } - - return res; -} -TDBTEventHandle CEvents::compFirstUnreadEvent(TDBTEntityHandle hEntity) -{ - CBlockManager::ReadTransaction trans(m_BlockManager); - - TDBTEventHandle res = 0; - - PEntityEventsRecord record = getEntityRecord(hEntity); - if (!record) - return 0; - - TEventKey key; - m_Entities._getFirstUnreadEvent(hEntity, key.Event, key.TimeStamp); - if (key.Event) - { - if (record->FirstVirtualUnread.Event && (record->FirstVirtualUnread < key)) - { - res = record->FirstVirtualUnread.Event; - } else { - res = key.Event; - } - } else if (record->FirstVirtualUnread.Event) - { - res = record->FirstVirtualUnread.Event; - } - - return res; -} -TDBTEventHandle CEvents::compLastEvent(TDBTEntityHandle hEntity) -{ - CBlockManager::ReadTransaction trans(m_BlockManager); - TDBTEventHandle res = 0; - - PEntityEventsRecord record = getEntityRecord(hEntity); - if (!record) - return 0; - - TEventKey key = {0xffffffff, 0xffffffff}; - - CEventsTree::iterator i = record->RealTree->UpperBound(key); - CVirtualEventsTree::iterator vi = record->VirtualTree->UpperBound(key); - - if (i && vi) - { - if (*i > *vi) - { - res = i->Event; - } else { - res = vi->Event; - } - } else if (i) - { - res = i->Event; - } else if (vi) - { - res = vi->Event; - } - - return res; -} -TDBTEventHandle CEvents::compNextEvent(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - - if (!event) - return 0; - - TEventKey key = {event->TimeStamp, hEvent}; - - PEntityEventsRecord record = getEntityRecord(event->Entity); - - if (!record) - return 0; - - if (key.Event == 0xffffffff) - { - if (key.TimeStamp == 0xffffffff) - { - return 0; - } else { - ++key.TimeStamp; - } - } else { - ++key.Event; - } - - CEventsTree::iterator i = record->RealTree->LowerBound(key); - CVirtualEventsTree::iterator vi = record->VirtualTree->LowerBound(key); - - TDBTEventHandle res = 0; - if (i && vi) - { - if (*i < *vi) - { - res = i->Event; - } else { - res = vi->Event; - } - } else if (i) - { - res = i->Event; - } else if (vi) - { - res = vi->Event; - } - - return res; -} -TDBTEventHandle CEvents::compPrevEvent(TDBTEventHandle hEvent) -{ - uint32_t sig = cEventSignature; - uint32_t size = 0; - - CBlockManager::ReadTransaction trans(m_BlockManager); - - TEvent * event = m_BlockManager.ReadBlock(hEvent, size, sig); - - if (!event) - return 0; - - TEventKey key = {event->TimeStamp, hEvent}; - - PEntityEventsRecord record = getEntityRecord(event->Entity); - if (!record) - return 0; - - if (key.Event == 0) - { - if (key.TimeStamp == 0) - { - return 0; - } else { - --key.TimeStamp; - } - } else { - --key.Event; - } - - CEventsTree::iterator i = record->RealTree->UpperBound(key); - CVirtualEventsTree::iterator vi = record->VirtualTree->UpperBound(key); - - TDBTEventHandle res = 0; - if (i && vi) - { - if (*i > *vi) - { - res = i->Event; - } else { - res = vi->Event; - } - } else if (i) - { - res = i->Event; - } else if (vi) - { - res = vi->Event; - } - - return res; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Events.h b/plugins/!Deprecated/Dbx_tree/src/Events.h deleted file mode 100644 index 170ff6fc3c..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Events.h +++ /dev/null @@ -1,250 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include "Interface.h" -#include "BTree.h" -#include "FileBTree.h" -#include "BlockManager.h" -#include "IterationHeap.h" -#include "Entities.h" -#include "Settings.h" -#include "Hash.h" -#include "EncryptionManager.h" -#include "sigslot.h" - -#include -#include -#include -#include -#include - -#pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - -/** - \brief Key Type of the EventsBTree - - The Key consists of a timestamp, seconds elapsed since 1.1.1970 - and an Index, which makes it possible to store multiple events with the same timestamp -**/ -typedef struct TEventKey { - uint32_t TimeStamp; /// timestamp at which the event occoured - TDBTEventHandle Event; - - bool operator < (const TEventKey & Other) const - { - if (TimeStamp != Other.TimeStamp) return TimeStamp < Other.TimeStamp; - if (Event != Other.Event) return Event < Other.Event; - return false; - } - //bool operator <= (const TEventKey & Other); - bool operator == (const TEventKey & Other) const - { - return (TimeStamp == Other.TimeStamp) && (Event == Other.Event); - } - - //bool operator >= (const TEventKey & Other); - bool operator > (const TEventKey & Other) const - { - if (TimeStamp != Other.TimeStamp) return TimeStamp > Other.TimeStamp; - if (Event != Other.Event) return Event > Other.Event; - return false; - } - -} TEventKey; - -/** - \brief The data of an Event - - A event's data is variable length. The data is a TDBTEvent-structure followed by varaible length data. - - fixed data - - blob data (mostly UTF8 message body) -**/ -typedef struct TEvent { - uint32_t Flags; /// Flags - uint32_t TimeStamp; /// Timestamp of the event (seconds elapsed since 1.1.1970) used as key element - uint32_t Type; /// Eventtype - TDBTEntityHandle Entity; /// hEntity which owns this event - uint32_t DataLength; /// Length of the stored data in bytes - - uint8_t Reserved[8]; /// reserved storage -} TEvent; - -#pragma pack(pop) - - -static const uint32_t cEventSignature = 0x365A7E92; -static const uint16_t cEventNodeSignature = 0x195C; - -/** - \brief Manages the Events Index in the Database -**/ -class CEventsTree : public CFileBTree -{ -private: - TDBTEntityHandle m_Entity; - -public: - CEventsTree(CBlockManager & BlockManager, TNodeRef RootNode, TDBTEntityHandle Entity) - : CFileBTree::CFileBTree(BlockManager, RootNode, cEventNodeSignature), - m_Entity(Entity) - { }; - ~CEventsTree() - { }; - - TDBTEntityHandle Entity() - { - return m_Entity; - }; - void Entity(TDBTEntityHandle NewEntity) - { - m_Entity = NewEntity; - }; -}; - -/** - \brief Manages the Virtual Events Index - Sorry for duplicating code... -**/ -class CVirtualEventsTree : public CBTree -{ -private: - TDBTEntityHandle m_Entity; - -public: - CVirtualEventsTree(TDBTEntityHandle Entity) - : CBTree::CBTree(0), - m_Entity(Entity) - { }; - - ~CVirtualEventsTree() - { }; - - TDBTEntityHandle Entity() - { - return m_Entity; - }; - void Entity(TDBTEntityHandle NewEntity) - { - m_Entity = NewEntity; - }; -}; - - -class CEventsTypeManager -{ -public: - CEventsTypeManager(CEntities & Entities, CSettings & Settings); - ~CEventsTypeManager(); - - uint32_t MakeGlobalID(char* Module, uint32_t EventType); - bool GetType(uint32_t GlobalID, char * & Module, uint32_t & EventType); - uint32_t EnsureIDExists(char* Module, uint32_t EventType); - -private: - typedef struct TEventType { - char * ModuleName; - uint32_t EventType; - } TEventType, *PEventType; - typedef stdext::hash_map TTypeMap; - - CEntities & m_Entities; - CSettings & m_Settings; - TTypeMap m_Map; - -}; - - -class CEvents : public sigslot::has_slots<> -{ -public: - - CEvents( - CBlockManager & BlockManager, - CEncryptionManager & EncryptionManager, - CEntities & Entities, - CSettings & Settings - ); - ~CEvents(); - - //compatibility - TDBTEventHandle compFirstEvent(TDBTEntityHandle hEntity); - TDBTEventHandle compFirstUnreadEvent(TDBTEntityHandle hEntity); - TDBTEventHandle compLastEvent(TDBTEntityHandle hEntity); - TDBTEventHandle compNextEvent(TDBTEventHandle hEvent); - TDBTEventHandle compPrevEvent(TDBTEventHandle hEvent); - - //services - unsigned int GetBlobSize(TDBTEventHandle hEvent); - unsigned int Get(TDBTEventHandle hEvent, TDBTEvent & Event); - unsigned int GetCount(TDBTEntityHandle hEntity); - unsigned int Delete(TDBTEventHandle hEvent); - TDBTEventHandle Add(TDBTEntityHandle hEntity, TDBTEvent & Event); - unsigned int MarkRead(TDBTEventHandle hEvent); - unsigned int WriteToDisk(TDBTEventHandle hEvent); - - TDBTEntityHandle getEntity(TDBTEventHandle hEvent); - - TDBTEventIterationHandle IterationInit(TDBTEventIterFilter & Filter); - TDBTEventHandle IterationNext(TDBTEventIterationHandle Iteration); - unsigned int IterationClose(TDBTEventIterationHandle Iteration); - - -private: - typedef CBTree TEventBase; - typedef struct - { - CEventsTree * RealTree; - CVirtualEventsTree * VirtualTree; - uint32_t VirtualCount; - TEventKey FirstVirtualUnread; - } TEntityEventsRecord, *PEntityEventsRecord; - typedef stdext::hash_map TEntityEventsMap; - typedef CIterationHeap TEventsHeap; - - CBlockManager & m_BlockManager; - CEncryptionManager & m_EncryptionManager; - - CEntities & m_Entities; - CEventsTypeManager m_Types; - - TEntityEventsMap m_EntityEventsMap; - - typedef struct TEventIteration { - TDBTEventIterFilter Filter; - TEventsHeap * Heap; - TDBTEventHandle LastEvent; - } TEventIteration, *PEventIteration; - - void onRootChanged(void* EventsTree, CEventsTree::TNodeRef NewRoot); - - void onDeleteEventCallback(void * Tree, const TEventKey & Key, uint32_t Param); - void onDeleteVirtualEventCallback(void * Tree, const TEventKey & Key, uint32_t Param); - void onDeleteEvents(CEntities * Entities, TDBTEntityHandle hEntity); - void onTransferEvents(CEntities * Entities, TDBTEntityHandle Source, TDBTEntityHandle Dest); - - PEntityEventsRecord getEntityRecord(TDBTEntityHandle hEntity); - uint32_t adjustVirtualEventCount(PEntityEventsRecord Record, int32_t Adjust); - bool MarkEventsTree(TEventBase::iterator Iterator, TDBTEventHandle FirstUnread); - void FindNextUnreadEvent(TEventBase::iterator & Iterator); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/FileAccess.cpp b/plugins/!Deprecated/Dbx_tree/src/FileAccess.cpp deleted file mode 100644 index 0042abab40..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/FileAccess.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "FileAccess.h" -#include -#include "Logger.h" - -const uint8_t CFileAccess::cJournalSignature[20] = "Miranda IM Journal!"; - -CFileAccess::CFileAccess(const TCHAR* FileName) -{ - m_FileName = new TCHAR[_tcslen(FileName) + 1]; - m_Journal.FileName = new TCHAR[_tcslen(FileName) + 5]; - _tcscpy_s(m_FileName, _tcslen(FileName) + 1, FileName); - _tcscpy_s(m_Journal.FileName, _tcslen(FileName) + 5, FileName); - _tcscat_s(m_Journal.FileName, _tcslen(FileName) + 5, _T(".jrn")); - - m_ReadOnly = false; - m_LastSize = 0; - m_Size = 0; - m_Journal.Use = false; - m_Journal.hFile = 0; - m_Journal.BufUse = 0; - - m_LastAllocTime = _time32(NULL); -} - -CFileAccess::~CFileAccess() -{ - CloseHandle(m_Journal.hFile); - DeleteFile(m_Journal.FileName); - - delete [] m_FileName; - delete [] m_Journal.FileName; -} - -uint32_t CFileAccess::Size(uint32_t NewSize) -{ - m_Size = NewSize; - if (!m_Journal.Use) - { - NewSize = (NewSize + m_AllocGranularity - 1) & ~(m_AllocGranularity - 1); - - if (NewSize == 0) - NewSize = m_AllocGranularity; - - if (NewSize != m_AllocSize) - { - m_AllocSize = _SetSize(NewSize); - - // adapt Alloc Granularity - uint32_t t = _time32(NULL); - uint32_t d = t - m_LastAllocTime; - m_LastAllocTime = t; - - if (d < 30) // increase alloc stepping - { - if (m_AllocGranularity < m_MaxAllocGranularity) - m_AllocGranularity = m_AllocGranularity << 1; - } else if (d > 120) // decrease alloc stepping - { - if (m_AllocGranularity > m_MinAllocGranularity) - m_AllocGranularity = m_AllocGranularity >> 1; - } - } - } - return NewSize; -} - - -void CFileAccess::CleanJournal() -{ - SetFilePointer(m_Journal.hFile, 0, NULL, FILE_BEGIN); - SetEndOfFile(m_Journal.hFile); - - DWORD written; - WriteFile(m_Journal.hFile, cJournalSignature, sizeof(cJournalSignature), &written, NULL); -} - -void CFileAccess::ProcessJournal() -{ - uint32_t filesize = GetFileSize(m_Journal.hFile, NULL) - sizeof(cJournalSignature); - SetFilePointer(m_Journal.hFile, sizeof(cJournalSignature), NULL, FILE_BEGIN); - - uint8_t* buf = (uint8_t*)malloc(filesize); - TJournalEntry* e = (TJournalEntry*)buf; - DWORD read = 0; - if (!ReadFile(m_Journal.hFile, buf, filesize, &read, NULL) || (read != filesize)) - { - free(buf); - LOGSYS(logCRITICAL, _T("Couldn't flush the journal because ReadFile failed!")); - return; - } - - m_Journal.Use = false; - std::vector currentops; - - while (filesize >= sizeof(TJournalEntry)) - { - switch (e->Signature) - { - case 'fini': - { - Size(e->Size); - - std::vector::iterator i = currentops.begin(); - while (i != currentops.end()) - { - switch ((*i)->Signature) - { - case 'writ': - { - if ((*i)->Address + (*i)->Size <= m_AllocSize) - { - _Write(*i + 1, (*i)->Address, (*i)->Size); - } else if ((*i)->Address < m_AllocSize) - { - _Write(*i + 1, (*i)->Address, m_AllocSize - (*i)->Address); - } - } break; - case 'inva': - { - if ((*i)->Address + (*i)->Size <= m_AllocSize) - { - _Invalidate((*i)->Address, (*i)->Size); - } else if ((*i)->Address < m_AllocSize) - { - _Invalidate((*i)->Address, m_AllocSize - (*i)->Address); - } - } break; - } - ++i; - } - currentops.clear(); - - e++; - filesize = filesize - sizeof(TJournalEntry); - } break; - case 'writ': - { - if (filesize < sizeof(e) + e->Size) - { - filesize = 0; - } else { - currentops.push_back(e); - filesize = filesize - sizeof(TJournalEntry) - e->Size; - e = (TJournalEntry*)((uint8_t*)e + sizeof(TJournalEntry) + e->Size); - } - } break; - case 'inva': - { - if (filesize < sizeof(e)) - { - filesize = 0; - } else { - currentops.push_back(e); - e++; - filesize = filesize - sizeof(TJournalEntry); - } - } break; - default: - { - filesize = 0; - if (currentops.size()) - LOG(logWARNING, _T("Your database journal wasn't completely written to disk.")); - } break; - } - } - - _Flush(); - - CleanJournal(); - - free(buf); - m_Journal.Use = true; -} - -void CFileAccess::InitJournal() -{ - m_Journal.hFile = CreateFile(m_Journal.FileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); - if (m_Journal.hFile == INVALID_HANDLE_VALUE) - { - LOGSYS(logCRITICAL, _T("CreateFile failed on Journal %s"), m_Journal.FileName); - return; - } - - uint8_t h[sizeof(cJournalSignature)]; - DWORD read; - if (ReadFile(m_Journal.hFile, &h, sizeof(h), &read, NULL) && (read == sizeof(h)) && (0 == memcmp(h, cJournalSignature, sizeof(h)))) - { - TCHAR * bckname = new TCHAR[_tcslen(m_FileName) + 12]; - _tcscpy_s(bckname, _tcslen(m_FileName) + 12, m_FileName); - _tcscat_s(bckname, _tcslen(m_FileName) + 12, _T(".autobackup")); - - TCHAR * bckjrnname = new TCHAR[_tcslen(m_Journal.FileName) + 12]; - _tcscpy_s(bckjrnname, _tcslen(m_Journal.FileName) + 12, m_Journal.FileName); - _tcscat_s(bckjrnname, _tcslen(m_Journal.FileName) + 12, _T(".autobackup")); - - char buf[4096]; - HANDLE hfilebackup = CreateFile(bckname, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); - if (hfilebackup) - { - uint32_t i = 0; - while (i + sizeof(buf) <= m_AllocSize) - { - DWORD w; - _Read(buf, i, sizeof(buf)); - i += sizeof(buf); - WriteFile(hfilebackup, buf, sizeof(buf), &w, NULL); - } - if (i < m_AllocSize) - { - DWORD w; - _Read(buf, i, m_AllocSize - i); - WriteFile(hfilebackup, buf, m_AllocSize - i, &w, NULL); - } - - CloseHandle(hfilebackup); - } - - HANDLE hjrnfilebackup = CreateFile(bckjrnname, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); - if (hjrnfilebackup) - { - uint32_t i = 0; - - uint32_t filesize = GetFileSize(m_Journal.hFile, NULL); - SetFilePointer(m_Journal.hFile, 0, NULL, FILE_BEGIN); - - while (i + sizeof(buf) <= filesize) - { - DWORD w, r; - ReadFile(m_Journal.hFile, buf, sizeof(buf), &r, NULL); - i += sizeof(buf); - WriteFile(hjrnfilebackup, buf, sizeof(buf), &w, NULL); - } - if (i < filesize) - { - DWORD w, r; - ReadFile(m_Journal.hFile, buf, filesize - i, &r, NULL); - WriteFile(hjrnfilebackup, buf, filesize - i, &w, NULL); - } - CloseHandle(hjrnfilebackup); - } - - TCHAR* path = bckname; - TCHAR* fn = _tcsrchr(m_Journal.FileName, _T('\\')); - TCHAR* bfn = _tcsrchr(bckname, _T('\\')); - TCHAR* jrn = _tcsrchr(bckjrnname, _T('\\')); - if (bfn) // truncate path var - *bfn = 0; - - if (hfilebackup || hjrnfilebackup) - { - LOG(logWARNING, - TranslateT("Journal \"%s\" was found on start.\nBackup \"%s\"%s created and backup \"%s\"%s created.\nYou may delete these file(s) after successful start from \"%s\"."), - fn?fn+1:m_Journal.FileName, - bfn?bfn+1:bckname, (hfilebackup!=INVALID_HANDLE_VALUE)?TranslateT(" was successfully"):TranslateT(" could not be"), - jrn?jrn+1:bckjrnname, (hjrnfilebackup!=INVALID_HANDLE_VALUE)?TranslateT(" was successfully"):TranslateT(" could not be"), - path); - } else { - LOG(logWARNING, - TranslateT("Journal \"%s\" was found on start.\nBackups \"%s\" and \"%s\" could not be created in \"%s\"."), - fn?fn+1:m_Journal.FileName, - bfn?bfn+1:bckname, - jrn?jrn+1:bckjrnname, - path); - } - - delete [] bckname; - delete [] bckjrnname; - - ProcessJournal(); - } - - CleanJournal(); -} diff --git a/plugins/!Deprecated/Dbx_tree/src/FileAccess.h b/plugins/!Deprecated/Dbx_tree/src/FileAccess.h deleted file mode 100644 index f49643e2a3..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/FileAccess.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include -#include "stdint.h" -#include "sigslot.h" - -class CFileAccess -{ -public: - static const uint8_t cJournalSignature[20]; - - CFileAccess(const TCHAR* FileName); - virtual ~CFileAccess(); - - - uint32_t Read(void* Buf, uint32_t Source, uint32_t Size) - { - return _Read(Buf, Source, Size); - }; - - bool Write(void* Buf, uint32_t Dest, uint32_t Size) - { - if (m_Journal.Use) - { - DWORD written; - - TJournalEntry * data = reinterpret_cast(m_Journal.Buffer + m_Journal.BufUse); - data->Signature = 'writ'; - data->Address = Dest; - data->Size = Size; - m_Journal.BufUse += 12; - if (Size + m_Journal.BufUse < sizeof(m_Journal.Buffer) - 12) // one journal header has always to fit in - { - memcpy(m_Journal.Buffer + m_Journal.BufUse, Buf, Size); - m_Journal.BufUse += Size; - } else { - WriteFile(m_Journal.hFile, m_Journal.Buffer, m_Journal.BufUse, &written, NULL); - WriteFile(m_Journal.hFile, Buf, Size, &written, NULL); - - m_Journal.BufUse = 0; - } - } else { - _Write(Buf, Dest, Size); - } - - return true; - }; - - void Invalidate(uint32_t Dest, uint32_t Size) - { - if (m_Journal.Use) - { - DWORD written; - - TJournalEntry * data = reinterpret_cast(m_Journal.Buffer + m_Journal.BufUse); - data->Signature = 'inva'; - data->Address = Dest; - data->Size = Size; - m_Journal.BufUse += 12; - if (m_Journal.BufUse > sizeof(m_Journal.Buffer) - 12) - { - WriteFile(m_Journal.hFile, m_Journal.Buffer, m_Journal.BufUse, &written, NULL); - m_Journal.BufUse = 0; - } - } else { - _Invalidate(Dest, Size); - } - }; - - void Flush() - { - if (m_Journal.Use) - { - if (m_Journal.BufUse) - { - DWORD written; - WriteFile(m_Journal.hFile, m_Journal.Buffer, m_Journal.BufUse, &written, NULL); - m_Journal.BufUse = 0; - } - FlushFileBuffers(m_Journal.hFile); - } else { - _Flush(); - } - }; - - void UseJournal(bool UseIt) - { - m_Journal.Use = UseIt; - }; - - void CompleteTransaction() - { - if (m_Size != m_LastSize) - { - m_sigFileSizeChanged.emit(this, m_Size); - m_LastSize = m_Size; - } - }; - void CloseTransaction() - { - if (m_Journal.Use) - { - DWORD written; - - TJournalEntry * data = reinterpret_cast(m_Journal.Buffer + m_Journal.BufUse); - data->Signature = 'fini'; - data->Address = 0; - data->Size = m_Size; - - WriteFile(m_Journal.hFile, m_Journal.Buffer, m_Journal.BufUse + 12, &written, NULL); - m_Journal.BufUse = 0; - } - }; - - void CleanJournal(); - - uint32_t Size(uint32_t NewSize); - uint32_t Size() - { return m_Size; }; - void ReadOnly(bool ReadOnly) - { m_ReadOnly = ReadOnly; }; - bool ReadOnly() - { return m_ReadOnly; }; - - typedef sigslot::signal2 TOnFileSizeChanged; - - TOnFileSizeChanged & sigFileSizeChanged() - { return m_sigFileSizeChanged; }; - -protected: - TCHAR* m_FileName; - struct { - bool Use; - TCHAR* FileName; - HANDLE hFile; - - uint8_t Buffer[4096]; - uint32_t BufUse; - } m_Journal; - - uint32_t m_Size; - uint32_t m_AllocSize; - uint32_t m_AllocGranularity; - uint32_t m_MinAllocGranularity; - uint32_t m_MaxAllocGranularity; - uint32_t m_LastAllocTime; - bool m_ReadOnly; - uint32_t m_LastSize; - - TOnFileSizeChanged m_sigFileSizeChanged; - virtual uint32_t _Read(void* Buf, uint32_t Source, uint32_t Size) = 0; - virtual uint32_t _Write(void* Buf, uint32_t Dest, uint32_t Size) = 0; - virtual void _Invalidate(uint32_t Dest, uint32_t Size) = 0; - virtual uint32_t _SetSize(uint32_t Size) = 0; - virtual void _Flush() = 0; - -#pragma pack (push, 1) - typedef struct TJournalEntry - { - uint32_t Signature; - uint32_t Address; - uint32_t Size; - } TJournalEntry; -#pragma pack (pop) - - void InitJournal(); - void ProcessJournal(); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/FileBTree.h b/plugins/!Deprecated/Dbx_tree/src/FileBTree.h deleted file mode 100644 index 3a9e58a43e..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/FileBTree.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 -#include "BTree.h" -#include "BlockManager.h" -#include "Logger.h" - -template -class CFileBTree : public CBTree -{ -private: - -protected: - CBlockManager & m_BlockManager; - uint16_t cSignature; - - virtual void PrepareInsertOperation(); - virtual TNode * CreateNewNode(TNodeRef & NodeRef); - virtual void DeleteNode(TNodeRef Node); - virtual TNode * Read(TNodeRef Node); - virtual void Write(TNodeRef Node); -public: - CFileBTree(CBlockManager & BlockManager, typename CBTree::TNodeRef RootNode, uint16_t Signature); - virtual ~CFileBTree(); -}; - - - - -template -CFileBTree::CFileBTree(CBlockManager & BlockManager, typename CBTree::TNodeRef RootNode, uint16_t Signature) -: CBTree::CBTree(RootNode), - m_BlockManager(BlockManager) -{ - cSignature = Signature; - CBTree::m_DestroyTree = false; -} - -template -CFileBTree::~CFileBTree() -{ - CBTree::m_DestroyTree = false; -} - - -template -void CFileBTree::PrepareInsertOperation() -{ - -} - -template -typename CBTree::TNode * CFileBTree::CreateNewNode(typename CBTree::TNodeRef & NodeRef) -{ - return reinterpret_cast( m_BlockManager.CreateBlock(NodeRef, cSignature << 16, sizeof(typename CBTree::TNode) - 4) - 1); -} - -template -void CFileBTree::DeleteNode(typename CBTree::TNodeRef Node) -{ - m_BlockManager.DeleteBlock(Node); -} - -template -typename CBTree::TNode * CFileBTree::Read(typename CBTree::TNodeRef Node) -{ - uint32_t sig = 0; - uint32_t size = 0; - TNode * res = reinterpret_cast( m_BlockManager.ReadBlock(Node, size, sig) - 1); /// HACK using knowledge about the blockmanager here - - CHECK(res->Signature == cSignature, - logCRITICAL, _T("Signature check failed")); - - return res; -} - -template -void CFileBTree::Write(typename CBTree::TNodeRef Node) -{ - m_BlockManager.UpdateBlock(Node, 0); -} - diff --git a/plugins/!Deprecated/Dbx_tree/src/Hash.cpp b/plugins/!Deprecated/Dbx_tree/src/Hash.cpp deleted file mode 100644 index ae02000c3e..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Hash.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Hash.h" - - -/// lookup3, by Bob Jenkins, May 2006, Public Domain. -#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) - -#define HASHmix(a,b,c) \ -{ \ - a -= c; a ^= rot(c, 4); c += b; \ - b -= a; b ^= rot(a, 6); a += c; \ - c -= b; c ^= rot(b, 8); b += a; \ - a -= c; a ^= rot(c,16); c += b; \ - b -= a; b ^= rot(a,19); a += c; \ - c -= b; c ^= rot(b, 4); b += a; \ -} -#define HASHfinal(a,b,c) \ -{ \ - c ^= b; c -= rot(b,14); \ - a ^= c; a -= rot(c,11); \ - b ^= a; b -= rot(a,25); \ - c ^= b; c -= rot(b,16); \ - a ^= c; a -= rot(c, 4); \ - b ^= a; b -= rot(a,14); \ - c ^= b; c -= rot(b,24); \ -} - - -uint32_t Hash(const void * Data, uint32_t Length) -{ - register uint32_t a,b,c; // internal state - union { const void *ptr; uint32_t i; } u; // needed for Mac Powerbook G4 - - // Set up the internal state - a = b = c = 0xdeadbeef + Length; // + initval = 0 - - u.ptr = Data; - if ((u.i & 0x3) == 0) - { - const uint32_t *k = (const uint32_t *)Data; // read 32-bit chunks - - // all but last block: aligned reads and affect 32 bits of (a,b,c) - while (Length > 12) - { - a += k[0]; - b += k[1]; - c += k[2]; - HASHmix(a,b,c); - Length -= 12; - k += 3; - } - - switch(Length) - { - case 12: c += k[2]; b += k[1]; a += k[0]; break; - case 11: c += k[2] & 0xffffff; b += k[1]; a += k[0]; break; - case 10: c += k[2] & 0xffff; b += k[1]; a += k[0]; break; - case 9 : c += k[2] & 0xff; b += k[1]; a += k[0]; break; - case 8 : b += k[1]; a += k[0]; break; - case 7 : b += k[1] & 0xffffff; a += k[0]; break; - case 6 : b += k[1] & 0xffff; a += k[0]; break; - case 5 : b += k[1] & 0xff; a += k[0]; break; - case 4 : a += k[0]; break; - case 3 : a += k[0] & 0xffffff; break; - case 2 : a += k[0] & 0xffff; break; - case 1 : a += k[0] & 0xff; break; - case 0 : return c; // zero length strings require no mixing - } - - } else if ((u.i & 0x1) == 0) { - const uint16_t *k = (const uint16_t *)Data; /* read 16-bit chunks */ - const uint8_t *k8; - - // all but last block: aligned reads and different mixing - while (Length > 12) - { - a += k[0] + (((uint32_t)k[1]) << 16); - b += k[2] + (((uint32_t)k[3]) << 16); - c += k[4] + (((uint32_t)k[5]) << 16); - HASHmix(a,b,c); - Length -= 12; - k += 6; - } - - // handle the last (probably partial) block - k8 = (const uint8_t *)k; - switch(Length) - { - case 12: c += k[4] + (((uint32_t)k[5]) << 16); - b += k[2] + (((uint32_t)k[3]) << 16); - a += k[0] + (((uint32_t)k[1]) << 16); - break; - case 11: c += ((uint32_t)k8[10]) << 16; // fall through - case 10: c += k[4]; - b += k[2] + (((uint32_t)k[3]) << 16); - a += k[0] + (((uint32_t)k[1]) << 16); - break; - case 9 : c += k8[8]; // fall through - case 8 : b += k[2] + (((uint32_t)k[3]) << 16); - a += k[0] + (((uint32_t)k[1]) << 16); - break; - case 7 : b += ((uint32_t)k8[6]) << 16; // fall through - case 6 : b += k[2]; - a += k[0] + (((uint32_t)k[1]) << 16); - break; - case 5 : b += k8[4]; // fall through - case 4 : a += k[0] + (((uint32_t)k[1]) << 16); - break; - case 3 : a += ((uint32_t)k8[2]) << 16; // fall through - case 2 : a += k[0]; - break; - case 1 : a += k8[0]; - break; - case 0 : return c; // zero length requires no mixing - } - - } else { // need to read the key one byte at a time - const uint8_t *k = (const uint8_t *)Data; - - // all but the last block: affect some 32 bits of (a,b,c) - while (Length > 12) - { - a += k[0]; - a += ((uint32_t)k[1] ) << 8; - a += ((uint32_t)k[2] ) << 16; - a += ((uint32_t)k[3] ) << 24; - b += k[4]; - b += ((uint32_t)k[5] ) << 8; - b += ((uint32_t)k[6] ) << 16; - b += ((uint32_t)k[7] ) << 24; - c += k[8]; - c += ((uint32_t)k[9] ) << 8; - c += ((uint32_t)k[10]) << 16; - c += ((uint32_t)k[11]) << 24; - HASHmix(a,b,c); - Length -= 12; - k += 12; - } - - // last block: affect all 32 bits of (c) - switch(Length) // all the case statements fall through - { - case 12: c += ((uint32_t)k[11]) << 24; - case 11: c += ((uint32_t)k[10]) << 16; - case 10: c += ((uint32_t)k[9] ) << 8; - case 9 : c += k[8]; - case 8 : b += ((uint32_t)k[7] ) << 24; - case 7 : b += ((uint32_t)k[6] ) << 16; - case 6 : b += ((uint32_t)k[5] ) << 8; - case 5 : b += k[4]; - case 4 : a += ((uint32_t)k[3] ) << 24; - case 3 : a += ((uint32_t)k[2] ) << 16; - case 2 : a += ((uint32_t)k[1] ) << 8; - case 1 : a += k[0]; - break; - case 0 : return c; - } - } - - HASHfinal(a,b,c); - return c; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Hash.h b/plugins/!Deprecated/Dbx_tree/src/Hash.h deleted file mode 100644 index ae5a1d06be..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Hash.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -uint32_t Hash(const void * Data, uint32_t Length); diff --git a/plugins/!Deprecated/Dbx_tree/src/Interface.h b/plugins/!Deprecated/Dbx_tree/src/Interface.h deleted file mode 100644 index b207c58391..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Interface.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 INTERFACE_VERSION_ONLY - -#include -#include "newpluginapi.h" -#include "m_system.h" -#include "m_system_cpp.h" -#include "m_database.h" -#include "m_db_int.h" -#include "m_utils.h" -#include "win2k.h" -#include "m_langpack.h" - -#include "m_dbx_tree.h" - -#include "version.h" - -extern HINSTANCE hInstance; - -extern DATABASELINK gDBLink; -#endif diff --git a/plugins/!Deprecated/Dbx_tree/src/IterationHeap.h b/plugins/!Deprecated/Dbx_tree/src/IterationHeap.h deleted file mode 100644 index db06f7e695..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/IterationHeap.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include - -template -class CIterationHeap -{ -public: - enum TIterationType {ITForward, ITBackward}; - - CIterationHeap(TType & InitialItem, TIterationType ForBack, bool DeleteItems = true); - ~CIterationHeap(); - - bool Insert(TType & Item); - TType & Top(); - void Pop(); - -protected: - typedef struct THeapElement { - TType * Elem; - size_t Index; - } THeapElement, * PHeapElement; - - std::vector m_Heap; - TIterationType m_Type; - bool m_DeleteItems; - - bool A_b4_B(PHeapElement a, PHeapElement b); -private: - -}; - - -template -inline bool CIterationHeap::A_b4_B(PHeapElement a, PHeapElement b) -{ - if (m_Type == ITForward) - { - if ((**a->Elem) == (**b->Elem)) return a->Index < b->Index; - return (**a->Elem) < (**b->Elem); - } else { - if ((**a->Elem) == (**b->Elem)) return a->Index > b->Index; - return (**a->Elem) > (**b->Elem); - } -} - -template -CIterationHeap::CIterationHeap(TType & InitialItem, TIterationType MinMax, bool DeleteItems) -: m_Heap() -{ - m_Heap.resize(1); - m_Heap.reserve(1 << 1); - m_Type = MinMax; - - m_Heap[0] = new THeapElement; - m_Heap[0]->Elem = &InitialItem; - m_Heap[0]->Index = m_Heap.size(); - m_DeleteItems = DeleteItems; -} - -template -CIterationHeap::~CIterationHeap() -{ - unsigned int i = 0; - while ((i < m_Heap.size()) && (m_Heap[i])) - { - if (m_DeleteItems && m_Heap[i]->Elem) - delete m_Heap[i]->Elem; - - delete m_Heap[i]; - ++i; - } -} - -template -bool CIterationHeap::Insert(TType & Item) -{ - if (!Item) - return false; - - if (m_Heap.capacity() == m_Heap.size() + 1) - m_Heap.reserve(m_Heap.capacity() << 1); - - m_Heap.push_back(NULL); - - size_t way = m_Heap.capacity() >> 2; - size_t index = 0; - PHeapElement ins = new THeapElement; - ins->Elem = &Item; - ins->Index = m_Heap.size(); - - PHeapElement next; - - while ((way > 0) && (index + 1 < m_Heap.size())) - { - next = m_Heap[index]; - if ((!(*next->Elem)) || A_b4_B(ins, next)) - { - m_Heap[index] = ins; - ins = next; - } - - if (way & m_Heap.size()) //right - { - index = (index << 1) + 2; - } else { // left - index = (index << 1) + 1; - } - way = way >> 1; - } - - m_Heap[index] = ins; - - return true; -} - -template -TType & CIterationHeap::Top() -{ - return *m_Heap[0]->Elem; -} - -template -void CIterationHeap::Pop() -{ - if (m_Type == ITForward) - ++(*m_Heap[0]->Elem); - else - --(*m_Heap[0]->Elem); - - size_t index = 0; - PHeapElement ins = m_Heap[0]; - size_t big = 1; - - while ((big > 0) && (index < (m_Heap.size() >> 1))) - { - big = 0; - - if ((((index << 1) + 2) < m_Heap.size()) && (*m_Heap[(index << 1) + 2]->Elem)) - { - if (*ins->Elem) - { - if (A_b4_B(m_Heap[(index << 1) + 2], m_Heap[(index << 1) + 1])) - big = (index << 1) + 2; - else - big = (index << 1) + 1; - - } else { - m_Heap[index] = m_Heap[(index << 1) + 2]; - index = (index << 1) + 2; - m_Heap[index] = ins; - } - } else if ((((index << 1) + 1) < m_Heap.size()) && (*m_Heap[(index << 1) + 1]->Elem)) - { - if (*ins->Elem) - { - big = (index << 1) + 1; - } else { - m_Heap[index] = m_Heap[(index << 1) + 1]; - index = (index << 1) + 1; - m_Heap[index] = ins; - } - } - - if ((big > 0) && A_b4_B(m_Heap[big], ins)) - { - m_Heap[index] = m_Heap[big]; - index = big; - m_Heap[big] = ins; - } else { - big = 0; - } - } -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Logger.cpp b/plugins/!Deprecated/Dbx_tree/src/Logger.cpp deleted file mode 100644 index 79b7bedd72..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Logger.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Logger.h" -#include - -CLogger CLogger::_Instance; - -CLogger::CLogger() - : m_Length(0), - m_Level(logNOTICE) -{ - -} - -CLogger::~CLogger() -{ - for (std::vector::iterator it = m_Messages.begin(); it != m_Messages.end(); ++it) - delete [] *it; -} - -void CLogger::Append(const TCHAR * File, const TCHAR * Function, const int Line, DWORD SysState, TLevel Level, const TCHAR * Message, ...) -{ - if (m_Level < Level) - m_Level = Level; - - time_t rawtime = time(NULL); - tm timeinfo; - TCHAR timebuf[80]; - localtime_s(&timeinfo, &rawtime); - size_t len = _tcsftime(timebuf, sizeof(timebuf) / sizeof(*timebuf), _T("%c"), &timeinfo); - - TCHAR msgbuf[4096]; - va_list va; - va_start(va, Message); - len += mir_vsntprintf(msgbuf, SIZEOF(msgbuf), Message, va); - va_end(va); - - TCHAR * message; - if (SysState) - { - TCHAR syserror[2048]; - len += FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, SysState, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), syserror, 2048, NULL); - - len += /*_tcslen(File) + 10 +*/ _tcslen(Function) + 32 + 12 + 1; - - message = new TCHAR[len]; - m_Length += mir_sntprintf(message, len, _T("[%s - %s]\n%s\n\nSystem Error Code: %d\n%s\n\n"), timebuf, /*File, Line, */ Function, msgbuf, SysState, syserror) + 1; - } else { - len += /*_tcslen(File) + 10 +*/ _tcslen(Function) + 12 + 1; - - message = new TCHAR[len]; - m_Length += mir_sntprintf(message, len, _T("[%s - %s]\n%s\n\n"), timebuf, /*File, Line, */Function, msgbuf) + 1; - } - m_Messages.push_back(message); -} - -CLogger::TLevel CLogger::ShowMessage(TLevel CanAsyncTill) -{ - if (m_Messages.size() == 0) - return logNOTICE; - - TCHAR * msg = new TCHAR[m_Length]; - *msg = 0; - - for (std::vector::iterator it = m_Messages.begin(); it != m_Messages.end(); ++it) - { - _tcscat_s(msg, m_Length, *it); - delete [] *it; - } - m_Messages.clear(); - - if (m_Level <= CanAsyncTill) - { - MSGBOXPARAMS * p = new MSGBOXPARAMS; - p->cbSize = sizeof(*p); - p->hwndOwner = 0; - p->hInstance = NULL; - p->lpszText = msg; - p->lpszCaption = _T(__PLUGIN_NAME); - p->dwStyle = MB_OK | (m_Level >= logERROR)?MB_ICONHAND:((m_Level == logWARNING)?MB_ICONWARNING:MB_ICONINFORMATION); - p->lpszIcon = NULL; - p->dwContextHelpId = 0; - p->lpfnMsgBoxCallback = NULL; - p->dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL); - - _beginthread(&CLogger::MessageBoxAsync, 0, p); - } else { - MessageBox(0, msg, _T(__PLUGIN_NAME), MB_OK | (m_Level >= logERROR)?MB_ICONHAND:((m_Level == logWARNING)?MB_ICONWARNING:MB_ICONINFORMATION)); - delete [] msg; - } - - TLevel tmp = m_Level; - m_Level = logNOTICE; - return tmp; -} - -void CLogger::MessageBoxAsync(void * MsgBoxParams) -{ - MSGBOXPARAMS* p = reinterpret_cast(MsgBoxParams); - MessageBoxIndirect(p); - delete [] p->lpszText; - delete p; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree/src/Logger.h b/plugins/!Deprecated/Dbx_tree/src/Logger.h deleted file mode 100644 index a97b928555..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Logger.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include -#include "Interface.h" - -#define WIDEN2(x) L ## x -#define WIDEN(x) WIDEN2(x) -#define __WFILE__ WIDEN(__FILE__) -#define __WFUNCTION__ WIDEN(__FUNCTION__) - - -#define LOG(Level, Message, ...) CLogger::Instance().Append(__WFILE__, __WFUNCTION__, __LINE__, 0, CLogger:: ## Level, Message, __VA_ARGS__) -#define LOGSYS(Level, Message, ...) CLogger::Instance().Append(__WFILE__, __WFUNCTION__, __LINE__, GetLastError(), CLogger:: ## Level, Message, __VA_ARGS__) - - -#define CHECK(Assertion, Level, Message, ...) if (!(Assertion)) LOG(Level, Message, __VA_ARGS__) -#define CHECKSYS(Assertion, Level, Message, ...) if (!(Assertion)) LOGSYS(Level, Message, __VA_ARGS__) - -class CLogger -{ - public: - enum TLevel - { - logNOTICE, - logWARNING, - logERROR, - logCRITICAL - }; - - CLogger(); - ~CLogger(); - - void Append(const TCHAR * File, const TCHAR * Function, const int Line, DWORD SysState, TLevel Level, const TCHAR * Message, ...); - TLevel ShowMessage(TLevel CanAsyncTill = logERROR); - - static CLogger & Instance() - { return _Instance; }; - - TLevel Level() - { return m_Level; }; - protected: - std::vector m_Messages; - size_t m_Length; - TLevel m_Level; - - static void MessageBoxAsync(void * MsgBoxParams); - private: - static CLogger _Instance; - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/MREWSync.cpp b/plugins/!Deprecated/Dbx_tree/src/MREWSync.cpp deleted file mode 100644 index d61867b15f..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/MREWSync.cpp +++ /dev/null @@ -1,331 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "MREWSync.h" -#include -#include "intrinsics.h" - -#if defined(MREW_DO_DEBUG_LOGGING) && (defined(DEBUG) || defined(_DEBUG)) - #include -#endif - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// +------------+---------------+---------------+------------+---------------+ -// | ReaderBusy | ReaderWaiting | WriterWaiting | WriterBusy | UseOddReader? | -// +------------+---------------+---------------+------------+---------------+ -// 63..44 43..24 23..4 3 0 -/////////////////////////////////////////////////////////////////////////////////////////////////// -#define isWriterBusy(Sentinel) ((Sentinel) & 0x0000000000000008ui64) -#define isWriterWaiting(Sentinel) ((Sentinel) & 0x0000000000fffff0ui64) -#define isReaderWaiting(Sentinel) ((Sentinel) & 0x00000fffff000000ui64) -#define isReaderBusy(Sentinel) ((Sentinel) & 0xfffff00000000000ui64) - -#define countWriterWaiting(Sentinel) (((Sentinel) & 0x0000000000fffff0ui64) >> 4) -#define countReaderWaiting(Sentinel) (((Sentinel) & 0x00000fffff000000ui64) >> 24) -#define countReaderBusy(Sentinel) (((Sentinel) & 0xfffff00000000000ui64) >> 44) - -#define WriterBusy (1ui64 << 3) -#define WriterWaiting (1ui64 << 4) -#define ReaderWaiting (1ui64 << 24) -#define ReaderBusy (1ui64 << 44) - -#define isUseOddReader(Sentinel) ((Sentinel) & 1) -#define useOddReader (1ui64) - -CMultiReadExclusiveWriteSynchronizer::CMultiReadExclusiveWriteSynchronizer(void) -: tls(), - m_Sentinel(0) -{ - m_ReadSignal[0] = CreateEvent(NULL, TRUE, FALSE, NULL); - m_ReadSignal[1] = CreateEvent(NULL, TRUE, FALSE, NULL); - m_WriteSignal = CreateEvent(NULL, FALSE, FALSE, NULL); - m_WriterID = 0; - m_WriteRecursion = 0; - m_Revision = 0; -} - -CMultiReadExclusiveWriteSynchronizer::~CMultiReadExclusiveWriteSynchronizer(void) -{ - BeginWrite(); - CloseHandle(m_WriteSignal); - CloseHandle(m_ReadSignal[0]); - CloseHandle(m_ReadSignal[1]); -} - -void CMultiReadExclusiveWriteSynchronizer::BeginRead() -{ - unsigned long id = GetCurrentThreadId(); - unsigned & reccount(tls.Open(this, 0)); - - reccount++; - if ((m_WriterID != id) && (reccount == 1)) - { - int64_t old; - int64_t newvalue; - - do { - old = m_Sentinel; - if (isWriterBusy(old)) - newvalue = old + ReaderBusy; // writer has lock -> we are going to enter after he leaves -> we are busy but have to wait - else if (isWriterWaiting(old)) - newvalue = old + ReaderWaiting; // writer is waiting for lock -> don't set myself busy as he waits for all readers to leave lock - else - newvalue = old + ReaderBusy; // no writer in sight, just take lock - - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - - if (isWriterBusy(old) || isWriterWaiting(old)) - { - if (isUseOddReader(old)) - WaitForSingleObject(m_ReadSignal[1], INFINITE); - else - WaitForSingleObject(m_ReadSignal[0], INFINITE); - } - } -} -void CMultiReadExclusiveWriteSynchronizer::EndRead() -{ - unsigned long id = GetCurrentThreadId(); - unsigned & reccount(tls.Open(this, 1)); - reccount--; - - if ((reccount == 0) && (m_WriterID != id)) - { - int64_t old; - int64_t newvalue; - - do { - old = m_Sentinel; - if ((countReaderBusy(old) == 1) && isWriterWaiting(old)) - { // give control to the writer... move waiting readers to busy (but blocked) - newvalue = old - WriterWaiting + WriterBusy - ReaderBusy + countReaderWaiting(old) * (ReaderBusy - ReaderWaiting); - } else { - newvalue = old - ReaderBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - if ((countReaderBusy(old) == 1) && isWriterWaiting(old)) - { - SetEvent(m_WriteSignal); - } - } - - if (reccount == 0) - tls.Remove(this); -} -bool CMultiReadExclusiveWriteSynchronizer::BeginWrite() -{ - unsigned long id = GetCurrentThreadId(); - unsigned * reccount = tls.Find(this); - bool res = true; - - if (m_WriterID != id) - { - int64_t old; - int64_t newvalue; - unsigned int oldrevision = m_Revision; - - if (reccount) // upgrade our readlock - { - do { - old = m_Sentinel; - // isWriterBusy cannot happen because we have a readlock, so we ignore it - if (countReaderBusy(old) > 1) // there is another reader.. we have to wait for him. set arriving readers to waiting state - { - newvalue = old + WriterWaiting - ReaderBusy; - } else if (isWriterWaiting(old)) // there is another writer waiting, who arrived earlier. we will sign him in and wait. we are the last reader, so we have to update the sentinel - { - newvalue = old + WriterBusy - ReaderBusy + countReaderWaiting(old) * (ReaderBusy - ReaderWaiting); - } else { // nobody is busy, we want the lock - newvalue = old + WriterBusy - ReaderBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - if (countReaderBusy(old) > 1) - { - WaitForSingleObject(m_WriteSignal, INFINITE); // someone woke me up... he had to take care of all state changes of the sentinel - } else if (isWriterWaiting(old)) // we will wait for the other writer, as we are the last reader, we have to wake him up - { - SetEvent(m_WriteSignal); - Sleep(0); // yield thread trying to keep FIFO order - WaitForSingleObject(m_WriteSignal, INFINITE); // someone woke me up... he had to take care of all state changes of the sentinel - } - } else { // gain write lock - do { - old = m_Sentinel; - if (isWriterBusy(old)) // there is a writer.. we have to wait for him - { - newvalue = old + WriterWaiting; - } else if (isReaderBusy(old)) // there is a reader.. we have to wait for him. set arriving readers to waiting state - { - newvalue = old + WriterWaiting; - } else if (isWriterWaiting(old)) // there is another writer waiting, who arrived earlier. we will wait - { - newvalue = old + WriterWaiting; - } else { // nobody is busy, we want the lock - newvalue = old + WriterBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - if (isWriterBusy(old) || isReaderBusy(old) || isWriterWaiting(old)) - { - WaitForSingleObject(m_WriteSignal, INFINITE); // someone woke me up... he had to take care of all state changes of the sentinel - } - } - res = (oldrevision == (INC_32(m_Revision) - 1)); - - m_WriterID = id; - } - m_WriteRecursion++; - - return res; -} - -bool CMultiReadExclusiveWriteSynchronizer::EndWrite() -{ - unsigned long id = GetCurrentThreadId(); - unsigned * reccount = tls.Find(this); - - m_WriteRecursion--; - - if (m_WriteRecursion == 0) - { - int64_t old; - int64_t newvalue; - - m_WriterID = 0; - - if (isUseOddReader(m_Sentinel)) // reset upcoming signal - ResetEvent(m_ReadSignal[0]); - else - ResetEvent(m_ReadSignal[1]); - - if (reccount) // downgrade to reader lock - { - do { - old = m_Sentinel; - newvalue = (old ^ useOddReader) - WriterBusy + ReaderBusy; // single case... we are a waiting reader and we will keep control of the lock - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - if (isUseOddReader(old)) // allow additional readers to pass - SetEvent(m_ReadSignal[1]); - else - SetEvent(m_ReadSignal[0]); - - } else { - - do { - old = m_Sentinel; - if (isReaderBusy(old)) // give control to waiting readers - { - newvalue = (old ^ useOddReader) - WriterBusy; - } else if (isWriterWaiting(old)) // no reader arrived while i was working... give control to next writer - { - newvalue = (old ^ useOddReader) - WriterWaiting; - } else { // nobody else is there... just close lock - newvalue = (old ^ useOddReader) - WriterBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - if (isReaderBusy(old)) // release waiting readers - { - if (isUseOddReader(old)) - SetEvent(m_ReadSignal[1]); - else - SetEvent(m_ReadSignal[0]); - } else if (isWriterWaiting(old)) - { - SetEvent(m_WriteSignal); - } - } - return true; - } - - return false; -} - -bool CMultiReadExclusiveWriteSynchronizer::TryBeginWrite() -{ - unsigned long id = GetCurrentThreadId(); - unsigned * reccount = tls.Find(this); - - if (m_WriterID != id) - { - int64_t old; - int64_t newvalue; - unsigned int oldrevision = m_Revision; - - if (reccount) // upgrade our readlock - { - do { - old = m_Sentinel; - // isWriterBusy cannot happen because we have a readlock, so we ignore it - if (countReaderBusy(old) > 1) // there is another reader.. we have to wait for him. set arriving readers to waiting state - { - return false; - } else if (isWriterWaiting(old)) // there is another writer waiting, who arrived earlier. we will sign him in and wait. we are the last reader, so we have to update the sentinel - { - return false; - } else { // nobody is busy, we want the lock - newvalue = old + WriterBusy - ReaderBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - - } else { // gain write lock - do { - old = m_Sentinel; - if (isWriterBusy(old)) // there is a writer.. we have to wait for him - { - return false; - } else if (isReaderBusy(old)) // there is a reader.. we have to wait for him. set arriving readers to waiting state - { - return false; - } else if (isWriterWaiting(old)) // there is another writer waiting, who arrived earlier. we will wait - { - return false; - } else { // nobody is busy, we want the lock - newvalue = old + WriterBusy; - } - } while (CMPXCHG_64(m_Sentinel, newvalue, old) != old); - } - INC_32(m_Revision); - - m_WriterID = id; - } - m_WriteRecursion++; - - return true; -} - -unsigned int CMultiReadExclusiveWriteSynchronizer::Waiting() -{ - int64_t old = m_Sentinel; - if (isWriterBusy(old)) - { // cast is safe, we don't loose data because these fields are max 20 bits - return static_cast(countReaderBusy(old) + countReaderWaiting(old) + countWriterWaiting(old)); - } else { - return static_cast(countReaderWaiting(old) + countWriterWaiting(old)); - } -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/MREWSync.h b/plugins/!Deprecated/Dbx_tree/src/MREWSync.h deleted file mode 100644 index 2ffcbc08d7..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/MREWSync.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "TLS.h" -#include "stdint.h" - -class CMultiReadExclusiveWriteSynchronizer -{ -private: - uint64_t volatile m_Sentinel; - HANDLE m_ReadSignal[2]; - HANDLE m_WriteSignal; - - volatile uint32_t m_Revision; - unsigned int m_WriterID; - unsigned int m_WriteRecursion; - - CThreadLocalStorage tls; - -public: - CMultiReadExclusiveWriteSynchronizer(); - virtual ~CMultiReadExclusiveWriteSynchronizer(); - - void BeginRead(); - void EndRead(); - bool BeginWrite(); - bool TryBeginWrite(); - bool EndWrite(); - - unsigned int Waiting(); - unsigned int WriteRecursionCount() {return m_WriteRecursion;}; - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/MappedMemory.cpp b/plugins/!Deprecated/Dbx_tree/src/MappedMemory.cpp deleted file mode 100644 index 7ced28a886..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/MappedMemory.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "MappedMemory.h" -#include "Logger.h" - -CMappedMemory::CMappedMemory(const TCHAR* FileName) -: CFileAccess(FileName) -{ - SYSTEM_INFO sysinfo; - - m_AllocSize = 0; - m_DirectFile = 0; - m_FileMapping = 0; - m_Base = NULL; - - GetSystemInfo(&sysinfo); - m_AllocGranularity = sysinfo.dwAllocationGranularity; // usually 64kb - m_MinAllocGranularity = m_AllocGranularity; // must be at least one segment - m_MaxAllocGranularity = m_AllocGranularity << 4; // usually 1mb for fast increasing - - m_DirectFile = CreateFile(FileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0); - if (m_DirectFile == INVALID_HANDLE_VALUE) - LOGSYS(logCRITICAL, _T("CreateFile failed")); - - uint32_t size = GetFileSize(m_DirectFile, NULL); - size = (size + m_AllocGranularity - 1) & ~(m_AllocGranularity - 1); - - if (size == 0) - size = m_AllocGranularity; - - _SetSize(size); - m_AllocSize = size; - - InitJournal(); -} - -CMappedMemory::~CMappedMemory() -{ - if (m_Base) - { - FlushViewOfFile(m_Base, NULL); - UnmapViewOfFile(m_Base); - } - if (m_FileMapping) - CloseHandle(m_FileMapping); - - if (m_DirectFile) - { - if (INVALID_SET_FILE_POINTER != SetFilePointer(m_DirectFile, m_Size, NULL, FILE_BEGIN)) - SetEndOfFile(m_DirectFile); - - FlushFileBuffers(m_DirectFile); - CloseHandle(m_DirectFile); - } -} - - -uint32_t CMappedMemory::_Read(void* Buf, uint32_t Source, uint32_t Size) -{ - memcpy(Buf, m_Base + Source, Size); - return Size; -} -uint32_t CMappedMemory::_Write(void* Buf, uint32_t Dest, uint32_t Size) -{ - memcpy(m_Base + Dest, Buf, Size); - return Size; -} - -uint32_t CMappedMemory::_SetSize(uint32_t Size) -{ - if (m_Base) - { - FlushViewOfFile(m_Base, 0); - UnmapViewOfFile(m_Base); - } - if (m_FileMapping) - CloseHandle(m_FileMapping); - - m_Base = NULL; - m_FileMapping = NULL; - - if (INVALID_SET_FILE_POINTER == SetFilePointer(m_DirectFile, Size, NULL, FILE_BEGIN)) - { - LOGSYS(logERROR, _T("SetFilePointer failed")); - return 0; - } - - if (!SetEndOfFile(m_DirectFile)) - { - LOGSYS(logERROR, _T("Cannot set end of file")); - return 0; - } - - m_FileMapping = CreateFileMappingA(m_DirectFile, NULL, PAGE_READWRITE, 0, Size, NULL); - - if (!m_FileMapping) - { - LOGSYS(logERROR, _T("CreateFileMapping failed")); - return 0; - } - - m_Base = (uint8_t*)MapViewOfFile(m_FileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0); - if (!m_Base) - { - LOGSYS(logERROR, _T("MapViewOfFile failed")); - return 0; - } - - return Size; -} - -void CMappedMemory::_Invalidate(uint32_t Dest, uint32_t Size) -{ - memset(m_Base + Dest, 0, Size); -} - -void CMappedMemory::_Flush() -{ - FlushViewOfFile(m_Base, NULL); - FlushFileBuffers(m_DirectFile); -} diff --git a/plugins/!Deprecated/Dbx_tree/src/MappedMemory.h b/plugins/!Deprecated/Dbx_tree/src/MappedMemory.h deleted file mode 100644 index 8b13aa7bd1..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/MappedMemory.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include "FileAccess.h" - -class CMappedMemory : public CFileAccess -{ -private: - uint8_t* m_Base; - - HANDLE m_DirectFile; - HANDLE m_FileMapping; -protected: - - uint32_t _Read(void* Buf, uint32_t Source, uint32_t Size); - uint32_t _Write(void* Buf, uint32_t Dest, uint32_t Size); - void _Invalidate(uint32_t Dest, uint32_t Size); - uint32_t _SetSize(uint32_t Size); - void _Flush(); -public: - CMappedMemory(const TCHAR* FileName); - virtual ~CMappedMemory(); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/SHA256.cpp b/plugins/!Deprecated/Dbx_tree/src/SHA256.cpp deleted file mode 100644 index f612eab22b..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/SHA256.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "SHA256.h" -#include -#include - -#if !defined(_MSC_VER) || !defined(_M_IX86) -#define NO_ASM -#endif -#define SHA_LOOPUNROLL - -#define rotr(x,n) _lrotr(x,n) - - -// table of round constants -// (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311): -static const uint32_t cKey[64] = { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -}; - -// initialisation vector -// (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19): -static const SHA256::THash cHashInit = { - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 -}; - - - -SHA256::SHA256() -{ - SHAInit(); -} -SHA256::~SHA256() -{ - -} -void SHA256::SHAInit() -{ - memcpy(m_Hash, cHashInit, sizeof(m_Hash)); - m_Length = 0; -} -void SHA256::SHAUpdate(void * Data, uint32_t Length) -{ - uint8_t * dat = (uint8_t *)Data; - uint32_t len = Length; - - if (m_Length & 63) - { - uint32_t p = (m_Length & 63); - uint32_t pl = 64 - p; - if (pl > len) - pl = len; - - memcpy(&(m_Block[p]), dat, pl); - len -= pl; - dat += pl; - - if (p + pl == 64) - SHABlock(); - } - - while (len >= 64) - { - memcpy(m_Block, dat, sizeof(m_Block)); - SHABlock(); - len -= 64; - dat += 64; - } - - if (len > 0) - { - memcpy(m_Block, dat, len); - } - - m_Length += Length; -} - -void SHA256::SHAFinal(SHA256::THash & Hash) -{ - uint8_t pad[128] = { - 0x80, 0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0 - }; - - uint32_t padlen = 0; - if ((m_Length & 63) < 55) // 64 - 9 -> short padding - { - padlen = 64 - (m_Length & 63); - } else { - padlen = 128 - (m_Length & 63); - } - - uint64_t l = m_Length << 3; - { - uint8_t * p = (uint8_t *) &l; -#ifdef NO_ASM - pad[padlen - 1] = (uint8_t)(p[0]); - pad[padlen - 2] = (uint8_t)(p[1]); - pad[padlen - 3] = (uint8_t)(p[2]); - pad[padlen - 4] = (uint8_t)(p[3]); - pad[padlen - 5] = (uint8_t)(p[4]); - pad[padlen - 6] = (uint8_t)(p[5]); - pad[padlen - 7] = (uint8_t)(p[6]); - pad[padlen - 8] = (uint8_t)(p[7]); -#else - uint8_t * p2 = (uint8_t *) &(pad[padlen - 8]); - __asm { - MOV ebx, p - MOV eax, [ebx] - BSWAP eax - MOV edx, [ebx + 4] - MOV ebx, p2 - BSWAP edx - MOV [ebx + 4], eax - MOV [ebx], edx - } -#endif - } - - SHAUpdate((uint32_t *)pad, padlen); - - { - uint8_t * h = (uint8_t *)Hash; - uint8_t * m = (uint8_t *)m_Hash; -#ifdef NO_ASM - for (int i = 0; i < 32; i += 4) - { - h[i] = m[i + 3]; - h[i + 1] = m[i + 2]; - h[i + 2] = m[i + 1]; - h[i + 3] = m[i]; - } -#else - __asm { - MOV esi, m - MOV edi, h - MOV ecx, 8 - loop_label: - LODSD - BSWAP eax - STOSD - dec ecx - jnz loop_label - } -#endif - } - - SHAInit(); -} - -#define SHA256_ROUND(a,b,c,d,e,f,g,h, i) { \ -t1 = (h) + (rotr((e), 6) ^ rotr((e), 11) ^ rotr((e), 25)) + \ - (((e) & (f)) ^ ((~(e)) & (g))) + cKey[i] + w[i]; \ -t2 = (rotr((a), 2) ^ rotr((a), 13) ^ rotr((a), 22)) + \ - (((a) & (b)) ^ ((a) & (c)) ^ ((b) & (c))); \ -d += t1; \ -h = t1 + t2; \ -} - -void SHA256::SHABlock() -{ - uint32_t w[64]; - - // make Big Endian - { - uint8_t * d = (uint8_t *)w; - uint8_t * s = (uint8_t *)m_Block; -#ifdef NO_ASM - for (int i = 0; i < 64; i += 4) - { - d[i] = s[i + 3]; - d[i + 1] = s[i + 2]; - d[i + 2] = s[i + 1]; - d[i + 3] = s[i]; - } -#else - __asm { - MOV esi, s - MOV edi, d - MOV ecx, 16 - loop_label: - LODSD - BSWAP eax - STOSD - dec ecx - jnz loop_label - } -#endif - } - - uint32_t t1, t2, a,b,c,d,e,f,g,h; - for (uint32_t i = 16; i < 64; ++i) - { - t1 = w[i-15]; - t2 = w[i-2]; - w[i] = w[i-16] + (rotr(t1, 7) ^ rotr(t1, 18) ^ (t1 >> 3)) + w[i-7] + (rotr(t2, 17) ^ rotr(t2, 19) ^ (t2 >> 10)); - } - - a = m_Hash[0]; - b = m_Hash[1]; - c = m_Hash[2]; - d = m_Hash[3]; - e = m_Hash[4]; - f = m_Hash[5]; - g = m_Hash[6]; - h = m_Hash[7]; - -#ifdef SHA_LOOPUNROLL - for (uint32_t i = 0; i < 64; ++i) - { - SHA256_ROUND(a,b,c,d,e,f,g,h,i); ++i; - SHA256_ROUND(h,a,b,c,d,e,f,g,i); ++i; - SHA256_ROUND(g,h,a,b,c,d,e,f,i); ++i; - SHA256_ROUND(f,g,h,a,b,c,d,e,i); ++i; - SHA256_ROUND(e,f,g,h,a,b,c,d,i); ++i; - SHA256_ROUND(d,e,f,g,h,a,b,c,i); ++i; - SHA256_ROUND(c,d,e,f,g,h,a,b,i); ++i; - SHA256_ROUND(b,c,d,e,f,g,h,a,i); - } -#else - for (uint32_t i = 0; i < 64; ++i) - { - t1 = h + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + //s1 - ((e & f) ^ ((~e) & g)) + cKey[i] + w[i]; //ch - - t2 = (rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + //s0 - ((a & b) ^ (a & c) ^ (b & c)); //maj - - h = g; - g = f; - f = e; - e = d + t1; - d = c; - c = b; - b = a; - a = t1 + t2; - } -#endif - - m_Hash[0] += a; - m_Hash[1] += b; - m_Hash[2] += c; - m_Hash[3] += d; - m_Hash[4] += e; - m_Hash[5] += f; - m_Hash[6] += g; - m_Hash[7] += h; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/SHA256.h b/plugins/!Deprecated/Dbx_tree/src/SHA256.h deleted file mode 100644 index ef3f005ccb..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/SHA256.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -class SHA256 -{ -public: - typedef uint32_t THash[8]; - - SHA256(); - ~SHA256(); - - void SHAInit(); - void SHAUpdate(void * Data, uint32_t Length); - void SHAFinal(THash & Hash); -private: - THash m_Hash; - uint64_t m_Length; /// Datalength in byte - - uint8_t m_Block[64]; - - void SHABlock(); - void Swap64(void * Addr); -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/Services.cpp b/plugins/!Deprecated/Dbx_tree/src/Services.cpp deleted file mode 100644 index 412b05d76b..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Services.cpp +++ /dev/null @@ -1,412 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Database.h" - -INT_PTR CDataBase::DBEntityGetRoot(WPARAM wParam, LPARAM lParam) -{ - return getEntities().getRootEntity(); -} - -INT_PTR CDataBase::DBEntityChildCount(WPARAM hEntity, LPARAM lParam) -{ - if (hEntity == 0) - hEntity = getEntities().getRootEntity(); - - return getEntities().getChildCount(hEntity); -} - -INT_PTR CDataBase::DBEntityGetParent(WPARAM hEntity, LPARAM lParam) -{ - if (hEntity == 0) - hEntity = getEntities().getRootEntity(); - - return getEntities().getParent(hEntity); -} - -INT_PTR CDataBase::DBEntityMove(WPARAM hEntity, LPARAM hParent) -{ - if ((hEntity == 0) || (hEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - if (hParent == 0) - hParent = getEntities().getRootEntity(); - - return getEntities().setParent(hEntity, hParent); -} - -INT_PTR CDataBase::DBEntityGetFlags(WPARAM hEntity, LPARAM lParam) -{ - if (hEntity == 0) - hEntity = getEntities().getRootEntity(); - - return getEntities().getFlags(hEntity); -} - -INT_PTR CDataBase::DBEntityIterInit(WPARAM pFilter, LPARAM hParent) -{ - TDBTEntityIterFilter fil = {0,0,0,0}; - if (pFilter == NULL) - { - pFilter = reinterpret_cast(&fil); - fil.cbSize = sizeof(fil); - } - - if (reinterpret_cast(pFilter)->cbSize != sizeof(TDBTEntityIterFilter)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pFilter)->fDontHasFlags & ((PDBTEntityIterFilter)pFilter)->fHasFlags) - return DBT_INVALIDPARAM; - - if (hParent == 0) - hParent = getEntities().getRootEntity(); - - return getEntities().IterationInit(*reinterpret_cast(pFilter), hParent); -} - -INT_PTR CDataBase::DBEntityIterNext(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getEntities().IterationNext(hIteration); -} - -INT_PTR CDataBase::DBEntityIterClose(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getEntities().IterationClose(hIteration); -} - -INT_PTR CDataBase::DBEntityDelete(WPARAM hEntity, LPARAM lParam) -{ - if ((hEntity == 0) || (hEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - return getEntities().DeleteEntity(hEntity); -} - -INT_PTR CDataBase::DBEntityCreate(WPARAM pEntity, LPARAM lParam) -{ - if (reinterpret_cast(pEntity)->bcSize != sizeof(TDBTEntity)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pEntity)->hParentEntity == 0) - reinterpret_cast(pEntity)->hParentEntity = getEntities().getRootEntity(); - - reinterpret_cast(pEntity)->fFlags = reinterpret_cast(pEntity)->fFlags & ~(DBT_NF_IsRoot | DBT_NF_HasChildren | DBT_NF_IsVirtual | DBT_NF_HasVirtuals); // forbidden flags... - return getEntities().CreateEntity(*reinterpret_cast(pEntity)); -} - -INT_PTR CDataBase::DBEntityGetAccount(WPARAM hEntity, LPARAM lParam) -{ - return getEntities().getAccount(hEntity); -} - -INT_PTR CDataBase::DBVirtualEntityCreate(WPARAM hEntity, LPARAM hParent) -{ - if ((hEntity == 0) || (hEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - if (hParent == 0) - hParent = getEntities().getRootEntity(); - - return getEntities().VirtualCreate(hEntity, hParent); -} -INT_PTR CDataBase::DBVirtualEntityGetParent(WPARAM hVirtualEntity, LPARAM lParam) -{ - if ((hVirtualEntity == 0) || (hVirtualEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - return getEntities().VirtualGetParent(hVirtualEntity); -} -INT_PTR CDataBase::DBVirtualEntityGetFirst(WPARAM hEntity, LPARAM lParam) -{ - if ((hEntity == 0) || (hEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - return getEntities().VirtualGetFirst(hEntity); -} -INT_PTR CDataBase::DBVirtualEntityGetNext(WPARAM hVirtualEntity, LPARAM lParam) -{ - if ((hVirtualEntity == 0) || (hVirtualEntity == getEntities().getRootEntity())) - return DBT_INVALIDPARAM; - - return getEntities().VirtualGetNext(hVirtualEntity); -} - - -INT_PTR CDataBase::DBSettingFind(WPARAM pSettingDescriptor, LPARAM lParam) -{ - if (pSettingDescriptor == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSettingDescriptor)->cbSize != sizeof(TDBTSettingDescriptor)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSettingDescriptor)->pszSettingName == NULL) - return DBT_INVALIDPARAM; - - return getSettings().FindSetting(*reinterpret_cast(pSettingDescriptor)); -} -INT_PTR CDataBase::DBSettingDelete(WPARAM pSettingDescriptor, LPARAM lParam) -{ - if (pSettingDescriptor == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSettingDescriptor)->cbSize != sizeof(TDBTSettingDescriptor)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSettingDescriptor)->pszSettingName == NULL) - return DBT_INVALIDPARAM; - - return getSettings().DeleteSetting(*reinterpret_cast(pSettingDescriptor)); -} -INT_PTR CDataBase::DBSettingDeleteHandle(WPARAM hSetting, LPARAM lParam) -{ - if (hSetting == 0) - return DBT_INVALIDPARAM; - - return getSettings().DeleteSetting(hSetting); -} -INT_PTR CDataBase::DBSettingWrite(WPARAM pSetting, LPARAM lParam) -{ - if (pSetting == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->cbSize != sizeof(TDBTSetting)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor->cbSize != sizeof(TDBTSettingDescriptor)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor->pszSettingName == NULL) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pSetting)->Type & DBT_STF_VariableLength) && (reinterpret_cast(pSetting)->Value.pBlob == NULL)) - return DBT_INVALIDPARAM; - - return getSettings().WriteSetting(*reinterpret_cast(pSetting)); -} -INT_PTR CDataBase::DBSettingWriteHandle(WPARAM pSetting, LPARAM hSetting) -{ - if (pSetting == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->cbSize != sizeof(TDBTSetting)) - return DBT_INVALIDPARAM; - - return getSettings().WriteSetting(*reinterpret_cast(pSetting), hSetting); -} -INT_PTR CDataBase::DBSettingRead(WPARAM pSetting, LPARAM lParam) -{ - if (pSetting == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->cbSize != sizeof(TDBTSetting)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor->cbSize != sizeof(TDBTSettingDescriptor)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->Descriptor->pszSettingName == NULL) - return DBT_INVALIDPARAM; - - return getSettings().ReadSetting(*reinterpret_cast(pSetting)); -} -INT_PTR CDataBase::DBSettingReadHandle(WPARAM pSetting, LPARAM hSetting) -{ - if ((pSetting == NULL) || (hSetting == 0)) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pSetting)->cbSize != sizeof(TDBTSetting)) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pSetting)->Descriptor != NULL) && (reinterpret_cast(pSetting)->Descriptor->cbSize != sizeof(TDBTSettingDescriptor))) - return DBT_INVALIDPARAM; - - return getSettings().ReadSetting(*((PDBTSetting)pSetting), hSetting); -} -INT_PTR CDataBase::DBSettingIterInit(WPARAM pFilter, LPARAM lParam) -{ - if (pFilter == NULL) - return DBT_INVALIDPARAM; - - if (reinterpret_cast(pFilter)->cbSize != sizeof(TDBTSettingIterFilter)) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pFilter)->Descriptor != NULL) && (reinterpret_cast(pFilter)->Descriptor->cbSize != sizeof(TDBTSettingDescriptor))) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pFilter)->Setting != NULL) && (reinterpret_cast(pFilter)->Setting->cbSize != sizeof(TDBTSetting))) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pFilter)->Setting != NULL) && (reinterpret_cast(pFilter)->Setting->Descriptor != NULL) && (reinterpret_cast(pFilter)->Setting->Descriptor->cbSize != sizeof(TDBTSettingIterFilter))) - return DBT_INVALIDPARAM; - - return getSettings().IterationInit(*reinterpret_cast(pFilter)); -} -INT_PTR CDataBase::DBSettingIterNext(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getSettings().IterationNext(hIteration); -} -INT_PTR CDataBase::DBSettingIterClose(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getSettings().IterationClose(hIteration); -} - -INT_PTR CDataBase::DBEventGetBlobSize(WPARAM hEvent, LPARAM lParam) -{ - return getEvents().GetBlobSize(hEvent); -} - -INT_PTR CDataBase::DBEventGet(WPARAM hEvent, LPARAM pEvent) -{ - if ((pEvent == NULL) || (reinterpret_cast(pEvent)->cbSize != sizeof(TDBTEvent))) - return DBT_INVALIDPARAM; - - return getEvents().Get(hEvent, *reinterpret_cast(pEvent)); -} - -INT_PTR CDataBase::DBEventGetCount(WPARAM hEntity, LPARAM lParam) -{ - return getEvents().GetCount(hEntity); -} - -INT_PTR CDataBase::DBEventDelete(WPARAM hEvent, LPARAM lParam) -{ - return getEvents().Delete(hEvent); -} - -INT_PTR CDataBase::DBEventAdd(WPARAM hEntity, LPARAM pEvent) -{ - if ((pEvent == NULL) || (reinterpret_cast(pEvent)->cbSize != sizeof(TDBTEvent)) || (reinterpret_cast(pEvent)->pBlob == NULL) || (reinterpret_cast(pEvent)->cbBlob == 0)) - return DBT_INVALIDPARAM; - - return getEvents().Add(hEntity, *((PDBTEvent)pEvent)); -} - -INT_PTR CDataBase::DBEventMarkRead(WPARAM hEvent, LPARAM lParam) -{ - return getEvents().MarkRead(hEvent); -} - -INT_PTR CDataBase::DBEventWriteToDisk(WPARAM hEvent, LPARAM lParam) -{ - return getEvents().WriteToDisk(hEvent); -} - -INT_PTR CDataBase::DBEventGetEntity(WPARAM hEvent, LPARAM lParam) -{ - return getEvents().getEntity(hEvent); -} - -INT_PTR CDataBase::DBEventIterInit(WPARAM pFilter, LPARAM lParam) -{ - if ((pFilter == NULL) || (reinterpret_cast(pFilter)->cbSize != sizeof(TDBTEventIterFilter))) - return DBT_INVALIDPARAM; - - if ((reinterpret_cast(pFilter)->Event != NULL) && (reinterpret_cast(pFilter)->Event->cbSize != sizeof(TDBTEvent))) - return DBT_INVALIDPARAM; - - return getEvents().IterationInit(*reinterpret_cast(pFilter)); -} - -INT_PTR CDataBase::DBEventIterNext(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getEvents().IterationNext(hIteration); -} - -INT_PTR CDataBase::DBEventIterClose(WPARAM hIteration, LPARAM lParam) -{ - if ((hIteration == 0) || (hIteration == DBT_INVALIDPARAM)) - return hIteration; - - return getEvents().IterationClose(hIteration); -} - -void CDataBase::CreateDbService(const char* szService, DbServiceFunc serviceProc) -{ - ::CreateServiceFunctionObj(szService, ( MIRANDASERVICEOBJ )*( void** )&serviceProc, this ); -} - -bool CDataBase::RegisterServices() -{ - CreateDbService(MS_DBT_ENTITY_GETROOT, &CDataBase::DBEntityGetRoot); - CreateDbService(MS_DBT_ENTITY_CHILDCOUNT, &CDataBase::DBEntityChildCount); - CreateDbService(MS_DBT_ENTITY_GETPARENT, &CDataBase::DBEntityGetParent); - CreateDbService(MS_DBT_ENTITY_MOVE, &CDataBase::DBEntityMove); - CreateDbService(MS_DBT_ENTITY_GETFLAGS, &CDataBase::DBEntityGetFlags); - CreateDbService(MS_DBT_ENTITY_ITER_INIT, &CDataBase::DBEntityIterInit); - CreateDbService(MS_DBT_ENTITY_ITER_NEXT, &CDataBase::DBEntityIterNext); - CreateDbService(MS_DBT_ENTITY_ITER_CLOSE, &CDataBase::DBEntityIterClose); - CreateDbService(MS_DBT_ENTITY_DELETE, &CDataBase::DBEntityDelete); - CreateDbService(MS_DBT_ENTITY_CREATE, &CDataBase::DBEntityCreate); - CreateDbService(MS_DBT_ENTITY_GETACCOUNT, &CDataBase::DBEntityGetAccount); - - CreateDbService(MS_DBT_VIRTUALENTITY_CREATE, &CDataBase::DBVirtualEntityCreate); - CreateDbService(MS_DBT_VIRTUALENTITY_GETPARENT, &CDataBase::DBVirtualEntityGetParent); - CreateDbService(MS_DBT_VIRTUALENTITY_GETFIRST, &CDataBase::DBVirtualEntityGetFirst); - CreateDbService(MS_DBT_VIRTUALENTITY_GETNEXT, &CDataBase::DBVirtualEntityGetNext); - - CreateDbService(MS_DBT_SETTING_FIND, &CDataBase::DBSettingFind); - CreateDbService(MS_DBT_SETTING_DELETE, &CDataBase::DBSettingDelete); - CreateDbService(MS_DBT_SETTING_DELETEHANDLE, &CDataBase::DBSettingDeleteHandle); - CreateDbService(MS_DBT_SETTING_WRITE, &CDataBase::DBSettingWrite); - CreateDbService(MS_DBT_SETTING_WRITEHANDLE, &CDataBase::DBSettingWriteHandle); - CreateDbService(MS_DBT_SETTING_READ, &CDataBase::DBSettingRead); - CreateDbService(MS_DBT_SETTING_READHANDLE, &CDataBase::DBSettingReadHandle); - CreateDbService(MS_DBT_SETTING_ITER_INIT, &CDataBase::DBSettingIterInit); - CreateDbService(MS_DBT_SETTING_ITER_NEXT, &CDataBase::DBSettingIterNext); - CreateDbService(MS_DBT_SETTING_ITER_CLOSE, &CDataBase::DBSettingIterClose); - - CreateDbService(MS_DBT_EVENT_GETBLOBSIZE, &CDataBase::DBEventGetBlobSize); - CreateDbService(MS_DBT_EVENT_GET, &CDataBase::DBEventGet); - CreateDbService(MS_DBT_EVENT_GETCOUNT, &CDataBase::DBEventGetCount); - CreateDbService(MS_DBT_EVENT_DELETE, &CDataBase::DBEventDelete); - CreateDbService(MS_DBT_EVENT_ADD, &CDataBase::DBEventAdd); - CreateDbService(MS_DBT_EVENT_MARKREAD, &CDataBase::DBEventMarkRead); - CreateDbService(MS_DBT_EVENT_WRITETODISK, &CDataBase::DBEventWriteToDisk); - CreateDbService(MS_DBT_EVENT_GETENTITY, &CDataBase::DBEventGetEntity); - CreateDbService(MS_DBT_EVENT_ITER_INIT, &CDataBase::DBEventIterInit); - CreateDbService(MS_DBT_EVENT_ITER_NEXT, &CDataBase::DBEventIterNext); - CreateDbService(MS_DBT_EVENT_ITER_CLOSE, &CDataBase::DBEventIterClose); - return true; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Settings.cpp b/plugins/!Deprecated/Dbx_tree/src/Settings.cpp deleted file mode 100644 index 17d8fe635f..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Settings.cpp +++ /dev/null @@ -1,1473 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Settings.h" -#include // floor function -#include "Hash.h" - -TDBTSettingHandle CSettingsTree::_FindSetting(const uint32_t Hash, const char * Name, const uint32_t Length) -{ - TSettingKey key = {0,0}; - key.Hash = Hash; - iterator i = LowerBound(key); - uint16_t l; - - TDBTSettingHandle res = 0; - - char * str = NULL; - - while ((res == 0) && (i) && (i->Hash == Hash)) - { - l = Length; - if (m_Owner._ReadSettingName(m_BlockManager, i->Setting, l, str) && - (strncmp(str, Name, Length) == 0)) - { - res = i->Setting; - } else { - ++i; - } - } - - free(str); - - return res; -} - -bool CSettingsTree::_DeleteSetting(const uint32_t Hash, const TDBTSettingHandle hSetting) -{ - TSettingKey key = {0,0}; - key.Hash = Hash; - iterator i = LowerBound(key); - - while ((i) && (i->Hash == Hash) && (i->Setting != hSetting)) - ++i; - - if ((i) && (i->Hash == Hash)) - { - Delete(*i); - return true; - } - - return false; -} - -bool CSettingsTree::_AddSetting(const uint32_t Hash, const TDBTSettingHandle hSetting) -{ - TSettingKey key; - key.Hash = Hash; - key.Setting = hSetting; - Insert(key); - return true; -} - -CSettings::CSettings( - CBlockManager & BlockManagerSet, - CBlockManager & BlockManagerPri, - CSettingsTree::TNodeRef SettingsRoot, - CEntities & Entities -) -: m_BlockManagerSet(BlockManagerSet), - m_BlockManagerPri(BlockManagerPri), - m_Entities(Entities), - m_SettingsMap(), - m_sigRootChanged(), - m_Modules() -{ - CSettingsTree * settree = new CSettingsTree(*this, m_BlockManagerSet, SettingsRoot, 0); - - settree->sigRootChanged().connect(this, &CSettings::onRootChanged); - m_SettingsMap.insert(std::make_pair(0, settree)); - - m_Entities._sigDeleteSettings().connect(this, &CSettings::onDeleteSettings); - m_Entities._sigMergeSettings().connect (this, &CSettings::onMergeSettings); - - _LoadModules(); - _EnsureModuleExists("$Modules"); -} - -CSettings::~CSettings() -{ - TSettingsTreeMap::iterator it = m_SettingsMap.begin(); - - while (it != m_SettingsMap.end()) - { - delete it->second; - ++it; - } - - TModulesMap::iterator it2 = m_Modules.begin(); - while (it2 != m_Modules.end()) - { - delete [] it2->second; - ++it2; - } -} - - -CSettingsTree * CSettings::getSettingsTree(TDBTEntityHandle hEntity) -{ - TSettingsTreeMap::iterator i = m_SettingsMap.find(hEntity); - if (i != m_SettingsMap.end()) - return i->second; - - uint32_t root = m_Entities._getSettingsRoot(hEntity); - if (root == DBT_INVALIDPARAM) - return NULL; - - CSettingsTree * tree = new CSettingsTree(*this, m_BlockManagerPri, root, hEntity); - tree->sigRootChanged().connect(this, &CSettings::onRootChanged); - m_SettingsMap.insert(std::make_pair(hEntity, tree)); - - return tree; -} - -// TODO check if we need to copy the name or if we can just use the cache -inline bool CSettings::_ReadSettingName(CBlockManager & BlockManager, TDBTSettingHandle Setting, uint16_t & NameLength, char *& NameBuf) -{ - uint32_t sig = cSettingSignature; - uint32_t size = 0; - - TSetting * setting = BlockManager.ReadBlock(Setting, size, sig); - if (!setting) - return false; - - if ((NameLength != 0) && (NameLength != setting->NameLength)) - return false; - - NameLength = setting->NameLength; - NameBuf = (char*) realloc(NameBuf, NameLength + 1); - - memcpy(NameBuf, setting + 1, NameLength + 1); - NameBuf[NameLength] = 0; - - return true; -} - -void CSettings::_EnsureModuleExists(char * Module) -{ - if ((Module == NULL) || (*Module == 0)) - return; - - char * e = strchr(Module, '/'); - if (e) - *e = 0; - - TModulesMap::iterator i = m_Modules.find(*((uint16_t*)Module)); - while ((i != m_Modules.end()) && (i->first == *((uint16_t*)Module)) && (strcmp(i->second, Module) != 0)) - { - ++i; - } - - if ((i == m_Modules.end()) || (i->first != *reinterpret_cast(Module))) - { - size_t l = strlen(Module); - char * tmp = new char [l + 1]; - memcpy(tmp, Module, l + 1); - m_Modules.insert(std::make_pair(*reinterpret_cast(tmp), tmp)); - - char namebuf[512]; - strcpy_s(namebuf, "$Modules/"); - strcat_s(namebuf, Module); - - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - desc.cbSize = sizeof(desc); - desc.pszSettingName = namebuf; - - TDBTSetting set = {0,0,0,0}; - set.cbSize = sizeof(set); - set.Descriptor = &desc; - set.Type = DBT_ST_DWORD; - - WriteSetting(set, cSettingsFileFlag); - } - - if (e) - *e = '/'; -} - -void CSettings::_LoadModules() -{ - TDBTSettingDescriptor desc = {0,0,0,0,0,0,0,0}; - desc.cbSize = sizeof(desc); - - TDBTSettingIterFilter f = {0,0,0,0,0,0,0,0}; - f.cbSize = sizeof(f); - f.Descriptor = &desc; - f.NameStart = "$Modules/"; - - TDBTSettingIterationHandle hiter = IterationInit(f); - - if ((hiter != 0) && (hiter != DBT_INVALIDPARAM)) - { - TDBTSettingHandle res = IterationNext(hiter); - while ((res != 0) && (res != DBT_INVALIDPARAM)) - { - size_t l = strlen(desc.pszSettingName); - char * tmp = new char [l - 9 + 1]; - memcpy(tmp, desc.pszSettingName + 9, l - 9 + 1); - m_Modules.insert(std::make_pair(*reinterpret_cast(tmp), tmp)); - res = IterationNext(hiter); - } - - IterationClose(hiter); - } -} - -void CSettings::onRootChanged(void* SettingsTree, CSettingsTree::TNodeRef NewRoot) -{ - if (((CSettingsTree*)SettingsTree)->Entity() == 0) - m_sigRootChanged.emit(this, NewRoot); - else - m_Entities._setSettingsRoot(((CSettingsTree*)SettingsTree)->Entity(), NewRoot); -} - -void CSettings::onDeleteSettingCallback(void * Tree, const TSettingKey & Key, uint32_t Param) -{ - if (Param == 0) - { - m_BlockManagerSet.DeleteBlock(Key.Setting); - } else { - m_BlockManagerPri.DeleteBlock(Key.Setting); - } -} -void CSettings::onDeleteSettings(CEntities * Entities, TDBTEntityHandle hEntity) -{ - CSettingsTree * tree = getSettingsTree(hEntity); - - m_Entities._setSettingsRoot(hEntity, 0); - - if (tree) - { - CSettingsTree::TDeleteCallback callback; - callback.connect(this, &CSettings::onDeleteSettingCallback); - - tree->DeleteTree(&callback, hEntity); - - TSettingsTreeMap::iterator i = m_SettingsMap.find(hEntity); - delete i->second; // tree - m_SettingsMap.erase(i); - } -} - - -typedef struct TSettingMergeHelper -{ - TDBTEntityHandle Source; - TDBTEntityHandle Dest; - CSettingsTree * SourceTree; - -} TSettingMergeHelper, *PSettingMergeHelper; - - -void CSettings::onMergeSettingCallback(void * Tree, const TSettingKey & Key,uint32_t Param) -{ - PSettingMergeHelper hlp = (PSettingMergeHelper)Param; - - uint16_t dnl = 0; - char * dnb = NULL; - - _ReadSettingName(m_BlockManagerPri, Key.Setting, dnl, dnb); - - TSettingKey k = {0,0}; - k.Hash = Key.Hash; - - CSettingsTree::iterator i = hlp->SourceTree->LowerBound(k); - TDBTSettingHandle res = 0; - while ((res == 0) && i && (i->Hash == Key.Hash)) - { - uint16_t snl = dnl; - char * snb = NULL; - - if (_ReadSettingName(m_BlockManagerPri, i->Setting, snl, snb) - && (strcmp(dnb, snb) == 0)) // found it - { - res = i->Setting; - } - } - - if (res == 0) - { - hlp->SourceTree->Insert(Key); - } else { - hlp->SourceTree->Delete(*i); - hlp->SourceTree->Insert(Key); - m_BlockManagerPri.DeleteBlock(res); - } -} - -void CSettings::onMergeSettings(CEntities * Entities, TDBTEntityHandle Source, TDBTEntityHandle Dest) -{ - - if ((Source != 0) && (Dest != 0)) - { - LOG(logERROR, _T("Cannot Merge with global settings!\nSource %d Dest %d"), Source, Dest); - return; - } - - CSettingsTree * stree = getSettingsTree(Source); - CSettingsTree * dtree = getSettingsTree(Dest); - - if (stree && dtree) - { - m_Entities._setSettingsRoot(Source, 0); - - stree->Entity(Dest); - m_Entities._setSettingsRoot(Dest, stree->getRoot()); - - TSettingKey key = {0,0}; - CSettingsTree::iterator it = stree->LowerBound(key); - - while (it) // transfer all source settings to new Entity - { - uint32_t sig = cSettingSignature; - uint32_t size = 0; - TSetting * tmp = m_BlockManagerPri.ReadBlock(it->Setting, size, sig); - if (tmp) - { - tmp->Entity = Dest; - m_BlockManagerPri.UpdateBlock(it->Setting); - } - ++it; - } - - // merge the dest tree into the source tree. override existing items - // do it this way, because source tree should be much larger - TSettingMergeHelper hlp; - hlp.Source = Source; - hlp.Dest = Dest; - hlp.SourceTree = stree; - - CSettingsTree::TDeleteCallback callback; - callback.connect(this, &CSettings::onMergeSettingCallback); - dtree->DeleteTree(&callback, (uint32_t)&hlp); - - TSettingsTreeMap::iterator i = m_SettingsMap.find(Dest); - delete i->second; // dtree - i->second = stree; - m_SettingsMap.erase(Source); - - } -} - - - - -TDBTSettingHandle CSettings::FindSetting(TDBTSettingDescriptor & Descriptor) -{ - if (Descriptor.Flags & DBT_SDF_FoundValid) - return Descriptor.FoundHandle; - - uint32_t namelength = static_cast( strlen(Descriptor.pszSettingName)); - uint32_t namehash; - - if (Descriptor.Flags & DBT_SDF_HashValid) - { - namehash = Descriptor.Hash; - } else { - namehash = Hash(Descriptor.pszSettingName, namelength); - Descriptor.Hash = namehash; - Descriptor.Flags = Descriptor.Flags | DBT_SDF_HashValid; - } - - Descriptor.Flags = Descriptor.Flags & ~DBT_SDF_FoundValid; - - CSettingsTree * tree; - TDBTSettingHandle res = 0; - CBlockManager * file = &m_BlockManagerPri; - if (Descriptor.Entity == 0) - file = &m_BlockManagerSet; - - CBlockManager::ReadTransaction trans(*file); - - if ((Descriptor.Entity == 0) || (Descriptor.Options == 0)) - { - tree = getSettingsTree(Descriptor.Entity); - if (tree == NULL) - return DBT_INVALIDPARAM; - - res = tree->_FindSetting(namehash, Descriptor.pszSettingName, namelength); - - if (res) - { - Descriptor.FoundInEntity = Descriptor.Entity; - Descriptor.FoundHandle = res; - Descriptor.Flags = Descriptor.Flags | DBT_SDF_FoundValid; - } - - if (Descriptor.Entity == 0) - res = res | cSettingsFileFlag; - - return res; - } - - uint32_t cf = m_Entities.getFlags(Descriptor.Entity); - if (cf == DBT_INVALIDPARAM) - return DBT_INVALIDPARAM; - - // search the setting - res = 0; - - TDBTEntityIterFilter f; - f.cbSize = sizeof(f); - if (cf & DBT_NF_IsGroup) - { - f.fDontHasFlags = 0; - f.fHasFlags = DBT_NF_IsGroup; - } else { - f.fDontHasFlags = DBT_NF_IsGroup; - f.fHasFlags = 0; - } - f.Options = Descriptor.Options; - - TDBTEntityIterationHandle i = m_Entities.IterationInit(f, Descriptor.Entity); - if ((i == DBT_INVALIDPARAM) || (i == 0)) - return DBT_INVALIDPARAM; - - TDBTEntityHandle e = m_Entities.IterationNext(i); - TDBTEntityHandle found = 0; - while ((res == 0) && (e != 0)) - { - tree = getSettingsTree(e); - if (tree) - { - res = tree->_FindSetting(namehash, Descriptor.pszSettingName, namelength); - found = e; - } - - e = m_Entities.IterationNext(i); - } - - m_Entities.IterationClose(i); - - if (res) - { - Descriptor.FoundInEntity = found; - Descriptor.FoundHandle = res; - Descriptor.Flags = Descriptor.Flags | DBT_SDF_FoundValid; - } - - return res; -} - -unsigned int CSettings::DeleteSetting(TDBTSettingDescriptor & Descriptor) -{ - TDBTSettingHandle hset = FindSetting(Descriptor); - if ((hset == 0) || (hset == DBT_INVALIDPARAM)) - { - return DBT_INVALIDPARAM; - } - - unsigned int res = 0; - if ((Descriptor.Flags & DBT_SDF_FoundValid) && (Descriptor.Flags & DBT_SDF_HashValid)) - { - CBlockManager * file = &m_BlockManagerPri; - - if (Descriptor.FoundInEntity == 0) - { - file = &m_BlockManagerSet; - hset = hset & ~cSettingsFileFlag; - } - - CBlockManager::WriteTransaction trans(*file); - - uint32_t sig = cSettingSignature; - uint32_t size = 0; - TSetting * setting = file->ReadBlock(hset, size, sig); - if (setting && (setting->Entity == Descriptor.FoundInEntity)) - { - CSettingsTree * tree = getSettingsTree(setting->Entity); - if (tree) - { - tree->_DeleteSetting(Descriptor.Hash, hset); - file->DeleteBlock(hset); - } - } - - } else { - res = DeleteSetting(hset); - } - - return res; -} -unsigned int CSettings::DeleteSetting(TDBTSettingHandle hSetting) -{ - CBlockManager * file = &m_BlockManagerPri; - - if (hSetting & cSettingsFileFlag) - { - file = &m_BlockManagerSet; - hSetting = hSetting & ~cSettingsFileFlag; - } - - CBlockManager::WriteTransaction trans(*file); - - uint32_t sig = cSettingSignature; - uint32_t size = 0; - TSetting * setting = file->ReadBlock(hSetting, size, sig); - - if (!setting) - return DBT_INVALIDPARAM; - - CSettingsTree * tree = getSettingsTree(setting->Entity); - if (tree == NULL) - return DBT_INVALIDPARAM; - - char * str = reinterpret_cast(setting + 1); - tree->_DeleteSetting(Hash(str, setting->NameLength), hSetting); - - file->DeleteBlock(hSetting); - - return 0; -} -TDBTSettingHandle CSettings::WriteSetting(TDBTSetting & Setting) -{ - CBlockManager * file = &m_BlockManagerPri; - if (Setting.Descriptor->Entity == 0) - file = &m_BlockManagerSet; - - CBlockManager::WriteTransaction trans(*file); - - TDBTSettingHandle hset = FindSetting(*Setting.Descriptor); - if (hset == DBT_INVALIDPARAM) - return hset; - - hset = WriteSetting(Setting, hset); - - return hset; -} - -TDBTSettingHandle CSettings::WriteSetting(TDBTSetting & Setting, TDBTSettingHandle hSetting) -{ - uint32_t sig = cSettingSignature; - uint32_t size = 0; - TSetting * setting = NULL; - - if (!hSetting && !(Setting.Descriptor && Setting.Descriptor->Entity)) - return DBT_INVALIDPARAM; - - CBlockManager * file = &m_BlockManagerPri; - bool fileflag = false; - - if (hSetting & cSettingsFileFlag) - { - file = &m_BlockManagerSet; - hSetting = hSetting & ~cSettingsFileFlag; - fileflag = true; - } - - CSettingsTree * tree = NULL; - - if (hSetting == 0) - { - if (Setting.Descriptor->Entity == 0) - { - file = &m_BlockManagerSet; - fileflag = true; - } - - CBlockManager::WriteTransaction trans(*file); - - if ((Setting.Descriptor) && (Setting.Descriptor->pszSettingName)) // setting needs a name - { - tree = getSettingsTree(Setting.Descriptor->Entity); - _EnsureModuleExists(Setting.Descriptor->pszSettingName); - } - - } else { - CBlockManager::WriteTransaction trans(*file); - - setting = file->ReadBlock(hSetting, size, sig); - - if (setting) // check if hSetting is valid - tree = getSettingsTree(setting->Entity); - } - - if (tree == NULL) - return DBT_INVALIDPARAM; - - uint32_t blobsize = 0; - - if (Setting.Type & DBT_STF_VariableLength) - { - switch (Setting.Type) - { - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - if (Setting.Value.Length == 0) - blobsize = static_cast(strlen(Setting.Value.pAnsi) + 1); - else - blobsize = Setting.Value.Length; - } break; - case DBT_ST_WCHAR: - { - if (Setting.Value.Length == 0) - blobsize = sizeof(wchar_t) * static_cast(wcslen(Setting.Value.pWide) + 1); - else - blobsize = sizeof(wchar_t) * (Setting.Value.Length); - } break; - default: - blobsize = Setting.Value.Length; - break; - } - } - - size = sizeof(TSetting) + static_cast(strlen(Setting.Descriptor->pszSettingName)) + 1 + blobsize; - - if (hSetting == 0) // create new setting - { - setting = file->CreateBlock(hSetting, cSettingSignature, size); - - setting->Entity = Setting.Descriptor->Entity; - setting->Flags = 0; - setting->AllocSize = blobsize; - - if (Setting.Descriptor && (Setting.Descriptor->Flags & DBT_SDF_HashValid)) - { - tree->_AddSetting(Setting.Descriptor->Hash, hSetting); - } else { - tree->_AddSetting(Hash(Setting.Descriptor->pszSettingName, static_cast(strlen(Setting.Descriptor->pszSettingName))), hSetting); - } - - } else { - uint32_t tmp = 0; - setting = file->ReadBlock(hSetting, tmp, sig); - - if (((Setting.Type & DBT_STF_VariableLength) == 0) && (setting->Type & DBT_STF_VariableLength)) - { // shrink setting (variable size->fixed size) - file->ResizeBlock(hSetting, setting, size); - } - - if ((Setting.Type & DBT_STF_VariableLength) && ((setting->Type & DBT_STF_VariableLength) == 0)) - { // trick it - setting->AllocSize = 0; - } - } - - setting->Type = Setting.Type; - setting->NameLength = static_cast(strlen(Setting.Descriptor->pszSettingName)); - memcpy(setting + 1, Setting.Descriptor->pszSettingName, setting->NameLength + 1); - - if (Setting.Type & DBT_STF_VariableLength) - { - setting->AllocSize = file->ResizeBlock(hSetting, setting, size) - - (sizeof(TSetting) + setting->NameLength + 1); - - setting->BlobLength = blobsize; - - memcpy(reinterpret_cast(setting + 1) + setting->NameLength + 1, Setting.Value.pBlob, blobsize); - } else { - memset(&(setting->Value), 0, sizeof(setting->Value)); - switch (Setting.Type) - { - case DBT_ST_BOOL: - setting->Value.Bool = Setting.Value.Bool; break; - case DBT_ST_BYTE: case DBT_ST_CHAR: - setting->Value.Byte = Setting.Value.Byte; break; - case DBT_ST_SHORT: case DBT_ST_WORD: - setting->Value.Short = Setting.Value.Short; break; - case DBT_ST_INT: case DBT_ST_DWORD: - setting->Value.Int = Setting.Value.Int; break; - default: - setting->Value.QWord = Setting.Value.QWord; break; - } - } - - file->UpdateBlock(hSetting); - - if (fileflag) - hSetting = hSetting | cSettingsFileFlag; - - return hSetting; -} - -unsigned int CSettings::ReadSetting(TDBTSetting & Setting) -{ - CBlockManager * file = &m_BlockManagerPri; - if (Setting.Descriptor->Entity == 0) - file = &m_BlockManagerSet; - - CBlockManager::ReadTransaction trans(*file); - - TDBTSettingHandle hset = FindSetting(*Setting.Descriptor); - if ((hset == 0) || (hset == DBT_INVALIDPARAM)) - return DBT_INVALIDPARAM; - - PDBTSettingDescriptor back = Setting.Descriptor; - Setting.Descriptor = NULL; - - if (ReadSetting(Setting, hset) == DBT_INVALIDPARAM) - hset = DBT_INVALIDPARAM; - - Setting.Descriptor = back; - - return hset; -} - -unsigned int CSettings::ReadSetting(TDBTSetting & Setting, TDBTSettingHandle hSetting) -{ - CBlockManager * file = &m_BlockManagerPri; - - if (hSetting & cSettingsFileFlag) - { - file = &m_BlockManagerSet; - hSetting = hSetting & ~cSettingsFileFlag; - } - - uint32_t sig = cSettingSignature; - uint32_t size = 0; - - if (hSetting == 0) - return DBT_INVALIDPARAM; - - CBlockManager::ReadTransaction trans(*file); - - TSetting * setting = file->ReadBlock(hSetting, size, sig); - - if (!setting) - return DBT_INVALIDPARAM; - - uint8_t* str = reinterpret_cast(setting + 1) + setting->NameLength + 1; - - if (Setting.Type == 0) - { - Setting.Type = setting->Type; - if (setting->Type & DBT_STF_VariableLength) - { - Setting.Value.Length = setting->BlobLength; - switch (setting->Type) - { - case DBT_ST_WCHAR: - { - Setting.Value.Length = setting->BlobLength / sizeof(wchar_t); - Setting.Value.pWide = (wchar_t*) mir_realloc(Setting.Value.pWide, sizeof(wchar_t) * Setting.Value.Length); - memcpy(Setting.Value.pWide, str, setting->BlobLength); - Setting.Value.pWide[Setting.Value.Length - 1] = 0; - - } break; - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - Setting.Value.Length = setting->BlobLength; - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, setting->BlobLength); - memcpy(Setting.Value.pAnsi, str, setting->BlobLength); - Setting.Value.pAnsi[Setting.Value.Length - 1] = 0; - - } break; - default: - { - Setting.Value.Length = setting->BlobLength; - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, setting->BlobLength); - memcpy(Setting.Value.pBlob, str, setting->BlobLength); - } break; - } - } else { - Setting.Value.QWord = setting->Value.QWord; - } - } else { - switch (setting->Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: - { - switch (Setting.Type) - { - case DBT_ST_BYTE: Setting.Value.Byte = (uint8_t) setting->Value.QWord; break; - case DBT_ST_WORD: Setting.Value.Word = (uint16_t) setting->Value.QWord; break; - case DBT_ST_DWORD: Setting.Value.DWord = (uint32_t) setting->Value.QWord; break; - case DBT_ST_QWORD: Setting.Value.QWord = (uint64_t) setting->Value.QWord; break; - case DBT_ST_CHAR: Setting.Value.Char = ( int8_t) setting->Value.QWord; break; - case DBT_ST_SHORT: Setting.Value.Short = ( int16_t) setting->Value.QWord; break; - case DBT_ST_INT: Setting.Value.Int = ( int32_t) setting->Value.QWord; break; - case DBT_ST_INT64: Setting.Value.Int64 = ( int64_t) setting->Value.QWord; break; - case DBT_ST_BOOL: Setting.Value.Bool = setting->Value.QWord != 0; break; - - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - char buffer[24]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snprintf(buffer, SIZEOF(buffer), "%llu", setting->Value.QWord); - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, Setting.Value.Length); - memcpy(Setting.Value.pAnsi, buffer, Setting.Value.Length); - - } break; - case DBT_ST_WCHAR: - { - wchar_t buffer[24]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snwprintf(buffer, SIZEOF(buffer), L"%llu", setting->Value.QWord); - Setting.Value.pWide = (wchar_t *) mir_realloc(Setting.Value.pWide, Setting.Value.Length * sizeof(wchar_t)); - memcpy(Setting.Value.pWide, buffer, Setting.Value.Length * sizeof(wchar_t)); - - } break; - case DBT_ST_BLOB: - { - Setting.Value.Length = 0; - switch (setting->Type) - { - case DBT_ST_BYTE: Setting.Value.Length = 1; break; - case DBT_ST_WORD: Setting.Value.Length = 2; break; - case DBT_ST_DWORD: Setting.Value.Length = 4; break; - case DBT_ST_QWORD: Setting.Value.Length = 8; break; - } - - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, Setting.Value.Length); - memcpy(Setting.Value.pBlob, &setting->Value, Setting.Value.Length); - - - } break; - } - - } break; - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - int64_t val = 0; - switch (setting->Type) - { - case DBT_ST_CHAR: val = setting->Value.Char; break; - case DBT_ST_SHORT: val = setting->Value.Short; break; - case DBT_ST_INT: val = setting->Value.Int; break; - case DBT_ST_INT64: val = setting->Value.Int64; break; - } - switch (Setting.Type) - { - case DBT_ST_BYTE: Setting.Value.Byte = (uint8_t) val; break; - case DBT_ST_WORD: Setting.Value.Word = (uint16_t) val; break; - case DBT_ST_DWORD: Setting.Value.DWord = (uint32_t) val; break; - case DBT_ST_QWORD: Setting.Value.QWord = (uint64_t) val; break; - case DBT_ST_CHAR: Setting.Value.Char = ( int8_t) val; break; - case DBT_ST_SHORT: Setting.Value.Short = ( int16_t) val; break; - case DBT_ST_INT: Setting.Value.Int = ( int32_t) val; break; - case DBT_ST_INT64: Setting.Value.Int64 = ( int64_t) val; break; - case DBT_ST_BOOL: Setting.Value.Bool = val != 0; break; - - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - char buffer[24]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snprintf(buffer, SIZEOF(buffer), "%lli", val); - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, Setting.Value.Length); - memcpy(Setting.Value.pAnsi, buffer, Setting.Value.Length); - - } break; - case DBT_ST_WCHAR: - { - wchar_t buffer[24]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snwprintf(buffer, SIZEOF(buffer), L"%lli", val); - Setting.Value.pWide = (wchar_t *) mir_realloc(Setting.Value.pWide, Setting.Value.Length * sizeof(wchar_t)); - memcpy(Setting.Value.pWide, buffer, Setting.Value.Length * sizeof(wchar_t)); - - } break; - case DBT_ST_BLOB: - { - Setting.Value.Length = 0; - switch (setting->Type) - { - case DBT_ST_CHAR: Setting.Value.Length = 1; break; - case DBT_ST_SHORT: Setting.Value.Length = 2; break; - case DBT_ST_INT: Setting.Value.Length = 4; break; - case DBT_ST_INT64: Setting.Value.Length = 8; break; - } - - Setting.Value.pBlob = (unsigned char *) mir_realloc(Setting.Value.pBlob, Setting.Value.Length); - memcpy(Setting.Value.pBlob, &setting->Value, Setting.Value.Length); - - } break; - } - - } break; - case DBT_ST_FLOAT: case DBT_ST_DOUBLE: - { - double val = 0; - if (setting->Type == DBT_ST_DOUBLE) - val = setting->Value.Double; - else - val = setting->Value.Float; - - switch (Setting.Type) - { - case DBT_ST_BYTE: Setting.Value.Byte = (uint8_t) floor(val); break; - case DBT_ST_WORD: Setting.Value.Word = (uint16_t) floor(val); break; - case DBT_ST_DWORD: Setting.Value.DWord = (uint32_t) floor(val); break; - case DBT_ST_QWORD: Setting.Value.QWord = (uint64_t) floor(val); break; - case DBT_ST_CHAR: Setting.Value.Char = ( int8_t) floor(val); break; - case DBT_ST_SHORT: Setting.Value.Short = ( int16_t) floor(val); break; - case DBT_ST_INT: Setting.Value.Int = ( int32_t) floor(val); break; - case DBT_ST_INT64: Setting.Value.Int64 = ( int64_t) floor(val); break; - case DBT_ST_BOOL: Setting.Value.Bool = val != 0; break; - - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - char buffer[128]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snprintf(buffer, SIZEOF(buffer), "%lf", setting->Value.QWord); - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, Setting.Value.Length); - memcpy(Setting.Value.pAnsi, buffer, Setting.Value.Length); - } break; - case DBT_ST_WCHAR: - { - wchar_t buffer[128]; - buffer[0] = 0; - Setting.Value.Length = 1 + mir_snwprintf(buffer, SIZEOF(buffer), L"%lf", setting->Value.QWord); - Setting.Value.pWide = (wchar_t *) mir_realloc(Setting.Value.pWide, Setting.Value.Length * sizeof(wchar_t)); - memcpy(Setting.Value.pWide, buffer, Setting.Value.Length * sizeof(wchar_t)); - } break; - case DBT_ST_BLOB: - { - Setting.Value.Length = 4; - if (setting->Type == DBT_ST_DOUBLE) - Setting.Value.Length = 8; - - Setting.Value.pBlob = (uint8_t*) mir_realloc(Setting.Value.pBlob, Setting.Value.Length); - memcpy(Setting.Value.pBlob, &setting->Value, Setting.Value.Length); - - } break; - } - - } break; - case DBT_ST_BOOL: - { - switch (Setting.Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - if (setting->Value.Bool) - Setting.Value.QWord = 1; - else - Setting.Value.QWord = 0; - } break; - case DBT_ST_FLOAT: - { - if (setting->Value.Bool) - Setting.Value.Float = 1; - else - Setting.Value.Float = 0; - } break; - case DBT_ST_DOUBLE: - { - if (setting->Value.Bool) - Setting.Value.Double = 1; - else - Setting.Value.Double = 0; - } break; - case DBT_ST_ANSI: case DBT_ST_UTF8: - { - char * buffer = "false"; - Setting.Value.Length = 5; - if (setting->Value.Bool) - { - buffer = "true"; - Setting.Value.Length = 4; - } - - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, Setting.Value.Length); - memcpy(Setting.Value.pAnsi, buffer, Setting.Value.Length); - } break; - case DBT_ST_WCHAR: - { - wchar_t * buffer = L"false"; - Setting.Value.Length = 5; - if (setting->Value.Bool) - { - buffer = L"true"; - Setting.Value.Length = 4; - } - - Setting.Value.pWide = (wchar_t *) mir_realloc(Setting.Value.pWide, Setting.Value.Length * sizeof(wchar_t)); - memcpy(Setting.Value.pWide, buffer, Setting.Value.Length * sizeof(wchar_t)); - } break; - case DBT_ST_BLOB: - { - Setting.Value.pBlob = (uint8_t*) mir_realloc(Setting.Value.pBlob, sizeof(bool)); - (*((bool*)Setting.Value.pBlob)) = setting->Value.Bool; - Setting.Value.Length = sizeof(bool); - } break; - } - } break; - case DBT_ST_ANSI: - { - str[setting->BlobLength - 1] = 0; - - switch (Setting.Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: case DBT_ST_BOOL: - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - Setting.Value.QWord = 0; - } break; - case DBT_ST_ANSI: - { - Setting.Value.Length = setting->BlobLength; - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, setting->BlobLength); - memcpy(Setting.Value.pAnsi, str, setting->BlobLength); - } break; - case DBT_ST_UTF8: - { - Setting.Value.pUTF8 = mir_utf8encode((char*)str); - Setting.Value.Length = static_cast(strlen(Setting.Value.pUTF8) + 1); - } break; - case DBT_ST_WCHAR: - { - Setting.Value.pWide = mir_a2u((char*)str); - Setting.Value.Length = static_cast(wcslen(Setting.Value.pWide) + 1); - } break; - case DBT_ST_BLOB: - { - Setting.Value.Length = setting->BlobLength; - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, setting->BlobLength); - memcpy(Setting.Value.pBlob, str, setting->BlobLength); - } break; - } - } break; - case DBT_ST_UTF8: - { - str[setting->BlobLength - 1] = 0; - - switch (Setting.Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: case DBT_ST_BOOL: - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - Setting.Value.QWord = 0; - } break; - case DBT_ST_ANSI: - { - mir_utf8decode((char*)str, NULL); - Setting.Value.Length = static_cast(strlen((char*)str) + 1); - Setting.Value.pAnsi = (char *) mir_realloc(Setting.Value.pAnsi, Setting.Value.Length); - memcpy(Setting.Value.pAnsi, str, Setting.Value.Length); - } break; - case DBT_ST_UTF8: - { - Setting.Value.Length = setting->BlobLength; - Setting.Value.pUTF8 = (char *) mir_realloc(Setting.Value.pUTF8, setting->BlobLength); - memcpy(Setting.Value.pUTF8, str, setting->BlobLength); - } break; - case DBT_ST_WCHAR: - { - Setting.Value.pWide = mir_utf8decodeW((char*)str); - if (Setting.Value.pWide) - { - Setting.Value.Length = static_cast(wcslen(Setting.Value.pWide) + 1); - } else { - Setting.Value.Length = 0; - Setting.Type = 0; - } - } break; - case DBT_ST_BLOB: - { - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, setting->BlobLength); - memcpy(Setting.Value.pBlob, str, setting->BlobLength); - Setting.Value.Length = setting->BlobLength; - } break; - } - } break; - case DBT_ST_WCHAR: - { - ((wchar_t*)str)[setting->BlobLength / sizeof(wchar_t) - 1] = 0; - - switch (Setting.Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: case DBT_ST_BOOL: - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - Setting.Value.QWord = 0; - } break; - case DBT_ST_ANSI: - { - Setting.Value.pAnsi = mir_u2a((wchar_t*)str); - Setting.Value.Length = static_cast(strlen(Setting.Value.pAnsi) + 1); - } break; - case DBT_ST_UTF8: - { - Setting.Value.pUTF8 = mir_utf8encodeW((wchar_t*)str); - Setting.Value.Length = static_cast(strlen(Setting.Value.pUTF8) + 1); - } break; - case DBT_ST_WCHAR: - { - Setting.Value.Length = setting->BlobLength / sizeof(wchar_t); - Setting.Value.pWide = (wchar_t*) mir_realloc(Setting.Value.pWide, Setting.Value.Length * sizeof(wchar_t)); - memcpy(Setting.Value.pWide, str, Setting.Value.Length * sizeof(wchar_t)); - } break; - case DBT_ST_BLOB: - { - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, setting->BlobLength); - memcpy(Setting.Value.pBlob, str, setting->BlobLength); - Setting.Value.Length = setting->BlobLength; - } break; - } - } break; - case DBT_ST_BLOB: - { - switch (Setting.Type) - { - case DBT_ST_BYTE: case DBT_ST_WORD: case DBT_ST_DWORD: case DBT_ST_QWORD: case DBT_ST_BOOL: - case DBT_ST_CHAR: case DBT_ST_SHORT: case DBT_ST_INT: case DBT_ST_INT64: - { - Setting.Value.QWord = 0; - } break; - case DBT_ST_ANSI: case DBT_ST_WCHAR: case DBT_ST_UTF8: - { - Setting.Value.Length = 0; - if (Setting.Value.pBlob) - mir_free(Setting.Value.pBlob); - - Setting.Value.pBlob = NULL; - } break; - case DBT_ST_BLOB: - { - Setting.Value.pBlob = (uint8_t *) mir_realloc(Setting.Value.pBlob, setting->BlobLength); - memcpy(Setting.Value.pBlob, str, setting->BlobLength); - Setting.Value.Length = setting->BlobLength; - } break; - } - } break; - - } - } - - - if (Setting.Descriptor) - { - Setting.Descriptor->Entity = setting->Entity; - Setting.Descriptor->FoundInEntity = setting->Entity; - - Setting.Descriptor->pszSettingName = (char *) mir_realloc(Setting.Descriptor->pszSettingName, setting->NameLength + 1); - memcpy(Setting.Descriptor->pszSettingName, setting + 1, setting->NameLength + 1); - Setting.Descriptor->pszSettingName[setting->NameLength] = 0; - } - - return setting->Type; -} - - - - -TDBTSettingIterationHandle CSettings::IterationInit(TDBTSettingIterFilter & Filter) -{ - CBlockManager::ReadTransaction transset(m_BlockManagerSet); - CBlockManager::ReadTransaction transpri(m_BlockManagerPri); - - std::queue Entities; - Entities.push(Filter.hEntity); - - CSettingsTree * tree = getSettingsTree(Filter.hEntity); - - if (tree == NULL) - return DBT_INVALIDPARAM; - - if (Filter.hEntity != 0) - { - uint32_t cf = m_Entities.getFlags(Filter.hEntity); - - if (cf == DBT_INVALIDPARAM) - return DBT_INVALIDPARAM; - - TDBTEntityIterFilter f = {0,0,0,0}; - f.cbSize = sizeof(f); - if (cf & DBT_NF_IsGroup) - { - f.fHasFlags = DBT_NF_IsGroup; - } else { - f.fDontHasFlags = DBT_NF_IsGroup; - } - f.Options = Filter.Options; - - TDBTEntityIterationHandle citer = m_Entities.IterationInit(f, Filter.hEntity); - if (citer != DBT_INVALIDPARAM) - { - m_Entities.IterationNext(citer); // the initial Entity was already added - TDBTEntityHandle e = m_Entities.IterationNext(citer); - while (e != 0) - { - Entities.push(e); - e = m_Entities.IterationNext(citer); - } - - m_Entities.IterationClose(citer); - } - } - - for (unsigned int j = 0; j < Filter.ExtraCount; ++j) - Entities.push(Filter.ExtraEntities[j]); - - - PSettingIteration iter = new TSettingIteration; - iter->Filter = Filter; - iter->FilterNameStartLength = 0; - iter->LockSetting = (Filter.hEntity == 0); - iter->LockPrivate = (Filter.hEntity != 0); - if (Filter.NameStart) - { - uint16_t l = static_cast(strlen(Filter.NameStart)); - iter->Filter.NameStart = new char[l + 1]; - memcpy(iter->Filter.NameStart, Filter.NameStart, l + 1); - iter->FilterNameStartLength = l; - } - - TSettingKey key = {0, 0}; - - // pop first Entity. we have always one and always its tree - Entities.pop(); - - CSettingsTree::iterator * tmp = new CSettingsTree::iterator(tree->LowerBound(key)); - tmp->setManaged(); - iter->Heap = new TSettingsHeap(*tmp, TSettingsHeap::ITForward, true); - - while (!Entities.empty()) - { - TDBTEntityHandle e = Entities.front(); - Entities.pop(); - - tree = getSettingsTree(e); - if (tree != NULL) - { - tmp = new CSettingsTree::iterator(tree->LowerBound(key)); - tmp->setManaged(); - iter->Heap->Insert(*tmp); - - iter->LockSetting = iter->LockSetting || (e == 0); - iter->LockPrivate = iter->LockPrivate || (e != 0); - } - } - - iter->Frame = new std::queue; - - return reinterpret_cast(iter); -} - - -typedef struct TSettingIterationHelper { - TDBTSettingHandle Handle; - CSettingsTree * Tree; - uint16_t NameLen; - char * Name; - } TSettingIterationHelper; - -TDBTSettingHandle CSettings::IterationNext(TDBTSettingIterationHandle Iteration) -{ - PSettingIteration iter = reinterpret_cast(Iteration); - CBlockManager::ReadTransaction transset; - CBlockManager::ReadTransaction transpri; - - if (iter->LockSetting) - transset = CBlockManager::ReadTransaction(m_BlockManagerSet); - if (iter->LockPrivate) - transpri = CBlockManager::ReadTransaction(m_BlockManagerPri); - - while (iter->Frame->empty() && iter->Heap->Top()) - { - while (iter->Heap->Top() && iter->Heap->Top().wasDeleted()) - iter->Heap->Pop(); - - if (iter->Heap->Top()) - { - uint32_t h = iter->Heap->Top()->Hash; - std::queue q; - TSettingIterationHelper help; - help.NameLen = 0; - help.Name = NULL; - - help.Handle = iter->Heap->Top()->Setting; - help.Tree = (CSettingsTree *) iter->Heap->Top().Tree(); - if (help.Tree) - q.push(help); - - iter->Heap->Pop(); - - // add all candidates - while (iter->Heap->Top() && (iter->Heap->Top()->Hash == h)) - { - if (!iter->Heap->Top().wasDeleted()) - { - help.Handle = iter->Heap->Top()->Setting; - help.Tree = (CSettingsTree *) iter->Heap->Top().Tree(); - q.push(help); - } - iter->Heap->Pop(); - } - - while (!q.empty()) - { - help = q.front(); - q.pop(); - - if (help.Name == NULL) - { - if (help.Tree->Entity() == 0) - _ReadSettingName(m_BlockManagerSet, help.Handle, help.NameLen, help.Name); - else - _ReadSettingName(m_BlockManagerPri, help.Handle, help.NameLen, help.Name); - } - - - q.push(help); - while (q.front().Handle != help.Handle) // remove all queued settings with same name - { - bool namereadres = false; - - TSettingIterationHelper tmp; - tmp = q.front(); - q.pop(); - - if (tmp.Name == NULL) - { - if (tmp.Tree->Entity() == 0) - namereadres = _ReadSettingName(m_BlockManagerSet, tmp.Handle, tmp.NameLen, tmp.Name); - else - namereadres = _ReadSettingName(m_BlockManagerPri, tmp.Handle, tmp.NameLen, tmp.Name); - } - - if (!namereadres) - { - q.push(tmp); - } else { - if (strcmp(tmp.Name, help.Name) != 0) - { - q.push(tmp); - } else { - free(tmp.Name); - } - } - } - - // namefilter - if ((iter->Filter.NameStart == NULL) || ((iter->FilterNameStartLength <= help.NameLen) && (memcmp(iter->Filter.NameStart, help.Name, iter->FilterNameStartLength) == 0))) - { - TSettingIterationResult tmp; - if (help.Tree->Entity() == 0) - help.Handle |= cSettingsFileFlag; - - tmp.Handle = help.Handle; - tmp.Entity = help.Tree->Entity(); - tmp.Name = help.Name; - tmp.NameLen = help.NameLen; - iter->Frame->push(tmp); - } else { - free(help.Name); - } - - q.pop(); - } - } - } - - - TSettingIterationResult res = {0,0,0,0}; - if (!iter->Frame->empty()) - { - res = iter->Frame->front(); - iter->Frame->pop(); - - if ((iter->Filter.Descriptor) && ((iter->Filter.Setting == NULL) || (iter->Filter.Setting->Descriptor != iter->Filter.Descriptor))) - { - iter->Filter.Descriptor->Entity = res.Entity; - iter->Filter.Descriptor->pszSettingName = (char *) mir_realloc(iter->Filter.Descriptor->pszSettingName, res.NameLen + 1); - memcpy(iter->Filter.Descriptor->pszSettingName, res.Name, res.NameLen + 1); - iter->Filter.Descriptor->FoundInEntity = res.Entity; - } - if (iter->Filter.Setting) - { - if ((iter->Filter.Setting->Type & DBT_STF_VariableLength) && (iter->Filter.Setting->Value.pBlob)) - { - mir_free(iter->Filter.Setting->Value.pBlob); - iter->Filter.Setting->Value.pBlob = NULL; - } - iter->Filter.Setting->Type = 0; - - ReadSetting(*iter->Filter.Setting, res.Handle); - } - - free(res.Name); - } - - return res.Handle; -} -unsigned int CSettings::IterationClose(TDBTSettingIterationHandle Iteration) -{ - PSettingIteration iter = reinterpret_cast(Iteration); - { - CBlockManager::ReadTransaction transset; - CBlockManager::ReadTransaction transpri; - - if (iter->LockSetting) - transset = CBlockManager::ReadTransaction(m_BlockManagerSet); - if (iter->LockPrivate) - transpri = CBlockManager::ReadTransaction(m_BlockManagerPri); - - delete iter->Heap; // only this needs synchronization - } - - delete [] iter->Filter.NameStart; - - if (iter->Filter.Descriptor && iter->Filter.Descriptor->pszSettingName) - { - mir_free(iter->Filter.Descriptor->pszSettingName); - iter->Filter.Descriptor->pszSettingName = NULL; - } - if (iter->Filter.Setting) - { - if (iter->Filter.Setting->Descriptor) - { - mir_free(iter->Filter.Setting->Descriptor->pszSettingName); - iter->Filter.Setting->Descriptor->pszSettingName = NULL; - } - - if (iter->Filter.Setting->Type & DBT_STF_VariableLength) - { - mir_free(iter->Filter.Setting->Value.pBlob); - iter->Filter.Setting->Value.pBlob = NULL; - } - } - - while (!iter->Frame->empty()) - { - free(iter->Frame->front().Name); - - iter->Frame->pop(); - } - delete iter->Frame; - delete iter; - - return 0; -} - - -int CSettings::CompEnumModules(DBMODULEENUMPROC CallBack, LPARAM lParam) -{ - CBlockManager::ReadTransaction trans(m_BlockManagerSet); - - TModulesMap::iterator i = m_Modules.begin(); - int res = 0; - while ((i != m_Modules.end()) && (res == 0)) - { - char * tmp = i->second; - trans.Close(); - - res = CallBack(tmp, 0, lParam); - - trans = CBlockManager::ReadTransaction(m_BlockManagerSet); - ++i; - } - - return res; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Settings.h b/plugins/!Deprecated/Dbx_tree/src/Settings.h deleted file mode 100644 index 28be10603e..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Settings.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include "Interface.h" -#include "FileBTree.h" -#include "MREWSync.h" -#include "sigslot.h" -#include "IterationHeap.h" -#include -#include "lockfree_hashmap.h" - -class CSettings; -class CSettingsTree; - -#include "Entities.h" - -#pragma pack(push, 1) // push current alignment to stack, set alignment to 1 byte boundary - -/** - \brief Key Type of the SettingsBTree - - The setting names (ASCII) are hashed, so that they can easily be accessed. -**/ - -typedef struct TSettingKey { - uint32_t Hash; /// 32 bit hash of the Setting name - TDBTSettingHandle Setting; - - bool operator < (const TSettingKey & Other) const - { - if (Hash != Other.Hash) return Hash < Other.Hash; - if (Setting != Other.Setting) return Setting < Other.Setting; - return false; - } - //bool operator <= (const TSettingKey & Other); - bool operator == (const TSettingKey & Other) const - { - return (Hash == Other.Hash) && (Setting == Other.Setting); - } - //bool operator >= (const TSettingKey & Other); - bool operator > (const TSettingKey & Other) const - { - if (Hash != Other.Hash) return Hash > Other.Hash; - if (Setting != Other.Setting) return Setting > Other.Setting; - return false; - } -} TSettingKey; - -static const uint32_t cSettingSignature = 0xF5B87A3D; -static const uint16_t cSettingNodeSignature = 0xBA12; - -/** - \brief The data of a setting - - A setting's data is variable length. The data is a TSetting-structure followed by variable length data. - - fixed data - - SettingName (ASCII) - - maybe blob data -**/ -typedef struct TSetting { - TDBTEntityHandle Entity; /// Settings' Entity - uint32_t Flags; /// flags - uint16_t Type; /// setting type - uint16_t NameLength; /// settingname length - union { - union { - bool Bool; - int8_t Char; uint8_t Byte; - int16_t Short; uint16_t Word; - uint32_t Int; uint32_t DWord; - int64_t Int64; uint64_t QWord; - float Float; - double Double; - } Value; /// if type is fixed length, the data is stored right here - - struct { - uint32_t BlobLength; /// if type is variable length this describes the length of the data in bytes - uint32_t AllocSize; /// this is the allocated space for the blob ALWAYS in byte! this prevents us to realloc it too often - }; - }; - uint8_t Reserved[8]; - // settingname with terminating NULL - // blob -} TSetting; - -#pragma pack(pop) - -/** - \brief Manages the Settings in the Database -**/ -class CSettingsTree : public CFileBTree -{ -protected: - TDBTEntityHandle m_Entity; - CSettings & m_Owner; -public: - CSettingsTree(CSettings & Owner, CBlockManager & BlockManager, TNodeRef RootNode, TDBTEntityHandle Entity) - : CFileBTree(BlockManager, RootNode, cSettingNodeSignature), - m_Owner(Owner), - m_Entity(Entity) - { - - }; - ~CSettingsTree() - { - - }; - - TDBTEntityHandle Entity() - { - return m_Entity; - }; - void Entity(TDBTEntityHandle NewEntity) - { - m_Entity = NewEntity; - }; - - TDBTSettingHandle _FindSetting(const uint32_t Hash, const char * Name, const uint32_t Length); - bool _DeleteSetting(const uint32_t Hash, const TDBTSettingHandle hSetting); - bool _AddSetting(const uint32_t Hash, const TDBTSettingHandle hSetting); -}; - - -/** - \brief Manages all Settings and provides access to them -**/ -class CSettings : public sigslot::has_slots<> -{ -public: - typedef sigslot::signal2 TOnRootChanged; - - static const uint32_t cSettingsFileFlag = 0x00000001; - - CSettings( - CBlockManager & BlockManagerSet, - CBlockManager & BlockManagerPri, - CSettingsTree::TNodeRef SettingsRoot, - CEntities & Entities - ); - virtual ~CSettings(); - - - TOnRootChanged & sigRootChanged() - { - return m_sigRootChanged; - }; - - bool _ReadSettingName(CBlockManager & BlockManager, TDBTSettingHandle Setting, uint16_t & NameLength, char *& NameBuf); - void _EnsureModuleExists(char * Module); - - // compatibility: - typedef int (*DBMODULEENUMPROC)(const char *szModuleName,DWORD ofsModuleName,LPARAM lParam); - - int CompEnumModules(DBMODULEENUMPROC CallBack, LPARAM lParam); - // services: - TDBTSettingHandle FindSetting(TDBTSettingDescriptor & Descriptor); - unsigned int DeleteSetting(TDBTSettingDescriptor & Descriptor); - unsigned int DeleteSetting(TDBTSettingHandle hSetting); - TDBTSettingHandle WriteSetting(TDBTSetting & Setting); - TDBTSettingHandle WriteSetting(TDBTSetting & Setting, TDBTSettingHandle hSetting); - unsigned int ReadSetting(TDBTSetting & Setting); - unsigned int ReadSetting(TDBTSetting & Setting, TDBTSettingHandle hSetting); - - - TDBTSettingIterationHandle IterationInit(TDBTSettingIterFilter & Filter); - TDBTSettingHandle IterationNext(TDBTSettingIterationHandle Iteration); - unsigned int IterationClose(TDBTSettingIterationHandle Iteration); - - -private: - - typedef lockfree::hash_map TSettingsTreeMap; - - typedef CIterationHeap TSettingsHeap; - - CBlockManager & m_BlockManagerSet; - CBlockManager & m_BlockManagerPri; - - CEntities & m_Entities; - - TSettingsTreeMap m_SettingsMap; - - typedef struct TSettingIterationResult { - TDBTSettingHandle Handle; - TDBTEntityHandle Entity; - char * Name; - uint16_t NameLen; - } TSettingIterationResult; - - typedef struct TSettingIteration { - TDBTSettingIterFilter Filter; - uint16_t FilterNameStartLength; - TSettingsHeap * Heap; - std::queue * Frame; - bool LockSetting; - bool LockPrivate; - } TSettingIteration, *PSettingIteration; - - TOnRootChanged m_sigRootChanged; - void onRootChanged(void* SettingsTree, CSettingsTree::TNodeRef NewRoot); - - void onDeleteSettingCallback(void * Tree, const TSettingKey & Key, uint32_t Param); - void onDeleteSettings(CEntities * Entities, TDBTEntityHandle hEntity); - void onMergeSettingCallback(void * Tree, const TSettingKey & Key, uint32_t Param); - void onMergeSettings(CEntities * Entities, TDBTEntityHandle Source, TDBTEntityHandle Dest); - - CSettingsTree * getSettingsTree(TDBTEntityHandle hEntity); - typedef lockfree::hash_multimap TModulesMap; - - TModulesMap m_Modules; - - void _LoadModules(); - -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/TLS.h b/plugins/!Deprecated/Dbx_tree/src/TLS.h deleted file mode 100644 index bc7e1ed2d0..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/TLS.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2010 Michael "Protogenes" Kunz, - -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 - -#include "lockfree_hashmap.h" - -template -class CThreadLocalStorage -{ - private: - typedef struct TListElem - { - TListElem * Next; - TAdministrator * Admin; - TData Data; - TListElem(TListElem * ANext, TAdministrator * AAdmin, const TData & AData) - : Next(ANext), Admin(AAdmin), Data(AData) - { }; - - } TListElem, *PListElem; - static __declspec(thread) PListElem m_Head; - - static inline uint32_t DummyHash(const void * Data, uint32_t Length) - { - return *reinterpret_cast(Data); - } - - lockfree::hash_map * m_LockfreeList; - typedef typename lockfree::hash_map::iterator TThreadStorage; - - public: - CThreadLocalStorage(); - ~CThreadLocalStorage(); - - TData & Open(TAdministrator * Admin, const TData & Default); - TData * Find(TAdministrator * Admin); - void Remove(TAdministrator * Admin); -}; - -const bool _CanUseTLS = ((LOBYTE(LOWORD(GetVersion()))) >= 6); - -template -typename CThreadLocalStorage::PListElem CThreadLocalStorage::m_Head = NULL; - - -template -CThreadLocalStorage::CThreadLocalStorage() -{ - m_LockfreeList = NULL; - if (!_CanUseTLS) - m_LockfreeList = new lockfree::hash_map(); -} -template -CThreadLocalStorage::~CThreadLocalStorage() -{ - delete m_LockfreeList; -} - - -template -typename TData & CThreadLocalStorage::Open(typename TAdministrator * Admin, const TData & Default) -{ - if (_CanUseTLS) - { - PListElem * last = &m_Head; - PListElem i = m_Head; - while (i && (i->Admin != Admin)) - { - last = &i->Next; - i = i->Next; - } - - if (i) - { - *last = i->Next; - i->Next = m_Head; - m_Head = i; - } else { - m_Head = new TListElem(m_Head, Admin, Default); - } - return m_Head->Data; - } else { - TThreadStorage & res = m_LockfreeList->insert(std::make_pair(GetCurrentThreadId(), Default)).first; - return res->second; - } -} - -template -typename TData * CThreadLocalStorage::Find(typename TAdministrator * Admin) -{ - if (_CanUseTLS) - { - PListElem * last = &m_Head; - PListElem i = m_Head; - while (i && (i->Admin != Admin)) - { - last = &i->Next; - i = i->Next; - } - - if (i) - { - *last = i->Next; - i->Next = m_Head; - m_Head = i; - } else { - return NULL; - } - return &m_Head->Data; - } else { - TThreadStorage & res = m_LockfreeList->find(GetCurrentThreadId()); - if (res != m_LockfreeList->end()) - return &res->second; - else - return NULL; - } -} - -template -void CThreadLocalStorage::Remove(typename TAdministrator * Admin) -{ - if (_CanUseTLS) - { - PListElem * last = &m_Head; - PListElem i = m_Head; - while (i && (i->Admin != Admin)) - { - last = &i->Next; - i = i->Next; - } - - if (i) - { - *last = i->Next; - delete i; - } - } else { - m_LockfreeList->erase(GetCurrentThreadId()); - } -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Thread.cpp b/plugins/!Deprecated/Dbx_tree/src/Thread.cpp deleted file mode 100644 index d4a5396e03..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Thread.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "Thread.h" -#include "intrinsics.h" - -unsigned int __stdcall ThreadDistributor(void* Param) -{ - CThread * thread = static_cast(Param); - DWORD result = thread->Wrapper(); - _endthreadex(result); - return result; // to make the compiler happy -} - -CThread::CThread(bool CreateSuspended) -{ - m_Handle = NULL; - m_Terminated = 0; - m_FreeOnTerminate = false; - m_Finished = false; - m_Suspended = CreateSuspended; - m_ReturnValue = 0; - unsigned int flags = 0; - if (CreateSuspended) - flags = CREATE_SUSPENDED; - - m_Handle = reinterpret_cast (_beginthreadex(NULL, 0, &ThreadDistributor, this, flags, &m_ThreadID)); -} -CThread::~CThread() -{ - if (!m_Finished && !m_Suspended) - { - Terminate(); - WaitFor(); - } - if (m_Handle) - CloseHandle(m_Handle); -} -DWORD CThread::Wrapper() -{ - Execute(); - - bool dofree = FreeOnTerminate(); - DWORD result = ReturnValue(); - m_Finished = true; - - m_sigTerminate(this); - if (dofree) - delete this; - - return result; -} - -void CThread::Resume() -{ - if (ResumeThread(m_Handle) == 1) - XCHG_32(m_Suspended, 0); -} -void CThread::Suspend() -{ - SuspendThread(m_Handle); - XCHG_32(m_Suspended, 1); -} -void CThread::Terminate() -{ - XCHG_32(m_Terminated, 1); -} -DWORD CThread::WaitFor() -{ - HANDLE tmp = m_Handle; - DWORD result = WAIT_FAILED; - - if (WaitForSingleObject(m_Handle, INFINITE) != WAIT_FAILED) - GetExitCodeThread(tmp, &result); - - return result; -} - -void CThread::FreeOnTerminate(bool Terminate) -{ - XCHG_32(m_FreeOnTerminate, Terminate); -} -void CThread::ReturnValue(DWORD Value) -{ - XCHG_32(m_ReturnValue, Value); -} - -void CThread::Priority(TPriority NewPriority) -{ - SetThreadPriority(m_Handle, NewPriority); -} -CThread::TPriority CThread::Priority() -{ - return static_cast (GetThreadPriority(m_Handle) & 0xffff); -} diff --git a/plugins/!Deprecated/Dbx_tree/src/Thread.h b/plugins/!Deprecated/Dbx_tree/src/Thread.h deleted file mode 100644 index 09b0b6c016..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Thread.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include -#include -#include "sigslot.h" -#include "stdint.h" - -class CThread -{ -private: - uint32_t volatile m_Terminated; - uint32_t volatile m_FreeOnTerminate; - uint32_t volatile m_Finished; - uint32_t volatile m_Suspended; - uint32_t volatile m_ReturnValue; -protected: - HANDLE m_Handle; - unsigned int m_ThreadID; - - void ReturnValue(DWORD Value); - virtual void Execute() = 0; -public: - CThread(bool CreateSuspended); - virtual ~CThread(); - - DWORD Wrapper(); - - void Resume(); - void Suspend(); - void Terminate(); - DWORD WaitFor(); - - bool Suspended() {return m_Suspended != 0;}; - bool Terminated() {return m_Terminated != 0;}; - bool FreeOnTerminate() {return m_FreeOnTerminate != 0;}; - void FreeOnTerminate(bool Terminate); - DWORD ReturnValue() {return m_ReturnValue;}; - - typedef enum TPriority { - tpIdle = THREAD_PRIORITY_IDLE, - tpLowest = THREAD_PRIORITY_LOWEST, - tpLower = THREAD_PRIORITY_BELOW_NORMAL, - tpNormal = THREAD_PRIORITY_NORMAL, - tpHigher = THREAD_PRIORITY_ABOVE_NORMAL, - tpHighest = THREAD_PRIORITY_HIGHEST, - tpRealTime = THREAD_PRIORITY_TIME_CRITICAL - } TPriority; - - void Priority(TPriority NewPriority); - TPriority Priority(); - - typedef sigslot::signal1 TOnTerminate; - TOnTerminate m_sigTerminate; - TOnTerminate & sigTerminate() {return m_sigTerminate;}; -}; diff --git a/plugins/!Deprecated/Dbx_tree/src/Version.h b/plugins/!Deprecated/Dbx_tree/src/Version.h deleted file mode 100644 index 029f6c649d..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/Version.h +++ /dev/null @@ -1,15 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 18 - -#include - -#define __PLUGIN_NAME "Miranda dbx_tree database driver" -#define __INTERNAL_NAME "Dbx_tree" -#define __FILENAME "Dbx_tree.dll" -#define __DESCRIPTION "Provides extended Miranda database support." -#define __AUTHOR "Michael 'Protogenes' Kunz" -#define __AUTHOREMAIL "Michael.Kunz@s2005.TU-Chemnitz.de" -#define __AUTHORWEB "http://miranda-ng.org/p/Dbx_tree/" -#define __COPYRIGHT "© 2007 - 2010 Michael 'Protogenes' Kunz" diff --git a/plugins/!Deprecated/Dbx_tree/src/dbConfig_rc.h b/plugins/!Deprecated/Dbx_tree/src/dbConfig_rc.h deleted file mode 100644 index 099067d3ec..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/dbConfig_rc.h +++ /dev/null @@ -1,20 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by dbConfig.rc -// -#define IDD_DIALOGBAR 103 -#define IDC_BUTTON1 1001 -#define IDC_BUTTON2 1002 -#define IDC_BUTTON3 1003 -#define IDC_LIST1 1004 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1005 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/Dbx_tree/src/dbVersion_rc.h b/plugins/!Deprecated/Dbx_tree/src/dbVersion_rc.h deleted file mode 100644 index 24a3ae4cf4..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/dbVersion_rc.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by dbVersion.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/Dbx_tree/src/init.cpp b/plugins/!Deprecated/Dbx_tree/src/init.cpp deleted file mode 100644 index 2a18a988dd..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/init.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 "Interface.h" -#include "DatabaseLink.h" - -HINSTANCE hInstance = NULL; -int hLangpack; - -static PLUGININFOEX gPluginInfoEx = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE | STATIC_PLUGIN, - // {28F45248-8C9C-4BEE-9307-7BCF3E12BF99} - {0x28f45248, 0x8c9c, 0x4bee, {0x93, 0x07, 0x7b, 0xcf, 0x3e, 0x12, 0xbf, 0x99}} -}; - -extern "C" __declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD MirandaVersion) -{ - return &gPluginInfoEx; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_DATABASE, MIID_LAST}; - -extern "C" __declspec(dllexport) int Load(void) -{ - mir_getLP(&gPluginInfoEx); - - RegisterDatabasePlugin(&gDBLink); - CompatibilityRegister(); - return 0; -} - -extern "C" __declspec(dllexport) int Unload(void) -{ - return 0; -} - -BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID reserved) -{ - hInstance = hInstDLL; - return TRUE; -} diff --git a/plugins/!Deprecated/Dbx_tree/src/intrinsics.h b/plugins/!Deprecated/Dbx_tree/src/intrinsics.h deleted file mode 100644 index 2627fc03fc..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/intrinsics.h +++ /dev/null @@ -1,399 +0,0 @@ -#pragma once - -#include -#include - -#ifdef _M_X64 - -inline uint32_t XCHG_32(uint32_t volatile & Dest, uint32_t Exchange) -{ - return (uint32_t)_InterlockedExchange((long volatile*)&(Dest), (long)(Exchange)); -} -inline int32_t XCHG_32(int32_t volatile & Dest, int32_t Exchange) -{ - return (int32_t)_InterlockedExchange((long volatile*)&(Dest), (long)(Exchange)); -} - -inline uint64_t XCHG_64(uint64_t volatile & Dest, uint64_t Exchange) -{ - return (uint64_t)_InterlockedExchange64((__int64 volatile*)&Dest, (__int64)Exchange); -} -inline int64_t XCHG_64(int64_t volatile & Dest, int64_t Exchange) -{ - return (int64_t)_InterlockedExchange64((__int64 volatile*)&Dest, (__int64)Exchange); -} - -template -inline T * XCHG_Ptr(T * volatile & Dest, T * Exchange) -{ - return (T*)_InterlockedExchangePointer((void*volatile*)&Dest, (void*)Exchange); -} - - -inline uint32_t CMPXCHG_32(uint32_t volatile & Dest, uint32_t Exchange, uint32_t Comperand) -{ - return (uint64_t)_InterlockedCompareExchange((long volatile*)&(Dest), (long)(Exchange), (long)Comperand); -} -inline int32_t CMPXCHG_32(int32_t volatile & Dest, int32_t Exchange, int32_t Comperand) -{ - return (int32_t)_InterlockedCompareExchange((long volatile*)&(Dest), (long)(Exchange), (long)Comperand); -} - -inline uint64_t CMPXCHG_64(uint64_t volatile & Dest, uint64_t Exchange, uint64_t Comperand) -{ - return (uint64_t)_InterlockedCompareExchange64((__int64 volatile*)&Dest, (__int64)Exchange, (__int64)Comperand); -} -inline int64_t CMPXCHG_64(int64_t volatile & Dest, int64_t Exchange, int64_t Comperand) -{ - return (int64_t)_InterlockedCompareExchange64((__int64 volatile*)&Dest, (__int64)Exchange, (__int64)Comperand); -} - -template -inline T * CMPXCHG_Ptr(T * volatile & Dest, T * Exchange, T * Comperand) -{ - return (T*)_InterlockedCompareExchangePointer((void*volatile*)&Dest, (void*)Exchange, (void*)Comperand); -} - -inline uint32_t XADD_32(uint32_t volatile & Dest, int32_t Addend) -{ - return (uint32_t)_InterlockedExchangeAdd((long volatile*)&Dest, (long)Addend); -} -inline int32_t XADD_32(int32_t volatile & Dest, int32_t Addend) -{ - return (int32_t)_InterlockedExchangeAdd((long volatile*)&Dest, (long)Addend); -} - -inline uint64_t XADD_64(uint64_t volatile & Dest, int64_t Addend) -{ - return (uint64_t)_InterlockedExchangeAdd64((__int64 volatile*)&Dest, (__int64)Addend); -} -inline int64_t XADD_64(int64_t volatile & Dest, int64_t Addend) -{ - return (int64_t)_InterlockedExchangeAdd64((__int64 volatile*)&Dest, (__int64)Addend); -} - -inline uint32_t DEC_32(uint32_t volatile & Dest) -{ - return (uint32_t)_InterlockedDecrement((long volatile*)&Dest); -} -inline int32_t DEC_32(int32_t volatile & Dest) -{ - return (int32_t)_InterlockedDecrement((long volatile*)&Dest); -} - -inline uint64_t DEC_64(uint64_t volatile & Dest) -{ - return (uint64_t)_InterlockedDecrement64((__int64 volatile*)&Dest); -} -inline int64_t DEC_64(int64_t volatile & Dest) -{ - return (int64_t)_InterlockedDecrement64((__int64 volatile*)&Dest); -} - -inline uint32_t INC_32(uint32_t volatile & Dest) -{ - return (uint32_t)_InterlockedIncrement((long volatile*)&Dest); -} -inline int32_t INC_32(int32_t volatile & Dest) -{ - return (int32_t)_InterlockedIncrement((long volatile*)&Dest); -} - -inline uint64_t INC_64(uint64_t volatile & Dest) -{ - return (uint64_t)_InterlockedIncrement64((__int64 volatile*)&Dest); -} -inline int64_t INC_64(int64_t volatile & Dest) -{ - return (int64_t)_InterlockedIncrement64((__int64 volatile*)&Dest); -} - -inline bool BTS_32(uint32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); -} -inline bool BTS_32(int32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); -} -inline bool BTS_64(uint64_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset64((__int64 volatile*)&Dest, Offset); -} -inline bool BTS_64(int64_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset64((__int64 volatile*)&Dest, Offset); -} - - -inline bool BTR_32(uint32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); -} -inline bool BTR_32(int32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); -} -inline bool BTR_64(uint64_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset64((__int64 volatile*)&Dest, Offset); -} -inline bool BTR_64(int64_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset64((__int64 volatile*)&Dest, Offset); -} - - -inline uint32_t OR_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedOr((long volatile*)&Value, (long)Operator); -} - -inline int32_t OR_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedOr((long volatile*)&Value, (long)Operator); -} - -inline uint64_t OR_64(uint64_t volatile & Value, uint64_t Operator) -{ - return (uint64_t)_InterlockedOr64((__int64 volatile*)&Value, (__int64)Operator); -} - -inline int64_t OR_64(int64_t volatile & Value, int64_t Operator) -{ - return (int64_t)_InterlockedOr64((__int64 volatile*)&Value, (__int64)Operator); -} - -inline uint32_t AND_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedAnd((long volatile*)&Value, (long)Operator); -} - -inline int32_t AND_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedAnd((long volatile*)&Value, (long)Operator); -} - -inline uint64_t AND_64(uint64_t volatile & Value, uint64_t Operator) -{ - return (uint64_t)_InterlockedAnd64((__int64 volatile*)&Value, (__int64)Operator); -} - -inline int64_t AND_64(int64_t volatile & Value, int64_t Operator) -{ - return (int64_t)_InterlockedAnd64((__int64 volatile*)&Value, (__int64)Operator); -} - - -inline uint32_t XOR_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedXor((long volatile*)&Value, (long)Operator); -} - -inline int32_t XOR_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedXor((long volatile*)&Value, (long)Operator); -} -inline uint64_t XOR_64(uint64_t volatile & Value, uint64_t Operator) -{ - return (uint64_t)_InterlockedXor64((__int64 volatile*)&Value, (__int64)Operator); -} - -inline int64_t XOR_64(int64_t volatile & Value, int64_t Operator) -{ - return (int64_t)_InterlockedXor64((__int64 volatile*)&Value, (__int64)Operator); -} - - -inline uint32_t BSWAP_32(uint32_t Value) -{ - return _byteswap_ulong(Value); -} - -inline uint32_t ROL_32(uint32_t Value, uint8_t Shift) -{ - return _rotl(Value, Shift); -} - -inline uint32_t ROR_32(uint32_t Value, uint8_t Shift) -{ - return _rotr(Value, Shift); -} - -#elif defined(_M_IX86) - -inline uint32_t XCHG_32(uint32_t volatile & Dest, uint32_t Exchange) -{ - return (uint32_t)_InterlockedExchange((long volatile*)&(Dest), (long)(Exchange)); -} -inline int32_t XCHG_32(int32_t volatile & Dest, int32_t Exchange) -{ - return (int32_t)_InterlockedExchange((long volatile*)&(Dest), (long)(Exchange)); -} -/* -inline uint64_t XCHG_64(uint64_t volatile & Dest, uint64_t Exchange) -{ - return (uint64_t)_InterlockedExchange64((__int64 volatile*)&Dest, (__int64)Exchange); -} -inline int64_t XCHG_64(int64_t volatile & Dest, int64_t Exchange) -{ - return (int64_t)_InterlockedExchange64((__int64 volatile*)&Dest, (__int64)Exchange); -} -*/ -template -inline T * XCHG_Ptr(T * volatile & Dest, T * Exchange) -{ - return (T*)_InterlockedExchange((long volatile*)&Dest, (long)Exchange); -} - - -inline uint32_t CMPXCHG_32(uint32_t volatile & Dest, uint32_t Exchange, uint32_t Comperand) -{ - return (uint64_t)_InterlockedCompareExchange((long volatile*)&(Dest), (long)(Exchange), (long)Comperand); -} -inline int32_t CMPXCHG_32(int32_t volatile & Dest, int32_t Exchange, int32_t Comperand) -{ - return (int32_t)_InterlockedCompareExchange((long volatile*)&(Dest), (long)(Exchange), (long)Comperand); -} - -inline uint64_t CMPXCHG_64(uint64_t volatile & Dest, uint64_t Exchange, uint64_t Comperand) -{ - return (uint64_t)_InterlockedCompareExchange64((__int64 volatile*)&Dest, (__int64)Exchange, (__int64)Comperand); -} -inline int64_t CMPXCHG_64(int64_t volatile & Dest, int64_t Exchange, int64_t Comperand) -{ - return (int64_t)_InterlockedCompareExchange64((__int64 volatile*)&Dest, (__int64)Exchange, (__int64)Comperand); -} - -template -inline T * CMPXCHG_Ptr(T * volatile & Dest, T * Exchange, T * Comperand) -{ - return (T*)_InterlockedCompareExchange((long volatile *)&Dest, (long)Exchange, (long)Comperand); -} - -inline uint32_t XADD_32(uint32_t volatile & Dest, int32_t Addend) -{ - return (uint32_t)_InterlockedExchangeAdd((long volatile*)&Dest, (long)Addend); -} -inline int32_t XADD_32(int32_t volatile & Dest, int32_t Addend) -{ - return (int32_t)_InterlockedExchangeAdd((long volatile*)&Dest, (long)Addend); -} - -inline uint32_t DEC_32(uint32_t volatile & Dest) -{ - return (uint32_t)_InterlockedDecrement((long volatile*)&Dest); -} -inline int32_t DEC_32(int32_t volatile & Dest) -{ - return (int32_t)_InterlockedDecrement((long volatile*)&Dest); -} - -inline uint32_t INC_32(uint32_t volatile & Dest) -{ - return (uint32_t)_InterlockedIncrement((long volatile*)&Dest); -} -inline int32_t INC_32(int32_t volatile & Dest) -{ - return (int32_t)_InterlockedIncrement((long volatile*)&Dest); -} - -inline bool BTS_32(uint32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); -} -inline bool BTS_32(int32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); -} -inline bool BTS_64(uint64_t volatile & Dest, uint8_t Offset) -{ - if (Offset > 31) - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); - else - return !!_interlockedbittestandset(((long volatile*)&Dest) + 1, Offset - 32); -} -inline bool BTS_64(int64_t volatile & Dest, uint8_t Offset) -{ - if (Offset > 31) - return !!_interlockedbittestandset((long volatile*)&Dest, Offset); - else - return !!_interlockedbittestandset(((long volatile*)&Dest) + 1, Offset - 32); -} - - -inline bool BTR_32(uint32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); -} -inline bool BTR_32(int32_t volatile & Dest, uint8_t Offset) -{ - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); -} -inline bool BTR_64(uint64_t volatile & Dest, uint8_t Offset) -{ - if (Offset > 31) - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); - else - return !!_interlockedbittestandreset(((long volatile*)&Dest) + 1, Offset - 32); -} -inline bool BTR_64(int64_t volatile & Dest, uint8_t Offset) -{ - if (Offset > 31) - return !!_interlockedbittestandreset((long volatile*)&Dest, Offset); - else - return !!_interlockedbittestandreset(((long volatile*)&Dest) + 1, Offset - 32); -} - -inline uint32_t OR_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedOr((long volatile*)&Value, (long)Operator); -} - -inline int32_t OR_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedOr((long volatile*)&Value, (long)Operator); -} - -inline uint32_t AND_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedAnd((long volatile*)&Value, (long)Operator); -} - -inline int32_t AND_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedAnd((long volatile*)&Value, (long)Operator); -} - -inline uint32_t XOR_32(uint32_t volatile & Value, uint32_t Operator) -{ - return (uint32_t)_InterlockedXor((long volatile*)&Value, (long)Operator); -} - -inline int32_t XOR_32(int32_t volatile & Value, int32_t Operator) -{ - return (int32_t)_InterlockedXor((long volatile*)&Value, (long)Operator); -} - - -inline uint32_t BSWAP_32(uint32_t Value) -{ - return _byteswap_ulong(Value); -} - -inline uint32_t ROL_32(uint32_t Value, uint8_t Shift) -{ - return _rotl(Value, Shift); -} -inline uint32_t ROR_32(uint32_t Value, uint8_t Shift) -{ - return _rotr(Value, Shift); -} - - - -#else - -#error unsupported architecture - -#endif diff --git a/plugins/!Deprecated/Dbx_tree/src/inttypes.h b/plugins/!Deprecated/Dbx_tree/src/inttypes.h deleted file mode 100644 index 79a1315500..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/inttypes.h +++ /dev/null @@ -1,299 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#pragma once - -#include - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmap.h b/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmap.h deleted file mode 100644 index 7ec2df3ce4..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmap.h +++ /dev/null @@ -1,749 +0,0 @@ -#pragma once - -/* - -lockfree hash-multi_map based on Ori Shalev and Nir Shavit - -implementation -Copyright 2009-2010 Michael "Protogenes" Kunz - -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 - -#include -#include "Hash.h" -#include "intrinsics.h" - -#define NodePointer(listitem) ((PListItem)(((uintptr_t)(listitem)) & ~1)) -#define NodeMark(listitem) ((bool) (((uintptr_t)(listitem)) & 1)) - -#define HashTablePtr(hashtable) ((PHashTable)(((uintptr_t)(hashtable)) & ~31)) -#define HashTableSize(hashtable) ((uint32_t)(((uintptr_t)(hashtable)) & 31)) -#define HashTable(tableptr, tablesize) ((void*)(((uintptr_t)(tableptr)) | ((tablesize) & 31))) - -#define GCSelection(Sentinel) ((Sentinel) >> 63) -#define GCRefCount0(Sentinel) ((Sentinel) & 0x7fffffff) -#define GCRefCount1(Sentinel) (((Sentinel) >> 32) & 0x7fffffff) -#define GCMakeSentinel(Sel, RefCount0, RefCount1) ((((uint64_t)(Sel) & 1) << 63) | (((uint64_t)(RefCount1)) << 32) | ((uint64_t)(RefCount0))) - -#define GCRef0 (1) -#define GCRef1 (0x0000000100000000) - -namespace lockfree -{ - template - class hash_map - { - public: - typedef std::pair value_type; - - private: - typedef struct TListItem - { - TListItem * volatile Next; - TListItem * volatile NextPurge; - volatile uint32_t Hash; - value_type Value; - } TListItem, *PListItem; - - typedef struct THashTable - { - volatile PListItem Table[256]; - } THashTable, *PHashTable; - - typedef struct { - volatile uint64_t Sentinel; - volatile PListItem Purge0; - volatile PListItem Purge1; - } THashTableReferences; - - THashTableReferences m_GarbageCollector; - - volatile uint32_t m_Count; - void * volatile m_HashTableData; - - PListItem listInsert(PListItem BucketNode, PListItem Node); - PListItem listDelete(PListItem BucketNode, uint32_t Hash, const TKey & Key); - - PListItem listDelete(PListItem BucketNode, PListItem Node); - - bool listFind(const PListItem BucketNode, const uint32_t Hash, const TKey & Key, const PListItem Node, volatile PListItem * & Prev, PListItem & Curr, PListItem & Next); - - uint32_t getMask(uint32_t Size) - { - const uint32_t mask[32] = { - 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, - 0xf8000000, 0xfc000000, 0xfe000000, 0xff000000, - 0xff800000, 0xffc00000, 0xffe00000, 0xfff00000, - 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, - 0xffff8000, 0xffffc000, 0xffffe000, 0xfffff000, - 0xfffff800, 0xfffffc00, 0xfffffe00, 0xffffff00, - 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, - 0xfffffff8, 0xfffffffc, 0xfffffffe, 0xffffffff - }; - return mask[Size - 1]; - }; - - PHashTable makeNewTable() - { - void * block = malloc(sizeof(THashTable) + 32 + sizeof(void*)); - PHashTable result = reinterpret_cast((reinterpret_cast(block) + 31 + sizeof(void*)) & (~(uintptr_t)31)); - *(reinterpret_cast(result)-1) = block; - memset(reinterpret_cast(result), 0, sizeof(THashTable)); - return reinterpret_cast(result); - }; - - void destroyTable(PHashTable Table) - { - free(*(reinterpret_cast(Table) - 1)); - }; - - PListItem makeDummyNode(uint32_t Hash) - { - PListItem result = new TListItem; - result->Hash = Hash; - result->Next = NULL; - result->NextPurge = NULL; - return result; - }; - - bool DisposeNode(volatile PListItem * Prev, PListItem Curr, PListItem Next); - - PListItem initializeBucket(uint32_t Bucket, uint32_t Mask); - - PListItem getBucket(uint32_t Bucket); - - void setBucket(uint32_t Bucket, PListItem Dummy); - - void DeleteTable(void * Table, uint32_t Size) - { - if (Size > 8) - { - for (uint32_t i = 0; i < 256; ++i) - { - if (HashTablePtr(Table)->Table[i]) - DeleteTable(HashTablePtr(Table)->Table[i], Size - 8); - } - } - - destroyTable(HashTablePtr(Table)); - }; - - - int addRef(int GC = -1); - void delRef(int GC); - - public: - - - class iterator - { - protected: - friend class hash_map; - PListItem m_Item; - typename hash_map * m_Owner; - int m_GC; - - iterator(hash_map * Owner, PListItem Item, int GC) - : m_Owner(Owner) - { - m_GC = GC; - m_Item = Item; - - while (m_Item && (!(m_Item->Hash & 1) || NodeMark(m_Item->Next))) - m_Item = NodePointer(m_Item->Next); - - if (!m_Item && (m_GC != -1)) - { - m_Owner->delRef(m_GC); - m_GC = -1; - } - - }; - public: - iterator(const iterator & Other) - : m_Owner(Other.m_Owner), - m_Item(Other.m_Item) - { - m_GC = -1; - if (Other.m_GC != -1) - m_GC = m_Owner->addRef(Other.m_GC); - }; - ~iterator() - { - if (m_GC != -1) - m_Owner->delRef(m_GC); - }; - - operator bool() const - { - return m_Item != NULL; - }; - bool operator !() const - { - return m_Item == NULL; - }; - - value_type * operator ->() - { - return &m_Item->Value; - }; - value_type & operator *() - { - return m_Item->Value; - }; - - bool operator ==(iterator& Other) - { - return m_Item->Value.first == Other.m_Item->Value.first; - }; - bool operator < (iterator & Other) - { - return m_Item->Value.first < Other.m_Item->Value.first; - }; - bool operator > (iterator & Other) - { - return m_Item->Value.first > Other.m_Item->Value.first; - }; - - iterator& operator =(const iterator& Other) - { - m_Owner = Other.m_Owner; - m_Item = Other.m_Item; - - if (Other.m_GC != m_GC) - { - if (m_GC != -1) - m_Owner->delRef(m_GC); - - m_GC = Other.m_GC; - - if (Other.m_GC != -1) - m_GC = m_Owner->addRef(Other.m_GC); - - } - - return *this; - }; - - iterator& operator ++() //pre ++i - { - if (!m_Item) - return *this; - - int gc = m_GC; - m_GC = m_Owner->addRef(); - do - { - m_Item = NodePointer(m_Item->Next); - } while (m_Item && (!(m_Item->Hash & 1) || NodeMark(m_Item->Next))); - - m_Owner->delRef(gc); - if (!m_Item) - { - m_Owner->delRef(m_GC); - m_GC = -1; - } - return *this; - }; - iterator operator ++(int) //post i++ - { - iterator bak(*this); - ++(*this); - return bak; - }; - }; - - iterator begin() - { - return iterator(this, getBucket(0), addRef()); - }; - - iterator end() - { - return iterator(this, NULL, -1); - }; - - hash_map(); - ~hash_map(); - - std::pair insert(const value_type & Val); - - iterator find(const TKey & Key); - - iterator erase(const iterator & Where); - - size_t erase(const TKey & Key); - - }; - - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - template - int hash_map::addRef(int GC = -1) - { - uint64_t old; - uint64_t newvalue; - int res; - do { - old = m_GarbageCollector.Sentinel; - if (GC == 0) // this is safe because refcount will never fall to zero because of the original reference - { - newvalue = old + GCRef0; - res = 0; - } else if (GC == 1) - { - newvalue = old + GCRef1; - res = 1; - } else { - if (GCSelection(old)) - { - newvalue = old + GCRef1; - res = 1; - } else { - newvalue = old + GCRef0; - res = 0; - } - } - } - while (CMPXCHG_64(m_GarbageCollector.Sentinel, newvalue, old) != old); - - return res; - }; - - template - void hash_map::delRef(int GC) - { - uint64_t old; - uint64_t newvalue; - PListItem purge = NULL; - do { - old = m_GarbageCollector.Sentinel; - if (GC) - { - newvalue = old - GCRef1; - - if (!GCSelection(old) && (GCRefCount1(old) == 1)) // the other gc is activated and we are the last one - { - if (!purge) // check if we had to loop... - purge = m_GarbageCollector.Purge1; - - m_GarbageCollector.Purge1 = NULL; - } - - } else { - newvalue = old - GCRef0; - - if (GCSelection(old) && (GCRefCount0(old) == 1)) // the other gc is activated and we are the last one - { - if (!purge) // check if we had to loop... - purge = m_GarbageCollector.Purge0; - - m_GarbageCollector.Purge0 = NULL; - } - - } - } while (CMPXCHG_64(m_GarbageCollector.Sentinel, newvalue, old) != old); - - purge = NodePointer(purge); - while (purge) - { - PListItem tmp = purge; - purge = purge->NextPurge; - delete tmp; - }; - }; - - - - template - bool hash_map::DisposeNode(volatile PListItem * Prev, PListItem Curr, PListItem Next) - { - if (NodePointer(Curr) == CMPXCHG_Ptr(*Prev, NodePointer(Next), NodePointer(Curr))) - { - uint64_t old = m_GarbageCollector.Sentinel; - PListItem del = NodePointer(Curr); - - if (GCSelection(old)) - { - del->NextPurge = (PListItem)XCHG_Ptr(m_GarbageCollector.Purge1, del); - - if (!GCRefCount0(old)) - BTR_64(m_GarbageCollector.Sentinel, 63); // switch - - } else { - - del->NextPurge = (PListItem)XCHG_Ptr(m_GarbageCollector.Purge0, del); - - if (!GCRefCount1(old)) - BTS_64(m_GarbageCollector.Sentinel, 63); // switch - - } - return true; - } - - return false; - }; - - - template - typename hash_map::PListItem hash_map::listInsert(PListItem BucketNode, PListItem Node) - { - PListItem volatile * prev; - PListItem curr, next; - do - { - if (listFind(BucketNode, Node->Hash, Node->Value.first, NULL, prev, curr, next)) - return NodePointer(curr); - - Node->Next = NodePointer(curr); - - } while (NodePointer(curr) != CMPXCHG_Ptr(*prev, Node, NodePointer(curr))); - return Node; - }; - - - template - typename hash_map::PListItem hash_map::listDelete(PListItem BucketNode, uint32_t Hash, const TKey & Key) - { - PListItem volatile * prev; - PListItem curr, next; - - if (!listFind(BucketNode, Hash, Key, NULL, prev, curr, next)) - return NodePointer(curr); - - do - { - if (!listFind(BucketNode, Hash, Key, NULL, prev, curr, next)) - return NodePointer(curr); - - } while (NodePointer(next) != CMPXCHG_Ptr(curr->Next, (PListItem)((uintptr_t)next | 1), NodePointer(next))); - - if (!DisposeNode(prev, curr, next)) - listFind(BucketNode, Hash, Key, NULL, prev, curr, next); // cleanup - - return NodePointer(curr); - }; - - template - typename hash_map::PListItem hash_map::listDelete(PListItem BucketNode, PListItem Node) - { - PListItem volatile * prev; - PListItem curr, next; - if (!listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next)) - return NodePointer(curr); - - do - { - if (!listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next)) - return NodePointer(curr); - - } while (NodePointer(next) != CMPXCHG_Ptr(curr->Next, (PListItem)((uintptr_t)next | 1), NodePointer(next))); - - if (!DisposeNode(prev, curr, next)) - listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next); // cleanup - - return NodePointer(curr); - }; - - template - bool hash_map::listFind(const PListItem BucketNode, const uint32_t Hash, const TKey & Key, const PListItem Node, volatile PListItem * & Prev, PListItem & Curr, PListItem & Next) - { -tryagain: - Prev = &(BucketNode->Next); - Curr = *Prev; - do - { - if (NodePointer(Curr) == NULL) - return false; - - Next = NodePointer(Curr)->Next; - uint32_t h = NodePointer(Curr)->Hash; - - if (*Prev != NodePointer(Curr)) - goto tryagain; // don't judge me for that - //return listFind(BucketNode, Hash, Key, Node, Prev, Curr, Next); // it's the same but stack overflow can happen - - if (!NodeMark(Next)) - { - if (Node) - { - if ((h > Hash) || (Node == NodePointer(Curr))) - return NodePointer(Curr) == Node; - } - else if ((h > Hash) || ((h == Hash) && !(NodePointer(Curr)->Value.first < Key))) - { - return (h == Hash) && (NodePointer(Curr)->Value.first == Key); - } - - Prev = &(NodePointer(Curr)->Next); - } else { - if (!DisposeNode(Prev, Curr, Next)) - goto tryagain; // don't judge me for that - //return listFind(BucketNode, Hash, Key, Node, Prev, Curr, Next); // it's the same but stack overflow can happen - } - Curr = Next; - } while (true); - - }; - - - template - typename hash_map::PListItem hash_map::initializeBucket(uint32_t Bucket, uint32_t Mask) - { - uint32_t parent = Bucket & (Mask << 1); - PListItem parentnode = getBucket(parent); - if (parentnode == NULL) - parentnode = initializeBucket(parent, Mask << 1); - - PListItem dummy = makeDummyNode(Bucket); - PListItem bucketnode = listInsert(parentnode, dummy); - if (bucketnode != dummy) - { - delete dummy; - dummy = bucketnode; - } - setBucket(Bucket, dummy); - - return dummy; - } - - template - typename hash_map::PListItem hash_map::getBucket(uint32_t Bucket) - { - void * table; - uint32_t mask; - - table = (void*)m_HashTableData; - mask = getMask(HashTableSize(table)); - - uint32_t levelshift = (32 - HashTableSize(table)) & ~7; - - while (levelshift < 24) - { - table = HashTablePtr(table)->Table[((Bucket & mask) >> levelshift) & 0xff]; - levelshift = levelshift + 8; - if (!HashTablePtr(table)) - return NULL; - } - return HashTablePtr(table)->Table[(Bucket & mask) >> 24]; - }; - - template - void hash_map::setBucket(uint32_t Bucket, PListItem Dummy) - { - void * table; - void *volatile * last; - uint32_t mask; - - table = m_HashTableData; - mask = getMask(HashTableSize(table)); - - uint32_t levelshift = (32 - HashTableSize(table)) & ~7; - - while (levelshift < 24) - { - last = (void*volatile*)&HashTablePtr(table)->Table[((Bucket & mask) >> levelshift) & 0xff]; - table = *last; - levelshift = levelshift + 8; - if (!table) - { - PHashTable newtable = makeNewTable(); - table = CMPXCHG_Ptr(*last, newtable, NULL); - if (table) - { - destroyTable(newtable); - } else { - table = newtable; - } - } - } - HashTablePtr(table)->Table[(Bucket & mask) >> 24] = Dummy; - }; - - template - hash_map::hash_map() - { - m_Count = 0; - - m_GarbageCollector.Sentinel = GCMakeSentinel(0,0,0); - m_GarbageCollector.Purge0 = NULL; - m_GarbageCollector.Purge1 = NULL; - - m_HashTableData = HashTable(makeNewTable(), 1); - setBucket(0x00000000, makeDummyNode(0x00000000)); - setBucket(0x80000000, makeDummyNode(0x80000000)); - HashTablePtr(m_HashTableData)->Table[0]->Next = getBucket(0x80000000); - }; - - template - hash_map::~hash_map() - { - PListItem h = getBucket(0); - DeleteTable(HashTablePtr(m_HashTableData), HashTableSize(m_HashTableData)); - - while (h) - { - PListItem tmp = h; - h = NodePointer(h->Next); - delete tmp; - }; - - h = m_GarbageCollector.Purge0; - while (h) - { - PListItem tmp = h; - h = h->NextPurge; - delete tmp; - }; - - h = m_GarbageCollector.Purge1; - while (h) - { - PListItem tmp = h; - h = h->NextPurge; - delete tmp; - }; - - }; - - template - typename std::pair::iterator, bool> hash_map::insert(const value_type & Val) - { - int gc = addRef(); - PListItem node = new TListItem; - node->Value = Val; - node->Hash = FHash(&node->Value.first, sizeof(TKey)) | 1; - node->NextPurge = NULL; - node->Next = NULL; - - void * tmp; - void * newdata; - tmp = (void*)m_HashTableData; - - uint32_t mask = getMask(HashTableSize(tmp)); - - uint32_t bucket = node->Hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - PListItem retnode = listInsert(bucketnode, node); - if (retnode != node) - { - delete node; - return std::make_pair(iterator(this, retnode, gc), false); - } - - if ((INC_32(m_Count) > ((uint32_t)1 << (HashTableSize(tmp) + 3))) && (HashTableSize(tmp) < 31) && (HashTableSize(tmp) == HashTableSize(m_HashTableData))) - { - newdata = HashTable(HashTablePtr(tmp), HashTableSize(tmp) + 1); - - if ((HashTableSize(tmp) & 0x7) == 0) - { - newdata = HashTable(makeNewTable(), HashTableSize(tmp) + 1); - HashTablePtr(newdata)->Table[0] = (TListItem*)HashTablePtr(tmp); - - if (tmp != CMPXCHG_Ptr(m_HashTableData, newdata, tmp)) - destroyTable(HashTablePtr(newdata)); // someone else expanded the table. - } else { - CMPXCHG_Ptr(m_HashTableData, newdata, tmp); - } - - } - - return std::make_pair(iterator(this, node, gc), true); - }; - - template - typename hash_map::iterator hash_map::find(const TKey & Key) - { - int gc = addRef(); - uint32_t hash = FHash(&Key, sizeof(TKey)) | 1; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem volatile * prev; - PListItem curr, next; - if (listFind(bucketnode, hash, Key, NULL, prev, curr, next)) - return iterator(this, NodePointer(curr), gc); - - return iterator(this, NULL, gc); - }; - - template - typename hash_map::iterator hash_map::erase(const iterator & Where) - { - int gc = addRef(); - uint32_t hash = Where.m_Item->Hash; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem res = listDelete(bucketnode, Where.m_Item); - if (Where.m_Item == res) - { - DEC_32(m_Count); - return iterator(this, NodePointer(res->Next), gc); - } - return iterator(this, res, gc); - }; - - template - size_t hash_map::erase(const TKey & Key) - { - int gc = addRef(); - uint32_t hash = FHash(&Key, sizeof(TKey)) | 1; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem result = listDelete(bucketnode, hash, Key); - if (result && (result->Value.first == Key)) - { - DEC_32(m_Count); - delRef(gc); - return 1; - } - - delRef(gc); - return 0; - }; -} - -#undef NodePointer -#undef NodeMark - -#undef HashTablePtr -#undef HashTableSize -#undef HashTable - -#undef GCSelection -#undef GCRefCount0 -#undef GCRefCount1 -#undef GCMakeSentinel - diff --git a/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmultimap.h b/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmultimap.h deleted file mode 100644 index 79981e5447..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/lockfree_hashmultimap.h +++ /dev/null @@ -1,750 +0,0 @@ -#pragma once - -/* - -lockfree hash-multi_map based on Ori Shalev and Nir Shavit - -implementation -Copyright 2009-2010 Michael "Protogenes" Kunz - -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 - -#include -#include "Hash.h" -#include "intrinsics.h" - -#define NodePointer(listitem) ((PListItem)(((uintptr_t)(listitem)) & ~1)) -#define NodeMark(listitem) ((bool) (((uintptr_t)(listitem)) & 1)) - -#define HashTablePtr(hashtable) ((PHashTable)(((uintptr_t)(hashtable)) & ~31)) -#define HashTableSize(hashtable) ((uint32_t)(((uintptr_t)(hashtable)) & 31)) -#define HashTable(tableptr, tablesize) ((void*)(((uintptr_t)(tableptr)) | ((tablesize) & 31))) - -#define GCSelection(Sentinel) ((Sentinel) >> 63) -#define GCRefCount0(Sentinel) ((Sentinel) & 0x7fffffff) -#define GCRefCount1(Sentinel) (((Sentinel) >> 32) & 0x7fffffff) -#define GCMakeSentinel(Sel, RefCount0, RefCount1) ((((uint64_t)(Sel) & 1) << 63) | (((uint64_t)(RefCount1)) << 32) | ((uint64_t)(RefCount0))) - -#define GCRef0 (1) -#define GCRef1 (0x0000000100000000) - -namespace lockfree -{ - template - class hash_multimap - { - public: - typedef std::pair value_type; - - private: - typedef struct TListItem - { - TListItem * volatile Next; - TListItem * volatile NextPurge; - volatile uint32_t Hash; - value_type Value; - } TListItem, *PListItem; - - typedef struct THashTable - { - volatile PListItem Table[256]; - } THashTable, *PHashTable; - - typedef struct { - volatile uint64_t Sentinel; - volatile PListItem Purge0; - volatile PListItem Purge1; - } THashTableReferences; - - THashTableReferences m_GarbageCollector; - - volatile uint32_t m_Count; - void * volatile m_HashTableData; - - PListItem listInsert(PListItem BucketNode, PListItem Node); - PListItem listDelete(PListItem BucketNode, uint32_t Hash, const TKey & Key); - - PListItem listDelete(PListItem BucketNode, PListItem Node); - - bool listFind(const PListItem BucketNode, const uint32_t Hash, const TKey & Key, const PListItem Node, volatile PListItem * & Prev, PListItem & Curr, PListItem & Next); - - uint32_t getMask(uint32_t Size) - { - const uint32_t mask[32] = { - 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, - 0xf8000000, 0xfc000000, 0xfe000000, 0xff000000, - 0xff800000, 0xffc00000, 0xffe00000, 0xfff00000, - 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, - 0xffff8000, 0xffffc000, 0xffffe000, 0xfffff000, - 0xfffff800, 0xfffffc00, 0xfffffe00, 0xffffff00, - 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, - 0xfffffff8, 0xfffffffc, 0xfffffffe, 0xffffffff - }; - return mask[Size - 1]; - }; - - PHashTable makeNewTable() - { - void * block = malloc(sizeof(THashTable) + 32 + sizeof(void*)); - PHashTable result = reinterpret_cast((reinterpret_cast(block) + 31 + sizeof(void*)) & (~(uintptr_t)31)); - *(reinterpret_cast(result)-1) = block; - memset(reinterpret_cast(result), 0, sizeof(THashTable)); - return reinterpret_cast(result); - }; - - void destroyTable(PHashTable Table) - { - free(*(reinterpret_cast(Table) - 1)); - }; - - PListItem makeDummyNode(uint32_t Hash) - { - PListItem result = new TListItem; - result->Hash = Hash; - result->Next = NULL; - result->NextPurge = NULL; - return result; - }; - - bool DisposeNode(volatile PListItem * Prev, PListItem Curr, PListItem Next); - - PListItem initializeBucket(uint32_t Bucket, uint32_t Mask); - - PListItem getBucket(uint32_t Bucket); - - void setBucket(uint32_t Bucket, PListItem Dummy); - - void DeleteTable(void * Table, uint32_t Size) - { - if (Size > 8) - { - for (uint32_t i = 0; i < 256; ++i) - { - if (HashTablePtr(Table)->Table[i]) - DeleteTable(HashTablePtr(Table)->Table[i], Size - 8); - } - } - - destroyTable(HashTablePtr(Table)); - }; - - - int addRef(int GC = -1); - void delRef(int GC); - - public: - - - class iterator - { - protected: - friend class hash_multimap; - PListItem m_Item; - typename hash_multimap * m_Owner; - int m_GC; - - iterator(hash_multimap * Owner, PListItem Item, int GC) - : m_Owner(Owner) - { - m_GC = GC; - m_Item = Item; - - while (m_Item && (!(m_Item->Hash & 1) || NodeMark(m_Item->Next))) - m_Item = NodePointer(m_Item->Next); - - if (!m_Item && (m_GC != -1)) - { - m_Owner->delRef(m_GC); - m_GC = -1; - } - - }; - public: - iterator(const iterator & Other) - : m_Owner(Other.m_Owner), - m_Item(Other.m_Item) - { - m_GC = -1; - if (Other.m_GC != -1) - m_GC = m_Owner->addRef(Other.m_GC); - }; - ~iterator() - { - if (m_GC != -1) - m_Owner->delRef(m_GC); - }; - - operator bool() const - { - return m_Item != NULL; - }; - bool operator !() const - { - return m_Item == NULL; - }; - - value_type * operator ->() - { - return &m_Item->Value; - }; - value_type & operator *() - { - return m_Item->Value; - }; - - bool operator ==(iterator& Other) - { - return m_Item->Value.first == Other.m_Item->Value.first; - }; - bool operator < (iterator & Other) - { - return m_Item->Value.first < Other.m_Item->Value.first; - }; - bool operator > (iterator & Other) - { - return m_Item->Value.first > Other.m_Item->Value.first; - }; - - iterator& operator =(const iterator& Other) - { - m_Owner = Other.m_Owner; - m_Item = Other.m_Item; - - if (Other.m_GC != m_GC) - { - if (m_GC != -1) - m_Owner->delRef(m_GC); - - m_GC = Other.m_GC; - - if (Other.m_GC != -1) - m_GC = m_Owner->addRef(Other.m_GC); - - } - - return *this; - }; - - iterator& operator ++() //pre ++i - { - if (!m_Item) - return *this; - - int gc = m_GC; - m_GC = m_Owner->addRef(); - do - { - m_Item = NodePointer(m_Item->Next); - } while (m_Item && (!(m_Item->Hash & 1) || NodeMark(m_Item->Next))); - - m_Owner->delRef(gc); - if (!m_Item) - { - m_Owner->delRef(m_GC); - m_GC = -1; - } - return *this; - }; - iterator operator ++(int) //post i++ - { - iterator bak(*this); - ++(*this); - return bak; - }; - }; - - iterator begin() - { - return iterator(this, getBucket(0), addRef()); - }; - - iterator end() - { - return iterator(this, NULL, -1); - }; - - hash_multimap(); - ~hash_multimap(); - - std::pair insert(const value_type & Val); - - iterator find(const TKey & Key); - - iterator erase(const iterator & Where); - - size_t erase(const TKey & Key); - - }; - - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - template - int hash_multimap::addRef(int GC = -1) - { - uint64_t old; - uint64_t newvalue; - int res; - do { - old = m_GarbageCollector.Sentinel; - if (GC == 0) // this is safe because refcount will never fall to zero because of the original reference - { - newvalue = old + GCRef0; - res = 0; - } else if (GC == 1) - { - newvalue = old + GCRef1; - res = 1; - } else { - if (GCSelection(old)) - { - newvalue = old + GCRef1; - res = 1; - } else { - newvalue = old + GCRef0; - res = 0; - } - } - } - while (CMPXCHG_64(m_GarbageCollector.Sentinel, newvalue, old) != old); - - return res; - }; - - template - void hash_multimap::delRef(int GC) - { - uint64_t old; - uint64_t newvalue; - PListItem purge = NULL; - do { - old = m_GarbageCollector.Sentinel; - if (GC) - { - newvalue = old - GCRef1; - - if (!GCSelection(old) && (GCRefCount1(old) == 1)) // the other gc is activated and we are the last one - { - if (!purge) // check if we had to loop... - purge = m_GarbageCollector.Purge1; - - m_GarbageCollector.Purge1 = NULL; - } - - } else { - newvalue = old - GCRef0; - - if (GCSelection(old) && (GCRefCount0(old) == 1)) // the other gc is activated and we are the last one - { - if (!purge) // check if we had to loop... - purge = m_GarbageCollector.Purge0; - - m_GarbageCollector.Purge0 = NULL; - } - - } - } while (CMPXCHG_64(m_GarbageCollector.Sentinel, newvalue, old) != old); - - purge = NodePointer(purge); - while (purge) - { - PListItem tmp = purge; - purge = purge->NextPurge; - delete tmp; - }; - }; - - - - template - bool hash_multimap::DisposeNode(volatile PListItem * Prev, PListItem Curr, PListItem Next) - { - if (NodePointer(Curr) == CMPXCHG_Ptr(*Prev, NodePointer(Next), NodePointer(Curr))) - { - uint64_t old = m_GarbageCollector.Sentinel; - PListItem del = NodePointer(Curr); - - if (GCSelection(old)) - { - del->NextPurge = (PListItem)XCHG_Ptr(m_GarbageCollector.Purge1, del); - - if (!GCRefCount0(old)) - BTR_64(m_GarbageCollector.Sentinel, 63); // switch - - } else { - - del->NextPurge = (PListItem)XCHG_Ptr(m_GarbageCollector.Purge0, del); - - if (!GCRefCount1(old)) - BTS_64(m_GarbageCollector.Sentinel, 63); // switch - - } - return true; - } - - return false; - }; - - - template - typename hash_multimap::PListItem hash_multimap::listInsert(PListItem BucketNode, PListItem Node) - { - PListItem volatile * prev; - PListItem curr, next; - do - { - listFind(BucketNode, Node->Hash, Node->Value.first, NULL, prev, curr, next); - - Node->Next = NodePointer(curr); - - } while (NodePointer(curr) != CMPXCHG_Ptr(*prev, Node, NodePointer(curr))); - return Node; - }; - - - template - typename hash_multimap::PListItem hash_multimap::listDelete(PListItem BucketNode, uint32_t Hash, const TKey & Key) - { - PListItem volatile * prev; - PListItem curr, next; - - if (!listFind(BucketNode, Hash, Key, NULL, prev, curr, next)) - return NodePointer(curr); - - do - { - if (!listFind(BucketNode, Hash, Key, NULL, prev, curr, next)) - return NodePointer(curr); - - } while (NodePointer(next) != CMPXCHG_Ptr(curr->Next, (PListItem)((uintptr_t)next | 1), NodePointer(next))); - - if (!DisposeNode(prev, curr, next)) - listFind(BucketNode, Hash, Key, NULL, prev, curr, next); // cleanup - - return NodePointer(curr); - }; - - template - typename hash_multimap::PListItem hash_multimap::listDelete(PListItem BucketNode, PListItem Node) - { - PListItem volatile * prev; - PListItem curr, next; - if (!listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next)) - return NodePointer(curr); - - do - { - if (!listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next)) - return NodePointer(curr); - - } while (NodePointer(next) != CMPXCHG_Ptr(curr->Next, (PListItem)((uintptr_t)next | 1), NodePointer(next))); - - if (!DisposeNode(prev, curr, next)) - listFind(BucketNode, Node->Hash, Node->Value.first, Node, prev, curr, next); // cleanup - - return NodePointer(curr); - }; - - template - bool hash_multimap::listFind(const PListItem BucketNode, const uint32_t Hash, const TKey & Key, const PListItem Node, volatile PListItem * & Prev, PListItem & Curr, PListItem & Next) - { -tryagain: - Prev = &(BucketNode->Next); - Curr = *Prev; - do - { - if (NodePointer(Curr) == NULL) - return false; - - Next = NodePointer(Curr)->Next; - uint32_t h = NodePointer(Curr)->Hash; - - if (*Prev != NodePointer(Curr)) - goto tryagain; // don't judge me for that - //return listFind(BucketNode, Hash, Key, Node, Prev, Curr, Next); // it's the same but stack overflow can happen - - if (!NodeMark(Next)) - { - if (Node) - { - if ((h > Hash) || (Node == NodePointer(Curr))) - return NodePointer(Curr) == Node; - } - else if ((h > Hash) || ((h == Hash) && !(NodePointer(Curr)->Value.first < Key))) - { - return (h == Hash) && (NodePointer(Curr)->Value.first == Key); - } - - Prev = &(NodePointer(Curr)->Next); - } else { - if (!DisposeNode(Prev, Curr, Next)) - goto tryagain; // don't judge me for that - //return listFind(BucketNode, Hash, Key, Node, Prev, Curr, Next); // it's the same but stack overflow can happen - } - Curr = Next; - } while (true); - - }; - - - template - typename hash_multimap::PListItem hash_multimap::initializeBucket(uint32_t Bucket, uint32_t Mask) - { - uint32_t parent = Bucket & (Mask << 1); - PListItem parentnode = getBucket(parent); - if (parentnode == NULL) - parentnode = initializeBucket(parent, Mask << 1); - - PListItem dummy = makeDummyNode(Bucket); - PListItem bucketnode = listInsert(parentnode, dummy); - if (bucketnode != dummy) - { - delete dummy; - dummy = bucketnode; - } - setBucket(Bucket, dummy); - - return dummy; - } - - template - typename hash_multimap::PListItem hash_multimap::getBucket(uint32_t Bucket) - { - void * table; - uint32_t mask; - - table = (void*)m_HashTableData; - mask = getMask(HashTableSize(table)); - - uint32_t levelshift = (32 - HashTableSize(table)) & ~7; - - while (levelshift < 24) - { - table = HashTablePtr(table)->Table[((Bucket & mask) >> levelshift) & 0xff]; - levelshift = levelshift + 8; - if (!HashTablePtr(table)) - return NULL; - } - return HashTablePtr(table)->Table[(Bucket & mask) >> 24]; - }; - - template - void hash_multimap::setBucket(uint32_t Bucket, PListItem Dummy) - { - void * table; - void *volatile * last; - uint32_t mask; - - table = m_HashTableData; - mask = getMask(HashTableSize(table)); - - uint32_t levelshift = (32 - HashTableSize(table)) & ~7; - - while (levelshift < 24) - { - last = (void*volatile*)&HashTablePtr(table)->Table[((Bucket & mask) >> levelshift) & 0xff]; - table = *last; - levelshift = levelshift + 8; - if (!table) - { - PHashTable newtable = makeNewTable(); - table = CMPXCHG_Ptr(*last, newtable, NULL); - if (table) - { - destroyTable(newtable); - } else { - table = newtable; - } - } - } - HashTablePtr(table)->Table[(Bucket & mask) >> 24] = Dummy; - }; - - template - hash_multimap::hash_multimap() - { - m_Count = 0; - - m_GarbageCollector.Sentinel = GCMakeSentinel(0,0,0); - m_GarbageCollector.Purge0 = NULL; - m_GarbageCollector.Purge1 = NULL; - - m_HashTableData = HashTable(makeNewTable(), 1); - setBucket(0x00000000, makeDummyNode(0x00000000)); - setBucket(0x80000000, makeDummyNode(0x80000000)); - HashTablePtr(m_HashTableData)->Table[0]->Next = getBucket(0x80000000); - }; - - template - hash_multimap::~hash_multimap() - { - PListItem h = getBucket(0); - DeleteTable(HashTablePtr(m_HashTableData), HashTableSize(m_HashTableData)); - - while (h) - { - PListItem tmp = h; - h = NodePointer(h->Next); - delete tmp; - }; - - h = m_GarbageCollector.Purge0; - while (h) - { - PListItem tmp = h; - h = h->NextPurge; - delete tmp; - }; - - h = m_GarbageCollector.Purge1; - while (h) - { - PListItem tmp = h; - h = h->NextPurge; - delete tmp; - }; - - }; - - template - typename std::pair::iterator, bool> hash_multimap::insert(const value_type & Val) - { - int gc = addRef(); - PListItem node = new TListItem; - node->Value = Val; - node->Hash = FHash(&node->Value.first, sizeof(TKey)) | 1; - node->NextPurge = NULL; - node->Next = NULL; - - void * tmp; - void * newdata; - tmp = (void*)m_HashTableData; - - uint32_t mask = getMask(HashTableSize(tmp)); - - uint32_t bucket = node->Hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - PListItem retnode = listInsert(bucketnode, node); - if (retnode != node) - { - delete node; - return std::make_pair(iterator(this, retnode, gc), false); - } - - if ((INC_32(m_Count) > ((uint32_t)1 << (HashTableSize(tmp) + 3))) && (HashTableSize(tmp) < 31) && (HashTableSize(tmp) == HashTableSize(m_HashTableData))) - { - newdata = HashTable(HashTablePtr(tmp), HashTableSize(tmp) + 1); - - if ((HashTableSize(tmp) & 0x7) == 0) - { - newdata = HashTable(makeNewTable(), HashTableSize(tmp) + 1); - HashTablePtr(newdata)->Table[0] = (TListItem*)HashTablePtr(tmp); - - if (tmp != CMPXCHG_Ptr(m_HashTableData, newdata, tmp)) - destroyTable(HashTablePtr(newdata)); // someone else expanded the table. - } else { - CMPXCHG_Ptr(m_HashTableData, newdata, tmp); - } - - } - - return std::make_pair(iterator(this, node, gc), true); - }; - - template - typename hash_multimap::iterator hash_multimap::find(const TKey & Key) - { - int gc = addRef(); - uint32_t hash = FHash(&Key, sizeof(TKey)) | 1; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem volatile * prev; - PListItem curr, next; - if (listFind(bucketnode, hash, Key, NULL, prev, curr, next)) - return iterator(this, NodePointer(curr), gc); - - return iterator(this, NULL, gc); - }; - - template - typename hash_multimap::iterator hash_multimap::erase(const iterator & Where) - { - int gc = addRef(); - uint32_t hash = Where.m_Item->Hash; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem res = listDelete(bucketnode, Where.m_Item); - if (Where.m_Item == res) - { - DEC_32(m_Count); - return iterator(this, NodePointer(res->Next), gc); - } - return iterator(this, res, gc); - }; - - template - size_t hash_multimap::erase(const TKey & Key) - { - int gc = addRef(); - int count = 0; - uint32_t hash = FHash(&Key, sizeof(TKey)) | 1; - uint32_t mask = getMask(HashTableSize(m_HashTableData)); - uint32_t bucket = hash & mask; - PListItem bucketnode = getBucket(bucket); - - if (bucketnode == NULL) - bucketnode = initializeBucket(bucket, mask); - - PListItem volatile * prev; - PListItem curr, next; - while (listFind(bucketnode, hash, Key, NULL, prev, curr, next)) - { - if (curr == listDelete(bucketnode, curr)) - count++; - } - - XADD_32(m_Count, -count); - delRef(gc); - return count; - }; -} - -#undef NodePointer -#undef NodeMark - -#undef HashTablePtr -#undef HashTableSize -#undef HashTable - -#undef GCSelection -#undef GCRefCount0 -#undef GCRefCount1 -#undef GCMakeSentinel - diff --git a/plugins/!Deprecated/Dbx_tree/src/sigslot.h b/plugins/!Deprecated/Dbx_tree/src/sigslot.h deleted file mode 100644 index 1e67a152bf..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/sigslot.h +++ /dev/null @@ -1,2639 +0,0 @@ -// sigslot.h: Signal/Slot classes -// -// Written by Sarah Thompson (sarah@telergy.com) 2002. -// -// License: Public domain. You are free to use this code however you like, with the proviso that -// the author takes on no responsibility or liability for any use. -// -// QUICK DOCUMENTATION -// -// (see also the full documentation at http://sigslot.sourceforge.net/) -// -// #define switches -// SIGSLOT_PURE_ISO - Define this to force ISO C++ compliance. This also disables -// all of the thread safety support on platforms where it is -// available. -// -// SIGSLOT_USE_POSIX_THREADS - Force use of Posix threads when using a C++ compiler other than -// gcc on a platform that supports Posix threads. (When using gcc, -// this is the default - use SIGSLOT_PURE_ISO to disable this if -// necessary) -// -// SIGSLOT_DEFAULT_MT_POLICY - Where thread support is enabled, this defaults to multi_threaded_global. -// Otherwise, the default is single_threaded. #define this yourself to -// override the default. In pure ISO mode, anything other than -// single_threaded will cause a compiler error. -// -// PLATFORM NOTES -// -// Win32 - On Win32, the WIN32 symbol must be #defined. Most mainstream -// compilers do this by default, but you may need to define it -// yourself if your build environment is less standard. This causes -// the Win32 thread support to be compiled in and used automatically. -// -// Unix/Linux/BSD, etc. - If you're using gcc, it is assumed that you have Posix threads -// available, so they are used automatically. You can override this -// (as under Windows) with the SIGSLOT_PURE_ISO switch. If you're using -// something other than gcc but still want to use Posix threads, you -// need to #define SIGSLOT_USE_POSIX_THREADS. -// -// ISO C++ - If none of the supported platforms are detected, or if -// SIGSLOT_PURE_ISO is defined, all multithreading support is turned off, -// along with any code that might cause a pure ISO C++ environment to -// complain. Before you ask, gcc -ansi -pedantic won't compile this -// library, but gcc -ansi is fine. Pedantic mode seems to throw a lot of -// errors that aren't really there. If you feel like investigating this, -// please contact the author. -// -// -// THREADING MODES -// -// single_threaded - Your program is assumed to be single threaded from the point of view -// of signal/slot usage (i.e. all objects using signals and slots are -// created and destroyed from a single thread). Behaviour if objects are -// destroyed concurrently is undefined (i.e. you'll get the occasional -// segmentation fault/memory exception). -// -// multi_threaded_global - Your program is assumed to be multi threaded. Objects using signals and -// slots can be safely created and destroyed from any thread, even when -// connections exist. In multi_threaded_global mode, this is achieved by a -// single global mutex (actually a critical section on Windows because they -// are faster). This option uses less OS resources, but results in more -// opportunities for contention, possibly resulting in more context switches -// than are strictly necessary. -// -// multi_threaded_local - Behaviour in this mode is essentially the same as multi_threaded_global, -// except that each signal, and each object that inherits has_slots, all -// have their own mutex/critical section. In practice, this means that -// mutex collisions (and hence context switches) only happen if they are -// absolutely essential. However, on some platforms, creating a lot of -// mutexes can slow down the whole OS, so use this option with care. -// -// USING THE LIBRARY -// -// See the full documentation at http://sigslot.sourceforge.net/ -// -// - -#ifndef SIGSLOT_H__ -#define SIGSLOT_H__ - -#include -#include - -#if defined(SIGSLOT_PURE_ISO) || (!defined(WIN32) && !defined(__GNUG__) && !defined(SIGSLOT_USE_POSIX_THREADS)) -# define _SIGSLOT_SINGLE_THREADED -#elif defined(WIN32) -# define _SIGSLOT_HAS_WIN32_THREADS -# include -#elif defined(__GNUG__) || defined(SIGSLOT_USE_POSIX_THREADS) -# define _SIGSLOT_HAS_POSIX_THREADS -# include -#else -# define _SIGSLOT_SINGLE_THREADED -#endif - -#define SIGSLOT_DEFAULT_MT_POLICY multi_threaded_global - -#ifndef SIGSLOT_DEFAULT_MT_POLICY -# ifdef _SIGSLOT_SINGLE_THREADED -# define SIGSLOT_DEFAULT_MT_POLICY single_threaded -# else -# define SIGSLOT_DEFAULT_MT_POLICY multi_threaded_local -# endif -#endif - - -namespace sigslot { - - class single_threaded - { - public: - single_threaded() - { - ; - } - - ~single_threaded() - { - ; - } - - void lock() - { - ; - } - - void unlock() - { - ; - } - }; - -#ifdef _SIGSLOT_HAS_WIN32_THREADS - // The multi threading policies only get compiled in if they are enabled. - class multi_threaded_global - { - public: - multi_threaded_global() - { - static bool isinitialised = false; - - if (!isinitialised) - { - InitializeCriticalSection(get_critsec()); - isinitialised = true; - } - } - - multi_threaded_global(const multi_threaded_global&) - { - ; - } - - ~multi_threaded_global() - { - ; - } - - void lock() - { - EnterCriticalSection(get_critsec()); - } - - void unlock() - { - LeaveCriticalSection(get_critsec()); - } - - private: - CRITICAL_SECTION* get_critsec() - { - static CRITICAL_SECTION g_critsec; - return &g_critsec; - } - }; - - class multi_threaded_local - { - public: - multi_threaded_local() - { - InitializeCriticalSection(&m_critsec); - } - - multi_threaded_local(const multi_threaded_local&) - { - InitializeCriticalSection(&m_critsec); - } - - ~multi_threaded_local() - { - DeleteCriticalSection(&m_critsec); - } - - void lock() - { - EnterCriticalSection(&m_critsec); - } - - void unlock() - { - LeaveCriticalSection(&m_critsec); - } - - private: - CRITICAL_SECTION m_critsec; - }; -#endif // _SIGSLOT_HAS_WIN32_THREADS - -#ifdef _SIGSLOT_HAS_POSIX_THREADS - // The multi threading policies only get compiled in if they are enabled. - class multi_threaded_global - { - public: - multi_threaded_global() - { - pthread_mutex_init(get_mutex(), NULL); - } - - multi_threaded_global(const multi_threaded_global&) - { - ; - } - - ~multi_threaded_global() - { - ; - } - - void lock() - { - pthread_mutex_lock(get_mutex()); - } - - void unlock() - { - pthread_mutex_unlock(get_mutex()); - } - - private: - pthread_mutex_t* get_mutex() - { - static pthread_mutex_t g_mutex; - return &g_mutex; - } - }; - - class multi_threaded_local - { - public: - multi_threaded_local() - { - pthread_mutex_init(&m_mutex, NULL); - } - - multi_threaded_local(const multi_threaded_local&) - { - pthread_mutex_init(&m_mutex, NULL); - } - - ~multi_threaded_local() - { - pthread_mutex_destroy(&m_mutex); - } - - void lock() - { - pthread_mutex_lock(&m_mutex); - } - - void unlock() - { - pthread_mutex_unlock(&m_mutex); - } - - private: - pthread_mutex_t m_mutex; - }; -#endif // _SIGSLOT_HAS_POSIX_THREADS - - template - class lock_block - { - public: - mt_policy *m_mutex; - - lock_block(mt_policy *mtx) - : m_mutex(mtx) - { - m_mutex->lock(); - } - - ~lock_block() - { - m_mutex->unlock(); - } - }; - - template - class has_slots; - - template - class _connection_base0 - { - public: - virtual ~_connection_base0() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit() = 0; - virtual _connection_base0* clone() = 0; - virtual _connection_base0* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base1 - { - public: - virtual ~_connection_base1() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type) = 0; - virtual _connection_base1* clone() = 0; - virtual _connection_base1* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base2 - { - public: - virtual ~_connection_base2() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type) = 0; - virtual _connection_base2* clone() = 0; - virtual _connection_base2* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base3 - { - public: - virtual ~_connection_base3() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type) = 0; - virtual _connection_base3* clone() = 0; - virtual _connection_base3* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base4 - { - public: - virtual ~_connection_base4() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type, arg4_type) = 0; - virtual _connection_base4* clone() = 0; - virtual _connection_base4* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base5 - { - public: - virtual ~_connection_base5() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type, arg4_type, - arg5_type) = 0; - virtual _connection_base5* clone() = 0; - virtual _connection_base5* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base6 - { - public: - virtual ~_connection_base6() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type, arg4_type, arg5_type, - arg6_type) = 0; - virtual _connection_base6* clone() = 0; - virtual _connection_base6* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base7 - { - public: - virtual ~_connection_base7() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type, arg4_type, arg5_type, - arg6_type, arg7_type) = 0; - virtual _connection_base7* clone() = 0; - virtual _connection_base7* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _connection_base8 - { - public: - virtual ~_connection_base8() { ; } - virtual has_slots* getdest() const = 0; - virtual void emit(arg1_type, arg2_type, arg3_type, arg4_type, arg5_type, - arg6_type, arg7_type, arg8_type) = 0; - virtual _connection_base8* clone() = 0; - virtual _connection_base8* duplicate(has_slots* pnewdest) = 0; - }; - - template - class _signal_base : public mt_policy - { - public: - virtual void slot_disconnect(has_slots* pslot) = 0; - virtual void slot_duplicate(const has_slots* poldslot, has_slots* pnewslot) = 0; - }; - - template - class has_slots : public mt_policy - { - private: - typedef typename std::set<_signal_base *> sender_set; - typedef typename sender_set::const_iterator const_iterator; - - public: - has_slots() - { - ; - } - - has_slots(const has_slots& hs) - : mt_policy(hs) - { - lock_block lock(this); - const_iterator it = hs.m_senders.begin(); - const_iterator itEnd = hs.m_senders.end(); - - while(it != itEnd) - { - (*it)->slot_duplicate(&hs, this); - m_senders.insert(*it); - ++it; - } - } - - void signal_connect(_signal_base* sender) - { - lock_block lock(this); - m_senders.insert(sender); - } - - void signal_disconnect(_signal_base* sender) - { - lock_block lock(this); - m_senders.erase(sender); - } - - virtual ~has_slots() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_senders.begin(); - const_iterator itEnd = m_senders.end(); - - while(it != itEnd) - { - (*it)->slot_disconnect(this); - ++it; - } - - m_senders.erase(m_senders.begin(), m_senders.end()); - } - - private: - sender_set m_senders; - }; - - template - class _signal_base0 : public _signal_base - { - public: - typedef typename std::list<_connection_base0 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base0() - { - ; - } - - _signal_base0(const _signal_base0& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - ~_signal_base0() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base1 : public _signal_base - { - public: - typedef typename std::list<_connection_base1 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base1() - { - ; - } - - _signal_base1(const _signal_base1& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base1() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base2 : public _signal_base - { - public: - typedef typename std::list<_connection_base2 *> - connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base2() - { - ; - } - - _signal_base2(const _signal_base2& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base2() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base3 : public _signal_base - { - public: - typedef std::list<_connection_base3 *> - connections_list; - - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - _signal_base3() - { - ; - } - - _signal_base3(const _signal_base3& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base3() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base4 : public _signal_base - { - public: - typedef std::list<_connection_base4 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base4() - { - ; - } - - _signal_base4(const _signal_base4& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base4() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - this->m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base5 : public _signal_base - { - public: - typedef std::list<_connection_base5 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base5() - { - ; - } - - _signal_base5(const _signal_base5& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base5() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base6 : public _signal_base - { - public: - typedef std::list<_connection_base6 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base6() - { - ; - } - - _signal_base6(const _signal_base6& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base6() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base7 : public _signal_base - { - public: - typedef std::list<_connection_base7 *> connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base7() - { - ; - } - - _signal_base7(const _signal_base7& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base7() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - template - class _signal_base8 : public _signal_base - { - public: - typedef std::list<_connection_base8 *> - connections_list; - typedef typename connections_list::const_iterator const_iterator; - typedef typename connections_list::iterator iterator; - - _signal_base8() - { - ; - } - - _signal_base8(const _signal_base8& s) - : _signal_base(s) - { - lock_block lock(this); - const_iterator it = s.m_connected_slots.begin(); - const_iterator itEnd = s.m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_connect(this); - m_connected_slots.push_back((*it)->clone()); - - ++it; - } - } - - void slot_duplicate(const has_slots* oldtarget, has_slots* newtarget) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == oldtarget) - { - m_connected_slots.push_back((*it)->duplicate(newtarget)); - } - - ++it; - } - } - - ~_signal_base8() - { - disconnect_all(); - } - - void disconnect_all() - { - lock_block lock(this); - const_iterator it = m_connected_slots.begin(); - const_iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - (*it)->getdest()->signal_disconnect(this); - delete *it; - - ++it; - } - - m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end()); - } - - void disconnect(has_slots* pclass) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - if ((*it)->getdest() == pclass) - { - delete *it; - m_connected_slots.erase(it); - pclass->signal_disconnect(this); - return; - } - - ++it; - } - } - - void slot_disconnect(has_slots* pslot) - { - lock_block lock(this); - iterator it = m_connected_slots.begin(); - iterator itEnd = m_connected_slots.end(); - - while(it != itEnd) - { - iterator itNext = it; - ++itNext; - - if ((*it)->getdest() == pslot) - { - delete *it; - m_connected_slots.erase(it); - // delete *it; - } - - it = itNext; - } - } - - protected: - connections_list m_connected_slots; - }; - - - template - class _connection0 : public _connection_base0 - { - public: - _connection0() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection0(dest_type* pobject, void (dest_type::*pmemfun)()) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection0() - { - ; - } - - virtual _connection_base0* clone() - { - return new _connection0(*this); - } - - virtual _connection_base0* duplicate(has_slots* pnewdest) - { - return new _connection0((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit() - { - (m_pobject->*m_pmemfun)(); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(); - }; - - template - class _connection1 : public _connection_base1 - { - public: - _connection1() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection1(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection1() - { - ; - } - - virtual _connection_base1* clone() - { - return new _connection1(*this); - } - - virtual _connection_base1* duplicate(has_slots* pnewdest) - { - return new _connection1((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1) - { - (m_pobject->*m_pmemfun)(a1); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type); - }; - - template - class _connection2 : public _connection_base2 - { - public: - _connection2() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection2(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection2() - { - ; - } - - - virtual _connection_base2* clone() - { - return new _connection2(*this); - } - - virtual _connection_base2* duplicate(has_slots* pnewdest) - { - return new _connection2((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2) - { - (m_pobject->*m_pmemfun)(a1, a2); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type); - }; - - template - class _connection3 : public _connection_base3 - { - public: - _connection3() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection3(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection3() - { - ; - } - - - virtual _connection_base3* clone() - { - return new _connection3(*this); - } - - virtual _connection_base3* duplicate(has_slots* pnewdest) - { - return new _connection3((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3) - { - (m_pobject->*m_pmemfun)(a1, a2, a3); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type); - }; - - template - class _connection4 : public _connection_base4 - { - public: - _connection4() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection4(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection4() - { - ; - } - - virtual _connection_base4* clone() - { - return new _connection4(*this); - } - - virtual _connection_base4* duplicate(has_slots* pnewdest) - { - return new _connection4((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, - arg4_type a4) - { - (m_pobject->*m_pmemfun)(a1, a2, a3, a4); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, - arg4_type); - }; - - template - class _connection5 : public _connection_base5 - { - public: - _connection5() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection5(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection5() - { - ; - } - - virtual _connection_base5* clone() - { - return new _connection5(*this); - } - - virtual _connection_base5* duplicate(has_slots* pnewdest) - { - return new _connection5((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5) - { - (m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type, - arg5_type); - }; - - template - class _connection6 : public _connection_base6 - { - public: - _connection6() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection6(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection6() - { - ; - } - - virtual _connection_base6* clone() - { - return new _connection6(*this); - } - - virtual _connection_base6* duplicate(has_slots* pnewdest) - { - return new _connection6((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6) - { - (m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5, a6); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type, - arg5_type, arg6_type); - }; - - template - class _connection7 : public _connection_base7 - { - public: - _connection7() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection7(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, arg7_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection7() - { - ; - } - - virtual _connection_base7* clone() - { - return new _connection7(*this); - } - - virtual _connection_base7* duplicate(has_slots* pnewdest) - { - return new _connection7((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7) - { - (m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5, a6, a7); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type, - arg5_type, arg6_type, arg7_type); - }; - - template - class _connection8 : public _connection_base8 - { - public: - _connection8() - { - this->pobject = NULL; - this->pmemfun = NULL; - } - - _connection8(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, - arg7_type, arg8_type)) - { - m_pobject = pobject; - m_pmemfun = pmemfun; - } - - virtual ~_connection8() - { - ; - } - - virtual _connection_base8* clone() - { - return new _connection8(*this); - } - - virtual _connection_base8* duplicate(has_slots* pnewdest) - { - return new _connection8((dest_type *)pnewdest, m_pmemfun); - } - - virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7, arg8_type a8) - { - (m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5, a6, a7, a8); - } - - virtual has_slots* getdest() const - { - return m_pobject; - } - - private: - dest_type* m_pobject; - void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type, - arg5_type, arg6_type, arg7_type, arg8_type); - }; - - template - class signal0 : public _signal_base0 - { - public: - typedef typename _signal_base0::connections_list::const_iterator const_iterator; - signal0() - { - ; - } - - signal0(const signal0& s) - : _signal_base0(s) - { - ; - } - - virtual ~signal0() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)()) - { - lock_block lock(this); - _connection0* conn = - new _connection0(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit() - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(); - - it = itNext; - } - } - - void operator()() - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(); - - it = itNext; - } - } - }; - - template - class signal1 : public _signal_base1 - { - public: - typedef typename _signal_base1::connections_list::const_iterator const_iterator; - signal1() - { - ; - } - - signal1(const signal1& s) - : _signal_base1(s) - { - ; - } - - virtual ~signal1() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type)) - { - lock_block lock(this); - _connection1* conn = - new _connection1(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1); - - it = itNext; - } - } - - void operator()(arg1_type a1) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1); - - it = itNext; - } - } - }; - - template - class signal2 : public _signal_base2 - { - public: - typedef typename _signal_base2::connections_list::const_iterator const_iterator; - signal2() - { - ; - } - - signal2(const signal2& s) - : _signal_base2(s) - { - ; - } - - virtual ~signal2() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type)) - { - lock_block lock(this); - _connection2* conn = new - _connection2(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2); - - it = itNext; - } - } - }; - - template - class signal3 : public _signal_base3 - { - public: - typedef typename _signal_base3::connections_list::const_iterator const_iterator; - signal3() - { - ; - } - - signal3(const signal3& s) - : _signal_base3(s) - { - ; - } - - virtual ~signal3() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type)) - { - lock_block lock(this); - _connection3* conn = - new _connection3(pclass, - pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3); - - it = itNext; - } - } - }; - - template - class signal4 : public _signal_base4 - { - public: - typedef typename _signal_base4::connections_list::const_iterator const_iterator; - signal4() - { - ; - } - - signal4(const signal4& s) - : _signal_base4(s) - { - ; - } - - virtual ~signal4() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type)) - { - lock_block lock(this); - _connection4* - conn = new _connection4(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4); - - it = itNext; - } - } - }; - - template - class signal5 : public _signal_base5 - { - public: - typedef typename _signal_base5::connections_list::const_iterator const_iterator; - signal5() - { - ; - } - - signal5(const signal5& s) - : _signal_base5(s) - { - ; - } - - virtual ~signal5() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type)) - { - lock_block lock(this); - _connection5* conn = new _connection5(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5); - - it = itNext; - } - } - }; - - - template - class signal6 : public _signal_base6 - { - public: - typedef typename _signal_base6::connections_list::const_iterator const_iterator; - signal6() - { - ; - } - - signal6(const signal6& s) - : _signal_base6(s) - { - ; - } - - virtual ~signal6() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type)) - { - lock_block lock(this); - _connection6* conn = - new _connection6(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6); - - it = itNext; - } - } - }; - - template - class signal7 : public _signal_base7 - { - public: - typedef typename _signal_base7::connections_list::const_iterator const_iterator; - signal7() - { - ; - } - - signal7(const signal7& s) - : _signal_base7(s) - { - ; - } - - virtual ~signal7() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, - arg7_type)) - { - lock_block lock(this); - _connection7* conn = - new _connection7(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6, a7); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6, a7); - - it = itNext; - } - } - }; - - template - class signal8 : public _signal_base8 - { - public: - typedef typename _signal_base8::connections_list::const_iterator const_iterator; - signal8() - { - ; - } - - signal8(const signal8& s) - : _signal_base8(s) - { - ; - } - - virtual ~signal8() - { - ; - } - - template - void connect(desttype* pclass, void (desttype::*pmemfun)(arg1_type, - arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, - arg7_type, arg8_type)) - { - lock_block lock(this); - _connection8* conn = - new _connection8(pclass, pmemfun); - this->m_connected_slots.push_back(conn); - pclass->signal_connect(this); - } - - void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7, arg8_type a8) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6, a7, a8); - - it = itNext; - } - } - - void operator()(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, - arg5_type a5, arg6_type a6, arg7_type a7, arg8_type a8) - { - lock_block lock(this); - const_iterator itNext, it = this->m_connected_slots.begin(); - const_iterator itEnd = this->m_connected_slots.end(); - - while(it != itEnd) - { - itNext = it; - ++itNext; - - (*it)->emit(a1, a2, a3, a4, a5, a6, a7, a8); - - it = itNext; - } - } - }; - -} // namespace sigslot - -#endif // SIGSLOT_H__ - diff --git a/plugins/!Deprecated/Dbx_tree/src/stdafx.cpp b/plugins/!Deprecated/Dbx_tree/src/stdafx.cpp deleted file mode 100644 index ecbd50557a..0000000000 --- a/plugins/!Deprecated/Dbx_tree/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "Interface.h" \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj deleted file mode 100644 index 459dc82a25..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj +++ /dev/null @@ -1,172 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_ARC4 - {F60935E3-8F27-46E2-8598-013E7D4C90E7} - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - ARC4 - ARC4 - ARC4 - ARC4 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj.filters deleted file mode 100644 index a365d9adcd..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_10.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj deleted file mode 100644 index fa50ee80e4..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj +++ /dev/null @@ -1,175 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_ARC4 - {F60935E3-8F27-46E2-8598-013E7D4C90E7} - - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - ARC4 - ARC4 - ARC4 - ARC4 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - false - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj.filters deleted file mode 100644 index a365d9adcd..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/ARC4_12.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/res/Version.rc b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/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/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.cpp b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.cpp deleted file mode 100644 index 7f3780e6a2..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 "ARC4.h" -#include - -const wchar_t * ARC4::Name() -{ - return cName; -} -const wchar_t * ARC4::Description() -{ - return cDescription; -} -const uint32_t ARC4::BlockSizeBytes() -{ - return cBlockSizeBytes; -} -const bool ARC4::IsStreamCipher() -{ - return cIsStreamCipher; -} - -ARC4::ARC4() -{ - -} -ARC4::~ARC4() -{ - -} - -CCipher::TCipherInterface* ARC4::Create() -{ - return (new ARC4())->m_Interface; -} - -void ARC4::SetKey(void* Key, uint32_t KeyLength) -{ - uint8_t swapbyte; - uint8_t index1; - uint8_t index2; - unsigned int i; - - uint8_t * k = (uint8_t *) Key; - - for (i = 0; i < 256; ++i) - State[i] = i; - - x = 0; - y = 0; - index1 = 0; - index2 = 0; - for (i = 0; i < 256; ++i) - { - index2 = (k[index1] + State[i] + index2) & 0xff; - swapbyte = State[i]; - State[i] = State[index2]; - State[index2] = swapbyte; - index1 = (index1 + 1) % KeyLength; - } - - for (i = 0; i < 3742; ++i) - Stream(); - - Backx = x; - Backy = y; - memcpy(BackState, State, sizeof(State)); -} - -inline uint8_t ARC4::Stream() -{ - uint8_t swapbyte; - - x = (x + 1) & 0xff; - y = (State[x] + y) & 0xff; - - swapbyte = State[x]; - State[x] = State[y]; - State[y] = swapbyte; - - return State[ (State[x] + State[y]) & 0xff ]; -} - -void ARC4::Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - uint8_t * dat = (uint8_t *) Data; - x = Backx; - y = Backy; - memcpy(State, BackState, sizeof(State)); - - for (unsigned int i = (Nonce + (Nonce >> 8) + (Nonce >> 16) + (Nonce >> 24)) & 0x1ff; i > 0; --i) - Stream(); - - while (Size > 0) - { - (*dat) = (*dat) ^ Stream(); - --Size; - ++dat; - } -} -void ARC4::Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - Encrypt(Data, Size, Nonce, StartByte); -} - -extern "C" __declspec(dllexport) const TCipherInfo* CipherInfo(void * Reserved) -{ - return &ARC4::cCipherInfo; -} diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.h deleted file mode 100644 index 48fdc35312..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/ARC4.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 - -#include "Cipher.h" - -class ARC4 : public CCipher -{ -private: - uint8_t x; - uint8_t y; - uint8_t State[256]; - - uint8_t Backx; - uint8_t Backy; - uint8_t BackState[256]; - - uint8_t Stream(); - - static const wchar_t* cName; - static const wchar_t* cDescription; - static const uint32_t cBlockSizeBytes = 1; - static const bool cIsStreamCipher = true; - -public: - const wchar_t * __cdecl Name(); - const wchar_t * __cdecl Description(); - const uint32_t __cdecl BlockSizeBytes(); - const bool __cdecl IsStreamCipher(); - - static const TCipherInfo cCipherInfo; - - ARC4(); - ~ARC4(); - static CCipher::TCipherInterface* __cdecl Create(); - - void __cdecl SetKey(void* Key, uint32_t KeyLength); - void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - -}; - -const wchar_t* ARC4::cName = L"ARC4"; -const wchar_t* ARC4::cDescription = L"Streamcipher - 8bit step, fast, Ron Rivest 1987"; -const TCipherInfo ARC4::cCipherInfo = {sizeof(TCipherInfo), 'ARC4', cName, cDescription, &ARC4::Create}; diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/Version.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/Version.h deleted file mode 100644 index 62fb6e2083..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/ARC4/src/Version.h +++ /dev/null @@ -1,11 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 1 - -#include - -#define __PLUGIN_NAME "ARC4" -#define __FILENAME "ARC4.dll" -#define __DESCRIPTION "Streamcipher - 8bit step, fast." -#define __COPYRIGHT "© 1987 Ron Rivest" diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj deleted file mode 100644 index 6c7e12552c..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj +++ /dev/null @@ -1,175 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_Cast128 - {7E88D7F5-8B0A-4B79-84CD-D7982D4E0D4D} - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - Cast128 - Cast128 - Cast128 - Cast128 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj.filters deleted file mode 100644 index 7b40a9b31d..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_10.vcxproj.filters +++ /dev/null @@ -1,43 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj deleted file mode 100644 index 8d77a18622..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj +++ /dev/null @@ -1,178 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_Cast128 - {7E88D7F5-8B0A-4B79-84CD-D7982D4E0D4D} - - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - Cast128 - Cast128 - Cast128 - Cast128 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - false - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;CAST128_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj.filters deleted file mode 100644 index 7b40a9b31d..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/Cast128_12.vcxproj.filters +++ /dev/null @@ -1,43 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/res/Version.rc b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/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/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.cpp b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.cpp deleted file mode 100644 index 2814a4142b..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 "CAST128.h" -#include "CAST128.inc" - -const wchar_t * CAST128::Name() -{ - return cName; -} -const wchar_t * CAST128::Description() -{ - return cDescription; -} -const uint32_t CAST128::BlockSizeBytes() -{ - return cBlockSizeBytes; -} -const bool CAST128::IsStreamCipher() -{ - return cIsStreamCipher; -} - -CAST128::CAST128() -{ - -} -CAST128::~CAST128() -{ - -} -CCipher::TCipherInterface* CAST128::Create() -{ - return (new CAST128())->m_Interface; -} - -void CAST128::SetKey(void* Key, uint32_t KeyLength) -{ - uint8_t k128[16] = "Mirandadbx_tree"; - int i = 0; - uint8_t* k = (uint8_t*) Key; - while (KeyLength > 0) - { - k128[i] = k128[i] ^ (*k); - i = (i + 1) % 16; - ++k; - --KeyLength; - } - CreateSubKeys(k128); -} -void CAST128::Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - for (uint32_t i = 0; i <= Size - BlockSizeBytes(); i += BlockSizeBytes()) - { - EncryptBlock((uint8_t*)Data + i); - StartByte += BlockSizeBytes(); - } -} -void CAST128::Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - for (uint32_t i = 0; i <= Size - BlockSizeBytes(); i += BlockSizeBytes()) - { - DecryptBlock((uint8_t*)Data + i); - StartByte += BlockSizeBytes(); - } -} - -void CAST128::CreateSubKeys(uint8_t* Key) -{ - union { - uint8_t z[16]; - uint32_t i[4]; - } t; - - uint32_t* k; - k = (uint32_t*) Key; - - t.i[0] = k[0] ^ S5[Key[0xD]] ^ S6[Key[0xF]] ^ S7[Key[0xC]] ^ S8[Key[0xE]] ^ S7[Key[0x8]]; - t.i[1] = k[2] ^ S5[t.z[0x0]] ^ S6[t.z[0x2]] ^ S7[t.z[0x1]] ^ S8[t.z[0x3]] ^ S8[Key[0xA]]; - t.i[2] = k[3] ^ S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S5[Key[0x9]]; - t.i[3] = k[1] ^ S5[t.z[0xA]] ^ S6[t.z[0x9]] ^ S7[t.z[0xB]] ^ S8[t.z[0x8]] ^ S6[Key[0xB]]; - - Km[0x0] = S5[t.z[0x8]] ^ S6[t.z[0x9]] ^ S7[t.z[0x7]] ^ S8[t.z[0x6]] ^ S5[t.z[0x2]]; - Km[0x1] = S5[t.z[0xA]] ^ S6[t.z[0xB]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S6[t.z[0x6]]; - Km[0x2] = S5[t.z[0xC]] ^ S6[t.z[0xD]] ^ S7[t.z[0x3]] ^ S8[t.z[0x2]] ^ S7[t.z[0x9]]; - Km[0x3] = S5[t.z[0xE]] ^ S6[t.z[0xF]] ^ S7[t.z[0x1]] ^ S8[t.z[0x0]] ^ S8[t.z[0xC]]; - - k[0] = t.i[2] ^ S5[t.z[0x5]] ^ S6[t.z[0x7]] ^ S7[t.z[0x4]] ^ S8[t.z[0x6]] ^ S7[t.z[0x0]]; - k[1] = t.i[0] ^ S5[Key[0x0]] ^ S6[Key[0x2]] ^ S7[Key[0x1]] ^ S8[Key[0x3]] ^ S8[t.z[0x2]]; - k[2] = t.i[1] ^ S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S5[t.z[0x1]]; - k[3] = t.i[3] ^ S5[Key[0xA]] ^ S6[Key[0x9]] ^ S7[Key[0xB]] ^ S8[Key[0x8]] ^ S6[t.z[0x3]]; - - Km[0x4] = S5[Key[0x3]] ^ S6[Key[0x2]] ^ S7[Key[0xC]] ^ S8[Key[0xD]] ^ S5[Key[0x8]]; - Km[0x5] = S5[Key[0x1]] ^ S6[Key[0x0]] ^ S7[Key[0xE]] ^ S8[Key[0xF]] ^ S6[Key[0xD]]; - Km[0x6] = S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x8]] ^ S8[Key[0x9]] ^ S7[Key[0x3]]; - Km[0x7] = S5[Key[0x5]] ^ S6[Key[0x4]] ^ S7[Key[0xA]] ^ S8[Key[0xB]] ^ S8[Key[0x7]]; - - t.i[0] = k[0] ^ S5[Key[0xD]] ^ S6[Key[0xF]] ^ S7[Key[0xC]] ^ S8[Key[0xE]] ^ S7[Key[0x8]]; - t.i[1] = k[2] ^ S5[t.z[0x0]] ^ S6[t.z[0x2]] ^ S7[t.z[0x1]] ^ S8[t.z[0x3]] ^ S8[Key[0xA]]; - t.i[2] = k[3] ^ S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S5[Key[0x9]]; - t.i[3] = k[1] ^ S5[t.z[0xA]] ^ S6[t.z[0x9]] ^ S7[t.z[0xB]] ^ S8[t.z[0x8]] ^ S6[Key[0xB]]; - - Km[0x8] = S5[t.z[0x3]] ^ S6[t.z[0x2]] ^ S7[t.z[0xC]] ^ S8[t.z[0xD]] ^ S5[t.z[0x9]]; - Km[0x9] = S5[t.z[0x1]] ^ S6[t.z[0x0]] ^ S7[t.z[0xE]] ^ S8[t.z[0xF]] ^ S6[t.z[0xC]]; - Km[0xa] = S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x8]] ^ S8[t.z[0x9]] ^ S7[t.z[0x2]]; - Km[0xb] = S5[t.z[0x5]] ^ S6[t.z[0x4]] ^ S7[t.z[0xA]] ^ S8[t.z[0xB]] ^ S8[t.z[0x6]]; - - k[0] = t.i[2] ^ S5[t.z[0x5]] ^ S6[t.z[0x7]] ^ S7[t.z[0x4]] ^ S8[t.z[0x6]] ^ S7[t.z[0x0]]; - k[1] = t.i[0] ^ S5[Key[0x0]] ^ S6[Key[0x2]] ^ S7[Key[0x1]] ^ S8[Key[0x3]] ^ S8[t.z[0x2]]; - k[2] = t.i[1] ^ S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S5[t.z[0x1]]; - k[3] = t.i[3] ^ S5[Key[0xA]] ^ S6[Key[0x9]] ^ S7[Key[0xB]] ^ S8[Key[0x8]] ^ S6[t.z[0x3]]; - - Km[0xc] = S5[Key[0x8]] ^ S6[Key[0x9]] ^ S7[Key[0x7]] ^ S8[Key[0x6]] ^ S5[Key[0x3]]; - Km[0xd] = S5[Key[0xA]] ^ S6[Key[0xB]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S6[Key[0x7]]; - Km[0xe] = S5[Key[0xC]] ^ S6[Key[0xD]] ^ S7[Key[0x3]] ^ S8[Key[0x2]] ^ S7[Key[0x8]]; - Km[0xf] = S5[Key[0xE]] ^ S6[Key[0xF]] ^ S7[Key[0x1]] ^ S8[Key[0x0]] ^ S8[Key[0xD]]; - - - - t.i[0] = k[0] ^ S5[Key[0xD]] ^ S6[Key[0xF]] ^ S7[Key[0xC]] ^ S8[Key[0xE]] ^ S7[Key[0x8]]; - t.i[1] = k[2] ^ S5[t.z[0x0]] ^ S6[t.z[0x2]] ^ S7[t.z[0x1]] ^ S8[t.z[0x3]] ^ S8[Key[0xA]]; - t.i[2] = k[3] ^ S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S5[Key[0x9]]; - t.i[3] = k[1] ^ S5[t.z[0xA]] ^ S6[t.z[0x9]] ^ S7[t.z[0xB]] ^ S8[t.z[0x8]] ^ S6[Key[0xB]]; - - Kr[0x0] = S5[t.z[0x8]] ^ S6[t.z[0x9]] ^ S7[t.z[0x7]] ^ S8[t.z[0x6]] ^ S5[t.z[0x2]]; - Kr[0x1] = S5[t.z[0xA]] ^ S6[t.z[0xB]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S6[t.z[0x6]]; - Kr[0x2] = S5[t.z[0xC]] ^ S6[t.z[0xD]] ^ S7[t.z[0x3]] ^ S8[t.z[0x2]] ^ S7[t.z[0x9]]; - Kr[0x3] = S5[t.z[0xE]] ^ S6[t.z[0xF]] ^ S7[t.z[0x1]] ^ S8[t.z[0x0]] ^ S8[t.z[0xC]]; - - k[0] = t.i[2] ^ S5[t.z[0x5]] ^ S6[t.z[0x7]] ^ S7[t.z[0x4]] ^ S8[t.z[0x6]] ^ S7[t.z[0x0]]; - k[1] = t.i[0] ^ S5[Key[0x0]] ^ S6[Key[0x2]] ^ S7[Key[0x1]] ^ S8[Key[0x3]] ^ S8[t.z[0x2]]; - k[2] = t.i[1] ^ S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S5[t.z[0x1]]; - k[3] = t.i[3] ^ S5[Key[0xA]] ^ S6[Key[0x9]] ^ S7[Key[0xB]] ^ S8[Key[0x8]] ^ S6[t.z[0x3]]; - - Kr[0x4] = S5[Key[0x3]] ^ S6[Key[0x2]] ^ S7[Key[0xC]] ^ S8[Key[0xD]] ^ S5[Key[0x8]]; - Kr[0x5] = S5[Key[0x1]] ^ S6[Key[0x0]] ^ S7[Key[0xE]] ^ S8[Key[0xF]] ^ S6[Key[0xD]]; - Kr[0x6] = S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x8]] ^ S8[Key[0x9]] ^ S7[Key[0x3]]; - Kr[0x7] = S5[Key[0x5]] ^ S6[Key[0x4]] ^ S7[Key[0xA]] ^ S8[Key[0xB]] ^ S8[Key[0x7]]; - - t.i[0] = k[0] ^ S5[Key[0xD]] ^ S6[Key[0xF]] ^ S7[Key[0xC]] ^ S8[Key[0xE]] ^ S7[Key[0x8]]; - t.i[1] = k[2] ^ S5[t.z[0x0]] ^ S6[t.z[0x2]] ^ S7[t.z[0x1]] ^ S8[t.z[0x3]] ^ S8[Key[0xA]]; - t.i[2] = k[3] ^ S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x5]] ^ S8[t.z[0x4]] ^ S5[Key[0x9]]; - t.i[3] = k[1] ^ S5[t.z[0xA]] ^ S6[t.z[0x9]] ^ S7[t.z[0xB]] ^ S8[t.z[0x8]] ^ S6[Key[0xB]]; - - Kr[0x8] = S5[t.z[0x3]] ^ S6[t.z[0x2]] ^ S7[t.z[0xC]] ^ S8[t.z[0xD]] ^ S5[t.z[0x9]]; - Kr[0x9] = S5[t.z[0x1]] ^ S6[t.z[0x0]] ^ S7[t.z[0xE]] ^ S8[t.z[0xF]] ^ S6[t.z[0xC]]; - Kr[0xa] = S5[t.z[0x7]] ^ S6[t.z[0x6]] ^ S7[t.z[0x8]] ^ S8[t.z[0x9]] ^ S7[t.z[0x2]]; - Kr[0xb] = S5[t.z[0x5]] ^ S6[t.z[0x4]] ^ S7[t.z[0xA]] ^ S8[t.z[0xB]] ^ S8[t.z[0x6]]; - - k[0] = t.i[2] ^ S5[t.z[0x5]] ^ S6[t.z[0x7]] ^ S7[t.z[0x4]] ^ S8[t.z[0x6]] ^ S7[t.z[0x0]]; - k[1] = t.i[0] ^ S5[Key[0x0]] ^ S6[Key[0x2]] ^ S7[Key[0x1]] ^ S8[Key[0x3]] ^ S8[t.z[0x2]]; - k[2] = t.i[1] ^ S5[Key[0x7]] ^ S6[Key[0x6]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S5[t.z[0x1]]; - k[3] = t.i[3] ^ S5[Key[0xA]] ^ S6[Key[0x9]] ^ S7[Key[0xB]] ^ S8[Key[0x8]] ^ S6[t.z[0x3]]; - - Kr[0xc] = S5[Key[0x8]] ^ S6[Key[0x9]] ^ S7[Key[0x7]] ^ S8[Key[0x6]] ^ S5[Key[0x3]]; - Kr[0xd] = S5[Key[0xA]] ^ S6[Key[0xB]] ^ S7[Key[0x5]] ^ S8[Key[0x4]] ^ S6[Key[0x7]]; - Kr[0xe] = S5[Key[0xC]] ^ S6[Key[0xD]] ^ S7[Key[0x3]] ^ S8[Key[0x2]] ^ S7[Key[0x8]]; - Kr[0xf] = S5[Key[0xE]] ^ S6[Key[0xF]] ^ S7[Key[0x1]] ^ S8[Key[0x0]] ^ S8[Key[0xD]]; - - - for (int i = 0; i < 16; i++) - Kr[i] = Kr[i] & 0x0000001F; -} - - -inline void CAST128::EncryptBlock(uint8_t *Block) -{ - uint32_t l, r, tmp; - union { - uint8_t byte[4]; - uint32_t block; - } t; - - l = ((uint32_t*)Block)[0]; - r = ((uint32_t*)Block)[1]; - - for (int i = 0; i < 16; i++) - { - if ((i % 3) == 0) - { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] ^ S2[t.byte[1]]) - S3[t.byte[2]]) + S4[t.byte[3]]; - } else if ((i % 3) == 1) - { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] - S2[t.byte[1]]) + S3[t.byte[2]]) ^ S4[t.byte[3]]; - } else { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] + S2[t.byte[1]]) ^ S3[t.byte[2]]) - S4[t.byte[3]]; - } - - tmp = r; - r = l ^ t.block; - l = tmp; - } - - ((uint32_t*)Block)[0] = l; - ((uint32_t*)Block)[1] = r; -} - - - -inline void CAST128::DecryptBlock(uint8_t *Block) -{ - uint32_t l, r, tmp; - union { - uint8_t byte[4]; - uint32_t block; - } t; - - r = ((uint32_t*)Block)[0]; - l = ((uint32_t*)Block)[1]; - - for (int i = 15; i >= 0; i--) - { - if ((i % 3) == 0) - { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] ^ S2[t.byte[1]]) - S3[t.byte[2]]) + S4[t.byte[3]]; - } else if ((i % 3) == 1) - { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] - S2[t.byte[1]]) + S3[t.byte[2]]) ^ S4[t.byte[3]]; - } else { - t.block = (t.block << Kr[i]) | (t.block >> (32 - Kr[i])); - t.block = ((S1[t.byte[0]] + S2[t.byte[1]]) ^ S3[t.byte[2]]) - S4[t.byte[3]]; - } - - tmp = r; - r = l ^ t.block; - l = tmp; - } - - ((uint32_t*)Block)[0] = r; - ((uint32_t*)Block)[1] = l; -} - -extern "C" __declspec(dllexport) const TCipherInfo* CipherInfo(void * Reserved) -{ - return &CAST128::cCipherInfo; -} diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.h deleted file mode 100644 index 9477254986..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 - -#include "Cipher.h" - -class CAST128 : public CCipher -{ -private: - uint32_t Km[16], Kr[16]; - - void EncryptBlock(uint8_t *Block); - void DecryptBlock(uint8_t *Block); - void CreateSubKeys(uint8_t* Key); - - static const wchar_t* cName; - static const wchar_t* cDescription; - static const uint32_t cBlockSizeBytes = 8; - static const bool cIsStreamCipher = false; - -public: - const wchar_t * __cdecl Name(); - const wchar_t * __cdecl Description(); - const uint32_t __cdecl BlockSizeBytes(); - const bool __cdecl IsStreamCipher(); - - static const TCipherInfo cCipherInfo; - - CAST128(); - ~CAST128(); - static CCipher::TCipherInterface* __cdecl Create(); - - void __cdecl SetKey(void* Key, uint32_t KeyLength); - void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - -}; - -const wchar_t* CAST128::cName = L"Cast128"; -const wchar_t* CAST128::cDescription = L"Blockcipher - 64bit block, fast and secure, Carlisle Adams and Stafford Tavares 1996"; -const TCipherInfo CAST128::cCipherInfo = {sizeof(TCipherInfo), 'Cast', cName, cDescription, &CAST128::Create}; diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.inc b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.inc deleted file mode 100644 index 8389acc92c..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/CAST128.inc +++ /dev/null @@ -1,302 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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. - -*/ - - -static const uint32_t S1[256] = { -0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, -0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, -0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, -0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, -0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, -0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, -0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, -0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, -0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, -0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, -0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, -0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, -0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, -0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, -0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, -0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, -0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, -0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, -0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, -0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, -0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, -0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, -0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, -0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, -0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, -0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, -0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, -0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, -0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, -0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, -0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, -0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, -}; - -static const uint32_t S2[256] = { -0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, -0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, -0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, -0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, -0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, -0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, -0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, -0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, -0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, -0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, -0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, -0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, -0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, -0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, -0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, -0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, -0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, -0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, -0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, -0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, -0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, -0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, -0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, -0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, -0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, -0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, -0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, -0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, -0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, -0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, -0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, -0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, -}; - -static const uint32_t S3[256] = { -0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, -0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, -0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, -0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, -0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, -0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, -0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, -0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, -0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, -0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, -0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, -0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, -0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, -0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, -0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, -0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, -0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, -0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, -0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, -0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, -0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, -0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, -0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, -0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, -0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, -0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, -0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, -0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, -0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, -0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, -0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, -0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, -}; - -static const uint32_t S4[256] = { -0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, -0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, -0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, -0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, -0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, -0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, -0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, -0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, -0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, -0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, -0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, -0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, -0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, -0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, -0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, -0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, -0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, -0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, -0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, -0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, -0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, -0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, -0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, -0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, -0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, -0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, -0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, -0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, -0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, -0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, -0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, -0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, -}; - -static const uint32_t S5[256] = { -0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, -0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, -0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, -0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, -0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, -0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, -0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, -0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, -0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, -0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, -0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, -0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, -0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, -0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, -0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, -0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, -0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, -0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, -0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, -0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, -0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, -0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, -0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, -0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, -0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, -0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, -0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, -0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, -0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, -0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, -0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, -0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, -}; - -static const uint32_t S6[256] = { -0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, -0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, -0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, -0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, -0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, -0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, -0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, -0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, -0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, -0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, -0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, -0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, -0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, -0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, -0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, -0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, -0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, -0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, -0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, -0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, -0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, -0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, -0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, -0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, -0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, -0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, -0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, -0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, -0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, -0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, -0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, -0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, -}; - -static const uint32_t S7[256] = { -0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, -0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, -0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, -0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, -0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, -0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, -0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, -0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, -0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, -0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, -0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, -0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, -0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, -0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, -0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, -0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, -0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, -0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, -0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, -0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, -0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, -0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, -0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, -0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, -0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, -0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, -0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, -0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, -0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, -0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, -0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, -0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, -}; - -static const uint32_t S8[256] = { -0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, -0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, -0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, -0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, -0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, -0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, -0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, -0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, -0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, -0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, -0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, -0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, -0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, -0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, -0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, -0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, -0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, -0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, -0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, -0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, -0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, -0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, -0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, -0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, -0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, -0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, -0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, -0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, -0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, -0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, -0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, -0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, -}; diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/Version.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/Version.h deleted file mode 100644 index 0a1e6d1e6e..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/CAST128/src/Version.h +++ /dev/null @@ -1,11 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 1 - -#include - -#define __PLUGIN_NAME "Cast128" -#define __FILENAME "Cast128.dll" -#define __DESCRIPTION "Blockcipher - 64bit block, fast and secure." -#define __COPYRIGHT "© 1996 Carlisle Adams and Stafford Tavares" diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/Common/Cipher.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/Common/Cipher.h deleted file mode 100644 index 6df8aaeb12..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/Common/Cipher.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -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 - -#include - -#include - -#pragma pack(push, 1) - -#ifdef __INTERFACE_ONLY__ -#define __INTERFACE_VIRTUAL__ -#else -#define __INTERFACE_VIRTUAL__ virtual -#endif - -class CCipher -{ -public: - typedef struct TCipherInterface - { - CCipher * self; - uint32_t Size; - void (__cdecl CCipher::*Destroy)(); - - const wchar_t* (__cdecl CCipher::*Name)(); - const wchar_t* (__cdecl CCipher::*Description)(); - const uint32_t (__cdecl CCipher::*BlockSizeBytes)(); - const bool (__cdecl CCipher::*IsStreamCipher)(); - - void (__cdecl CCipher::*SetKey)(void* Key, uint32_t KeyLength); - void (__cdecl CCipher::*Encrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - void (__cdecl CCipher::*Decrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - - } TCipherInterface; - TCipherInterface * m_Interface; - -#ifndef __INTERFACE_ONLY__ - virtual void __cdecl Destroy() - { - delete this; - } - - CCipher() - { - m_Interface = new TCipherInterface; - m_Interface->Size = sizeof(TCipherInterface); - m_Interface->self = this; - m_Interface->Destroy = &CCipher::Destroy; - m_Interface->Name = &CCipher::Name; - m_Interface->Description = &CCipher::Description; - m_Interface->BlockSizeBytes = &CCipher::BlockSizeBytes; - m_Interface->IsStreamCipher = &CCipher::IsStreamCipher; - m_Interface->SetKey = &CCipher::SetKey; - m_Interface->Encrypt = &CCipher::Encrypt; - m_Interface->Decrypt = &CCipher::Decrypt; - }; -#endif - -#ifdef __INTERFACE_ONLY__ - CCipher(TCipherInterface * Interface) - { - m_Interface = Interface; - }; -#endif - - __INTERFACE_VIRTUAL__ ~CCipher() -#ifdef __INTERFACE_ONLY__ - { - (m_Interface->self->*(m_Interface->Destroy))(); - } -#else - { } -#endif - ; - - __INTERFACE_VIRTUAL__ const wchar_t* __cdecl Name() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Name))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const wchar_t* __cdecl Description() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Description))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const uint32_t __cdecl BlockSizeBytes() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->BlockSizeBytes))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ const bool __cdecl IsStreamCipher() -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->IsStreamCipher))(); - } -#else - = 0 -#endif - ; - - __INTERFACE_VIRTUAL__ void __cdecl SetKey(void* Key, uint32_t KeyLength) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->SetKey))(Key, KeyLength); - } -#else - = 0 -#endif - ; - __INTERFACE_VIRTUAL__ void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Encrypt))(Data, Size, Nonce, StartByte); - } -#else - = 0 -#endif - ; - __INTERFACE_VIRTUAL__ void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -#ifdef __INTERFACE_ONLY__ - { - return (m_Interface->self->*(m_Interface->Decrypt))(Data, Size, Nonce, StartByte); - } -#else - = 0 -#endif - ; - -}; - -typedef struct TCipherInfo -{ - uint32_t cbSize; - const uint32_t ID; - const wchar_t* Name; - const wchar_t* Description; - CCipher::TCipherInterface * (__cdecl *Create)(); -} TCipherInfo; - -#pragma pack(pop) diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj deleted file mode 100644 index dbc1fcb910..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj +++ /dev/null @@ -1,172 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_HC256 - {541BE2B3-4320-47B8-AB64-C7F7ED0EFABA} - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - HC256 - HC256 - HC256 - HC256 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj.filters deleted file mode 100644 index 2a96e5d134..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_10.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj deleted file mode 100644 index 0859e55f12..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj +++ /dev/null @@ -1,175 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Dbx_tree_HC256 - {541BE2B3-4320-47B8-AB64-C7F7ED0EFABA} - - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\Encryption\ - $(SolutionDir)$(Configuration)64\Plugins\Encryption\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - HC256 - HC256 - HC256 - HC256 - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - EditAndContinue - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - false - - - - - Disabled - _DEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - ..\Common - true - true - true - Fast - - - true - Windows - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - Full - AnySuitable - Size - NDEBUG;_WINDOWS;_USRDLL;HC256_EXPORTS;%(PreprocessorDefinitions) - true - Level3 - ..\Common - true - true - Fast - - - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(ProfileDir)..\..\..\..\bin12\lib - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj.filters b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj.filters deleted file mode 100644 index 2a96e5d134..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/HC256_12.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/res/Version.rc b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/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/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.cpp b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.cpp deleted file mode 100644 index ea457cd4e3..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 "HC256.h" -#include -#include - -#define rotr(x,n) _lrotr(x,n) - -#define h1(x,y) { \ - uint8_t a,b,c,d; \ - a = (uint8_t) (x); \ - b = (uint8_t) ((x) >> 8); \ - c = (uint8_t) ((x) >> 16); \ - d = (uint8_t) ((x) >> 24); \ - (y) = Q[a]+Q[256+b]+Q[512+c]+Q[768+d]; \ -} -#define h2(x,y) { \ - uint8_t a,b,c,d; \ - a = (uint8_t) (x); \ - b = (uint8_t) ((x) >> 8); \ - c = (uint8_t) ((x) >> 16); \ - d = (uint8_t) ((x) >> 24); \ - (y) = P[a]+P[256+b]+P[512+c]+P[768+d]; \ -} -#define step_A(u,v,a,b,c,d,m){ \ - uint32_t tem0,tem1,tem2,tem3; \ - tem0 = rotr((v),23); \ - tem1 = rotr((c),10); \ - tem2 = ((v) ^ (c)) & 0x3ff; \ - (u) += (b)+(tem0^tem1)+Q[tem2]; \ - (a) = (u); \ - h1((d),tem3); \ - (m) ^= tem3 ^ (u) ; \ -} -#define step_B(u,v,a,b,c,d,m){ \ - uint32_t tem0,tem1,tem2,tem3; \ - tem0 = rotr((v),23); \ - tem1 = rotr((c),10); \ - tem2 = ((v) ^ (c)) & 0x3ff; \ - (u) += (b)+(tem0^tem1)+P[tem2]; \ - (a) = (u); \ - h2((d),tem3); \ - (m) ^= tem3 ^ (u) ; \ -} - - -#define f1(x) (rotr((x),7) ^ rotr((x),18) ^ ((x) >> 3)) -#define f2(x) (rotr((x),17) ^ rotr((x),19) ^ ((x) >> 10)) -#define f(a,b,c,d) (f2((a)) + (b) + f1((c)) + (d)) -#define feedback_1(u,v,b,c) { \ - uint32_t tem0,tem1,tem2; \ - tem0 = rotr((v),23); \ - tem1 = rotr((c),10); \ - tem2 = ((v) ^ (c)) & 0x3ff; \ - (u) += (b)+(tem0^tem1)+Q[tem2]; \ -} -#define feedback_2(u,v,b,c) { \ - uint32_t tem0,tem1,tem2; \ - tem0 = rotr((v),23); \ - tem1 = rotr((c),10); \ - tem2 = ((v) ^ (c)) & 0x3ff; \ - (u) += (b)+(tem0^tem1)+P[tem2]; \ -} - -const wchar_t * HC256::Name() -{ - return cName; -} -const wchar_t * HC256::Description() -{ - return cDescription; -} -const uint32_t HC256::BlockSizeBytes() -{ - return cBlockSizeBytes; -} -const bool HC256::IsStreamCipher() -{ - return cIsStreamCipher; -} - -HC256::HC256() -{ - -} -HC256::~HC256() -{ - -} -CCipher::TCipherInterface* HC256::Create() -{ - return (new HC256())->m_Interface; -} - -void HC256::SetKey(void* Key, uint32_t KeyLength) -{ - uint8_t k[32] = {0}; - - for (uint32_t i = 0; i < KeyLength; ++i) - { - k[i & 0x1f] ^= ((uint8_t *)Key)[i]; - } - CreateTables(k); -} -void HC256::Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - memcpy(X, BackX, sizeof(X)); - memcpy(Y, BackY, sizeof(Y)); - memcpy(P, BackP, sizeof(P)); - memcpy(Q, BackQ, sizeof(Q)); - - counter2048 = (Nonce + (Nonce >> 11) + (Nonce >> 22)) & 0x7ff; - - for (uint32_t i = 0; i <= Size - BlockSizeBytes(); i += BlockSizeBytes()) - { - EncryptBlock((uint32_t*)((uint8_t*)Data + i)); - StartByte += BlockSizeBytes(); - } -} -void HC256::Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte) -{ - Encrypt(Data, Size, Nonce, StartByte); -} - -inline void HC256::EncryptBlock(uint32_t *Data) -{ - uint32_t cc,dd; - cc = counter2048 & 0x3ff; - dd = (cc + 16) & 0x3ff; - if (counter2048 < 1024) - { - counter2048 = (counter2048 + 16) & 0x7ff; - step_A(P[cc+0], P[cc+1], X[0], X[6], X[13],X[4], Data[0]); - step_A(P[cc+1], P[cc+2], X[1], X[7], X[14],X[5], Data[1]); - step_A(P[cc+2], P[cc+3], X[2], X[8], X[15],X[6], Data[2]); - step_A(P[cc+3], P[cc+4], X[3], X[9], X[0], X[7], Data[3]); - step_A(P[cc+4], P[cc+5], X[4], X[10],X[1], X[8], Data[4]); - step_A(P[cc+5], P[cc+6], X[5], X[11],X[2], X[9], Data[5]); - step_A(P[cc+6], P[cc+7], X[6], X[12],X[3], X[10],Data[6]); - step_A(P[cc+7], P[cc+8], X[7], X[13],X[4], X[11],Data[7]); - step_A(P[cc+8], P[cc+9], X[8], X[14],X[5], X[12],Data[8]); - step_A(P[cc+9], P[cc+10],X[9], X[15],X[6], X[13],Data[9]); - step_A(P[cc+10],P[cc+11],X[10],X[0], X[7], X[14],Data[10]); - step_A(P[cc+11],P[cc+12],X[11],X[1], X[8], X[15],Data[11]); - step_A(P[cc+12],P[cc+13],X[12],X[2], X[9], X[0], Data[12]); - step_A(P[cc+13],P[cc+14],X[13],X[3], X[10],X[1], Data[13]); - step_A(P[cc+14],P[cc+15],X[14],X[4], X[11],X[2], Data[14]); - step_A(P[cc+15],P[dd+0], X[15],X[5], X[12],X[3], Data[15]); - - } else { - - counter2048 = (counter2048 + 16) & 0x7ff; - step_B(Q[cc+0], Q[cc+1], Y[0], Y[6], Y[13],Y[4], Data[0]); - step_B(Q[cc+1], Q[cc+2], Y[1], Y[7], Y[14],Y[5], Data[1]); - step_B(Q[cc+2], Q[cc+3], Y[2], Y[8], Y[15],Y[6], Data[2]); - step_B(Q[cc+3], Q[cc+4], Y[3], Y[9], Y[0], Y[7], Data[3]); - step_B(Q[cc+4], Q[cc+5], Y[4], Y[10],Y[1], Y[8], Data[4]); - step_B(Q[cc+5], Q[cc+6], Y[5], Y[11],Y[2], Y[9], Data[5]); - step_B(Q[cc+6], Q[cc+7], Y[6], Y[12],Y[3], Y[10],Data[6]); - step_B(Q[cc+7], Q[cc+8], Y[7], Y[13],Y[4], Y[11],Data[7]); - step_B(Q[cc+8], Q[cc+9], Y[8], Y[14],Y[5], Y[12],Data[8]); - step_B(Q[cc+9], Q[cc+10],Y[9], Y[15],Y[6], Y[13],Data[9]); - step_B(Q[cc+10],Q[cc+11],Y[10],Y[0], Y[7], Y[14],Data[10]); - step_B(Q[cc+11],Q[cc+12],Y[11],Y[1], Y[8], Y[15],Data[11]); - step_B(Q[cc+12],Q[cc+13],Y[12],Y[2], Y[9], Y[0], Data[12]); - step_B(Q[cc+13],Q[cc+14],Y[13],Y[3], Y[10],Y[1], Data[13]); - step_B(Q[cc+14],Q[cc+15],Y[14],Y[4], Y[11],Y[2], Data[14]); - step_B(Q[cc+15],Q[dd+0], Y[15],Y[5], Y[12],Y[3], Data[15]); - } -} -inline void HC256::CreateTables(uint8_t* Key) -{ - uint32_t i, j; - uint8_t iv[32] = "Miranda NG dbx_tree Protogenes!"; - //expand the key and iv into P and Q - for (i = 0; i < 8; i++) - P[i] = Key[i]; - for (i = 8; i < 16; i++) - P[i] = iv[i - 8]; - for (i = 16; i < 528; i++) - P[i] = f(P[i - 2], P[i - 7], P[i - 15], P[i - 16]) + i; - for (i = 0; i < 16; i++) - P[i] = P[i + 512]; - for (i = 16; i < 1024; i++) - P[i] = f(P[i - 2], P[i - 7], P[i - 15], P[i - 16]) + 512 + i; - for (i = 0; i < 16; i++) - Q[i] = P[1024 - 16 + i]; - for (i = 16; i < 32; i++) - Q[i] = f(Q[i - 2], Q[i - 7], Q[i - 15], Q[i - 16]) + 1520 + i; - for (i = 0; i < 16; i++) - Q[i] = Q[i + 16]; - for (i = 16; i < 1024;i++) - Q[i] = f(Q[i - 2], Q[i - 7], Q[i - 15], Q[i - 16]) + 1536 + i; - //run the cipher 4096 steps without generating output - for (i = 0; i < 2; i++) - { - for (j = 0; j < 10; j++) - feedback_1(P[j], P[j + 1], P[(j - 10) & 0x3ff], P[(j - 3) & 0x3ff]); - for (j = 10; j < 1023; j++) - feedback_1(P[j], P[j + 1], P[j - 10], P[j - 3]); - feedback_1(P[1023], P[0], P[1013], P[1020]); - for (j = 0; j < 10; j++) - feedback_2(Q[j], Q[j+1], Q[(j-10) & 0x3ff], Q[(j - 3) & 0x3ff]); - for (j = 10; j < 1023; j++) - feedback_2(Q[j], Q[j + 1], Q[j - 10], Q[j - 3]); - feedback_2(Q[1023], Q[0], Q[1013], Q[1020]); - } - //initialize counter2048, and tables X and Y - counter2048 = 0; - for (i = 0; i < 16; i++) - X[i] = P[1008 + i]; - for (i = 0; i < 16; i++) - Y[i] = Q[1008 + i]; -} - -extern "C" __declspec(dllexport) const TCipherInfo* CipherInfo(void * Reserved) -{ - return &HC256::cCipherInfo; -} diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.h deleted file mode 100644 index d4acb3195f..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/HC256.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2008 Michael "Protogenes" Kunz, - -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 - -#include "Cipher.h" - -class HC256 : public CCipher -{ -private: - uint32_t counter2048; - uint32_t P[1024], Q[1024]; - uint32_t X[16], Y[16]; - - uint32_t BackP[1024], BackQ[1024]; - uint32_t BackX[16], BackY[16]; - - void EncryptBlock(uint32_t *Data); - void CreateTables(uint8_t* Key); - - static const wchar_t* cName; - static const wchar_t* cDescription; - static const uint32_t cBlockSizeBytes = 64; - static const bool cIsStreamCipher = true; - -public: - - const wchar_t * __cdecl Name(); - const wchar_t * __cdecl Description(); - const uint32_t __cdecl BlockSizeBytes(); - const bool __cdecl IsStreamCipher(); - - static const TCipherInfo cCipherInfo; - - HC256(); - ~HC256(); - static CCipher::TCipherInterface* __cdecl Create(); - - void __cdecl SetKey(void* Key, uint32_t KeyLength); - void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte); - -}; - -const wchar_t* HC256::cName = L"HC-256"; -const wchar_t* HC256::cDescription = L"Streamcipher - 512bit step, very fast, Hongjun Wu 2005"; -const TCipherInfo HC256::cCipherInfo = {sizeof(TCipherInfo), 'HC25', cName, cDescription, &HC256::Create}; diff --git a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/Version.h b/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/Version.h deleted file mode 100644 index 69c4d2bdd6..0000000000 --- a/plugins/!Deprecated/Dbx_tree_cryptors/encryption/HC256/src/Version.h +++ /dev/null @@ -1,11 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 1 - -#include - -#define __PLUGIN_NAME "HC-256" -#define __FILENAME "HC256.dll" -#define __DESCRIPTION "Streamcipher - 512bit step, very fast." -#define __COPYRIGHT "© 2005 Hongjun Wu" diff --git a/plugins/!Deprecated/ExternalAPI/delphi/imgdecoder.pas b/plugins/!Deprecated/ExternalAPI/delphi/imgdecoder.pas deleted file mode 100644 index eea6ec2610..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/imgdecoder.pas +++ /dev/null @@ -1,114 +0,0 @@ -unit ImgDecoder; - -interface -uses Windows; - -function IsImgDecoderAvailable:boolean; -function ImgNewDecoder(var pDecoder:pointer):dword; -function ImgDeleteDecoder(pDecoder:pointer):dword; -function ImgNewDIBFromFile(pDecoder:pointer;Filename:PAnsiChar;var pImg:pointer):dword; -function ImgDeleteDIBSection(pImg:pointer):dword; -function ImgGetHandle(pImg:pointer;var pBitmap:HBITMAP;var ppDIBBits:pointer):dword; - -implementation - -const - hModule:THANDLE=0; -type - tImgNewDecoder =function(var pDecoder:pointer):dword; stdcall; - tImgDeleteDecoder =function(pDecoder:pointer):dword; stdcall; - tImgNewDIBFromFile =function(pDecoder:pointer;Filename:PAnsiChar;var pImg):dword; stdcall; - tImgDeleteDIBSection=function(pImg:pointer):dword; stdcall; - tImgGetHandle =function(pImg:pointer;var pBitmap:HBITMAP;var ppDIBBits:pointer):dword; stdcall; - -const - pImgNewDecoder :tImgNewDecoder = nil; - pImgDeleteDecoder :tImgDeleteDecoder = nil; - pImgNewDIBFromFile :tImgNewDIBFromFile = nil; - pImgDeleteDIBSection:tImgDeleteDIBSection = nil; - pImgGetHandle :tImgGetHandle = nil; - -function IsImgDecoderAvailable:boolean; -begin - result:=hModule<>0; -end; - -function ImgNewDecoder(var pDecoder:pointer):dword; -begin - if @pImgNewDecoder<>nil then - result:=pImgNewDecoder(pDecoder) - else - result:=0; -end; - -function ImgDeleteDecoder(pDecoder:pointer):dword; -begin - if @pImgDeleteDecoder<>nil then - result:=pImgDeleteDecoder(pDecoder) - else - result:=0; -end; - -function ImgNewDIBFromFile(pDecoder:pointer;Filename:PAnsiChar;var pImg:pointer):dword; -begin - if @pImgNewDecoder<>nil then - result:=pImgNewDIBFromFile(pDecoder,Filename,pImg) - else - result:=0; -end; - -function ImgDeleteDIBSection(pImg:pointer):dword; -begin - if @pImgNewDecoder<>nil then - result:=pImgDeleteDIBSection(pImg) - else - result:=0; -end; - -function ImgGetHandle(pImg:pointer;var pBitmap:HBITMAP;var ppDIBBits:pointer):dword; -begin - if @pImgGetHandle<>nil then - result:=pImgGetHandle(pImg,pBitmap,ppDIBBits) - else - result:=0; -end; - -initialization - hModule:=LoadLibrary('imgdecoder.dll'); - if hModule=0 then - hModule:=LoadLibrary('plugins\imgdecoder.dll'); - - if hModule<>0 then - begin - pImgNewDecoder :=GetProcAddress(hModule, 'ImgNewDecoder'); - pImgDeleteDecoder :=GetProcAddress(hModule, 'ImgDeleteDecoder'); - pImgNewDIBFromFile :=GetProcAddress(hModule, 'ImgNewDIBFromFile'); - pImgDeleteDIBSection:=GetProcAddress(hModule, 'ImgDeleteDIBSection'); - pImgGetHandle :=GetProcAddress(hModule, 'ImgGetHandle'); - end; - -finalization - if hModule<>0 then - FreeLibrary(hModule); -end. -{ Sample of using - -var - pDecoder:pointer; - pImg:pointer; - bitmap:HBITMAP; - pBits:pointer; -begin - if IsImgDecoderAvailable then - begin - ImgNewDecoder(pDecoder); - if ImgNewDIBFromFile(pDecoder,PAnsiChar(ParamStr(1)),pImg)<>0 then - begin - ImgGetHandle(pImg,bitmap,pBits); -// action - ImgDeleteDIBSection(pImg); - end; - ImgDeleteDecoder(pDecoder); - end; -end. -} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_DataAsMessage.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_DataAsMessage.inc deleted file mode 100644 index 71bfcc059d..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_DataAsMessage.inc +++ /dev/null @@ -1,155 +0,0 @@ -{ - DataAsMessage plugin for Miranda IM - Copyright (c) 2006 Chervov Dmitry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -} - -{$IFNDEF M_DATAASMESSAGE} -{$DEFINE M_DATAASMESSAGE} - -const -// DAM_SENDRESULTINFO::iResult values - DAM_SR_SUCCESS = 0; - DAM_SR_TIMEOUT = 1; // timeout period expired; this value is returned - // also if the contact went offline for a time - // longer than a timeout period - DAM_SR_NOTSUPPORTED = 2; // means this szDataType is not supported by the - // remote side - DAM_SR_NODAM = 3; // means there is no DataAsMessage plugin on the - // remote side; keep in mind that this error may - // also appear accidentally because of a bad - // connectivity during the handshake (if there - // was a timeout when waiting for a response) - DAM_SR_CANCELLEDLOCAL = 4; // cancelled from the local(sending) side - DAM_SR_CANCELLEDREMOTE = 5; // cancelled from the remote(receiving) side - DAM_SR_BADCRC = 6; // bad CRC; we can't do anything with this error. presumably, it will happen rarely, and the most probable cause is the protocol that filters some of characters in our messages OR it may be a bug in DataAsMessage plugin (hopefully not ;) ). - DAM_SR_UNKNOWN = 7; // unknown error - -// Return values for DAM_SENDRESULTPROC - DAM_SRA_RETRY = 1; - -type -// hContact, szDataType and SessionID fields correspond to the fields of the -// DAM_SENDDATAINFO structure - PDAM_SENDRESULTINFO = ^TDAM_SENDRESULTINFO; - TDAM_SENDRESULTINFO = record - cbSize :int; // sizeof(DAM_SENDRESULTINFO) - hContact :THANDLE; - szDataType:PAnsiChar; - SessionID :dword; - iResult :int; // transmission result code - end; - -type - TDAM_SENDRESULTPROC = function(sri:PDAM_SENDRESULTINFO):int; cdecl; -// this procedure receives the result of the transmission. it's called when the -// session closes (either the data was sent successfully or there was an error) -// you can return DAM_SRA_RETRY when iResult is DAM_SR_TIMEOUT if you want to -// retry sending - -const -// DAM_SENDDATAINFO::Flags constants - DAM_SDF_DONTPACK = 1; // don't pack the data (by default all the data is packed) - DAM_SDF_NOTIMEOUT = 2; // don't generate a timeout error ever, keep trying to - // send the data. If the contact is offline, the data - // is saved in the memory until the contact goes online. - // Loss of the data occurs only if the sender's miranda - // closes (this may change in future to allow fully - // functional offline sending that will guarantee the - // data to be sent in any case, but of course the - // sending starts only when the both contacts are - // online). other errors than the timeout error can be - // still generated though. - -type - TDAM_SENDDATAINFO = record - cbSize :int; // sizeof(DAM_SENDDATAINFO) - hContact :THANDLE; - szDataType:PAnsiChar; // zero-terminated string, containing data type, - // preferably in format "YourPluginName" or - // "YourPluginName/Something" (make sure this string - // won't coincide by an accident with someone else's - // string!). you can identify your data by this ID later - nDataLen :int; // keep in mind that if the length is too big (more than - // about 8 KB), it's more preferable to split your data - // into several chunks, as you won't be able to "pick - // up" your data at the other end until all the data is - // transferred - cData :PAnsiChar; - Flags :int; // combination of the DAM_SDF_ constants - SendAfterSessionID:dword; // may be NULL; otherwise it's guaranteed that the - // sending starts only after successful completion - // of SendAfterSessionID session - SendResultProc:TDAM_SENDRESULTPROC; // pointer to a procedure that receives - // the result; can be NULL - SessionID :dword; // OUT; receives the session ID - end; - -const -// MS_DAM_SENDDATA return values - DAM_SDA_NOERROR = 0; - DAM_SDA_NOTSUPPORTED = -1; // contact's protocol doesn't support sending/ - // receiving messages - DAM_SDA_TOOMANYSESSIONS = -2; // too many sessions - -// MS_DAM_SENDDATA -// sends the data -// wParam = (WPARAM)(DAM_SENDDATAINFO*)sdi; -// lParam = 0 -// Returns 0 (DAM_SDA_NOERROR) and fills SessionID if the session was queued for sending successfully; returns one of the DAM_SDA_ values on failure - MS_DAM_SENDDATA = 'DataAsMessage/SendData'; - -function DAMSendData(hContact:THANDLE; szDataType:PAnsiChar; nDataLen:int; - cData:PAnsiChar; Flags:int; SendAfterSessionID:dword; - SendResultProc:TDAM_SENDRESULTPROC;pSessionID:pdword):int; -var - sdi:TDAM_SENDDATAINFO; -begin - FillChar(sdi,SizeOf(sdi),0); - sdi.cbSize :=SizeOf(sdi); - sdi.hContact :=hContact; - sdi.szDataType:=szDataType; - sdi.nDataLen :=nDataLen; - sdi.cData :=cData; - sdi.Flags :=Flags; - sdi.SendAfterSessionID:=SendAfterSessionID; - sdi.SendResultProc :=SendResultProc; - Result:=CallService(MS_DAM_SENDDATA,dword(@sdi),0); - if pSessionID<>nil then - pSessionID^:=sdi.SessionID; -end; - -type - TDAM_RECVDATAINFO = record - cbSize :int; // sizeof(DAM_RECVDATAINFO) - hContact :THANDLE; - szDataType:PAnsiChar; - nDataLen :int; - cData :PAnsiChar; - end; - -const -// ME_DAM_RECVDATA -// hook up to this event to check for incoming data -// make sure rdi->szDataType is yours before doing anything! -// The important thing here is that your plugin will receive TWO ME_DAM_RECVDATA notifications on every single MS_DAM_SENDDATA call from a remote side: -// The first notification arrives when the remote side starts to transmit the data. In this case DAM_RECVDATAINFO::cData = NULL (and DAM_RECVDATAINFO::nDataLen = -1) as we didn't receive any data yet. Return 1 to indicate that your plugin recognized the DAM_RECVDATAINFO::szDataType, otherwise return 0. If there are no any plugin that recognized the data, DAM cancels the transfer and there won't be any second notification for it. -// The second notification is when the data is transmitted successfully. nDataLen contains the usual data size and cData points to the data buffer. cData is guaranteed to be valid only during the ME_DAM_RECVDATA call. You must copy the data to your own plugin's memory if you need it later. again, return 1 to indicate that your plugin recognized the data, otherwise return 0 -// wParam = (WPARAM)(DAM_RECVDATAINFO*)rdi; -// lParam = 0 - ME_DAM_RECVDATA = 'DataAsMessage/RecvData'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_anismiley.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_anismiley.inc deleted file mode 100644 index f16005fe51..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_anismiley.inc +++ /dev/null @@ -1,116 +0,0 @@ -{$IFNDEF M_ANISMILEY} -{$DEFINE M_ANISMILEY} - -const - IASF_UNICODE = 1; - -type - TINSERTANISMILEY = record - cbSize :size_t; - hWnd :HWND; - szFilename :TChar; - dwBackColor:COLORREF; - nHeight :int; - dwFlags :dword; - end; - tagINSERTANISMILEY = TINSERTANISMILEY; - -const - MS_INSERTANISMILEY :PAnsiChar = 'mAnimator/InsertSmiley'; -(* - function InsertAnimatedSmiley(wnd:HWND;filename:TChar;Back:TCOLORREF;height:int):bool; - const - bServiceExists:int=-1 - var - ias:TINSERTANISMILEY; - begin - if bServiceExists=-1 then - bServiceExists:=ServiceExists(MS_INSERTANISMILEY); - if bServiceExists=0 then - result:=false - else - begin - ias.cbSize :=SizeOf(TINSERTANISMILEY); - ias.hWnd :=wnd; - ias.tcsFilename:=Filename.w; - ias.dwFlags :=IASF_UNICODE; - ias.nHeight :=Height; - ias.dwBackColor:=Back; - result:=CallService(MS_INSERTANISMILEY,WPARAM(@ias),0)<>0; - end; - end; - - bool InsertAnimatedSmiley(HWND _hwnd, TCHAR * _szFilename, COLORREF _dwBack, int _nHeight) - { - static int bServiceExists=-1; - ias={0}; - if (bServiceExists==-1) - bServiceExists=ServiceExists(MS_INSERTANISMILEY); - if (!bServiceExists) return FALSE; - ias.cbSize=sizeof(INSERTANISMILEY); - ias.hWnd=_hwnd; - ias.tcsFilename=_szFilename; - ias.dwFlags=IASF_TCHAR; - ias.nHeight=_nHeight; - ias.dwBackColor=_dwBack; - return (bool) CallService(MS_INSERTANISMILEY,(WPARAM)&ias, 0); - }; -*) - - -{ - NM_FIREVIEWCHANGE is WM_NOTIFY Message for notify parent of host window about smiley are going to be repaint - - The proposed action is next: Owner of RichEdit windows received NM_FIREVIEWCHANGE through WM_NOTIFY - twice first time before painting|invalidating (FVCN_PREFIRE) and second time - after (FVCN_POSTFIRE). - The Owner window may change any values of received FVCNDATA_NMHDR structure in order to raise needed action. - For example it may substitute FVCA_INVALIDATE to FVCA_CUSTOMDRAW event to force painting on self offscreen context. - - It can be: - FVCA_CUSTOMDRAW - in this case you need to provide valid HDC to draw on and valid RECT of smiley - FVCA_INVALIDATE - to invalidate specified rect of window - FVCA_NONE - skip any action. But be aware - animation will be stopped till next repainting of smiley. - FVCA_SENDVIEWCHANGE - to notify richedit ole about object changed. Be aware Richedit will fully reconstruct itself - - Another point is moment of received smiley rect - it is only valid if FVCA_DRAW is initially set, - and it is PROBABLY valid if FVCA_INVALIDATE is set. And it most probably invalid in case of FVCA_SENDVIEWCHANGE. - The smiley position is relative last full paint HDC. Usually it is relative to top-left corner of host - richedit (NOT it client area) in windows coordinates. -} - -const -// Type of Event one of - FVCN_PREFIRE = 1; - FVCN_POSTFIRE = 2; - -// Action of event are going to be done - FVCA_NONE = 0; - FVCA_DRAW = 1; // do not modify hdc in case of _DRAW, Use _CUSTOMDRAW - FVCA_CUSTOMDRAW = 2; - FVCA_INVALIDATE = 3; - FVCA_SENDVIEWCHANGE = 4; - FVCA_SKIPDRAW = 5; - -// Extended NMHDR structure for WM_NOTIFY -type - TFVCNDATA_NMHDR = record - //NMHDR structure - hwndFrom :HWND; // Window of smiley host - idFrom :uint_ptr; // ignored - code :uint; // NM_FIREVIEWCHANGE - - cbSize :size_t; - bEvent :byte; // FVCN_ value - pre- or post- painting - bAction :byte; // FVCA_ keys - hDC :HDC; // Canvas to draw on - rcRect :TRECT; // Valid/should be in case of FVCA_DRAW - clrBackground:TCOLORREF; // color to fill background if fTransparent is not set - fTransparent :bool; // if need to fill back color - lParam :LPARAM; // used by host window PreFire and PostFire event - end; - -const -// Code of WM_NOTIFY message (code) - NM_FIREVIEWCHANGE = NM_FIRST+1; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_autoreplacer.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_autoreplacer.inc deleted file mode 100644 index bc1d528463..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_autoreplacer.inc +++ /dev/null @@ -1,39 +0,0 @@ -{ - AutoReplacer plugin - by Angelo Luiz Tartari -} - -{$IFNDEF M_AUTOREPLACER} -{$DEFINE M_AUTOREPLACER} - -const - -{ - Adds a window handle to AutoReplacer. - This handle must belong to any window based on a editbox (editbox, richtext, TMemo, TEdit, TMaskEdit, etc.). - After adding a handle, AutoReplacer will automatically work on this window. - wParam = 0 - lParam = (LPARAM)(HWND)hwnd - Returns: 0 on success, -1 if hwnd is invalid, 1 on error. -} - MS_AUTOREPLACER_ADDWINHANDLE = 'AutoReplacer/AddWinHandle'; - -{ - Removes a window handle from AutoReplacer's list. - wParam = 0 - lParam = (LPARAM)(HWND)hwnd - Returns: 0 on success, -1 if hwnd is invalid, 1 if hwnd wasn't found. -} - MS_AUTOREPLACER_REMWINHANDLE = 'AutoReplacer/RemWinHandle'; - - function autoreplacer_AddWinHandle(hwnd: HWND): integer; - begin - Result := CallService(MS_AUTOREPLACER_ADDWINHANDLE, 0, LPARAM(hwnd)); - end; - - function autoreplacer_RemWinHandle(hwnd: HWND): integer; - begin - Result := CallService(MS_AUTOREPLACER_REMWINHANDLE, 0, LPARAM(hwnd)); - end; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_contactdir.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_contactdir.inc deleted file mode 100644 index 1b21717753..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_contactdir.inc +++ /dev/null @@ -1,164 +0,0 @@ -{ -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2005 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 M_CONTACTDIR} -{$DEFINE M_CONTACTDIR} - -{ Contactdir module was created on 2005/05/17, 0.4.0.1 - - -- How you use this module as a protocol -- - - On Load() Register your protocol with the setting name that stores unique IDs, example: - - if ( ContactDir_SupportExists() ) g_Atom=ContactDir_Register("ICQ", "UIN"); - - This will register your protocol and walk the database looking for all contacts on PROTOCOL_NAME which have - a "UIN" setting and store it in memory (converting to a string as needed) You of course have to - provide fallback if the services don't exist, it's an idea to keep existing code for that. - - - - - When you add a new contact via MS_DB_CONTACT_ADD, you must register it with your protocol atom too, via - ContactDir_AddContact(atom, "UIN #", hContact) and when it is deleted ContactDir_RemoveContact(atom, "UIN #") - - - - - To find a contact, use ContactDir_Lookup(atom, "ICQ #") which will return the hContact. -} - -type - PCONTACTDIRECTORYDESCRIPTOR = ^TCONTACTDIRECTORYDESCRIPTOR; - TCONTACTDIRECTORYDESCRIPTOR = record - cbSize :int; - szProto :PAnsiChar; - szSetting:PAnsiChar; - atom :THANDLE; // out arg - end; - -{ - wParam: 0 - lParam: (LPARAM) &CONTACTDIRECTORYDESCRIPTOR; - Affect: Register a given protocol and it's setting name which contains the unique key entry. e.g. ("ICQ", "UIN") - and return a HANDLE for use with other lookup services. - Returns: 0 on success, non zero on failure -- a returned handle is in .atom - Note: The directory will convert dword values into string representations but will not do this for bytes or words - used as IDs -- the protocol has to convert the IDs itself (: - Note: See ContactDir_Register() for a quicker way. - *** WARNING ***: This service does not expect the given module name to have registered as a protocol module, it - completely bypasses this information. - Version: 0.4.0.1 (2005/05/17+) -} -const - MS_CONTACTDIR_REGISTER = 'ContactDir/Register'; - -type - PCONTACTDIRECTORYLOOKUP = ^TCONTACTDIRECTORYLOOKUP; - TCONTACTDIRECTORYLOOKUP = record - cbSize :int; - atom :THANDLE; // Atom handle from MS_CONTACTDIR_REGISTER - szID :PAnsiChar; // in: value you wish to find (makes its own copy if needed) - hContact:THANDLE; // out: hContact associated with szID, if any. - end; - -{ - wParam: 0 - lParam: (LPARAM) &CONTACTDIRECTORYLOOKUP; - Affect: Given an atom and string ID, will find the associated DB hContact value - Returns: 0 on success, non zero on failure - Version: 0.4.0.1 (2005/05/17+) - Note: ContactDir_Lookup() helper macro might be of use. -} -const - MS_CONTACTDIR_LOOKUP = 'ContactDir/Lookup'; - -{ - wParam: 0 - lParam: (LPARAM)&CONTACTDIRECTORYLOOKUP; - Affect: Add a contact to a protocol atom association. - Returns: 0 on success, non zero on failure - Version: 0.4.0.1 (2005/05/17+) - Note: You must call this when you create a contact with MS_DB_CONTACT_ADD, see ContactDir_AddContact() -} - MS_CONTACTDIR_ADDCONTACT = 'ContactDir/AddContact'; - -{ - wParam: 0 - lParam: (LPARAM)&CONTACTDIRECTORYLOOKUP; - Affect: Remove a contact to a protocol atom association. - Returns: 0 on success, non zero on failure - Version: 0.4.0.1 (2005/05/17+) - Note: see ContactDir_RemoveContact() -} - MS_CONTACTDIR_REMOVECONTACT = 'ContactDir/RemoveContact'; - -(* -/* -- Helper functions -- */ - -static int ContactDir_SupportExists(void) -{ - return ServiceExists(MS_CONTACTDIR_REGISTER); -} - -// Only take as valid if ContactDir_SupportExists() returns true. -static HANDLE ContactDir_Register(AnsiChar * szProto, AnsiChar * szSetting) -{ - CONTACTDIRECTORYDESCRIPTOR cd; - cd.cbSize=sizeof(CONTACTDIRECTORYDESCRIPTOR); - cd.szProto=szProto; - cd.szSetting=szSetting; - cd.atom=NULL; - CallService(MS_CONTACTDIR_REGISTER, 0, (LPARAM)&cd); - return cd.atom; -} - -static __inline HANDLE ContactDir_Lookup(HANDLE atom, AnsiChar * szID) -{ - CONTACTDIRECTORYLOOKUP f; - f.cbSize=sizeof(f); - f.atom=atom; - f.szID=szID; - f.hContact=NULL; - CallService(MS_CONTACTDIR_LOOKUP, 0, (LPARAM)&f); - return f.hContact; -} - -static __inline void ContactDir_AddContact(HANDLE atom, AnsiChar * szID, HANDLE hContact) -{ - CONTACTDIRECTORYLOOKUP c = {0}; - c.cbSize=sizeof(CONTACTDIRECTORYLOOKUP); - c.atom=atom; - c.szID=szID; - c.hContact=hContact; - CallService(MS_CONTACTDIR_ADDCONTACT, 0, (LPARAM)&c); -} - -static __inline void ContactDir_RemoveContact(HANDLE atom, AnsiChar * szID) -{ - CONTACTDIRECTORYLOOKUP c = {0}; - c.cbSize=sizeof(CONTACTDIRECTORYLOOKUP); - c.atom=atom; - c.szID=szID; - c.hContact=NULL; - CallService(MS_CONTACTDIR_REMOVECONTACT, 0, (LPARAM)&c); -} -*) -{$ENDIF} \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_db3xsa.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_db3xsa.inc deleted file mode 100644 index 77ac666967..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_db3xsa.inc +++ /dev/null @@ -1,84 +0,0 @@ -{ -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2007 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 M_DB3XSA} -{$DEFINE M_DB3XSA} - -const -{ DB/SetPassword v0.5.1.3+ - This service is used to set, change or clear the password used for encrypting the profile. - It opens the password change dialog. - wParam=0 - lParam=0 -} - MS_DB_SETPASSWORD = 'DB/SetPassword'; - -{ DB/Backup v0.5.1.3+ - This service will make a backup of your current profile. Backups are named - xx.bak where xx is the number of backups. The larger the number, the - older the backup. - wParam=0 - lParam=0 -} - MS_DB_BACKUP = 'DB/Backup'; - -{ DB/Backup v0.5.1.3+ - This service is the trigger action service and does the same as the service above. - Only difference is wParam carries flags from trigger plugin. - wParam=flags - lParam=0 -} - MS_DB_BACKUPTRIGGER = 'DB/BackupTriggerAct'; - -{ DB/GetProfilePath(W) v0.5.1.5+ - Gets the path of the profile currently being used by the database module. This - path does not include the last '\'. It is appended with the profile's name if - ProfileSubDir=yes is set in the mirandaboot.ini. - wParam=(WPARAM)(int)cbName - lParam=(LPARAM)(AnsiChar*)pszName - pszName is a pointer to the buffer that receives the path of the profile - cbName is the size in bytes of the pszName buffer - Returns 0 on success or nonzero otherwise -} - MS_DB_GETPROFILEPATHW = 'DB/GetProfilePathW'; - - -{ DB/GetProfilePathBasic(W) v0.5.1.5+ - Gets the path of the profile currently being used by the database module. This - path does not include the last '\'. This is never appended with the profile's name. - wParam=(WPARAM)(int)cbName - lParam=(LPARAM)(AnsiChar*)pszName - pszName is a pointer to the buffer that receives the path of the profile - cbName is the size in bytes of the pszName buffer - Returns 0 on success or nonzero otherwise -} - MS_DB_GETPROFILEPATH_BASIC = 'DB/GetProfilePathBasic'; - MS_DB_GETPROFILEPATH_BASICW = 'DB/GetProfilePathBasicW'; - - MIRANDAPATH = '%MIRANDAPATH%'; - MIRANDAPATHW = '%MIRANDAPATH%'; - PROFILEPATH = '%PROFILEPATH%'; - PROFILEPATHW = '%PROFILEPATH%'; - PROFILENAME = '%PROFILENAME%'; - PROFILENAMEW = '%PROFILENAME%'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_ersatz.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_ersatz.inc deleted file mode 100644 index 553194eee2..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_ersatz.inc +++ /dev/null @@ -1,41 +0,0 @@ -{ -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2006 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 M_ERSATZ} -{$DEFINE M_ERSATZ} - -const -// Returns the status message for a status -// wParam=(word) 0 for current status or a status -// lParam=0 -// Returns status msg or NULL if there is none. The protocol have to handle only the current -// status. Handling messages for other statuses is optional. -// Remember to mir_free the return value - PS_GETMYAWAYMSG = '/GetMyAwayMsg'; - -// Created if ersatz is installed -// wParam=0 -// lParam=0 -// returns always 1 - MS_ERSATZ_ENABLED = 'ERSATZ/Enabled'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_fuse.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_fuse.inc deleted file mode 100644 index 82b002b5db..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_fuse.inc +++ /dev/null @@ -1,28 +0,0 @@ -{$IFNDEF M_FUSE} -{$DEFINE M_FUSE} - -const - FUSE_INIT = 0; // core started, Param=**FUSE_LINK - FUSE_DEINIT = 1; // core stopped - FUSE_DEFMOD = 3; // LoadDefaultModules() return code, Param=*int - FUSE_DEATH = 4; // DestroyingModularEngine() just got called - -type - PFUSE_LINK = ^TFUSE_LINK; - TFUSE_LINK = record - cbSize : longint; - CreateHookableEvent : function (para1:PAnsiChar):THANDLE;cdecl; - DestroyHookableEvent : function (para1:THANDLE):longint;cdecl; - NotifyEventHooks : function (para1:THANDLE; para2:WPARAM; para3:LPARAM):longint;cdecl; - HookEvent : function (para1:PAnsiChar; para2:TMIRANDAHOOK):THANDLE;cdecl; - HookEventMessage : function (para1:PAnsiChar; para2:HWND; para3:dword):THANDLE;cdecl; - UnhookEvent : function (para1:THANDLE):longint;cdecl; - CreateServiceFunction : function (para1:PAnsiChar; para2:TMIRANDASERVICE):THANDLE;cdecl; - CreateTransientServiceFunction : function (para1:PAnsiChar; para2:TMIRANDASERVICE):THANDLE;cdecl; - DestroyServiceFunction : function (para1:THANDLE):longint;cdecl; - CallService : function (para1:PAnsiChar; para2:WPARAM; para3:LPARAM):longint;cdecl; - ServiceExists : function (para1:PAnsiChar):longint;cdecl; {v0.1.0.1+ } - CallServiceSync : function (para1:PAnsiChar; para2:WPARAM; para3:LPARAM):longint;cdecl; {v0.1.2.2+ } - end; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_help(plugin).inc b/plugins/!Deprecated/ExternalAPI/delphi/m_help(plugin).inc deleted file mode 100644 index 0eb63615d9..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_help(plugin).inc +++ /dev/null @@ -1,76 +0,0 @@ -{ -Miranda IM Help Plugin -Copyright (C) 2002 Richard Hughes, 2005-2007 H. Herkenrath - -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 (Help-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_HELP} -{$DEFINE M_HELP} - -const - -{ - Help Plugin 0.2.1.2 - All services in here except MS_HELP_SHOWLANGDIALOG should be thread-safe, - you can call them from any thread -} - -{ interface id } - MIID_HELP: TGUID = '{302660C5-1BF6-4054-A79F-77B1965D6F48}'; - -{ Enable/disable the help context menu for a specific control. v0.2.0.0+ -Note: You normally do not need to call this, read below. -You can can use this to deactivate the appearance of the help context menu -being shown when the user right clicks on an control. -You can use this service to disable the context menu. - -You do *not* need to use this service when you would like to show -a context menu by yourself, just handle WM_CONTEXTMENU correctly instead. -You need to return TRUE in your DlgProc or 0 in your WndProc, indicating 'message handled'. - -The context menu is disabled by default on the following controls (looks silly on multi-component controls): -ListView, TreeView, Statusbar, Toolbar, CLC -AutoTips are disabled by default for controls stating DLGC_WANTALLKEYS or DLGC_HASSETSEL at -WM_GETDLGCODE (autotips are annoying on edits). - wParam : (HWND)hwndCtl - lParam : flags (see below) -Returns 0 on success or nonzero on failure -} - MS_HELP_SETCONTEXTSTATE = 'Help/SetContextState'; - HCSF_CONTEXTMENU = $01; // show help context menu for this control - HCSF_AUTOTIP = $02; // show automatic help tip on hover for this control - // only works for non-editable - -{ Show a help tooltip for a specific control or dialog. v0.2.0.0+ -You can call this if you would like to show help at a specific time. - wParam : (HWND)hwndCtl - lParam : 0 -Returns 0 on success or nonzero on failure. -The service fails when the help tooltip cannot be instantiated. -} - MS_HELP_SHOWHELP = 'Help/ShowHelp'; - -{ Show the download language dialog. v0.2.1.0+ - wParam : 0 - lParam : 0 -The dialog can't have a parent due to it's asynchronous nature. -If the language window is already opened it will be -brought to front instead (returns success). -Returns 0 on success, nonzero otherwise. -} - MS_HELP_SHOWLANGDIALOG = 'Help/ShowLangDialog'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_historyevents.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_historyevents.inc deleted file mode 100644 index ae582f0eef..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_historyevents.inc +++ /dev/null @@ -1,201 +0,0 @@ -{ -Copyright (C) 2006 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - - -{$IFNDEF M_HISTORYEVENTS} -{$DEFINE M_HISTORYEVENTS} - -const - HISTORYEVENTS_FORMAT_CHAR = 1; - HISTORYEVENTS_FORMAT_WCHAR = 2; - HISTORYEVENTS_FORMAT_RICH_TEXT = 4; - HISTORYEVENTS_FORMAT_HTML = 8; - -const - HISTORYEVENTS_FLAG_DEFAULT = 1 shl 0; // Is a miranda core event type - HISTORYEVENTS_FLAG_SHOW_IM_SRMM = 1 shl 1; // If this event has to be shown in srmm dialog - HISTORYEVENTS_FLAG_USE_SENT_FLAG = 1 shl 2; // Means that it can be a sent or received and uses DBEF_SENT to mark that - HISTORYEVENTS_FLAG_EXPECT_CONTACT_NAME_BEFORE = 1 shl 3; // Means that who is drawing this should draw the contact name before the text - HISTORYEVENTS_FLAG_ONLY_LOG_IF_SRMM_OPEN = 1 shl 4; // If this event will be logged only if the message window is open - HISTORYEVENTS_FLAG_FLASH_MSG_WINDOW = 1 shl 5; // If this event will trigger the openning/flashing of the message window - - HISTORYEVENTS_REGISTERED_IN_ICOLIB = 9 shl 16; // If the icon is a name already registered in icolib - - HISTORYEVENTS_FLAG_KEEP_ONE_YEAR = 1 shl 8; // By default store in db for 1 year - HISTORYEVENTS_FLAG_KEEP_SIX_MONTHS = 2 shl 8; // By default store in db for 6 months - HISTORYEVENTS_FLAG_KEEP_ONE_MONTH = 3 shl 8; // By default store in db for 1 month - HISTORYEVENTS_FLAG_KEEP_ONE_WEEK = 4 shl 8; // By default store in db for 1 week - HISTORYEVENTS_FLAG_KEEP_ONE_DAY = 5 shl 8; // By default store in db for 1 day - HISTORYEVENTS_FLAG_KEEP_FOR_SRMM = 6 shl 8; // By default store in db only enought for message log - HISTORYEVENTS_FLAG_KEEP_MAX_TEN = 7 shl 8; // By default store in db max 10 entries - HISTORYEVENTS_FLAG_KEEP_MAX_HUNDRED = 8 shl 8; // By default store in db for 100 entries - HISTORYEVENTS_FLAG_KEEP_DONT = 9 shl 8; // By default don't store in db (aka ignore it) - - -// This function must be implemented by subscribers. It must return a pointer or NULL -// to say it can't handle the text -type - fGetHistoryEventText = function(hContact:THANDLE; hDbEvent:THANDLE; - dbe:PDBEVENTINFO; format:int):pointer; cdecl; - -type - HISTORY_EVENT_HANDLER = record - cbSize :int; - module :PAnsiChar; - name :PAnsiChar; // Internal event name - description:PAnsiChar; // Will be translated. When retrieving it is already translated - eventType :word; // The event type it can handle - defaultIcon:HICON; // PAnsiChar= icon name if HISTORYEVENTS_REGISTERED_IN_ICOLIB is set. - // Always use this one when retrieving - supports :int; // What kind of return is supported - or of HISTORYEVENTS_FORMAT_* - flags :int; // or of HISTORYEVENTS_FLAG_* - pfGetHistoryEventText:fGetHistoryEventText; // NULL to use default get text (similar to message, without extra format) - - // Aditional data if wants to use add to history services - templates:^PAnsiChar; // Each entry is: "Name\nDefault\n%var%\tDescription\n%var%\tDescription\n%var%\tDescription" - numTemplates:int; - end; -const -{ - Get the number of registered events - - wParam: ignored - lParam: ignored - Return: The number of events registered with the plugin -} - MS_HISTORYEVENTS_GET_COUNT:PAnsiChar = 'HistoryEvents/GetCount'; - -{ - Get an event by number or by type. - To retrieve by number, pass -1 as type. To retrieve by type, pass -1 as number. - - wParam: (int) event number - lParam: (int) event type - Return: (const HISTORY_EVENT_HANDLER *) if the event exists, NULL otherwise. Don't change the - returned strunc: it is a pointer to the internall struct. -} - MS_HISTORYEVENTS_GET_EVENT:PAnsiChar = 'HistoryEvents/GetEvent'; - -{ - Register a plugin that can handle an event type. This must be called during the call to the - Load function of the plugin. In ModulesLoaded callback all plugins have to be already - registered, so srmm and history modules can query then. - - wParam: HISTORY_EVENT_HANDLER * - lParam: ignored - Return: 0 for success -} - MS_HISTORYEVENTS_REGISTER:PAnsiChar = 'HistoryEvents/Register'; - - -type - HISTORY_EVENT_PARAM = record - cbSize :int; - hDbEvent:THANDLE; - dbe :PDBEVENTINFO; // Optional - format :int; // one of HISTORYEVENTS_FORMAT_* - end; - -const -{ - Check if an event can be handled by any subscribers - - wParam: WORD - event type - lParam: ignored - Return: BOOL -} - MS_HISTORYEVENTS_CAN_HANDLE:PAnsiChar = 'HistoryEvents/CanHandle'; - -{ - Get the icon for a history event type - - wParam: WORD - event type - lParam: ignored - Return: HICON - after use free with MS_HISTORYEVENTS_RELEASE_ICON -} - MS_HISTORYEVENTS_GET_ICON:PAnsiChar = 'HistoryEvents/GetIcon'; - -{ - Get the flags for a history event type - - wParam: WORD - event type - lParam: ignored - Return: int - or of HISTORYEVENTS_FLAG_* or -1 if error -} - MS_HISTORYEVENTS_GET_FLAGS:PAnsiChar = 'HistoryEvents/GetFlags'; - -{ - Release the icon for a history event type. This is really just a forward to icolib - - wParam: HICON - lParam: ignored -} - MS_HISTORYEVENTS_RELEASE_ICON:PAnsiChar = 'Skin2/Icons/ReleaseIcon'; - -{ - Get the text for a history event type - - wParam: HISTORY_EVENT_PARAM * - lParam: ignored - Return: char * or wchar * depending on sent flags. Free with mir_free or MS_HISTORYEVENTS_RELEASE_TEXT -} - MS_HISTORYEVENTS_GET_TEXT:PAnsiChar = 'HistoryEvents/GetText'; - -{ - Release the text for a history event type. Internally is just a call to mir_free - - wParam: char * or wchar * - lParam: ignored -} - MS_HISTORYEVENTS_RELEASE_TEXT:PAnsiChar = 'HistoryEvents/ReleaseText'; - - -type - HISTORY_EVENT_ADD = record - cbSize :int; - hContact :THANDLE; - eventType :word; - templateNum :int; - variables :^PTCHAR; // TCHAR **variables - numVariables :int; - additionalData :pbyte; - additionalDataSize:int; - flags :int; // Flags for the event type - end; - -const -{ - Add an registered event to the history. This is a helper service - - wParam: HISTORY_EVENT_ADD - lParam: ignored - Return: HANDLE to the db event -} - MS_HISTORYEVENTS_ADD_TO_HISTORY:PAnsiChar = 'HistoryEvents/AddToHistory'; - -{ - Check if a template is enabled - - wParam: event type - lParam: template num - Return: TRUE or FALSE -} - MS_HISTORYEVENTS_IS_ENABLED_TEMPLATE:PAnsiChar = 'HistoryEvents/IsEnabledTemplate'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_ircscript.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_ircscript.inc deleted file mode 100644 index 0157443e30..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_ircscript.inc +++ /dev/null @@ -1,125 +0,0 @@ -{ - This file is a description of the interface between the Miranda Scripting - Plugin (MSP) and IRC. It is mainly an internal draft. - - The MSP is a powerful PHP based scripting engine - which can automate many tasks in Miranda IM. With the implementation of - this interface IRC can also benefit from the advantages MSP brings. The - interface has been constructed by the respective authors of IRC and MSP. - - The idea is that MSP and IRC should communicate via the interface outlined herein, - but MSP should "package" the data in attractive functions that can be easily - used by eager scripters. - - Note that m_chat.h should be #included as the events defined therein is used in this interface - - The IRC plugin communicates with MSP mainly through 8 (2 x 4) services which are - illustrated by the following matrix (MSP has 4 services and IRC 4 services): - - -------------------------------------------------- - | | | - | Incoming raw data | Data going | - | from server | to GUI | - | (before processing) | (after processing) | - | | | - -------------------------------------------------- - | | | - | Outgoing raw data | Data going | - | to server | from GUI | - | (after processing) | (before processing) | - | | | - -------------------------------------------------- - - (processing refers to the IRC plugin reacting to different commands) -} - -{$IFNDEF M_IRCSCRIPT} -{$DEFINE M_IRCSCRIPT} - -//------------------------- HANDLING RAW MESSAGES ------------------------ -{ - The two leftmost boxes are related to data sent to and from the server in RAW form. - (a typical RAW message looks like this: ":nick!user@host COMMAND PARAMETERS") - - It is very useful for scripters to be able to manipulate and add RAW streams of data. - - The below structure is used when RAW data is generated and IRC must trigger an - event in MSP so the scripts can do their magic. - - If the data is modified make sure to use MS_SYSTEM_GET_MMI and then mmi_realloc() to - allocate from the same heap. Do not free the data. - - wParam= Module name - lParam= (LPARAM)(AnsiChar *)pszRaw - returns nonzero if the message should be dropped -} - -{ - NOTE! IRC will implement two services which also uses the same parameters: - - "/InsertRawIn" //used for inserting a "fake" incoming RAW event - "/InsertRawOut" //used for inserting a "fake" outgoing RAW event -} - -const - MS_MBOT_IRC_RAW_IN = 'MBot/IrcRawIn'; - MS_MBOT_IRC_RAW_OUT = 'MBot/IrcRawOut'; - -//------------------------- HANDLING GUI MESSAGES 1 ------------------------ -{ - The top rightmost box is related to data sent to the gui - (currently chat.dll) in the form of GCEVENT's. (see m_chat.h) - - While maybe not as useful to the scripter, it can be useful to be able to - "tap into" messages to the GUI from the IRC plugin. - - If the data is modified make sure to realloc() or similar. - - wParam= (WPARAM) (WPARAM_GUI_IN) &wgi - lParam= (LPARAM)(GCEVENT *)&gce // see m_chat.h - returns nonzero if the message should be dropped -} - -{ - NOTE! IRC will implement a service which also uses the same parameters: - - "/InsertGuiIn" //used for inserting a "fake" event to the GUI -} -type - PWPARAM_GUI_IN = ^WPARAM_GUI_IN; - WPARAM_GUI_IN = record - pszModule:PAnsiChar; - wParam:WPARAM; - end; - PMBOT_GUI_WPARAM_IN_STRUCT = PWPARAM_GUI_IN; - TMBOT_GUI_WPARAM_IN_STRUCT = WPARAM_GUI_IN; - -const - MS_MBOT_IRC_GUI_IN = 'MBot/IrcGuiIn'; - -//------------------------- HANDLING GUI MESSAGES 2 ------------------------ -{ - The bottom rightmost box is related to data sent from the gui - (currently chat.dll) in the form of GCHOOKS's. Originally this is carried out in a hook, - but for MSP this is done via a service instead. - - It can be useful for scripters to simulate user actions, like entering text, closing the window etc - - If the data is modified make sure to realloc() or similar. - - wParam= Module name - lParam= (LPARAM)(GCHOOK *)gch // see m_chat.h - returns nonzero if the message should be dropped -} - -{ - NOTE! IRC will implement a service which also uses the same parameters: - - "/InsertGuiOut" //used for inserting a "fake" outgoing event to the GUI -} - - MS_MBOT_IRC_GUI_OUT = 'MBot/IrcGuiOut'; - - MS_MBOT_REGISTERIRC = 'MBot/RegisterIRCModule'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_keybindings.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_keybindings.inc deleted file mode 100644 index e0c31c31e5..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_keybindings.inc +++ /dev/null @@ -1,58 +0,0 @@ -{ -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2007 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 M_KEYBINDINGS} - -const - KB_CTRL_FLAG = $10000; - KB_SHIFT_FLAG = $20000; - KB_ALT_FLAG = $40000; - - KBDF_UNICODE = 1; - -type - TKEYBINDINGDESC = record - cbSize :int; //size of the structure - szSection :TChar; // section name used to display key bindings in the tree view [TRANSLATED-BY-CORE] - pszActionName :TChar; // action name used to display key bindings in the tree view [TRANSLATED-BY-CORE] - pszActionGroup:PAnsiChar; // action group name used to group unique shortcuts, shortcuts cannot be duplicated within a group - key :array [0..4] of dword; // virtual key + KB_* flags, up to 5 different shortcuts may be defined for each action - flags :dword; // flags (KBDF_*) - action :int; // id of the action - end; - -{Registers action with default key bindings assigned to it. - wParam = (WPARAM) 0; not used - lParam = (LPARAM) (KEYBINDINGDESC*) - return: 0 on success, error code otherwise -} - MS_KEYBINDINGS_REGISTER :PAnsiChar = 'KeyBindings/Register'; - -{Gets action assigned to the given key - key[0] and pszActionGroup in KEYBINDINGDESC should be set before calling this service - wParam = (WPARAM) 0; not used - lParam = (LPARAM) (KEYBINDINGDESC*) - return: 0 if action assigned to the given key was found, 1 otherwise -} - MS_KEYBINDINGS_GET :PAnsiChar = 'KeyBindings/Get'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_langman.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_langman.inc deleted file mode 100644 index 4f0079719d..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_langman.inc +++ /dev/null @@ -1,46 +0,0 @@ -{ -'Language Pack Manager'-Plugin for -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_LANGMAN} -{$DEFINE M_LANGMAN} - -const - -{ - Language Pack Manager v1.0.2.1 - If you have any question or extension whishes please let me know: - hrathh at users.sourceforge.net -} - -{ interface id } - MIID_LANGMAN: TGUID = '{D80370D5-4B1E-46a8-ACA4-1FAAD79B7D1E}'; - -{ Show the download language dialog. v1.0.1.2+ - wParam : 0 - lParam : 0 -The dialog can't have a parent due to it's asynchronous nature. -If the language window is already opened it will be -brought to front instead (returns success). -Returns 0 on success, nonzero otherwise. -} - MS_LANGMAN_SHOWLANGDIALOG = 'LangMan/ShowLangDialog'; - -{$ENDIF} // M_LANGMAN diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_mathmodule.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_mathmodule.inc deleted file mode 100644 index a4d10edfa6..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_mathmodule.inc +++ /dev/null @@ -1,199 +0,0 @@ -{$IFNDEF M_MATHMODULE} -{$DEFINE M_MATHMODULE} - {--------------------------------------------------- } - { - 2 - x + 2 Pi - + R - Sin(wt) - - Math-Module - - Miranda Plugin by Stephan Kassemeyer - MathModule API - (c) Stephan Kassemeyer - 8 May, 2004 - } - { --------- } - { - Miranda Service-functions defined by MathModule - call with the - int ( CallService)(const AnsiChar servicename,WPARAM,LPARAM) - that you get from miranda when Miranda calls the - Load(PLUGINLINK link) - of your PlugIn-dll - the CallService function then is: - link->CallServiceSync(Servicename,wparam,lparam) - } - { --------- } - -const - MATH_RTF_REPLACE_FORMULAE = 'Math/RtfReplaceFormulae'; - { replace all formulas in a RichEdit with bitmaps. } - { wParam = 0 } - { lParam = *TMathRichedit Info } - { return: TRUE if replacement succeeded, FALSE if not (disable by user?). } - { handle of richedit. } - { NULL: replace all. } -type - PMathRicheditInfo = ^TMathRicheditInfo; - TMathRicheditInfo = record - hwndRichEditControl : HWND; - sel : PCHARRANGE; - disableredraw : int; - end; - { WARNING: !!! } - { Strange things happen if you use this function twice on the same CHARRANGE: } - { if Math-startDelimiter == Math-endDelimiter, there is the following problem: } - { it might be that someone forgot an endDelimiter, this results in a lonesome startdelimiter. } - { if you try to MATH_REPLACE_FORMULAE the second time, startDelimiters and endDelimiters are mixed up. } - { The same problem occours if we have empty formulae, because two succeding delimiters are } - { replaced with a single delimiter. } - -const - MATH_GET_STARTDELIMITER = 'Math/GetStartDelimiter'; - { returns the delimiter that marks the beginning of a formula } - { wparam=0 } - { lparam=0 } - { result=*AnsiChar Delimiter } - { !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER } - - MATH_GETENDDELIMITER = 'Math/GetEndDelimiter'; - { returns the delimiter that marks the end of a formula } - { wparam=0 } - { lparam=0 } - { result=*AnsiChar Delimiter } - { !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER } - - MTH_FREE_MATH_BUFFER = 'Math/FreeRTFBitmapText'; - { deletes any buffer that MathModule has created. } - { wparam=0 } - { lparam=(*AnsiChar) buffer } - { result=0 } - - MATH_SETBKGCOLOR = 'Math/SetBackGroundColor'; - { changes the background color of the next formula to be rendered. } - { wparam=0 } - { lparam=(COLORREF) color } - { result=0 } - - MATH_SET_PARAMS = 'Math/SetParams'; - { sets a parameter (only integer values) encoded in wparam } - { wparam=paramcode } - { lparam=parametervalue } - { paramcodes: } -const - MATH_PARAM_BKGCOLOR = 0; // (COLORREF) std-rgb-color or TRANSPARENT_Color - MATH_PARAM_FONTCOLOR = 1; // (COLORREF) std-rgb-color - RESIZE_HWND = 2; // (HWND) preview window resizes RESIZE_HWND when - // it is being resized. - ToolboxEdit_HWND = 3; // (HWND) If this hwnd (of an edit-box) is set, - // MathModule can insert Formula-elements from - // the Math-Toolbox. -// you can make the BKGCOLOR Transparent (default) by using this color: - TRANSPARENT_Color = $FFFFFFFF-1; // this is default - -const - MTH_GETBITMAP = 'Math/GetBitmap'; - {returns Bitmap that represents the formula given in lparam (string-pointer) } - {this formula has NO Delimiters. } - {wparam=0 } - {lparam=(*AnsiChar)Formula } - {result=(HBITMAP) bitmap } - {!!! the bitmap must be deleted with DeleteObject(hobject) } - {example: } - {HBITMAP Bmp=(HBITMAP)CallService(MTH_GETBITMAP,0, (LPARAM)formula); } - - MTH_GET_RTF_BITMAPTEXT = 'Math/GetRTFBitmapText'; - { returns rich-text stream that includes bitmaps from text given in lparam } - { text included between MATH_GET_STARTDELIMITER and MATH_GETENDDELIMITER } - { hereby is replaced with a rtf-bitmap-stream that represents the corresponding formula } - { wparam=0 } - { lparam=*AnsiChar text } - { result=*AnsiChar rtfstream } - { !!! the result-buffer must be deleted with MTH_FREE_RTF_BITMAPTEXT } - - MTH_FREE_RTF_BITMAPTEXT = 'Math/FreeRTFBitmapText'; - { deletes the buffer that MTH_GET_RTF_BITMAPTEXT has created. } - { wparam=0 } - { lparam=(*AnsiChar) buffer } - { result=0 } - - { ************************************************************** } - { The following is still SRMM - specific. } - { I plan to modify it, so that other PlugIns can take advantage of e.g. preview-window.... } -const - MTH_SHOW = 'Math/Show'; - { shows the preview-window } - { wparam=0 } - { lparam=0 } - { result=0 } - - MTH_HIDE = 'Math/Hide'; - { hides the preview-window } - { wparam=0 } - { lparam=0 } - { result=0 } - - MTH_RESIZE = 'Math/Resize'; - { sets the size of the preview-window } - { wparam=0 } - { lparam=(*TMathWindowInfo) } - { result=0 } -type - PTMathWindowInfo = ^TTMathWindowInfo; - TTMathWindowInfo = record - top : int; - left : int; - right : int; - bottom: int; - end; - -const - MTH_SETFORMULA = 'Math/SetFormula'; - { sets the text that the preview-window should parse to display formulas found inside } - { wparam=0 } - { lparam=(*AnsiChar) text } - { result=0 } - - MTH_Set_ToolboxEditHwnd = 'Math/SetTBhwnd'; - { If this hwnd (of an edit-box) is set, MathModule can insert Formula-elements from the Math-Toolbox. } - { wparam=0 } - { lparam=handle } - {übergibt fenster-Handle des aktuellen Message-Dialogs } - - MTH_Set_Srmm_HWND = 'Math/SetSrmmHWND'; - { If MathModule knows the handle of a SRMM-based window, following features exist: } - { - preview window resizes Math-Srmm when it is being resized. } - { wparam=0 } - { lparam=handle } - { result=0 } - { todo: umbenennen in MTH_Set_ResizeWindowHandle, zusaetzlich MTH_Set_ToolboxEditHandle erstellen, dann keine SRMM-Abhaengigkeit mehr. } - { damit ResizeWindows selbst entscheiden koennen, was sie tun, kann man auch ein miranda-event "MTH_preview_resized" einrichten. } - - MTH_GET_PREVIEW_HEIGHT = 'Math/getPreviewHeight'; - { returns the height of the whole preview-window (including system-menu-bar) } - { consider this when maximizing a window to that preview-window is hooked on top or bottom } - { it returns the height no matter whether preview-window is visible or not } - { wparam=0 } - { lparam=0 } - { result=(int) height } - - MTH_GET_PREVIEW_SHOWN = 'Math/getPreviewShown'; - { returns 1 if preview window is visible } - { returns 0 if preview window is invisible } - { result=(int) shown } - - MTH_SUBSTITUTE_DELIMITER = 'Math/SubstituteDelimiter'; - { replaces Substitute given lparam-structure with internal Math-Delimiter } - { wparam=0 } - { lparam=(TMathSubstInfo) substInfo } - { result=0 } - -type - PTMathSubstInfo = ^TTMathSubstInfo; - TTMathSubstInfo = record - EditHandle : HWND; - Substitute : PAnsiChar; - end; -{--------------------------------------------------- } -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_motd.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_motd.inc deleted file mode 100644 index 3b986bf02e..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_motd.inc +++ /dev/null @@ -1,75 +0,0 @@ -{ -Copyright (C) 2005 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_MOTD} -{$DEFINE M_MOTD} - -//=== SERVICES === - -{ -MOTD/GetMessage service -Get a MOTD - -wparam = (MOTDMessage*)lpMOTDMessage -lparam = 0 -returns: 0 on success, -1 on failure. On success, lpMOTDMessage is filled with the MOTD -} -type - PMOTDMessage = ^TMOTDMessage; - TMOTDMessage = record - cbSize :int; // sizeof(MOTDMessage) - pszMessage :PAnsiChar; // Buffer to store message - cbMessageSize:dword; // Size of message buffer (including '\0') - pszAuthor :PAnsiChar; // Buffer to store author - cbAuthorSize :dword; // Size of author buffer (including '\0') - end; -const - MS_MOTD_GETMESSAGE = 'MOTD/GetMessage'; - -{ -MOTD/AddMessage service -Add a message to the MOTD list - -wparam = (MOTDMessage*)lpMOTDMessage -lparam = 0 -returns: 0 on success, -1 on failure -} - MS_MOTD_ADDMESSAGE = 'MOTD/AddMessage'; - -{ -MOTD/ShowMessage service -Show a popup with a MOTD - -wparam = 0 -lparam = 0 -returns: 0 -} - MS_MOTD_SHOWMESSAGE ='MOTD/ShowMessage'; - -{ -MOTD/ShowAddMessage service -Show a dialog to add a MOTD - -wparam = 0 -lparam = 0 -returns: 0 -} - MS_MOTD_SHOWADDMESSAGE = 'MOTD/ShowAddMessage'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_nickhistory.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_nickhistory.inc deleted file mode 100644 index 240fc73b29..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_nickhistory.inc +++ /dev/null @@ -1,50 +0,0 @@ -{ -Copyright (C) 2006 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_NICKHISTORY} -{$DEFINE M_NICKHISTORY} - -const - EVENTTYPE_NICKNAME_CHANGE = 9001; - -{ -Return TRUE is Nick History is enabled for this contact - -wParam: hContact -lParam: ignored -} - MS_NICKHISTORY_ENABLED = 'NickHistory/Enabled'; - -{ -Enable Nick History for a contact - -wParam: hContact -lParam: ignored -} - MS_NICKHISTORY_ENABLE = 'NickHistory/Enable'; - -{ -Disable Nick History for a contact - -wParam: hContact -lParam: ignored -} - MS_NICKHISTORY_DISABLE = 'NickHistory/Disable'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_simpleaway.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_simpleaway.inc deleted file mode 100644 index 16bf2328fb..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_simpleaway.inc +++ /dev/null @@ -1,26 +0,0 @@ -{$IFNDEF M_SIMPLEAWAY} -{$DEFINE M_SIMPLEAWAY} - -const -// lParam = (AnsiChar *)status message -// wParam = new status, from statusmodes.h - MS_SA_SETSTATUSMODE = 'SimpleAway/SetStatusMode'; - MS_AWAYSYS_SETSTATUSMODE = MS_SA_SETSTATUSMODE //for compatibility with some plugins - -//Internal use only - MS_SA_TTCHANGESTATUSMSG = 'SimpleAway/TTChangeStatusMessage'; - -//wParam=new status, from statusmodes.h -//lParam=protocol name, NULL if for all protocols (added in v0.3.1alpha) - MS_SA_CHANGESTATUSMSG = 'SimpleAway/ChangeStatusMessage' - -// wParam = 0 -// lParam = 0 -// allways returns 1 - MS_SA_ISSARUNNING = 'SimpleAway/IsSARunning'; - -// wParam = 0 -// lParam = 0 - MS_SA_COPYAWAYMSG = 'SimpleAway/CopyAwayMsg'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_smh.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_smh.inc deleted file mode 100644 index 134b2075e8..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_smh.inc +++ /dev/null @@ -1,50 +0,0 @@ -{ -Copyright (C) 2006 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_SMH} -{$DEFINE M_SMH} - -const - EVENTTYPE_STATUSMESSAGE_CHANGE = 9002; - -{ -Return TRUE is Status Message History is enabled for this contact - -wParam: hContact -lParam: ignored -} - MS_SMH_ENABLED = 'SMH/Enabled'; - -{ -Enable Status Message History for a contact - -wParam: hContact -lParam: ignored -} - MS_SMH_ENABLE = 'SMH/Enable'; - -{ -Disable Status Message History for a contact - -wParam: hContact -lParam: ignored -} - MS_SMH_DISABLE = 'SMH/Disable'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_smr.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_smr.inc deleted file mode 100644 index d8feacfc6a..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_smr.inc +++ /dev/null @@ -1,59 +0,0 @@ -{ -Copyright (C) 2005 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_SMR} -{$DEFINE M_SMR} - -const -{ -Return TRUE is smr is enabled for this protocol -If is enabled, status message is kept under CList\StatusMsg db key in user data - -wParam: protocol name -lParam: ignored -} - MS_SMR_ENABLED_FOR_PROTOCOL = 'SMR/MsgRetrievalEnabledForProtocol'; - -{ -Return TRUE is smr is enabled for this contact and its protocol (smr can be -disabled per user, if protocol is enabled) -If is enabled, status message is kept under CList\StatusMsg db key in user data - -wParam: hContact -lParam: ignored -} - MS_SMR_ENABLED_FOR_CONTACT = 'SMR/MsgRetrievalEnabledForUser'; - -{ -Enable status message retrieval for a contact - -wParam: hContact -lParam: ignored -} - MS_SMR_ENABLE_CONTACT = 'SMR/EnableContactMsgRetrieval'; - -{ -Disable status message retrieval for a contact - -wParam: hContact -lParam: ignored -} - MS_SMR_DISABLE_CONTACT = 'SMR/DisableContactMsgRetrieval'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_snapping_windows.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_snapping_windows.inc deleted file mode 100644 index e3c513482a..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_snapping_windows.inc +++ /dev/null @@ -1,35 +0,0 @@ -{$IFNDEF SNAPPING_WINDOWS} -{$DEFINE SNAPPING_WINDOWS} - -type - PSnapWindowProc = ^TSnapWindowProc; - TSnapWindowProc = record - hWnd : THWND; - m_szMoveOffset : TSIZE; - wParam : WPARAM; - lParam : LPARAM; - Reserved1 : int; - Reserved2 : int; - Reserved3 : int; - end; - -const - MS_SNAPWINDOWPROC = 'Utils/SnapWindowProc'; - -function CallSnappingWindowProc(hwnd:hwnd; nMessage:int; - wParam:WPARAM;lParam:LPARAM):int;// cdecl; -const - SnapInfo:TSnapWindowProc=(); -begin - result:=0; - if (nMessage=WM_MOVING) or (nMessage=WM_NCLBUTTONDOWN) or - (nMessage=WM_SYSCOMMAND) or (nMessage=WM_SIZING) then - begin - SnapInfo.hWnd := hwnd; - SnapInfo.wParam := wParam; - SnapInfo.lParam := lParam; - CallService(MS_SNAPWINDOWPROC,WPARAM(@SnapInfo),nMessage); - if nMessage=WM_SIZING then result:=1; - end; -end; -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_spamfilter.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_spamfilter.inc deleted file mode 100644 index 54c4729a81..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_spamfilter.inc +++ /dev/null @@ -1,751 +0,0 @@ -{ -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright © 2003-2004 Heiko Herkenrath - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_SPAMFILTER} -{$DEFINE M_SPAMFILTER} - -const -// Spam Filter Version: 2.5.2.1 -// See "spamcheck.c" in the sources for an example on how to use the spam checking services. - -// The functionality and the API of Spam Filter is quite complex -// and not easy to describe or explain. -// If you have any question or extension whishes please send me an e-mail: -// hrathh at users.sourceforge.net - -// Notes: -// * All services are fully thread-safe, you can call everything from any thread -// (If there are problems with it it is a bug :-) ) -// * Unicode parameters can also be passed to the ANSI version of the plugin -// and the other way round. The strings get converted as they are needed -// using automatic two-way translation. -// Unicode support was added in v2.5.0.0. - -// ------------------------------------------- -// -- Getting handles ------------------------ -// ------------------------------------------- - - MS_SPAMFILTER_GETHANDLE = 'SpamFilter/GetHandle'; - -// Description: -// ------------- -// Gets a specified icon/window handle. - -// Parameters: -// ------------- -// wParam = (uint)uHandleType (see below); -// lParam = 0 - -// Possible values for wParam: - SFHT_HWND_PLUGIN_OPTIONS = 2; // HWND of the "Spam Filter" options dialog (if it is loaded; else NULL) - SFHT_HICON_SPAM = 3; // HICON of the spam icon (small): needs to be destroyed! (DestroyIcon()) - // Added in v2.0.2.0: - SFHT_HICON_SPAM_LARGE = 4; // HICON of the spam icon (large): needs to be destroyed! (DestroyIcon()) - SFHT_HICON_SPAM_LAYER = 5; // HICON of the spam layer icon (small): needs to be destroyed! (DestroyIcon()) - // Icons are taken directly from resources, not skinned by user - // Added in v2.0.3.0: - SFHT_HWND_ADVERTISMENT_FILTER = 6; // HWND of the "Advertisment Filter" settings dialog (if it is opened; else NULL) - SFHT_HWND_ROBOT_FILTER = 7; // HWND of the "Robot Filter" settings dialog (if it is opened; else NULL) - SFHT_HWND_DISLIKEDMESSAGES_FILTER = 8; // HWND of the "Disliked Messages Filter" settings dialog (if it is opened; else NULL) - // Added in v2.5.0.0: - SFHT_HWND_SPAMDEFINITIONS_INFO = 9; // HWND of the "Spam Definitions" info dialog (if it is opened; else NULL) - SFHT_HWND_SPAMMERS_INFO = 10; // HWND of the Spammers info dialog (if it is opened; else NULL) - - SFHT_BOOL_IS_UNICODE = 100; // No handle, returns TRUE if Spam Filter is installed as Unicode version, FALSE otherwise - // (You probably never need to call this since Spam Filter performs automatic two-way translation - // when a service is called) - -// Note: Icons are taken directly from resources, they are not skinned by user. - - -// Return Values: -// -------------- -// Returns the specified handle value: HINSTANCE, HWND, ICON -// -// Note: -// If a handle is not available (or if it was removed) the function will -// return NULL. -// When you are using this service you need to check always for the -// NULL return value. - -// ------------------------------------------- -// -- Activating/Deactivating the filters ---- -// ------------------------------------------- - - MS_SPAMFILTER_CHANGEFILTERACTIVATION = 'SpamFilter/ChangeFilterActivation'; - -// Description: -// ------------- -// Provides the possibility to enable or disable the spam filters. -// Also updates the checkboxes in the spam filter options if the option dialog is opened. - -// Parameters: -// ------------- -// wParam = (uint)uFilterType (For possible values see below) -// lParam = (bool)bNewState (new activation state of filter) - -// Possible filter type values (uFilterType): - SFT_ADVERTISMENT_FILTER = 1; - SFT_DISLIKEDMESSAGES_FILTER = 2; - SFT_ROBOT_FILTER = 3; - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - -// ------------------------------------------- -// -- Showing configure dialogs -------------- -// ------------------------------------------- - - MS_SPAMFILTER_SHOWFILTERDIALOG = 'SpamFilter/ShowFilterDialog'; - -// Description: -// ------------- -// Shows the configure dialog of the specified filter. - -// Parameters: -// ------------- -// wParam = (HWND)hwndParent (Can be NULL) -// lParam = (uint)uFilterType (For possible values see above) -// -> since 2.0.2.0: If this is zero then the options dialog will be opened pointing to the Spam Filter options. -// Note: -// If hwndParent is not NULL the function will not return -// until the configure dialog is closed. -// If hwndParent is NULL the Miranda window will be used as parent - -// Since 2.0.2.0: - SFTEX_OPTIONS_PAGE = 0; - -// Since 2.5.0.0: -// Combine the following flag with the lParam/uFilterType parameter -// to show the corresponding Spam Definitions info dialog instead -// of the settings dialog: - SFTEXF_SPAMDEFINITIONS_INFO = $2000; -// Note: SFTEXF_SPAMDEFINITIONS_INFO can't be combined with SFT_ROBOT_FILTER - -// Combine the following flag with the lParam/uFilterType of 0 parameter -// to show the Spammers dialog instead of the settings dialog: - SFTEXF_SPAMMERS_INFO = $4000; -// Note: SFTEXF_SPAMMERS_INFO can't be combined with SFT_* - - - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - -// Since v2.0.3.0: -// If the specified settings window is already opened it will be -// brought to front (reactivated) instead (returns success though). -// This might be changed however in the future. - -// Changed behaviour in v2.0.3.0: -// If hwndParent was not set then the function returned the handle to the new window. -// Now the function returns 0 to indicate success instead. - - -// ------------------------------------------- -// -- Adding message types ------------------- -// ------------------------------------------- - - MS_SPAMFILTER_REGISTERMESSAGETYPE = 'SpamFilter/MessageTypes/Register'; - -// Description: -// ------------- -// Adds a new message type which can be checked for spam. -// Associated event: ME_SPAMFILTER_PREREGISTERMESSAGETYPE - -// Parameters: -// ------------- -// wParam = 0 -// lParam = (MESSAGETYPEDESC*)mtd (see below) - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - -// Already registered message types are: -// (With pszSection set to the installed network protocol names, e.g. "ICQ") - SFMT_AUTHREQUEST = 'Auth'; - SFMT_ADDED = 'Added'; // since v2.1.0.0 - SFMT_MESSAGE = 'Msg'; - SFMT_URL = 'URL'; - SFMT_FILE = 'File'; - SFMT_CONTACTS = 'Contacts'; - - -// MESSAGETYPEDESC structure: -type - PMESSAGETYPEDESC = ^TMESSAGETYPEDESC; - TMESSAGETYPEDESC = record - cbSize :integer; // Set to sizeof(MESSAGETYPEDESC) - pszSection :PAnsiChar; // Section of message name for database - // e.g. protocol name (Can not be NULL) - SectionDescription:TChar; // Readable name of section e.g. protocol name (can be NULL) - // Ignored if section existed previously - hSectionIcon :THANDLE; // Icon to show for section e.g. protocol icon (can be NULL) - // Ignored if section existed previously - pszName :PAnsiChar; // Name to refer to message type when spam - // checking and in db (Can not be NULL) - Description :TChar; // Description for options dialog (can be NULL) - hIcon :THANDLE; // EITHER: icon handle representing the message - // type OR: one of mirandas skin constants with - // a negative sign, e.g (HICON)-SKINICON_EVENT_MESSAGE, - // same as for LoadSkinnedIcon() -> can be 0 - // and can also be a normal icon handle (HICON) - bDefaultStatus :bool; // Whether checking for this type should be - // activated or not by default - dwFlags :dword; // Flags for the message type (for possible flags see below) - iSectionPosition :integer; // Approx position number for the section in the - // options list, lower numbers are nearer to the - // top (Can be 0 to be sorted alphabetically) - // Ignored if section existed previously (or - // if pszSection is NULL) Added in v2.1.1.0 - iPosition :integer; // Approx position number for the item in the - // options list, lower numbers are nearer to the - // top (Can be 0 to be sorted alphabetically) - // Added in v2.1.1.0 - end; - -const - -// Possible MESSAGETYPEDESC flags: - MTDF_DEFAULTDISABLED = $00000001; // Is disabled by default - MTDF_HIDDEN = $00000002; // Does not get shown on the options page -// Since v2.5.0.0 - MTDF_UNICODE = $00000004; // pszSectionDescription and pszDescription are Unicode strings - - -// ------------------------------------------- -// -- Modify new added message type (Event) -- -// ------------------------------------------- - - ME_SPAMFILTER_PREREGISTERMESSAGETYPE = 'SpamFilter/MessageTypes/PreRegister'; - -// Description: -// ------------- -// Gets fired before a new message type is added to be checked for spam. -// -// This is meant for asking other plugins if the specified default data is ok. -// Other plugins (especially protocols) can disable a message type if either sending spam -// is not possible for those protocols or if spam checking would cause unwanted side-effects. - -// Warning: Most elements of the MESSAGETYPEDESC structure can also be NULL. -// However, the structure was checked for errors before this events gets called. - -// Parameters: -// ----------------- -// wParam = 0 (same wParam as used for MS_SPAMFILTER_REGISTERMESSAGETYPE) -// lParam = (MESSAGETYPEDESC*)mtd (see above, contents can be modified) - -// Return Values: -// ----------------- -// Returning 0 on this event will accept the message type to be added. -// Returning 1 will prevent the the message type to be added. - -// Note: Works as it does now since v2.1.1.0 - - -// ------------------------------------------- -// -- Uninstalling a message type ------------ -// ------------------------------------------- - - MS_SPAMFILTER_REMOVEMESSAGETYPE = 'SpamFilter/RemoveMessageType'; - -// Description: -// ------------- -// Uninstalls a specifed message type. It removes the database setting related to the given message type. -// Should only be used for uninstalling purposes (e.g in uninstall function of PluginUninstaller) - -// Parameters: -// ------------- -// wParam = (AnsiChar*)pszMsgTypeName (Message type name; You need to use MS_SPAMFILTER_REGISTERMESSAGETYPE before) -// lParam = (AnsiChar*)pszMsgTypeSection (The section of the message type string; You need to use MS_SPAMFILTER_REGISTERMESSAGETYPE before) - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error.. - - -// ------------------------------------------- -// -- Message type activation ---------------- -// ------------------------------------------- - - MS_SPAMFILTER_ISMESSAGETYPEACTIVATED = 'SpamFilter/MessageTypes/IsActivated'; - -// Description: -// ------------- -// Returns if a specified message type is activated or not. - -// Parameters: -// ------------- -// wParam = (AnsiChar*)pszMsgTypeName (Message type name; You need to use MS_SPAMFILTER_REGISTERMESSAGETYPE before) -// lParam = (AnsiChar*)pszMsgTypeSection (The section of the message type string; You need to use MS_SPAMFILTER_REGISTERMESSAGETYPE before) - -// Return Values: -// -------------- -// Returns TRUE if the message type is activated and FALSE otherwise. - - -// ------------------------------------------- -// -- Reset AutoIgnore counters -------------- -// ------------------------------------------- - - MS_SPAMFILTER_RESETAUTOIGNORE = 'SpamFilter/AutoIgnore/Reset'; - -// Description: -// ------------- -// Resets the list in which the total number of spam sent by -// each user is kept. -// The list is necessary to determine when a particular user reached the -// allowed spam messages limit. - -// Parameters: -// ------------- -// wParam = (bool)bOnlyCount (if TRUE the service will only return the user count without doing reset) -// lParam = 0 - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - -// ----------------------------------------- -// -- Spam Checking ------------------------ -// ----------------------------------------- - - MS_SPAMFILTER_ADVERTISMENTCHECK = 'SpamFilter/AdvertismentCheck'; - MS_SPAMFILTER_DISLIKEDMESSAGESCHECK = 'SpamFilter/DislikedMessagesCheck'; - MS_SPAMFILTER_ROBOTCHECK = 'SpamFilter/RobotCheck'; - -// Description: -// ------------- -// These services provide the possibility to check a specified text for contained spam. -// The function checks for everything that is activated in the plugin's options. - -// Note: These functions work as they do now since v2.1.0.0 - -// Parameters: -// ------------- -// wParam = (SPAMCHECKDATA*)scd -// lParam = 0 - -// SPAMCHECKDATA structure: -type - PSPAMCHECKDATA = ^TSPAMCHECKDATA; - TSPAMCHECKDATA = record - cbSize :integer; // sizeof(SPAMCHECKDATA) - pszMsgTypeSection:PAnsiChar; // The section of the message type string: You need - // to use MS_SPAMFILTER_REGISTERMESSAGETYPE before - pszMsgTypeName :PAnsiChar; // Description of the message: You need to use - // MS_SPAMFILTER_REGISTERMESSAGETYPE before - MsgText :TChar; // Pointer to the text of a message which is - // checked for spam. Can be NULL. - dwFlags :dword; // Flags for the spam checking. (For more details see below.) - case LongInt of - 0: (hContact: TMCONTACT); // Handle to the sending contact (use pszUserName - // instead if no hContact is available) - 1: (UserName: TChar); // Name of the user, e.g. nick (set SCDF_NO_CONTACT - // in the flags to use this parameter) -> should - // be as unique as possible - end; - -const -// Possible flags in the SPAMCHECKDATA structure: - SCDF_NO_NOTIFY = $00000001; // Don't show a popup, play sound or log to file if the message is spam. - SCDF_NO_CANCEL = $00000002; // Do check even if user pressed control key to avoid the spam check manually - SCDF_NO_AUTOIGNORE = $00000004; // Do not use the AutoIgnore feature for this check - SCDF_NO_CONTACT = $00000008; // Use pszUserName instead of hContact of union -// Since v2.5.0.0: - SCDF_UNICODE = $00000010; // Specify this flag if associated message text and/or user name is Unicode - - -// Return Values: -// -------------- -// Possible return flags: - SFF_MARKREAD = $00000010; // Flag - SFF_DELETE = $00000020; // Flag - SFF_IGNORE = $00000040; // Flag - SFF_SENDMSG_NOTIFY = $00000100; // Flag, Only MS_SPAMFILTER_DISLIKEDMESSAGESCHECK - SFF_SENDMSG_INSTRUCTION = $00000200; // Flag, Only MS_SPAMFILTER_ROBOTCHECK - SFF_SENDMSG_CONFIRMATION = $00000400; // Flag, Only MS_SPAMFILTER_ROBOTCHECK - SFF_TESTPASSED = $00000080; // Flag, Only MS_SPAMFILTER_ROBOTCHECK - SFF_ISSPAM = $00000002; // Flag - SFF_ISNORMAL = $00000001; // Flag -// Since 2.5.2.0: - SFF_HIDE = $00001000; // Flag, Only MS_SPAMFILTER_ROBOTCHECK - -// ------------------------------------------- -// -- Getting additional Check Info ---------- -// ------------------------------------------- - - MS_SPAMFILTER_GETSPAMCHECKINFO = 'SpamFilter/GetSpamCheckInfo'; - -// Description: -// ------------- -// Gets data needed for the processing of spam mesages. - -// Parameters: -// ------------- -// wParam = (dword)dwDataType (For possible values see below) -// lParam = depends on wParam (see below) - -// Possible values for lParam: - -// TRUE/FALSE: if the specified filter is enabled - SFSCI_ACTIVATION_FILTER = 1; // lParam = uFilterType (For possible values see above) - -// Strings: Get the message texts specified by the user -// ANSI - SFSCI_MSGTEXT_NOTIFYA = 2; // lParam = (SPAMCHECKDATA*)scd, scd->hContact (or scd->pszUserName) and scd->pszMsgText (and scd->cbSize) should be filled in. - SFSCI_MSGTEXT_INSTRUCTIONA = 3; // lParam: see SFSCI_MSGTEXT_NOTIFYA - SFSCI_MSGTEXT_CONFIRMATIONA = 4; // lParam: see SFSCI_MSGTEXT_NOTIFYA - -// Unicode (since v2.5.0.0) - SFSCI_MSGTEXT_NOTIFYW = 6; // lParam = (SPAMCHECKDATA*)scd, scd->hContact (or scd->pwszUserName) and scd->pwszMsgText (and scd->cbSize) should be filled in. - SFSCI_MSGTEXT_INSTRUCTIONW = 7; // lParam: see SFSCI_MSGTEXT_NOTIFYW - SFSCI_MSGTEXT_CONFIRMATIONW = 8; // lParam: see SFSCI_MSGTEXT_NOTIFYW - -// TRUE/FALSE: if the above message text should be added to history. - SFSCI_ADD_TO_HISTORY = 5; // lParam = SFSCI_MSGTEXT_NOTIFY(A/W), SFSCI_MSGTEXT_INSTRUCTION(A/W) or SFSCI_MSGTEXT_CONFIRMATION(A/W) - -// Since 2.5.2.0: -// Counts of milliseconds to delay the above message texts sending. - SFSCI_DELAY_TIME_REPLY = 9; // lParam=0 - - -// Return Values: -// -------------- -// SFSCI_ACTIVATION_FILTER -> (bool)TRUE/FALSE -// SFSCI_DELAY_TIME_REPLY -> (bool)TRUE/FALSE - -// SFSCI_MSGTEXT_NOTIFYA -> (AnsiChar*) free with miranda_sys_free() of "m_system.h", (all %vars% in the text are already resolved) -// SFSCI_MSGTEXT_INSTRUCTIONA -> see SFSCI_MSGTEXT_NOTIFYA -// SFSCI_MSGTEXT_CONFIRMATIONA -> see SFSCI_MSGTEXT_NOTIFYA - -// SFSCI_MSGTEXT_NOTIFYW -> (WCHAR*) free with miranda_sys_free() of "m_system.h", (all %vars% in the text are already resolved) -// SFSCI_MSGTEXT_INSTRUCTIONW -> see SFSCI_MSGTEXT_NOTIFYW -// SFSCI_MSGTEXT_CONFIRMATIONW -> see SFSCI_MSGTEXT_NOTIFYW - -// SFSCI_ADD_TO_HISTORY -> (bool)TRUE/FALSE - -// returns NULL on error - - -// ------------------------------------------- -// -- Confirm spam check (Event) ------------- -// ------------------------------------------- - - ME_SPAMFILTER_OKTOSPAMCHECK = 'SpamFilter/OkToSpamCheck'; - -// Description: -// ------------- -// Gets fired before the spam check for a message starts. - -// Parameters: -// ----------------- -// wParam = (SPAMCHECKDATA*)scd (Pointer to SPAMCHECKDATA struct) -// lParam = (uint)uFilterType (For possible values see above) - -// Return Values: -// ----------------- -// Returning 0 on this event will accept spam checking for the message, -// Returning 1 will prevent the spam check. - - -// ------------------------------------------- -// -- Confirm spam detection (Event) --------- -// ------------------------------------------- - - ME_SPAMFILTER_OKTOSPAMDETECTION = 'SpamFilter/OkToSpamDetection'; - -// Description: -// ------------- -// Gets fired after a spam message is detected. - -// Parameters: -// ----------------- -// wParam = (SPAMCHECKDATA*)scd (Pointer to SPAMCHECKDATA struct) -// lParam = (uint)uFilterType (For possible values see above) - -// Return Values: -// ----------------- -// Returning 0 on this event will accept the spam detection -// Returning 1 cause the message not to be seen as spam. - -// Note: If you only would like to get the final result hook -// ME_SPAMFILTER_SPAMRECEIVED instead - - -// ------------------------------------------- -// -- Spam message received (Event) ---------- -// ------------------------------------------- - - ME_SPAMFILTER_SPAMRECEIVED = 'SpamFilter/SpamReceived'; - -// Description: -// ------------- -// Gets fired when a message if recognized as spam. - -// Parameters: -// ----------------- -// wParam = (SPAMCHECKDATA*)scd (Pointer to SPAMCHECKDATA struct) -// lParam = (uint)uFilterType (For possible values see above) - -// Return Values: -// ----------------- -// The return value should be 0. - - -// ------------------------------------------- -// -- Spam Filter loaded (Event) ------------- -// ------------------------------------------- - - ME_SPAMFILTER_MODULELOADED = 'SpamFilter/ModuleLoaded'; - -// Description: -// ------------- -// Gets fired when a all parts of the "Spam Filter" were loaded and available -// to other plugins. -// Past this event all functionality of the plugin is fully available. -// The event works quite similar as ME_SYSTEM_MODULESLOADED. -// You can use ME_SYSTEM_MODULESLOADED in most cases instead. Please do so! - -// Parameters: -// ----------------- -// wParam = 0 -// lParam = 0 - -// Return Values: -// ----------------- -// The return value should be 0. - - - -// ------------------------------------------- -// -- Helper: Duplicate SPAMCHECKDATA -------- -// ------------------------------------------- - - MS_SPAMFILTER_COPYSPAMCHECKDATA = 'SpamFilter/SpamCheckData/Copy'; - -// Description: -// ------------- -// Copys all contents of a SPAMCHECKDATA struct (especially strings) to another one -// using Miranda's Memory Manager Interface (see m_system.h). -// Use MS_SPAMFILTER_FREESPAMCHECKDATA to free the result when no longer needed. - -// Available since 2.5.2.0. - -// Parameters: -// ------------- -// wParam = (SPAMCHECKDATA*)pscdTo -// lParam = (SPAMCHECKDATA*)pscdFrom - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - - -// ------------------------------------------- -// -- Helper: Free SPAMCHECKDATA ------------- -// ------------------------------------------- - - MS_SPAMFILTER_FREESPAMCHECKDATA = 'SpamFilter/SpamCheckData/Free'; - -// Description: -// ------------- -// Frees the memory allocated by MS_SPAMFILTER_COPYSPAMCHECKDATA. -// using Miranda's Memory Manager Interface (see m_system.h). - -// Available since 2.5.2.0. - -// Parameters: -// ------------- -// wParam = (SPAMCHECKDATA*)pscd -// lParam = 0 - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on failure. - - - -// ------------------------------------------- -// -- Showing error messages ----------------- -// ------------------------------------------- - - MS_SPAMFILTER_SHOWERROR = 'SpamFilter/ShowError'; - -// Description: -// ------------- -// Shows a Miranda try balloon tip, popup or message box -// with the specified error message. - -// Parameters: -// ------------- -// wParam = (uint)uErrorType (For possible values see below) -// lParam = 0 - -// Possible values for wParam: - SFSE_CRITICAL_ERROR = 1; // Unspecified critical error occured related to spam checking. - // Only use this for situations that may never ever occur. - // Please do avoid this if possible. - - SFSE_SEND_FAILED = 2; // Show this error when a sending of SFSCI_MSGTEXT_NOTIFY, - // SFSCI_MSGTEXT_INSTRUCTION, or SFSCI_MSGTEXT_CONFIRMATION failed - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - - -// ------------------------------------------- -// -- Set contact as spammer (Contact) ------- -// ------------------------------------------- - - MS_SPAMFILTER_CONTACT_SETASSPAMMER = 'SpamFilter/Contact/SetAsSpammer'; - -// Description: -// ------------- -// This service adds a specified user to the spammer list (fully ignored). - -// Note: works same as MS_SPAMFILTER_CONTACT_SHOWSETASSPAMMERDIALOG -// but does not prompt the user. - -// Available since v2.5.0.0 - -// Parameters: -// ------------- -// wParam = (HANDLE)hContact (Handle to a contact in database. Can't be NULL.) -// lParam = (dword)dwFlags (flags about what should be done, see below) - -// Available Flags: - SCASF_NO_NOTIFY = $00000001; // Prevents logging and playing of sounds - SCASF_USE_ROBOT_SOUND = $00000002; // play robot sound instead of advertisment sound (only if SCASF_NO_NOTIFY is not set) - SCASF_NO_REMOVE_HISTORY = $00000004; // history is marked read instead of fully removed - SCASF_NO_DENY_AUTHREQUESTS = $00000008; // do not deny pending auth requests - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - -// ------------------------------------------- -// -- Show mark spammer dialog (Contact) ----- -// ------------------------------------------- - - MS_SPAMFILTER_CONTACT_SHOWSETASSPAMMERDIALOG = 'SpamFilter/Contact/ShowSetAsSpammerDialog'; - -// Description: -// ------------- -// This service adds a specified user to the spammer list. -// Before it shows a dialog to let the user confirm the action. -// For use for example as action for a button on the message dialog. - -// Note: This service performs the same tasks as MS_SPAMFILTER_SETCONTACTASSPAMMER -// to execute the action the user chooses. - -// Available since v2.5.0.0 - -// Parameters: -// ------------- -// wParam = (HANDLE)hContact (Handle to a contact in database. Can't be NULL.) -// lParam = (HWND)hwndParent (Handle to the parent window. Can be NULL.) - -// Return Values: -// -------------- -// Returns FALSE if user clicked cancel on the dialog. -// TRUE if the contact was handled as spammer. - - -// Changed in v2.5.0.0: -// The service MS_SPAMFILTER_SETSPAMMANUALLY has been deprecated. -// New plugins should use MS_SPAMFILTER_CONTACT_SHOWSETASSPAMMERDIALOG instead. - MS_SPAMFILTER_SETSPAMMANUALLY = 'SpamFilter/SetSpamManually'; - - -// ------------------------------------------- -// -- Test if contact is spammer (Contact) --- -// ------------------------------------------- - - MS_SPAMFILTER_CONTACT_ISSPAMMER = 'SpamFilter/Contact/IsSpammer'; - -// Description: -// ------------- -// This service tests if a specified contact is on the spammer list (fully ignored). - -// Available since v2.5.0.0 - -// Parameters: -// ------------- -// wParam = (HANDLE)hContact (Handle to a contact in database. Can't be NULL.) -// lParam = 0 - -// Return Values: -// -------------- -// Returns TRUE when the contact is on the spammer list, FALSE otherwise. - - -// ------------------------------------------- -// -- Unmarks a contact as spammer (Contact) - -// ------------------------------------------- - - MS_SPAMFILTER_CONTACT_UNSETSPAMMER = 'SpamFilter/Contact/UnSetSpammer'; - -// Description: -// ------------- -// This service restores a spammer to be again a normal contact (unignored). - -// Available since v2.5.0.0 - -// Parameters: -// ------------- -// wParam = (HANDLE)hContact (Handle to a contact in database. Can't be NULL.) -// lParam = 0 - -// Return Values: -// -------------- -// Returns 0 on success, nonzero on error. - - -// ------------------------------------------- -// -- Spammer state changed (Event) ---------- -// ------------------------------------------- - - ME_SPAMFILTER_CONTACT_SPAMMERSTATECHANGED = 'SpamFilter/Contact/SpammerStateChanged'; - -// Description: -// ------------- -// Gets fired when a a contact gets marked as spammer or unmarked. - -// Parameters: -// ----------------- -// wParam = (HANDLE)hContact -// lParam = (bool)bIsSpammer (new state) - -// Return Values: -// ----------------- -// The return value should be 0. - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_speak.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_speak.inc deleted file mode 100644 index 7badc4e0a4..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_speak.inc +++ /dev/null @@ -1,267 +0,0 @@ -{ -Copyright (C) 2007 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_SPEAK} -{$DEFINE M_SPEAK} - -(* -There is 2 ways of using the speak plugin: - -1. Older and simple way: just call - Speak_Say(hContact, _T("text to speak")) -and the text will be spoken using contact settings. If hContact is NULL, it will use -system settings. -Previous versions only had an ascii version, so if you want to support then you need -to call - Speak_SayA(hContact, "text to speak") - - -2. Integrating with meSpeak GUI: for that you have first to register a speak type and -then call the speak functions. In both case you have 2 options: - -2.1 Sending the full text: meSpeak GUI will only allow to enable/disable the type. -To register call (in modules loaded): - Speak_Register("PluginName (DB key)", "name", "Prety name for GUI", "icon_xyz") -And to speak call: - Speak_SayEx("name", hContact, _T("text to speak")) - -2.2 Using templates: you will not pass the text, but some variables. meSpeak handles -the GUI to allow the user to create the text for those variables. These functions -end with WT (with templates). -To register call (in modules loaded): - AnsiChar *templates[] = { "Name\nDefault\n%var1%\tDescription 1\n%var2%\tDescription2\n%var3%\tDescription 3" }; - Speak_RegisterWT("PluginName (DB key)", "name", "Prety name for GUI", "icon_xyz", - templates, 1); -And to speak call: - TCHAR *variables[] = { _T("var1"), _T("Value 1"), _T("var2"), _T("Value 2"), _T("var3"), _T("Value 3") }; - Speak_SayExWT("name", hContact, 0, variables, 3); -*) - -const - MIID_SPEAK = '{1EF72725-6A83-483B-AA50-8953E359EEAD}'; - - {* - Speak a text - - wParam: (HANDLE) hContact - lParam: (AnsiChar *) text - return: 0 on success - *} - MS_SPEAK_SAY_A = 'Speak/Say'; - - {* - Speak a unicode text - - wParam: (HANDLE) hContact - lParam: (WCHAR *) text - return: 0 on success - *} - MS_SPEAK_SAY_W = 'Speak/SayW'; - -type - PSPEAK_TYPE = ^TSPEAK_TYPE; - TSPEAK_TYPE = record - cbSize: integer; - module: PAnsiChar; - name: PAnsiChar; // Internal type name - description: PAnsiChar; // Will be translated - icon: PAnsiChar; // Name off icolib icon - // Aditional data if wants to use add to history services - templates: ^PAnsiChar; // Each entry is: "Name\nDefault\n%var%\tDescription\n%var%\tDescription\n%var%\tDescription" - numTemplates: integer; - end; - -const - {* - Register and speak type - - wParam: (SPEAK_TYPE *) type - lParam: 0 - return: 0 on success - *} - MS_SPEAK_REGISTER = 'Speak/Register'; - -const - SPEAK_CHAR = 1; - SPEAK_WCHAR = 2; - -type - PSPEAK_ITEM = ^TSPEAK_ITEM; - TSPEAK_ITEM = record - cbSize: integer; - _type: PAnsiChar; // Internal type name - hContact: TMCONTACT; - flags: integer; // SPEAK_* - templateNum: integer; // -1 to use text - case boolean of - true: (text: PAnsiChar); - false: ( - variables: pointer; - numVariables: integer; - ); - end; - -const - {* - Speak a text - - wParam: (SPEAK_ITEM *) Item - lParam: 0 - return: 0 on success - *} - MS_SPEAK_SAYEX = 'Speak/SayEx'; - - -{$IFDEF I_AM_A_CONSTANT_THAT_IS_NEVER_DEFINED_BUT_ALLOWS_THE_CODE_BELOW_NOT_TO_BE_COMMENTED} -// Helper functions - -static int Speak_SayA(HANDLE hContact, const AnsiChar *text) -{ - return CallService(MS_SPEAK_SAY_A, (WPARAM) hContact, (LPARAM) text); -} - -static int Speak_SayW(HANDLE hContact, const WCHAR *text) -{ - return CallService(MS_SPEAK_SAY_W, (WPARAM) hContact, (LPARAM) text); -} - -static int Speak_Register(AnsiChar *module, AnsiChar *name, AnsiChar *description, AnsiChar *icon) -{ - SPEAK_TYPE type; - - if (!ServiceExists(MS_SPEAK_REGISTER)) - return -1; - - type.cbSize = sizeof(type); - type.module = module; - type.name = name; - type.description = description; - type.icon = icon; - type.templates = NULL; - type.numTemplates = 0; - - return CallService(MS_SPEAK_REGISTER, (WPARAM) &type, 0); -} - -static int Speak_RegisterWT(const AnsiChar *module, const AnsiChar *name, const AnsiChar *description, - const AnsiChar *icon, AnsiChar **templates, int numTemplates) -{ - SPEAK_TYPE type; - - if (!ServiceExists(MS_SPEAK_REGISTER)) - return -1; - - type.cbSize = sizeof(type); - type.module = module; - type.name = name; - type.description = description; - type.icon = icon; - type.templates = templates; - type.numTemplates = numTemplates; - - return CallService(MS_SPEAK_REGISTER, (WPARAM) &type, 0); -} - -static int Speak_SayExA(AnsiChar *type, HANDLE hContact, const AnsiChar *text) -{ - SPEAK_ITEM item; - - if (!ServiceExists(MS_SPEAK_SAYEX)) - // Try old service - return Speak_SayA(hContact, text); - - item.cbSize = sizeof(item); - item.flags = SPEAK_CHAR; - item.type = type; - item.hContact = hContact; - item.templateNum = -1; - item.text = text; - - return CallService(MS_SPEAK_SAYEX, (WPARAM) &item, 0); -} - -static int Speak_SayExW(AnsiChar *type, HANDLE hContact, const WCHAR *text) -{ - SPEAK_ITEM item; - - if (!ServiceExists(MS_SPEAK_SAYEX)) - // Try old service - return Speak_SayW(hContact, text); - - item.cbSize = sizeof(item); - item.flags = SPEAK_WCHAR; - item.type = type; - item.hContact = hContact; - item.templateNum = -1; - item.text = text; - - return CallService(MS_SPEAK_SAYEX, (WPARAM) &item, 0); -} - -static int Speak_SayExWTA(AnsiChar *type, HANDLE hContact, int templateNum, AnsiChar **variables, int numVariables) -{ - SPEAK_ITEM item; - - if (!ServiceExists(MS_SPEAK_SAYEX)) - return -1; - - item.cbSize = sizeof(item); - item.flags = SPEAK_CHAR; - item.type = type; - item.hContact = hContact; - item.templateNum = templateNum; - item.variables = variables; - item.numVariables = numVariables; - - return CallService(MS_SPEAK_SAYEX, (WPARAM) &item, 0); -} - -static int Speak_SayExWTW(AnsiChar *type, HANDLE hContact, int templateNum, WCHAR **variables, int numVariables) -{ - SPEAK_ITEM item; - - if (!ServiceExists(MS_SPEAK_SAYEX)) - return -1; - - item.cbSize = sizeof(item); - item.flags = SPEAK_WCHAR; - item.type = type; - item.hContact = hContact; - item.templateNum = templateNum; - item.variables = variables; - item.numVariables = numVariables; - - return CallService(MS_SPEAK_SAYEX, (WPARAM) &item, 0); -} - - -#ifdef UNICODE -# define MS_SPEAK_SAY MS_SPEAK_SAY_W -# define Speak_Say Speak_SayW -# define Speak_SayEx Speak_SayExW -# define Speak_SayExWT Speak_SayExWTW -#else -# define MS_SPEAK_SAY MS_SPEAK_SAY_A -# define Speak_Say Speak_SayA -# define Speak_SayEx Speak_SayExA -# define Speak_SayExWT Speak_SayExWTA -#endif - -{$ENDIF} -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_voice.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_voice.inc deleted file mode 100644 index 5e97094e34..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_voice.inc +++ /dev/null @@ -1,156 +0,0 @@ -{ -Copyright (C) 2006-2009 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF __M_VOICE} -{$DEFINE __M_VOICE} - -const - EVENTTYPE_VOICE_CALL = 8739; - - VOICE_CAPS_VOICE = 1 shl 0; // Voice is supported for this protocol. You need to set this one. - VOICE_CAPS_CALL_CONTACT = 1 shl 1; // Set if a call can be made to a hContact (PS_VOICE_CALL_CONTACT_VALID is used to validate the string) - VOICE_CAPS_CALL_STRING = 1 shl 3; // Set if a call can be made to some string (PS_VOICE_CALL_STRING_VALID is used to validate the string) -{ - Request to the protocol capabilities relative to voice. - - wParam: 0 - lParam: 0 - return: VOICE_CAPS_* -} - PS_VOICE_CAPS = '/Voice/Caps'; - - VOICE_SECURE = $00000001; - VOICE_UNICODE = $80000000; - - VOICE_STATE_TALKING = 0; - VOICE_STATE_RINGING = 1; - VOICE_STATE_CALLING = 2; - VOICE_STATE_ON_HOLD = 3; - VOICE_STATE_ENDED = 4; - VOICE_STATE_BUSY = 5; - -type - TVOICE_CALL = record - cbSize :int; // Struct size - moduleName:PAnsiChar; // The name of the protocol module (the same as VOICE_MODULE.name or the protocol szModule) - id :PAnsiChar; // Protocol especific ID for this call - flags :int; // VOICE_UNICODE to say the string is unicode or 0. - // VOICE_SECURE to say this is a encrypted call - hContact :TMCONTACT; // Contact associated with the call (can be NULL) - szNumber :TChar; // Number to call (can be NULL) - // Or the contact or the number must be != NULL - // If both are != NULL the call will be made to the number - // and will be associated with the contact - // This fields are only needed in first notification for a call id - szName :TChar; // Name of the caller. This makes sense only on incoming calls, - // where no contact is associated and the caller has a name and a number. - state :int; // VOICE_STATE_* - end; - -const -{ -Notifies that a voice call changed state - -wParam: const VOICE_CALL * -lParam: ignored -return: 0 on success -} - PE_VOICE_CALL_STATE = '/Voice/State'; - -{ -Request to the protocol a make voice call - -wParam: (HANDLE) hContact -lParam: (const TCHAR *) number -return: 0 on success -Or the contact or the number must be != NULL. If both are != NULL the call will be -made to the number and will be associated with the contact. -} - PS_VOICE_CALL = '/Voice/Call'; - -{ -Service called to make the protocol answer a call or restore a hold call. -It is an async call. If the call was answered, the PE_VOICE_CALL_STATE -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -} - PS_VOICE_ANSWERCALL = '/Voice/AnswerCall'; - -{ -Service called to make the protocol answer a call. This can be called if the -call is ringing or has started. If called any other time it should be ignored. -It is an async call. If the call was droped, the PE_VOICE_CALL_STATE -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -} - PS_VOICE_DROPCALL = '/Voice/DropCall'; - -{ -Service called to make the protocol hold a call. This means that the call should not -be droped, but it should be muted and put in a hold, to allow other call to be answered. -If the protocol can't hold a cal, it should be droped. - -This can be called if the call has started. If called any other time it should be ignored. -It is an async call. If the call was droped, the PE_VOICE_CALL_STATE -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -} - PS_VOICE_HOLDCALL = '/Voice/HoldCall'; - -{ -Send a DTMF (one digit text) to a talking call. - -wParam: (const char *) id -lParam: (TCHAR) dtmf -return: 0 on success -} - PS_VOICE_SEND_DTMF = '/Voice/SendDTMF'; - -{ -Used if protocol support VOICE_CALL_STRING. The call string is passed as -wParam and the proto should validate it. If this service does not exist all numbers can be called. - -wParam: (const TCHAR *) call string -lParam: ignored -return: 0 if wrong, 1 if correct -} - PS_VOICE_CALL_STRING_VALID = '/Voice/CallStringValid'; - -{ -Used if protocol support VOICE_CALL_CONTACT. -The hContact is passed as wParam and the proto should tell if this contact can be -called. If this service does not exist all contacts can be called (or, if it is a protocol, -all contacts from the protocol can be called). - -wParam: (HANDLE) hContact -lParam: (bool) TRUE if it is a test for 'can call now?', FALSE if is a test for 'will be possible to call someday?' -return: 0 if can't be called, 1 if can -} - PS_VOICE_CALL_CONTACT_VALID = '/Voice/CallContactValid'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_voiceservice.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_voiceservice.inc deleted file mode 100644 index ab5872d8d3..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_voiceservice.inc +++ /dev/null @@ -1,87 +0,0 @@ -{ -Copyright (C) 2007 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_VOICESERVICE} -{$DEFINE M_VOICESERVICE} - -const - MIID_VOICESERVICE:MUUID='{7D64437-EF2E-4F60-BB2D-3C518FE24D63}; - -{ -This services are a mirror of the services/notifications in m_voice.h, -with the difference that that ones are to be used by protocols, and this ones -are to be used by plugins that can make calls to contacts in multiple protocols. - -To get the devices for input/output and some options, query the db directly: - VoiceService/EchoCancelation byte default: TRUE - VoiceService/MicBoost byte default: TRUE - VoiceService/Input TString default: windows default - VoiceService/Output TString default: windows default -} - -type - TVOICE_MODULE = record - cbSize :int; // sizeof(VOICE_MODULE) - description:TChar; // The description of the voice provider. This is the name that - // will be shown to the user - name :PAnsiChar; // The internal name of the voice provider. All PS_* serivces - // defined in m_voide.h need to be created based in this name. - // For example, PS_VOICE_CALL (/Voice/Call) need to be created - // as /Voice/Call - icon :PAnsiChar; // Icon to identify provider (from icolib) - flags :int; // or of VOICE_CAPS_*. You don't need to send VOICE_CAPS_VOICE. - end; - -{ -Register a new plugin that can make/receive voice calls (a voice provider). - -wParam: const VOICE_MODULE * -lParam: ignored -return: 0 on success -} - MS_VOICESERVICE_REGISTER:PAnsiChar = 'VoiceService/Register'; - -{ -Unregister a plugin that can make/receive voice calls (a voice provider). - -wParam: (const char *) Provider name -lParam: ignored -return: 0 on success -} - MS_VOICESERVICE_UNREGISTER:PAnsiChar = 'VoiceService/Unregister'; - -{ -Request a voice call to hContact. - -wParam: (HANDLE) hContact -lParam: ignored -return: the number of option calls for a contact. If > 0, it can be called -} - MS_VOICESERVICE_CAN_CALL:PAnsiChar = 'VoiceService/CanCall'; - -{ -Request a voice call to hContact. - -wParam: (HANDLE) hContact -lParam: (char *) Voice provider or NULL to use any provider avaiable -return: 0 on success -} - MS_VOICESERVICE_CALL:PAnsiChar = 'VoiceService/Call'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_w7ui.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_w7ui.inc deleted file mode 100644 index 3841319ac7..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_w7ui.inc +++ /dev/null @@ -1,84 +0,0 @@ -{$IFNDEF M_W7UI} -{$DEFINE M_W7UI} - -const - MIS_ICOLIB = 0; - MIS_GENERAL = 1; - MIS_PROTOCOL = 2; - -type - PMIRANDAJUMPLISTITEM = ^TMIRANDAJUMPLISTITEM; - TMIRANDAJUMPLISTITEM = record - iconSource:int; - iconName :pAnsiChar; - iconIdx :int; - szTitle :pWideChar; - szPrefix :pWideChar; - szArgument:pWideChar; - end; - -const -// Force jumplist rebuild - MS_JUMPLIST_REBUILD:pAnsiChar = 'w7/JumpList/Rebuild'; - -// --- - ME_JUMPLIST_BUILDCATEGORIES:pAnsiChar = 'w7/JumpList/BuildCategories'; - -// lParam = (WCHAR *)category name - ME_JUMPLIST_BUILDITEMS:pAnsiChar = 'w7/JumpList/BuildItems'; - -// lParam = (WCHAR *)category name - MS_JUMPLIST_ADDCATEGORY:pAnsiChar = 'w7/JumpList/AddCategory'; - -// lParam = (MIRANDAJUMPLISTITEM *)item - MS_JUMPLIST_ADDITEM:pAnsiChar = 'w7/JumpList/AddItem'; - -// wParam = prefix -// lParam = argument - ME_JUMPLIST_PROCESS:pAnsiChar = 'w7/JumpList/Process'; - -procedure MJumpList_AddCategory(name:pWideChar); -begin - CallService(MS_JUMPLIST_ADDCATEGORY, 0, LPARAM(name)); -end; - -procedure MJumpList_AddItem(mir_icon:pAnsiChar; title, prefix, argument:pWideChar); overload; -var - item:TMIRANDAJUMPLISTITEM; -begin - item.iconSource:=MIS_ICOLIB; - item.iconName :=mir_icon; - item.iconIdx :=0; - item.szTitle :=title; - item.szPrefix :=prefix; - item.szArgument:=argument; - CallService(MS_JUMPLIST_ADDITEM, 0, LPARAM(@item)); -end; - -procedure MJumpList_AddItem(skinicon:int; title, prefix, argument:pWideChar); overload; -var - item:TMIRANDAJUMPLISTITEM; -begin - item.iconSource:=MIS_GENERAL; - item.iconName :=0; - item.iconIdx :=skinicon; - item.szTitle :=title; - item.szPrefix :=prefix; - item.szArgument:=argument; - CallService(MS_JUMPLIST_ADDITEM, 0, LPARAM(@item)); -end; - -procedure MJumpList_AddItem(proto:pansiChar; skinicon:int; title, prefix, argument:pWideChar); overload; -var - item:TMIRANDAJUMPLISTITEM; -begin - item.iconSource:=MIS_PROTOCOL; - item.iconName :=proto; - item.iconIdx :=skinicon; - item.szTitle :=title; - item.szPrefix :=prefix; - item.szArgument:=argument; - CallService(MS_JUMPLIST_ADDITEM, 0, LPARAM(@item)); -end; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/delphi/m_webcam.inc b/plugins/!Deprecated/ExternalAPI/delphi/m_webcam.inc deleted file mode 100644 index 592e28a479..0000000000 --- a/plugins/!Deprecated/ExternalAPI/delphi/m_webcam.inc +++ /dev/null @@ -1,142 +0,0 @@ -{ - WebCam Video plugin by Sergei Polishchuk, SoftCab Inc - http://www.softcab.com - pserge@softcab.com -} - -{$IFNDEF M_WEBCAM} -{$DEFINE M_WEBCAM} - -const - MS_WEBCAM_OPEN = 'WebCam/Open'; -{ - This opens webcamera - wParam, and lParam must be zero. - Returns HANDLE to web camera. - For Example: - HANDLE hWebcamera = CallService(MS_WEBCAM_OPEN, 0, 0); -} - - MS_WEBCAM_ISREADY = 'WebCam/IsReady'; -{ - This zero if camera is ready for use, and non-zero if camera is still initializing. - It's useful to user this function after asynchronous opening of camera - wParam must be zero. - lParam = (LPARAM)(HANDLE)hCamera - camera handle - For Example: - HANDLE hWebcamera = CallService(MS_WEBCAM_ISREADY, 0, 0); -} - - MS_WEBCAM_CLOSE = 'WebCam/Close'; -{ - This will close web camera. - wParam must be zero - lParam = (LPARAM)(HANDLE)hWebcamera - a handle returned by MS_WEBCAM_OPEN - Return value is undefined. - For Example: - CallService(MS_WEBCAM_CLOSE, 0, (LPARAM)hWebcamera); -} - - MS_WEBCAM_SHOWWND = 'WebCam/Show'; -{ - This will show or hide web camera window - wParam = 1 to show window, or zero to hide one - lParam = (LPARAM)(HANDLE)hWebcamera - handle to camera - Return value is undefined. - For Example, this will show the window: - CallService(MS_WEBCAM_SHOWWND, 1, (LPARAM)hWebcamera); -} - - MS_WEBCAM_FREE = 'WebCam/Free'; -{ - This will free WEBCAM_QUERY fields. - wParam = sizeof(WEBCAM_QUERY) - lParam = (LPARAM)(WEBCAM_QUERY*)&Query - Return value is undefined - For Example: - CallService(MS_WEBCAM_FREE, sizeof(Query), (LPARAM)&Query); -} - - MS_WEBCAM_QUERY = 'WebCam/Query'; - WANT_PICTURE = pointer(-1); -{ - This will query web camera for data. - wParam = sizeof(WEBCAM_QUERY) - lParam = (LPARAM)(WEBCAM_QUERY*)&Query - Returns zero in case of success, or non-zero in case of any error - Before queryng camera, you need to setup some WEBCAM_QUERY structure fields. -} - -(* -WEBCAM_QUERY Query; -memset(&Query, 0, sizeof(Query)); -Query.hCamera = hWebcamera; -Query.Jpeg = WANT_PICTURE; // we want to get .JPG image -Query.Bitmap = NULL; // we do not need .BMP image -int ret = CallService(MS_WEBCAM_QUERY, sizeof(Query), (LPARAM)&Query); -if(!ret) -{ if(Query.Jpeg != NULL) - { // do something with JPG picture. For example, you may save it to .JPG file. - } - // now let's release the memory - CallService(MS_WEBCAM_FREE, sizeof(Query), (LPARAM)&Query); -} -*) - - MS_WEBCAM_SCREENSHOT = 'WebCam/ScreenShot'; -{ - This will return window screenshot - wParam = sizeof(WEBCAM_QUERY) - lParam = (LPARAM)(WEBCAM_QUERY*)&Query - Returns zero in case of success, or non-zero in case of any error - WEBCAMBUF->hCamera specifies window handle. - It's not required to open webcamera in order to run this service function. -} - -(* - -WEBCAM_QUERY Query; -memset(&Query, 0, sizeof(Query)); -Query.hCamera = (HANDLE)GetDesktopWindow(); // getting whole desktop picture. -Query.Jpeg = WANT_PICTURE; // we want to get .JPG image -Query.Bitmap = NULL; // we do not need .BMP image -int ret = CallService(MS_WEBCAM_SCREENSHOT, sizeof(Query), (LPARAM)&Query); -if(!ret) -{ if(Query.Jpeg != NULL) - { // do something with JPG picture. For example, you may save it to .JPG file. - } - // now let's release the memory - CallService(MS_WEBCAM_FREE, sizeof(Query), (LPARAM)&Query); -} - -*) - - ME_WEBCAM_SNAPSHOTRECEIVED = 'WebCam/SnapshotRecv'; -{ - This event will be fired right after receiving snapshot from remote contact. - wParam=(WPARAM)(HANDLE)hContact - a contact handle - lParam=(LPARAM)(WEBCAMBUF*)buffer - a buffer that contains JPEG image - IMPORTANT: you should not modify the buffer. It's read-only. -} - -type - ptag_WEBCAMBUF = ^tag_WEBCAMBUF; - tag_WEBCAMBUF = record - Size:dword; // size of Data buffer in bytes - Data:array [0..0] of byte; - end; - PWEBCAMBUF = ^WEBCAMBUF; - WEBCAMBUF = tag_WEBCAMBUF; - -type - ptag_WEBCAM_QUERY = ^tag_WEBCAM_QUERY; - tag_WEBCAM_QUERY = record - hCamera:THANDLE; // [in] HANDLE to web camera - cx,cy :word; // [out] camera picture size - Jpeg :PWEBCAMBUF; // [in,out] points to .JPG file content in memory - Bitmap :PWEBCAMBUF; // [in,out] points to .BMP file content in memory - end; - PWEBCAM_QUERY = ^WEBCAM_QUERY; - WEBCAM_QUERY = tag_WEBCAM_QUERY; - -{$ENDIF} diff --git a/plugins/!Deprecated/ExternalAPI/m_ContactSettings.h b/plugins/!Deprecated/ExternalAPI/m_ContactSettings.h deleted file mode 100644 index 1b497ab479..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_ContactSettings.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - Contact Settings plugin for Miranda IM - Copyright (c) 2007-2008 Chervov Dmitry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef __M_CONTACTSETTINGS_H -#define __M_CONTACTSETTINGS_H - - -typedef struct { - int cbSize; // sizeof(CONTACTSETTINGSINIT) - int Type; // one of CSIT_ constants; value of this field depends on what settings dialog was opened: contact settings or group settings - union - { - MCONTACT hContact; // used when Type == CSIT_CONTACT - int groupID; // used when Type == CSIT_GROUP - }; -} CONTACTSETTINGSINIT; - -// CONTACTSETTINGSINIT::Type -#define CSIT_CONTACT 1 // CONTACTSETTINGSINIT::hContact is valid -#define CSIT_GROUP 2 // CONTACTSETTINGSINIT::groupID is valid; in general, if Type == CSIT_GROUP, you MUST call MS_CONTACTSETTINGS_ADDCONTROL and add _all_ your per-contact controls, independently of current group contents, because potentially the group can contain any contacts in future. - -/* ME_CONTACTSETTINGS_INITIALISE -The user opened a contact settings dialog. Modules should do whatever initialisation they need and call MS_CONTACTSETTINGS_ADDCONTROL one or more times if they want controls displayed in the dialog -wParam=(WPARAM)(CONTACTSETTINGSINIT*)csi -lParam=0 -*/ -#define ME_CONTACTSETTINGS_INITIALISE "ContactSettings/Init" - - -/* MS_CONTACTSETTINGS_ADDCONTROL -Must only be called during a ME_CONTACTSETTINGS_INITIALISE hook -Adds a control to the contact settings dialog -wParam=(WPARAM)(CONTACTSETTINGSINIT*)csi -lParam=(LPARAM)(CONTACTSETTINGSCONTROL*)csc -Returns 0 on success, nonzero on failure -csi must have come straight from the wParam of ME_CONTACTSETTINGS_INITIALISE -Strings in the structure can be released as soon as the service returns. -*/ - -// CONTACTSETTINGSCONTROL::Position -#define CSPOS_SORTBYALPHABET 0x40000000 // recommended value for Position if you don't need a specific sorting order -// Group = "Notifications": -#define CSPOS_NOTIFICATIONS_SERVICES 0x20000000 // recommended control position for notification SERVICE PROVIDERS (popups, osd, tickers, etc). Notification plugins that use these services should use CSPOS_SORTBYALPHABET, so that notification service provider settings are above any other specific notification settings. - -// CONTACTSETTINGSCONTROL::Flags -#define CSCF_UNICODE 1 // string fields in CONTACTSETTINGSCONTROL and CSCONTROLSTATE are WCHAR* -#define CSCF_DONT_TRANSLATE_STRINGS 2 // specifies that strings in CONTACTSETTINGSCONTROL and CSCONTROLSTATE are translated already - -#ifdef _UNICODE -#define CSCF_TCHAR CSCF_UNICODE -#else -#define CSCF_TCHAR 0 -#endif - -// CONTACTSETTINGSCONTROL::ControlType -typedef enum -{ - CSCT_LABEL = -1, // CSCT_LABEL is used internally in ContactSettings, and mustn't be used by other plugins - CSCT_CHECKBOX, // checkbox control - CSCT_COMBOBOX // combobox control with a title above it -} CSCONTROLTYPE; - -// some common values for CONTACTSETTINGSCONTROL::ptszGroup -#define CSGROUP_NOTIFICATIONS LPGENT("Notifications") - -// special values for CONTACTSETTINGSCONTROL::szModule -#define CSMODULE_PROTO "%proto%" // ContactSettings will replace this by contact's protocol module name - -struct CSCONTROLSTATE -{ -#ifdef __cplusplus - CSCONTROLSTATE(): ptszName(NULL) {dbvValue.type = 0; dbvValue.dVal = 0; dbvValue.pbVal = 0; } - CSCONTROLSTATE(char *pszName, BYTE Value) { this->pszName = pszName; dbvValue.type = DBVT_BYTE; dbvValue.bVal = Value; } - CSCONTROLSTATE(char *pszName, char Value) { this->pszName = pszName; dbvValue.type = DBVT_BYTE; dbvValue.cVal = Value; } - CSCONTROLSTATE(char *pszName, WORD Value) { this->pszName = pszName; dbvValue.type = DBVT_WORD; dbvValue.wVal = Value; } - CSCONTROLSTATE(char *pszName, short Value) { this->pszName = pszName; dbvValue.type = DBVT_WORD; dbvValue.sVal = Value; } - CSCONTROLSTATE(char *pszName, DWORD Value) { this->pszName = pszName; dbvValue.type = DBVT_DWORD; dbvValue.dVal = Value; } - CSCONTROLSTATE(char *pszName, long Value) { this->pszName = pszName; dbvValue.type = DBVT_DWORD; dbvValue.lVal = Value; } - CSCONTROLSTATE(char *pszName, const char *szValue) { this->pszName = pszName; dbvValue.type = DBVT_ASCIIZ; dbvValue.pszVal = (char*)szValue; } - CSCONTROLSTATE(char *pszName, const WCHAR *wszValue) { this->pszName = pszName; dbvValue.type = DBVT_WCHAR; dbvValue.pwszVal = (WCHAR*)wszValue; } - CSCONTROLSTATE(WCHAR *pwszName, BYTE Value) { this->pwszName = pwszName; dbvValue.type = DBVT_BYTE; dbvValue.bVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, char Value) { this->pwszName = pwszName; dbvValue.type = DBVT_BYTE; dbvValue.cVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, WORD Value) { this->pwszName = pwszName; dbvValue.type = DBVT_WORD; dbvValue.wVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, short Value) { this->pwszName = pwszName; dbvValue.type = DBVT_WORD; dbvValue.sVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, DWORD Value) { this->pwszName = pwszName; dbvValue.type = DBVT_DWORD; dbvValue.dVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, long Value) { this->pwszName = pwszName; dbvValue.type = DBVT_DWORD; dbvValue.lVal = Value; } - CSCONTROLSTATE(WCHAR *pwszName, const char *szValue) { this->pwszName = pwszName; dbvValue.type = DBVT_ASCIIZ; dbvValue.pszVal = (char*)szValue; } - CSCONTROLSTATE(WCHAR *pwszName, const WCHAR *wszValue) { this->pwszName = pwszName; dbvValue.type = DBVT_WCHAR; dbvValue.pwszVal = (WCHAR*)wszValue; } -#endif - - union - { - TCHAR *ptszName; // item text for CSCT_COMBOBOX; not used for CSCT_CHECKBOX - char *pszName; - WCHAR *pwszName; - }; - DBVARIANT dbvValue; // database value for this state -}; - -// WARNING: do not use Translate(TS) for ptszTitle, ptszGroup, ptszTooltip or CSCONTROLSTATE::ptszName as they are translated by ContactSettings. The only exception is when you use CSCF_DONT_TRANSLATE_STRINGS flag -typedef struct { - int cbSize; // sizeof(CONTACTSETTINGSCONTROL) - int cbStateSize; // sizeof(CSCONTROLSTATE) - int Position; // position in the group, lower numbers are topmost. CSPOS_SORTBYALPHABET is recommended if you don't need a specific sorting order - DWORD Flags; // a combination of CSCF_ constants - CSCONTROLTYPE ControlType; // one of CSCT_ constants - union - { - TCHAR *ptszTitle; // label above the control - char *pszTitle; - WCHAR *pwszTitle; - }; - union - { - TCHAR *ptszGroup; // group title (several controls may be grouped together); may be NULL. - char *pszGroup; - WCHAR *pwszGroup; - }; - union - { - TCHAR *ptszTooltip; // tooltip for the control; may be NULL - char *pszTooltip; - WCHAR *pwszTooltip; - }; - const char *szModule; // database module; may contain variables (see above; currently the only existing variable is CSMODULE_PROTO) - const char *szSetting; // database setting - int StateNum; // number of possible states; always 2 or 3 for CSCT_CHECKBOX, and can be any number starting from 2 for CSCT_COMBOBOX - int DefState; // default state index - CSCONTROLSTATE *pStates; // array of StateNum items, describing all possible control states. Can be NULL for CSCT_COMBOBOX, in this case ContactSettings will use DBVT_BYTE database values, 0 is unchecked, 1 is checked, 2 is indeterminate. Can't be NULL for CSCT_COMBOBOX. - DWORD ValueMask; // in most cases simply set this to 0. when not 0, it allows to define a bit mask to access separate bits of a db value instead of reading/writing the whole value. is valid only for DBVT_BYTE, DBVT_WORD and DBVT_DWORD values -} CONTACTSETTINGSCONTROL; - -#define MS_CONTACTSETTINGS_ADDCONTROL "ContactSettings/AddControl" - - -typedef struct { - int cbSize; // sizeof(CONTACTSETTINGSCHANGEINFO) - HANDLE hContact; - const char *szModule; // variables in szModule and szSetting are NOT parsed, i.e. ContactSettings copies the values straight from CONTACTSETTINGSCONTROL - const char *szSetting; -} CONTACTSETTINGSCHANGEINFO; - -/* ME_CONTACTSETTINGS_SETTINGCHANGED -Called for every changed setting when the user applied changes in a contact settings dialog -wParam=(WPARAM)(CONTACTSETTINGSCHANGEINFO*)csci -lParam=0 -This event will be triggered many times rapidly when a whole bunch of values are set. -Modules which hook this should be aware of this fact and quickly return if they are not interested in the value that has been changed. -*/ -#define ME_CONTACTSETTINGS_SETTINGCHANGED "ContactSettings/SettingChanged" - - -/* MS_CONTACTSETTINGS_SHOWDIALOG -Shows Contact Settings dialog for a contact -wParam=hContact -lParam=0 -*/ -#define MS_CONTACTSETTINGS_SHOWDIALOG "ContactSettings/ShowDialog" - -/* MS_CONTACTSETTINGS_SHOWGROUPDIALOG. Not implemented yet. -Shows dialog for a group -wParam=groupId (0 is the main group) -lParam=0 -*/ -#define MS_CONTACTSETTINGS_SHOWGROUPDIALOG "ContactSettings/ShowGroupDialog" - - -/* -Example of use: - -// in ME_SYSTEM_MODULESLOADED handler: - HookEvent(ME_CONTACTSETTINGS_INITIALISE, ContactSettingsInit); - -// ME_CONTACTSETTINGS_INITIALISE handler -static int ContactSettingsInit(WPARAM wParam, LPARAM lParam) -{ - CONTACTSETTINGSINIT *csi = (CONTACTSETTINGSINIT*)wParam; - -// check first whether to add controls or not -// we need to get a protocol name for that, if it's a contact settings dialog: - char *szProto = (csi->Type == CSIT_CONTACT) ? (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)csi->hContact, 0) : NULL; -// in general, you MUST add all your controls if csi->Type == CSIT_GROUP (i.e. user opened a group settings dialog), otherwise your plugin won't support group settings well: - if ((csi->Type == CSIT_GROUP) || -// otherwise (for a contact settings dialog), you can add controls depending on some conditions, like protocol caps, etc. -// in this example, we check whether the protocol has a PS_GETCUSTOMSTATUSICON service (i.e. does it support xstatuses or not): - (csi->Type == CSIT_CONTACT && szProto && ProtoServiceExists(szProto, PS_GETCUSTOMSTATUSICON))) -// your plugin must ignore cases when csi->Type is neither CSIT_GROUP nor CSIT_CONTACT - { - CONTACTSETTINGSCONTROL csc = {0}; - csc.cbSize = sizeof(csc); - csc.Position = CSPOS_SORTBYALPHABET; - csc.Flags = CSCF_TCHAR; - csc.ControlType = CSCT_COMBOBOX; - csc.StateNum = 3; - csc.ptszTitle = LPGENT("XStatus change notifications:") _T("\0") LPGENT("Ignore") _T("\0") LPGENT("Notify always") _T("\0") LPGENT("Use global settings") _T("\0"); - csc.ptszGroup = CSGROUP_NOTIFICATIONS; - csc.ptszTooltip = LPGENT("Tooltip text"); - csc.pszDBSetting = "ModuleName/XSNotifications"; - csc.DefValue = 2; // "Use global settings" - CallService(MS_CONTACTSETTINGS_ADDCONTROL, wParam, (LPARAM)&csc); - - // and CSCT_CHECKBOX example: - csc.Position = CSPOS_SORTBYALPHABET; - csc.Flags = CSCF_TCHAR; - csc.ControlType = CSCT_CHECKBOX; - csc.StateNum = 3; - csc.ptszTitle = LPGENT("Other setting"); - csc.ptszGroup = LPGENT("Some group"); - csc.ptszTooltip = LPGENT("Tooltip text"); - csc.pszDBSetting = "ModuleName/OtherSetting"; - csc.DefValue = 2; // BST_INDETERMINATE - CallService(MS_CONTACTSETTINGS_ADDCONTROL, wParam, (LPARAM)&csc); - } - return 0; -} - -*/ - -#endif // __M_CONTACTSETTINGS_H diff --git a/plugins/!Deprecated/ExternalAPI/m_DataAsMessage.h b/plugins/!Deprecated/ExternalAPI/m_DataAsMessage.h deleted file mode 100644 index 2f1f2eb441..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_DataAsMessage.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - DataAsMessage plugin for Miranda IM - Copyright (c) 2006-2007 Chervov Dmitry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef __M_DATAASMESSAGE_H -#define __M_DATAASMESSAGE_H - -// DAM_SENDRESULTINFO::iResult values -#define DAM_SR_SUCCESS 0 -#define DAM_SR_TIMEOUT 1 // timeout period expired; this value is returned also if the contact went offline for a time longer than a timeout period -#define DAM_SR_NOTSUPPORTED 2 // means this szDataType is not supported by the remote side -#define DAM_SR_NODAM 3 // means there is no DataAsMessage plugin on the remote side; keep in mind that this error can also appear accidentally because of a bad connectivity during the handshake (if there was a timeout when waiting for a response) -#define DAM_SR_CANCELLEDLOCAL 4 // cancelled from the local(sending) side -#define DAM_SR_CANCELLEDREMOTE 5 // cancelled from the remote(receiving) side -#define DAM_SR_BADCRC 6 // bad CRC; we can't do anything with this error. the most probable cause is that protocol filters some of characters in our messages -#define DAM_SR_UNKNOWN 7 // unknown error - -// Return values for DAM_SENDRESULTPROC -#define DAM_SRA_RETRY 1 - -typedef struct -{ - int cbSize; // sizeof(DAM_SENDRESULTINFO) - HANDLE hContact; - char *szDataType; - DWORD SessionID; - int iResult; // transmission result code -} DAM_SENDRESULTINFO; // hContact, szDataType and SessionID fields correspond to the fields of the DAM_SENDDATAINFO structure - -typedef int (*DAM_SENDRESULTPROC)(DAM_SENDRESULTINFO *sri); // this procedure receives the result of the transmission. it's called when the session closes (either the data was sent successfully or there was an error) -// you can return DAM_SRA_RETRY when iResult is DAM_SR_TIMEOUT if you want to retry sending - - -// DAM_SENDDATAINFO::Flags constants -#define DAM_SDF_DONTPACK 1 // don't compress the data (by default all the data is compressed) -#define DAM_SDF_NOTIMEOUT 2 // don't generate a timeout error ever, keep trying to send the data. If the contact is offline, the data is saved in the memory until the contact goes online. Loss of the data occurs only if the sender's miranda closes (this may change in future to allow fully functional offline sending that will guarantee the data to be sent in any case, but of course the sending starts only when the both contacts are online). other errors than the timeout error can be still generated though. - -typedef struct -{ - int cbSize; // sizeof(DAM_SENDDATAINFO) - HANDLE hContact; - char *szDataType; // zero-terminated string, containing data type, preferably in format "YourPluginName" or "YourPluginName/Something" (make sure this string won't coincide by an accident with someone else's string!). you can identify your data by this ID later - int nDataLen; // keep in mind that if the length is too big (more than about 8 KB), it's more preferable to split your data into several chunks, as you won't be able to "pick up" your data at the other end until all the data is transferred - char *cData; - int Flags; // combination of the DAM_SDF_ constants - DWORD SendAfterSessionID; // may be NULL; otherwise it's guaranteed that the sending starts only after successful completion of SendAfterSessionID session - DAM_SENDRESULTPROC SendResultProc; // pointer to a procedure that receives the result; can be NULL - DWORD SessionID; // OUT; receives the session ID -} DAM_SENDDATAINFO; - -// MS_DAM_SENDDATA return values -#define DAM_SDA_NOERROR 0 -#define DAM_SDA_NOTSUPPORTED (-1) // contact's protocol doesn't support sending/receiving messages -#define DAM_SDA_TOOMANYSESSIONS (-2) // too many sessions - -// MS_DAM_SENDDATA -// sends the data -// wParam = (WPARAM)(DAM_SENDDATAINFO*)sdi; -// lParam = 0 -// Returns 0 (DAM_SDA_NOERROR) and fills SessionID if the session was queued for sending successfully; returns one of the DAM_SDA_ values on failure -#define MS_DAM_SENDDATA "DataAsMessage/SendData" - -static int __inline DAMSendData(HANDLE hContact, char *szDataType, int nDataLen, char *cData, int Flags, DWORD SendAfterSessionID, DAM_SENDRESULTPROC SendResultProc, DWORD *pSessionID) -{ - int Result; - DAM_SENDDATAINFO sdi; - ZeroMemory(&sdi, sizeof(sdi)); - sdi.cbSize = sizeof(sdi); - sdi.hContact = hContact; - sdi.szDataType = szDataType; - sdi.nDataLen = nDataLen; - sdi.cData = cData; - sdi.Flags = Flags; - sdi.SendAfterSessionID = SendAfterSessionID; - sdi.SendResultProc = SendResultProc; - Result = CallService(MS_DAM_SENDDATA, (WPARAM)&sdi, 0); - if (pSessionID) - { - *pSessionID = sdi.SessionID; - } - return Result; -} - - -typedef struct -{ - int cbSize; // sizeof(DAM_RECVDATAINFO) - HANDLE hContact; - char *szDataType; - int nDataLen; - char *cData; -} DAM_RECVDATAINFO; - -// ME_DAM_RECVDATA -// hook up to this event to check for incoming data -// make sure rdi->szDataType is yours before doing anything! -// The important thing here is that your plugin will receive TWO ME_DAM_RECVDATA notifications on every single MS_DAM_SENDDATA call from a remote side: -// The first notification arrives when the remote side starts to transmit the data. In this case DAM_RECVDATAINFO::cData = NULL (and DAM_RECVDATAINFO::nDataLen = -1) as we didn't receive any data yet. Return 1 to indicate that your plugin recognized the DAM_RECVDATAINFO::szDataType, otherwise return 0. If there are no any plugin that recognized the data, DAM cancels the transfer and there won't be any second notification for it. -// The second notification is when the data is transmitted successfully. nDataLen contains the usual data size and cData points to the data buffer. cData is guaranteed to be valid only during the ME_DAM_RECVDATA call. You must copy the data to your own plugin's memory if you need to use it later. And again, return 1 to indicate that your plugin recognized the data, otherwise return 0 -// wParam = (WPARAM)(DAM_RECVDATAINFO*)rdi; -// lParam = 0 -#define ME_DAM_RECVDATA "DataAsMessage/RecvData" - - -typedef struct -{ - int cbSize; // sizeof(DAM_COMPRESSION_DATA) - void *(*malloc)(size_t); // pointer to the malloc() function of the calling module - int nInputDataLen; // IN; length of the input data in bytes - char *cInputData; // IN; pointer to the input data - int nOutputDataLen; // OUT; length of the output data in bytes - char *cOutputData; // OUT; pointer to the output data -} DAM_COMPRESSION_DATA; - -// Compression/decompression services. You DON'T have to use them if you want to send compressed data using DAM services, as DAM compresses the data automatically. These services are here just in case you need to compress/decompress data for your own needs - -// MS_DAM_COMPRESS -// compresses the data using BZip2 -// wParam = (WPARAM)(DAM_COMPRESSION_DATA*)bd; -// lParam = 0 -// cbSize, malloc, nInputDataLen and cInputData fields must be valid when calling the service. -// Returns 0 and fills nOutputDataLen and cOutputData on success; returns non-zero on failure -// This service allocates the memory for cOutputData using the specified malloc function; you must call free(cOutputData) when you've finished working with cOutputData -#define MS_DAM_COMPRESS "DataAsMessage/Compress" - -// MS_DAM_DECOMPRESS -// decompresses the data -// wParam = (WPARAM)(DAM_COMPRESSION_DATA*)bd; -// lParam = 0 -// cbSize, malloc, nInputDataLen and cInputData fields must be valid when calling the service. -// Returns 0 and fills nOutputDataLen and cOutputData on success; returns non-zero on failure -// This service allocates the memory for cOutputData using the specified malloc function; you must call free(cOutputData) when you've finished working with cOutputData -#define MS_DAM_DECOMPRESS "DataAsMessage/Decompress" - - -__inline int DAM_Compress(char *cInputData, int nInputDataLen, char **cOutputData, int *nOutputDataLen) -{ - int Result; - DAM_COMPRESSION_DATA bd; - ZeroMemory(&bd, sizeof(bd)); - bd.cbSize = sizeof(bd); - bd.malloc = malloc; - bd.nInputDataLen = nInputDataLen; - bd.cInputData = cInputData; - Result = CallService(MS_DAM_COMPRESS, (WPARAM)&bd, 0); - *nOutputDataLen = bd.nOutputDataLen; - *cOutputData = bd.cOutputData; - return Result; -} - -__inline int DAM_Decompress(char *cInputData, int nInputDataLen, char **cOutputData, int *nOutputDataLen) -{ - int Result; - DAM_COMPRESSION_DATA bd; - ZeroMemory(&bd, sizeof(bd)); - bd.cbSize = sizeof(bd); - bd.malloc = malloc; - bd.nInputDataLen = nInputDataLen; - bd.cInputData = cInputData; - Result = CallService(MS_DAM_DECOMPRESS, (WPARAM)&bd, 0); - *nOutputDataLen = bd.nOutputDataLen; - *cOutputData = bd.cOutputData; - return Result; -} - - -#endif // __M_DATAASMESSAGE_H diff --git a/plugins/!Deprecated/ExternalAPI/m_LogService.h b/plugins/!Deprecated/ExternalAPI/m_LogService.h deleted file mode 100644 index 3acd6be1d6..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_LogService.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - LogService - Plugin for Miranda IM - Copyright (c) 2006-2008 Chervov Dmitry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef __M_LOGSERVICE_H -#define __M_LOGSERVICE_H - -#define MIID_LOGSERVICE {0xe60bc9eb, 0xa099, 0x4846, {0xbc, 0x11, 0xba, 0x39, 0xf6, 0x60, 0x8b, 0x94}} -// {E60BC9EB-A099-4846-BC11-BA39F6608B94} - - -// LS_REGINFO::Flags constants -#define LSRF_WCHAR 1 // specifies that LS_REGINFO::szTitle, szDefLogPath and szDefFormat are WCHAR* -#ifdef _UNICODE - #define LSRF_TCHAR LSRF_WCHAR -#else - #define LSRF_TCHAR 0 -#endif - -typedef struct { - int cbSize; // sizeof(LS_REGINFO) - char *szID; // Log ID; it's a good idea to use your plugin name here - union - { - char *szTitle; // Title shown in the options. Cannot be NULL or empty. This is translated by LogService automatically - WCHAR *wszTitle; - TCHAR *tszTitle; - }; - union - { - char *szDefLogPath; // Default log file path, may contain variables. May be NULL - in this case the default path is ".log". Usually it's relative to \Logs dir, but it can be changed by user through Folders plugin. - WCHAR *wszDefLogPath; // if there's no Variables plugin installed, LogService will use szDefLogPath with all the variables removed from it - TCHAR *tszDefLogPath; - }; - union - { - char *szDefFormat; // Default log format; contains variables. May be NULL - in this case the default formatting is "`[`!cdate()-!ctime()`]` %extratext%" - WCHAR *wszDefFormat; - TCHAR *tszDefFormat; - }; - int Flags; -} LS_REGINFO; - -// MS_LOGSERVICE_REGISTER -// Registers a log. Your plugin can register several different logs with different settings. This service must be called once for every needed log ID at every startup. -// wParam = (WPARAM)(LS_REGINFO*)pri - pointer to LS_REGINFO item -// lParam = 0 -// returns 0 on success -#define MS_LOGSERVICE_REGISTER "LogService/Register" - -__inline static INT_PTR logservice_register(char *szID, TCHAR *tszTitle, TCHAR *tszDefLogPath, TCHAR *tszDefFormat) -{ - LS_REGINFO ri; - ZeroMemory(&ri, sizeof(LS_REGINFO)); - ri.cbSize = sizeof(LS_REGINFO); - ri.szID = szID; - ri.tszTitle = tszTitle; - ri.tszDefLogPath = tszDefLogPath; - ri.tszDefFormat = tszDefFormat; - ri.Flags = LSRF_TCHAR; - return CallService(MS_LOGSERVICE_REGISTER, (WPARAM)&ri, 0); -} - - - -// LS_MSGINFO::Flags constants -#define LSMF_WCHAR 1 // specifies that LS_MSGINFO::szMsg is a WCHAR* -#ifdef _UNICODE - #define LSMF_TCHAR LSMF_WCHAR -#else - #define LSMF_TCHAR 0 -#endif - -typedef struct { - int cbSize; // sizeof(LS_MSGINFO) - char *szID; - MCONTACT hContact; // may be NULL if no contact is associated with the message - union - { - char *szMsg; // the message - WCHAR *wszMsg; - TCHAR *tszMsg; - }; - int Flags; -} LS_MSGINFO; - -// MS_LOGSERVICE_LOG -// Logs szMsg message. You don't have to specify in szMsg anything else than the actual message. i.e. LogService will take care of date, time, contact nick etc by itself, using the format string -// wParam = (WPARAM)(LS_MSGINFO*)pmi - pointer to LS_MSGINFO item -// lParam = 0 -// returns 0 on success -#define MS_LOGSERVICE_LOG "LogService/Log" - -__inline static INT_PTR logservice_log(char *szID, MCONTACT hContact, TCHAR *tszMsg) -{ - LS_MSGINFO mi; - ZeroMemory(&mi, sizeof(LS_MSGINFO)); - mi.cbSize = sizeof(LS_MSGINFO); - mi.szID = szID; - mi.hContact = hContact; - mi.tszMsg = tszMsg; - mi.Flags = LSMF_TCHAR; - return CallService(MS_LOGSERVICE_LOG, (WPARAM)&mi, 0); -} - - -// LS_LOGINFO::Flags constants -#define LSLI_WCHAR 1 // [in]; specifies that LS_LOGINFO::szLogPath is a WCHAR* -#ifdef _UNICODE - #define LSLI_TCHAR LSLI_WCHAR -#else - #define LSLI_TCHAR 0 -#endif -#define LSLI_LOGENABLED 2 // [out]; LogService will set this flag if log with ID szID is enabled in the options. Setting this flag before calling MS_LOGSERVICE_GETLOGINFO is ignored. This flag is independent of hContact. - -typedef struct { - int cbSize; // [in]; sizeof(LS_LOGINFO) - char *szID; // [in] - MCONTACT hContact; // [in]; may be NULL - union - { - char *szLogPath; // [in]; pointer to a string to receive log file name, including full path. May be NULL. The string must be at least MAX_PATH characters long - WCHAR *wszLogPath; - TCHAR *tszLogPath; - }; - int Flags; // [in,out] -} LS_LOGINFO; - -// MS_LOGSERVICE_GETLOGINFO -// Returns various information about log with ID szID. -// wParam = (WPARAM)(LS_LOGINFO*)pli - pointer to LS_LOGINFO item -// lParam = 0 -// If szFileName is not NULL, MS_LOGSERVICE_GETLOGINFO gets full log file path by szID and hContact and copies it to *szLogPath -// Also the service will set LSLI_LOGENABLED flag if the specified log is enabled in the options. -// returns 0 on success -#define MS_LOGSERVICE_GETLOGINFO "LogService/GetLogInfo" - - -/* -1) Example of the simpliest way to use LogService: - - // define szID - #define LOG_ID "MyPluginName" - - // in ME_SYSTEM_MODULESLOADED handler: - logservice_register(LOG_ID, LPGENT("My plugin - log title"), NULL, NULL); - - // whenever you need to log something: - logservice_log(LOG_ID, NULL, _T("Test message")); - // (don't forget to specify hContact instead of NULL here if there's a contact associated with the message) - -MyPluginName.log will be created with the following contents: -[20.08.2007-14:30:00] Test message - - -2) If you want to offer additional customizability of log format using Variables, but still want the log to be usable even when Variables plugin is not installed, you can specify different messages depending on existence of MS_VARS_FORMATSTRING service. This example will explain how to do this and also will show you some other useful hints related to Variables plugin. - - // define szID - #define LOG_ID "ClientChangeNotify" - - // For example, say, we want to append user's ICQ UIN (or Yahoo ID, etc) to file name, to log CCN events to different files, depending on protocol (i.e. ClientChangeNotify_310927.log for ICQ). That's why custom log file path with variables is used here: - - logservice_register(LOG_ID, LPGENT("ClientChangeNotify"), - _T("ClientChangeNotify?puts(p,?dbsetting(%subject%,Protocol,p))?if2(_?dbsetting(,?get(p),?pinfo(?get(p),uidsetting)),).log"), - TranslateT("`[`!cdate()-!ctime()`]` ?cinfo(%subject%,display) (?cinfo(%subject%,id)) changed client to %extratext%")); - - // When Variables plugin is not installed, LogService will automatically cut all the variables from the log path, and we'll get usual "ClientChangeNotify.log" - so everyting is ok here. - // But note that %extratext% in the log format is supposed to contain only client name in CCN, and without some special measures, we would get something like this in the log when Variables plugin is not installed: - // [20.08.2007-14:30:00] Miranda IM 0.7.0.33 alpha (ICQ v0.3.8.105 alpha) - // Without at least contact nick, such log will be just useless. So when logging, we'll handle this case in a special way: - - if (ServiceExists(MS_VARS_FORMATSTRING)) - { // Variables plugin is installed - logservice_log(LOG_ID, hContact, tszClientName); - } else - { // Variables plugin is not installed, so we have to generate the string by ourselves, using some simple predefined format: - TCHAR tszNickAndClient[1024]; - mir_sntprintf(tszNickAndClient, SIZEOF(tszNickAndClient), TranslateT("%s changed his client to %s"), - (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR), tszClientName); - logservice_log(LOG_ID, hContact, tszNickAndClient); - } - -3) The other solution to the case when there's no Variables plugin, is to sacrifice customizability of log format for a simplier implementation: - - // define szID - #define LOG_ID "ClientChangeNotify" - - // in ME_SYSTEM_MODULESLOADED handler: - logservice_register(LOG_ID, LPGENT("ClientChangeNotify"), - _T("ClientChangeNotify?puts(p,?dbsetting(%subject%,Protocol,p))?if2(_?dbsetting(,?get(p),?pinfo(?get(p),uidsetting)),).log"), - NULL); - - // logging: - TCHAR tszNickAndClient[1024]; - mir_sntprintf(tszNickAndClient, SIZEOF(tszNickAndClient), TranslateT("%s changed his client to %s"), - (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR), tszClientName); - logservice_log(LOG_ID, hContact, tszNickAndClient); - - // Note that %extratext% now always contains the whole " changed his client to " string, and user is almost unable to customize this; perhaps only by using another translation or some advanced Variables scripts. -*/ - -#endif // __M_LOGSERVICE_H \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_MagneticWindows.h b/plugins/!Deprecated/ExternalAPI/m_MagneticWindows.h deleted file mode 100644 index e011c773fd..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_MagneticWindows.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef __M_MAGNETICWINDOWS_H__ -#define __M_MAGNETICWINDOWS_H__ - -//#include "../include/newpluginapi.h" - -// For other Plugins to start snapping for their windows -// wparam: hwnd of window -// lparam: 0 -// return: 0 on success, 1 on error -#define MS_MW_ADDWINDOW "Utils/MagneticWindows/Add" - -// For other Plugins to stop snapping for their windows -// wparam: hwnd of window -// lparam: 0 -// return: 0 on success, 1 on error -#define MS_MW_REMWINDOW "Utils/MagneticWindows/Rem" - -//decide where to align on the list: -#define MS_MW_STL_List_Left 0x00000001 //Snaps the window to the left border of the list -#define MS_MW_STL_List_Top 0x00000002 //Snaps the window to the top border of the list -#define MS_MW_STL_List_Right 0x00000004 //Snaps the window to the right border of the list -#define MS_MW_STL_List_Bottom 0x00000008 //Snaps the window to the bottom border of the list -//decide with what side (of the window you want to snap) to snap to the list -#define MS_MW_STL_Wnd_Left 0x00000010 //Snaps the window with the left border to the left/right side of the list -#define MS_MW_STL_Wnd_Top 0x00000020 //Snaps the window with the top border to the top/bottom side of the list -#define MS_MW_STL_Wnd_Right 0x00000040 //Snaps the window with the right border to the left/right side of the list -#define MS_MW_STL_Wnd_Bottom 0x00000080 //Snaps the window with the bottom border to the top/bottom side of the list - -#define MS_MW_STL_Wnd_FullWidth (MS_MW_STL_Wnd_Left | MS_MW_STL_Wnd_Right) - //Snaps to the top/bottom of the list and spans over the full width - -#define MS_MW_STL_Wnd_FullHeight (MS_MW_STL_Wnd_Top | MS_MW_STL_Wnd_Bottom) - //Snaps to the left/right of the list and spans over the full height - -// to place the window in the list combine f.e. MS_MW_STL_List_Left | MS_MW_STL_Wnd_Right | *vetical alignment* - -//For other Plugins to snap a window to the list for other Plugins -// wparam: hwnd of window -// lparam: combination of the above constants MS_MW_STL_* -// return: 0 on success, 1 on error -#define MS_MW_SNAPTOLIST "Utils/MagneticWindows/SnapToList" - -// Helper functions -#ifndef _MW_NO_HELPPER_FUNCTIONS - - -static inline int MagneticWindows_AddWindow(HWND hWnd) -{ - if (ServiceExists(MS_MW_ADDWINDOW)) - { - return CallService(MS_MW_ADDWINDOW, (WPARAM) hWnd, 0); - } - else - { - return -1; - } -} - -static inline int MagneticWindows_RemoveWindow(HWND hWnd) -{ - if (ServiceExists(MS_MW_REMWINDOW)) - { - return CallService(MS_MW_REMWINDOW, (WPARAM) hWnd, 0); - } - else - { - return -1; - } -} - -static inline int MagneticWindows_SnapWindowToList(HWND hWnd, int MS_MW_STL_Options) -{ - if (ServiceExists(MS_MW_SNAPTOLIST)) - { - return CallService(MS_MW_SNAPTOLIST, (WPARAM) hWnd, (LPARAM) MS_MW_STL_Options); - } - else - { - return -1; - } -} - -#endif - - -#endif // __M_MAGNETICWINDOWS_H__ diff --git a/plugins/!Deprecated/ExternalAPI/m_MathModule.h b/plugins/!Deprecated/ExternalAPI/m_MathModule.h deleted file mode 100644 index 04ae06a7f7..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_MathModule.h +++ /dev/null @@ -1,263 +0,0 @@ -#ifndef M_MATHMODULE_H_ -#define M_MATHMODULE_H_ -//--------------------------------------------------- - - -/* - ************************** - * 2 * - ** * x + 2 Pi - ** ************* + R - * Sin(wt) - * - - Math-Module - ************** - - Miranda Plugin by Stephan Kassemeyer - - - MathModule API - (c) Stephan Kassemeyer - 8 May, 2004 - -*/ - - -// --------- - -/* - Miranda Service-functions defined by MathModule - call with the - int (*CallService)(const char * servicename,WPARAM,LPARAM) - that you get from miranda when Miranda calls the - Load(PLUGINLINK * link) - of your PlugIn-dll - the CallService function then is: - link->CallServiceSync(Servicename,wparam,lparam) -*/ - -// --------- - -#define MATH_RTF_REPLACE_FORMULAE "Math/RtfReplaceFormulae" -// replace all formulas in a RichEdit with bitmaps. -// wParam = 0 -// lParam = *TMathRichedit Info -// return: TRUE if replacement succeeded, FALSE if not (disable by user?). -typedef struct -{ - HWND hwndRichEditControl; // handle of richedit. - CHARRANGE* sel; // NULL: replace all. - int disableredraw; -} TMathRicheditInfo; -// WARNING: !!! -// Strange things happen if you use this function twice on the same CHARRANGE: -// if Math-startDelimiter == Math-endDelimiter, there is the following problem: -// it might be that someone forgot an endDelimiter, this results in a lonesome startdelimiter. -// if you try to MATH_REPLACE_FORMULAE the second time, startDelimiters and endDelimiters are mixed up. -// The same problem occours if we have empty formulae, because two succeding delimiters are -// replaced with a single delimiter. - - -#define MTH_GETBITMAP "Math/GetBitmap" -//returns Bitmap that represents the formula given in lparam (string-pointer) -//this formula has NO Delimiters. -//wparam=0 -//lparam=(*char)Formula -//result=(HBITMAP) bitmap -//!!! the bitmap must be deleted with DeleteObject(hobject) -//example: -//HBITMAP Bmp=(HBITMAP)CallService(MTH_GETBITMAP,0, (LPARAM)formula); - -#define MTH_GET_GIF "Math/GetGif" -// this renders a formula given in lparam and produces a gif-image in a temporary-folder -// and returns the filename (full path). Be sure to copy the file if you want to preserve it, -// because the files are managed as a ring-buffer, if 99 files already exist, this -// function overwrites the first one. -// wparam=0 -// lparam=*char text // formula WITHOUT delimiters -// result=(*char)path -// !!! the result-buffer must be deleted with MTH_FREE_GIFPATH -#define MTH_GET_GIF_UNICODE "Math/GetGifUnicode" -// wparam=0 -// lparam=*wchar_t text -// result=*char path -// !!! the result-buffer must be deleted with MTH_FREE_GIFPATH -#define MTH_FREE_GIFPATH "Math/FreeRTFBitmapText" - -#define MTH_GET_RTF_BITMAPTEXT "Math/GetRTFBitmapText" -// returns rich-text stream that includes bitmaps from text given in lparam -// text included between MATH_GET_STARTDELIMITER and MATH_GETENDDELIMITER -// hereby is replaced with a rtf-bitmap-stream that represents the corresponding formula -// wparam=0 -// lparam=*char text -// result=*char rtfstream -// !!! the result-buffer must be deleted with MTH_FREE_RTF_BITMAPTEXT -#define MTH_FREE_RTF_BITMAPTEXT "Math/FreeRTFBitmapText" -// deletes the buffer that MTH_GET_RTF_BITMAPTEXT has created. -// wparam=0 -// lparam=(*char) buffer -// result=0 - -#define MTH_GET_HTML_SOURCE "Math/GetHTMLSource" -// this is similar to MTH_GET_RTF_BITMAPTEXT, but -// as we cannot include embedded images, the bitmaps are saved in a -// temporary directory (relative to Miranda-dir) and the images are linked into -// the html-source -// wparam=0 -// lparam=*char text // this has to be html-source already. this function only adds formula-links. -// result=*char htmlsource -// !!! the result-buffer must be deleted with MTH_FREE_HTML_BUFFER -#define MTH_GET_HTML_SOURCE_UNICODE "Math/GetHTMLSourceUnicode" -// wparam=0 -// lparam=*wchar_t text -// result=*wchar_t htmlsource -#define MTH_FREE_HTML_BUFFER "Math/FreeRTFBitmapText" -// deletes string-buffers that MathModule has created. -// wparam=(bool) unicode // 0 if no unicode-buffer; 1 if unicode-buffer !!! -// lparam=(*char) buffer -// result=0 - - -// **********parameter functions: - -#define MATH_SET_PARAMS "Math/SetParams" -//-------------------------------------- -// sets a parameter (only integer values) specified in wparam -// wparam=paramcode -// lparam=parametervalue -// paramcodes: - #define MATH_PARAM_BKGCOLOR 0 // (COLORREF) std-rgb-color or TRANSPARENT_Color - // you can make the BKGCOLOR Transparent (default) by using this color: - #define TRANSPARENT_Color 0xffffffff -1 // this is default - #define MATH_PARAM_FONTCOLOR 1 // (COLORREF) std-rgb-color - #define MATH_PARAM_RESIZE_HWND 2 // (HWND) preview window resizes RESIZE_HWND when it is being resized. - #define MATH_PARAM_ToolboxEdit_HWND 3 // (HWND) If this hwnd (of an edit-box) is set, MathModule can insert Formula-elements from the Math-Toolbox. - -#define MATH_GET_PARAMS "Math/GetParams" -//--------------------------------------- -// get a parameter (only integer values) specified in wparam -// wparam=paramcode -// lparam=lparamOfPARAM // see below -// paramcodes and returnvalues: - #define MATH_PARAM_STARTDELIMITER 4 // retval: *char delimiter // the delimiter that marks the beginning of a formula - // !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER - // lparam=0 - #define MATH_PARAM_ENDDELIMITER 5 // retval: *char delimiter // the delimiter that marks the end of a formula - // !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER - // lparam=0 -// ************end parameter functions. - -#define MTH_FREE_MATH_BUFFER "Math/FreeRTFBitmapText" -// deletes string-buffers that MathModule has created. (at the moment only the *DELIMITER-services create such strings) -// wparam=0 -// lparam=(*char) buffer -// result=0 - - - -// ********* preview-window functions - -#define MTH_SHOW "Math/Show" -// shows the preview-window -// wparam=0 -// lparam=0 -// result=0 - -#define MTH_HIDE "Math/Hide" -// hides the preview-window -// wparam=0 -// lparam=0 -// result=0 - -#define MTH_RESIZE "Math/Resize" -// sets the size of the preview-window -// wparam=0 -// lparam=(*TMathWindowInfo) -// result=0 -typedef struct -{ - int top; - int left; - int right; - int bottom; -} TMathWindowInfo; - -#define MTH_SETFORMULA "Math/SetFormula" -// sets the text that the preview-window should parse to display formulas found inside -// wparam=0 -// lparam=(*char) text -// result=0 - -#define MTH_GET_PREVIEW_HEIGHT "Math/getPreviewHeight" -// returns the height of the whole preview-window (including system-menu-bar) -// consider this when maximizing a window to that preview-window is hooked on top or bottom -// it returns the height no matter whether preview-window is visible or not -// wparam=0 -// lparam=0 -// result=(int) height - -#define MTH_GET_PREVIEW_SHOWN "Math/getPreviewShown" -// returns 1 if preview window is visible -// returns 0 if preview window is invisible -// result=(int) shown - -//---------------end preview functions - - -#define MTH_SUBSTITUTE_DELIMITER "Math/SubstituteDelimiter" -// replaces Substitute in an edit-box given in lparam-structure with internal Math-Delimiter. -// MathSrmm uses this for the shortcut-functionality -// I do not recommend to use this, it's not Unicode-safe -// wparam=0 -// lparam=(TMathSubstInfo) substInfo -// result=0 -typedef struct -{ - HWND EditHandle; - char* Substitute; -} TMathSubstInfo; - - - - - -// -// ---- here are some obsolete services. I plan to remove them soon. Use MATH_SET_PARAMS or MATH_GET_PARAMS instead !! -// - -#define MATH_SETBKGCOLOR "Math/SetBackGroundColor" -// changes the background color of the next formula to be rendered. -// wparam=0 -// lparam=(COLORREF) color -// result=0 - -#define MTH_Set_ToolboxEditHwnd "Math/SetTBhwnd" -// If this hwnd (of an edit-box) is set, MathModule can insert Formula-elements from the Math-Toolbox. -// wparam=0 -// lparam=handle - -#define MTH_Set_Resize_HWND "Math/SetResizeHWND" //übergibt fenster-Handle des aktuellen Message-Dialogs -// If MathModule knows the handle of a SRMM-based window, following features exist: -// - preview window resizes Math-Srmm when it is being resized. -// wparam=0 -// lparam=handle -// result=0 - -#define MATH_GET_STARTDELIMITER "Math/GetStartDelimiter" -// returns the delimiter that marks the beginning of a formula -// wparam=0 -// lparam=0 -// result=*char Delimiter -// !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER - -#define MATH_GETENDDELIMITER "Math/GetEndDelimiter" -// returns the delimiter that marks the end of a formula -// wparam=0 -// lparam=0 -// result=*char Delimiter -// !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER - -//--------------------------------------------------- -#endif -//#ifndef M_MATHMODULE_H_ - diff --git a/plugins/!Deprecated/ExternalAPI/m_autoreplacer.h b/plugins/!Deprecated/ExternalAPI/m_autoreplacer.h deleted file mode 100644 index a169edb10c..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_autoreplacer.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - AutoReplacer plugin - by Angelo Luiz Tartari -*/ - -#ifndef M_AUTOREPLACER_H -#define M_AUTOREPLACER_H - -/* - Adds a window handle to AutoReplacer. - This handle must belong to any window based on a editbox (editbox, richtext, TMemo, TEdit, TMaskEdit, etc.). - After adding a handle, AutoReplacer will automatically work on this window. - wParam = 0 - lParam = (LPARAM)(HWND)hwnd - Returns: 0 on success, -1 if hwnd is invalid, 1 on error. - Example: - if(ServiceExists(MS_AUTOREPLACER_ADDWINHANDLE)) - autoreplacer_AddWinHandle(GetDlgItem(hwndDlg, IDC_EDIT1)); -*/ -#define MS_AUTOREPLACER_ADDWINHANDLE "AutoReplacer/AddWinHandle" -static int __inline autoreplacer_AddWinHandle(HWND hwnd) { - return (int)CallService(MS_AUTOREPLACER_ADDWINHANDLE, 0, (LPARAM)hwnd); -} - -/* - Removes a window handle from AutoReplacer's list. - wParam = 0 - lParam = (LPARAM)(HWND)hwnd - Returns: 0 on success, -1 if hwnd is invalid, 1 if hwnd wasn't found. - Example: - if(ServiceExists(MS_AUTOREPLACER_REMWINHANDLE)) - autoreplacer_RemWinHandle(GetDlgItem(hwndDlg, IDC_EDIT1)); -*/ -#define MS_AUTOREPLACER_REMWINHANDLE "AutoReplacer/RemWinHandle" -static int __inline autoreplacer_RemWinHandle(HWND hwnd) { - return (int)CallService(MS_AUTOREPLACER_REMWINHANDLE, 0, (LPARAM)hwnd); -} - -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_db3xsa.h b/plugins/!Deprecated/ExternalAPI/m_db3xsa.h deleted file mode 100644 index 540386bf22..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_db3xsa.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-07 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. -*/ - -/* DB/SetPassword v0.5.1.3+ -This service is used to set, change or clear the password used for encrypting the profile. -It opens the password change dialog. -wParam=0 -lParam=0 -*/ -#define MS_DB_SETPASSWORD "DB/SetPassword" - -/* DB/Backup v0.5.1.3+ -This service will make a backup of your current profile. Backups are named - xx.bak where xx is the number of backups. The larger the number, the -older the backup. -wParam=0 -lParam=0 -*/ -#define MS_DB_BACKUP "DB/Backup" - -/* DB/Backup v0.5.1.3+ -This service is the trigger action service and does the same as the service above. -Only difference is wParam carries flags from trigger plugin. -wParam=flags -lParam=0 -*/ -#define MS_DB_BACKUPTRIGGER "DB/BackupTriggerAct" - -/* DB/GetProfilePath( W ) v0.5.1.5+ -Gets the path of the profile currently being used by the database module. This -path does not include the last '\'. It is appended with the profile's name if -ProfileSubDir=yes is set in the mirandaboot.ini. - wParam=( WPARAM )( int )cbName - lParam=( LPARAM )( char* )pszName -pszName is a pointer to the buffer that receives the path of the profile -cbName is the size in bytes of the pszName buffer -Returns 0 on success or nonzero otherwise -*/ -#define MS_DB_GETPROFILEPATHW "DB/GetProfilePathW" - - -/* DB/GetProfilePathBasic( W ) v0.5.1.5+ -Gets the path of the profile currently being used by the database module. This -path does not include the last '\'. This is never appended with the profile's name. - wParam=( WPARAM )( int )cbName - lParam=( LPARAM )( char* )pszName -pszName is a pointer to the buffer that receives the path of the profile -cbName is the size in bytes of the pszName buffer -Returns 0 on success or nonzero otherwise -*/ -#define MS_DB_GETPROFILEPATH_BASIC "DB/GetProfilePathBasic" -#define MS_DB_GETPROFILEPATH_BASICW "DB/GetProfilePathBasicW" - -/* Utils/PathToAbsolute( W ) v0.5.1.5+ -This service routine expands all environment variables of a path string. -It supports: -%MIRANDAPATH% - expands to the installation folder of miranda, -%PROFILEPATH% - expands to the folder the current profile is stored in, -%PROFILENAME% - expands to the name of the current profile, -and all windows like environment variables such as: -%USERPROFILE%, %WINDIR%, ... -It returns the length of the absolute path in characters on success or -0 if any of the environment variables was not translated. -wParam=relative source path ( must be smaller than MAX_PATH ) -lParam=absolute destination path ( must be larger or equal to MAX_PATH ) -*/ -#define MIRANDAPATH "%MIRANDAPATH%" -#define MIRANDAPATHW L"%MIRANDAPATH%" -#define PROFILEPATH "%PROFILEPATH%" -#define PROFILEPATHW L"%PROFILEPATH%" -#define PROFILENAME "%PROFILENAME%" -#define PROFILENAMEW L"%PROFILENAME%" - -#ifndef MS_UTILS_PATHTOABSOLUTE - #define MS_UTILS_PATHTOABSOLUTE "Utils/PathToAbsolute" -#endif -#define MS_UTILS_PATHTOABSOLUTEW "Utils/PathToAbsoluteW" - -/* Utils/PathToRelative( W ) v0.5.1.5+ -This service parses the given absolute path and translates it to a string -containing as much environment variables as possible. -The return value is the length of the relative path in characters. -wParam=absolute source path ( must be smaller than MAX_PATH ) -lParam=relative destination path ( must be larger or equal to MAX_PATH ) -*/ -#ifndef MS_UTILS_PATHTORELATIVE - #define MS_UTILS_PATHTORELATIVE "Utils/PathToRelative" -#endif -#define MS_UTILS_PATHTORELATIVEW "Utils/PathToRelativeW" - -/* Unicode/Multibyte wrapping via TCHAR -*/ -#ifdef _UNICODE - #define MS_UTILS_PATHTOABSOLUTET MS_UTILS_PATHTOABSOLUTEW - #define MS_UTILS_PATHTORELATIVET MS_UTILS_PATHTORELATIVEW -#else - #define MS_UTILS_PATHTOABSOLUTET MS_UTILS_PATHTOABSOLUTE - #define MS_UTILS_PATHTORELATIVET MS_UTILS_PATHTORELATIVE -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_dbx_tree.h b/plugins/!Deprecated/ExternalAPI/m_dbx_tree.h deleted file mode 100644 index 073f56043b..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_dbx_tree.h +++ /dev/null @@ -1,684 +0,0 @@ -/* - -dbx_tree: tree database driver for Miranda IM - -Copyright 2007-2010 Michael "Protogenes" Kunz, - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#ifndef M_DBX_TREE_H__ - -#define M_DBX_TREE_H__ 1 - -#include -#pragma pack(push, 8) - - -/** - \brief general return value if invalid param or invalid combination of params specified -**/ -static const unsigned int DBT_INVALIDPARAM = 0xFFFFFFFF; - - -/////////////////////////////////////////////////////////// -// Entities -/////////////////////////////////////////////////////////// - -/** - \brief A handle to a Entity -**/ -typedef uint32_t TDBTEntityHandle; - -static const uint32_t DBT_NF_IsRoot = 0x00000001; /// Entity is the Root -static const uint32_t DBT_NF_IsGroup = 0x00000002; /// Entity is a group -static const uint32_t DBT_NF_IsAccount = 0x00000004; /// Entity is an account - -static const uint32_t DBT_NF_HasChildren = 0x00010000; /// Entity has Children (for Groups and Metacontacts) -static const uint32_t DBT_NF_HasVirtuals = 0x00020000; /// Entity has at least one Virtual duplicate -static const uint32_t DBT_NF_IsVirtual = 0x00040000; /// Entity is a Virtual duplicate - -static const uint32_t DBT_NFM_SpecialEntity = DBT_NF_IsRoot | DBT_NF_IsGroup | DBT_NF_IsAccount | DBT_NF_IsVirtual; - -/////////////////////////////////////////////////////////// -// Entities -/////////////////////////////////////////////////////////// - -/** - \brief - \param wParam = 0 - \param lParam = 0 - - \return Handle to root Entity -**/ -#define MS_DBT_ENTITY_GETROOT "DBT/Entity/GetRoot" - - -/** - \brief - \param wParam = hEntity - \param lParam = 0 - - \return ChildCount of specified Entity -**/ -#define MS_DBT_ENTITY_CHILDCOUNT "DBT/Entity/ChildCount" - - -/** - \brief - \param wParam = hEntity - \param lParam = 0 - - \return Parent hEntity of specified Entity -**/ -#define MS_DBT_ENTITY_GETPARENT "DBT/Entity/GetParent" - - -/** - \brief - \param wParam = hEntity - \param lParam = hNewEntity - - \return 0 on success -**/ -#define MS_DBT_ENTITY_MOVE "DBT/Entity/Move" - -/** - \brief - \param wParam = hEntity - \param lParam = hNewParent -**/ -#define ME_DBT_ENTITY_MOVING "DBT/Entity/Moving" -/** - \brief - \param wParam = hEntity - \param lParam = hOldParent -**/ -#define ME_DBT_ENTITY_MOVED "DBT/Entity/Moved" - -/** - \brief Read the flags of an Entity - \param wParam = hEntity - \param lParam = 0 - - \return Flags -**/ -#define MS_DBT_ENTITY_GETFLAGS "DBT/Entity/GetFlags" - - - -static const uint32_t DBT_NIFO_OSC_AC = 0x00000001; /// onStartEntity - AddChildren -static const uint32_t DBT_NIFO_OSC_AP = 0x00000002; /// onStartEntity - AddParent -static const uint32_t DBT_NIFO_OSC_AO = 0x00000004; /// onStartEntity - AddOriginal (only if Entity is virtual) -static const uint32_t DBT_NIFO_OSC_AOC = 0x00000008 | DBT_NIFO_OSC_AO; /// onStartEntity - AddOriginalChildren (only if Entity is virtual) -static const uint32_t DBT_NIFO_OSC_AOP = 0x00000010 | DBT_NIFO_OSC_AO; /// onStartEntity - AddOriginalParent (only if Entity is virtual) -static const uint32_t DBT_NIFO_OSC_USEACCOUNT = 0x00000080; /// onStartEntity - use Account as fallback, only for settings - -static const uint32_t DBT_NIFO_OC_AC = 0x00000001 <<8; /// onChildEntity - AddChildren -//static const uint32_t DBT_LC_OC_AP = 0x00000002 <<8; /// invalid for children -static const uint32_t DBT_NIFO_OC_AO = 0x00000004 <<8; /// onChildEntity - AddOriginal (only if Entity is virtual) -static const uint32_t DBT_NIFO_OC_AOC = 0x00000008 <<8 | DBT_NIFO_OC_AO; /// onChildEntity - AddOriginalChildren (only if Entity is virtual) -static const uint32_t DBT_NIFO_OC_AOP = 0x00000010 <<8 | DBT_NIFO_OC_AO; /// onChildEntity - AddOriginalParent (only if Entity is virtual) -static const uint32_t DBT_NIFO_OC_USEACCOUNT = 0x00000080 <<8; /// onStartEntity - use Account as fallback, only for settings - -static const uint32_t DBT_NIFO_OP_AC = 0x00000001 <<16; /// onParentEntity - AddChildren -static const uint32_t DBT_NIFO_OP_AP = 0x00000002 <<16; /// onParentEntity - AddParent -static const uint32_t DBT_NIFO_OP_AO = 0x00000004 <<16; /// onParentEntity - AddOriginal (only if Entity is virtual) -static const uint32_t DBT_NIFO_OP_AOC = 0x00000008 <<16 | DBT_NIFO_OP_AO; /// onParentEntity - AddOriginalChildren (only if Entity is virtual) -static const uint32_t DBT_NIFO_OP_AOP = 0x00000010 <<16 | DBT_NIFO_OP_AO; /// onParentEntity - AddOriginalParent (only if Entity is virtual) -static const uint32_t DBT_NIFO_OP_USEACCOUNT = 0x00000080 <<16; /// onStartEntity - use Account as fallback, only for settings - -static const uint32_t DBT_NIFO_GF_DEPTHFIRST = 0x01000000; /// general flags - depth first iteration instead of breath first -static const uint32_t DBT_NIFO_GF_USEROOT = 0x02000000; /// general flags - use root as fallback, only for settings -static const uint32_t DBT_NIFO_GF_VL1 = 0x10000000; /// general flags - limit virtual lookup depth to 1 -static const uint32_t DBT_NIFO_GF_VL2 = 0x20000000; /// general flags - limit virtual lookup depth to 2 -static const uint32_t DBT_NIFO_GF_VL3 = 0x30000000; /// general flags - limit virtual lookup depth to 3 -static const uint32_t DBT_NIFO_GF_VL4 = 0x40000000; /// general flags - limit virtual lookup depth to 4 - -/** - \brief Entityfilter options for Entity iteration -**/ -typedef - struct TDBTEntityIterFilter - { - uint32_t cbSize; /// size of the structur in bytes - uint32_t Options; /// Options for iteration: DB_EIFO_* - uint32_t fHasFlags; /// flags an Entity must have to be iterated - uint32_t fDontHasFlags; /// flags an Entity have not to have to be iterated - } TDBTEntityIterFilter, *PDBTEntityIterFilter; - -/** - \brief Handle of an Entity-Iteration -**/ -typedef uintptr_t TDBTEntityIterationHandle; -/** - \brief initialize an iteration of Entities - \param wParam = PDBTEntityIterFilter, NULL to iterate all Entities (breadthfirst, all but root) - \param lParam = TDBTEntityHandle Entity, where iteration starts - - \return EnumID -**/ -#define MS_DBT_ENTITY_ITER_INIT "DBT/Entity/Iter/Init" - - -/** - \brief get the next Entity - \param wParam = EnumID returned by MS_DBT_ENTITY_ITER_INIT - \param lParam = 0 - - \return hEntity, 0 at the end -**/ -#define MS_DBT_ENTITY_ITER_NEXT "DBT/Entity/Iter/Next" - -/** - \brief closes an iteration and frees its ressourcs - \param wParam = IterationHandle returned by MS_DBT_ENTITY_ITER_INIT - \param lParam = 0 - - \return 0 on success -**/ -#define MS_DBT_ENTITY_ITER_CLOSE "DBT/Entity/Iter/Close" - -/** - \brief Deletes an Entity. - - All children will be moved to its parent. - If the Entity has virtual copies, history and settings will be transfered to the first duplicate. - - \param wParam = hEntity - \param lParam = 0 - - \return 0 on success -**/ -#define MS_DBT_ENTITY_DELETE "DBT/Entity/Delete" - - -typedef struct TDBTEntity -{ - uint32_t bcSize; - TDBTEntityHandle hParentEntity; - uint32_t fFlags; /// Flags DBT_NF_ - TDBTEntityHandle hAccountEntity; /// Needed for normal Entities, reference to AccountEntity for the created one -} TDBTEntity, *PDBTEntity; - -/** - \brief Creates a new Entity. - \param wParam = PDBTEntity - \param lParam = 0 - - \return hEntity on success, 0 otherwise -**/ -#define MS_DBT_ENTITY_CREATE "DBT/Entity/Create" - - -/** - \brief returns the account entity handle specified during creation - \param wParam = TDBTEntityHandle - \param lParam = 0 - - \return hEntity on success, 0 otherwise -**/ -#define MS_DBT_ENTITY_GETACCOUNT "DBT/Entity/GetAccount" - - -/////////////////////////////////////////////////////////// -// Virtual Entities -/////////////////////////////////////////////////////////// - -/** - \brief Creates a virtual duplicate of an Entity - \param wParam = hEntity to duplicate, couldn't be a group (DBT_NF_IsGroup set to 0) - \param lParam = hParentEntity to place duplicate - - \return hEntity of created duplicate -**/ -#define MS_DBT_VIRTUALENTITY_CREATE "DBT/VirtualEntity/Create" - -/** - \brief Retrieves the original Entity, which this is a duplicate of - \param wParam = hEntity of virtual Entity - \param lParam = 0 - - \return hEntity of original Entity -**/ -#define MS_DBT_VIRTUALENTITY_GETPARENT "DBT/VirtualEntity/GetParent" - -/** - \brief Retrieves the first virtual duplicate of an Entity (if any) - \param wParam = hEntity with virtual copies - \param lParam - - \return hEntity of first virtual duplicate -**/ -#define MS_DBT_VIRTUALENTITY_GETFIRST "DBT/VirtualEntity/GetFirst" - -/** - \brief Retrieves the following duplicate - \param wParam = hVirtualEntity of virtual Entity - \param lParam = 0 - - \return hEntity of next duplicate, 0 if hVirtualEntity was the last duplicate -**/ -#define MS_DBT_VIRTUALENTITY_GETNEXT "DBT/VirtualEntity/GetNext" - - -/////////////////////////////////////////////////////////// -// Settings -/////////////////////////////////////////////////////////// - -/** - \brief Handle of a Setting -**/ -typedef uint32_t TDBTSettingHandle; - - -static const uint16_t DBT_ST_BYTE = 0x01; -static const uint16_t DBT_ST_WORD = 0x02; -static const uint16_t DBT_ST_DWORD = 0x03; -static const uint16_t DBT_ST_QWORD = 0x04; - -static const uint16_t DBT_ST_CHAR = 0x11; -static const uint16_t DBT_ST_SHORT = 0x12; -static const uint16_t DBT_ST_INT = 0x13; -static const uint16_t DBT_ST_INT64 = 0x14; - -static const uint16_t DBT_ST_BOOL = 0x20; -static const uint16_t DBT_ST_FLOAT = 0x21; -static const uint16_t DBT_ST_DOUBLE = 0x22; - -static const uint16_t DBT_ST_ANSI = 0xff; -static const uint16_t DBT_ST_BLOB = 0xfe; -static const uint16_t DBT_ST_UTF8 = 0xfd; -static const uint16_t DBT_ST_WCHAR = 0xfc; - -#if (defined(_UNICODE) || defined(UNICODE)) - static const uint16_t DBT_ST_TCHAR = DBT_ST_WCHAR; -#else - static const uint16_t DBT_ST_TCHAR = DBT_ST_ANSI; -#endif - -static const uint16_t DBT_STF_Signed = 0x10; -static const uint16_t DBT_STF_VariableLength = 0x80; - - - -static const uint32_t DBT_SDF_FoundValid = 0x00000001; -static const uint32_t DBT_SDF_HashValid = 0x00000002; - -/** - \brief Describes a setting, its name and location -**/ -typedef - struct TDBTSettingDescriptor { - uint32_t cbSize; /// size of the structure in bytes - TDBTEntityHandle Entity; /// Entityhandle where the setting can be found, or where searching starts - char * pszSettingName; /// Setting name - uint32_t Options; /// options describing where the setting can be found DBT_NIFO_* - uint32_t Flags; /// Valid Flags. DBT_SDF_* describes which following values are valid (internal use) - - TDBTEntityHandle FoundInEntity; /// internal use to avoid to do the searching twice - uint32_t Hash; /// internal used HashValue for settingname - TDBTSettingHandle FoundHandle; /// internal used SettingHandle - } TDBTSettingDescriptor, * PDBTSettingDescriptor; - -/** - \brief Describes a settings value - - it is never used alone, without a type qualifier -**/ -typedef - union TDBTSettingValue { - bool Bool; - int8_t Char; uint8_t Byte; - int16_t Short; uint16_t Word; - uint32_t Int; uint32_t DWord; - int64_t Int64; uint64_t QWord; - float Float; - double Double; - - struct { - uint32_t Length; // length in bytes of pBlob, length in characters of char types including trailing null - union { - uint8_t * pBlob; - char * pAnsi; - char * pUTF8; - wchar_t * pWide; - TCHAR * pTChar; - }; - }; - } TDBTSettingValue; - -/** - \brief Describes a setting -**/ -typedef - struct TDBTSetting { - uint32_t cbSize; /// size of the structure in bytes - PDBTSettingDescriptor Descriptor; /// pointer to a Setting descriptor used to locate the setting - uint16_t Type; /// type of the setting, see DBT_ST_* - TDBTSettingValue Value; /// Value of the setting according to Type - } TDBTSetting, * PDBTSetting; - - - -/** - \brief retrieves the handle of the setting - \param wParam = PDBTSettingDescriptor - \param lParam = 0 - - \return hSetting when found, 0 otherwise -**/ -#define MS_DBT_SETTING_FIND "DBT/Setting/Find" - - -/** - \brief deletes the specified Setting - \param wParam = PDBTSettingDescriptor - \param lParam = 0 - - \return hSetting when found, 0 otherwise -**/ -#define MS_DBT_SETTING_DELETE "DBT/Setting/Delete" - -/** - \brief deletes the specified Setting - \param wParam = TDBTSettingHandle - \param lParam = 0 - - \return 0 on success -**/ -#define MS_DBT_SETTING_DELETEHANDLE "DBT/Setting/DeleteHandle" - - -/** - \brief Write a setting (and creates it if neccessary) - \param wParam = PDBTSetting - \param lParam = 0 - - \return TDBTSettingHandle on success, 0 otherwise -**/ -#define MS_DBT_SETTING_WRITE "DBT/Setting/Write" - -/** - \brief retrieves the handle of the setting - \param wParam = PDBTSetting - \param lParam = TDBTSettingHandle, could be 0 to create new setting, but needs wParam->Descriptor with valid data - - \return hSetting when found or created, 0 otherwise -**/ -#define MS_DBT_SETTING_WRITEHANDLE "DBT/Setting/WriteHandle" - -/** - \brief retrieves the value of the setting - \param wParam = PDBTSetting - \param lParam = 0 - - \return SettingHandle -**/ -#define MS_DBT_SETTING_READ "DBT/Setting/Read" - -/** - \brief retrieves the value of the setting - - Also retrieves the SettingDescriptor if it is set and prepared correctly (name buffers set etc) - \param wParam = PDBTSetting - \param lParam = TDBTSettingHandle - - \return original settings type -**/ -#define MS_DBT_SETTING_READHANDLE "DBT/Setting/ReadHandle" - - - -/** - \brief Settings Filter Options for setting iteration -**/ -typedef - struct TDBTSettingIterFilter { - uint32_t cbSize; /// size in bytes of this structure - uint32_t Options; /// DBT_NIFO_* flags - TDBTEntityHandle hEntity; /// hEntity which settings should be iterated (or where iteration begins) - char * NameStart; /// if set != NULL the iteration will only return settings which name starts with this string - uint32_t ExtraCount; /// count of additional Entities which settings are enumerated, size of the array pointed by ExtraEntities - TDBTEntityHandle * ExtraEntities; /// pointer to an array with additional Entity handles in prioritized order - - PDBTSettingDescriptor Descriptor; /// if set, the iteration will fill in the correct data, you may set SettingsNameLength and SettingName to a buffer to recieve the name of each setting - PDBTSetting Setting; /// if set, iteration loads every settings value, except variable length data (blob, strings) but returns their length - - } TDBTSettingIterFilter, *PDBTSettingIterFilter; - - -/** - \brief Handle of a Setting-Iteration -**/ -typedef uintptr_t TDBTSettingIterationHandle; -/** - \brief initialize an iteration of settings - \param wParam = PDBTSettingIterFilter - \param lParam = 0 - - \return EnumID -**/ -#define MS_DBT_SETTING_ITER_INIT "DBT/Setting/Iter/Init" - - -/** - \brief get the next setting - \param wParam = EnumID returned by MS_DBT_SETTING_ITER_INIT - \param lParam = 0 - - \return hSetting, 0 at the end -**/ -#define MS_DBT_SETTING_ITER_NEXT "DBT/Setting/Iter/Next" - -/** - \brief closes an iteration and frees its ressourcs - \param wParam = IterationHandle returned by MS_DBT_SETTING_ITER_INIT - \param lParam = 0 - - \return 0 on success -**/ -#define MS_DBT_SETTING_ITER_CLOSE "DBT/Setting/Iter/Close" - - -/////////////////////////////////////////////////////////// -// Events -/////////////////////////////////////////////////////////// - -typedef uint32_t TDBTEventHandle; - - -/** - \brief this event was sent by the user. If not set this event was received. -**/ -static const uint32_t DBT_EF_SENT = 0x00000002; - -/** - \brief event has been read by the user. It does not need to be processed any more except for history. -**/ -static const uint32_t DBT_EF_READ = 0x00000004; - -/** - \brief event contains the right-to-left aligned text -**/ -static const uint32_t DBT_EF_RTL = 0x00000008; - -/** - \brief event contains a text in utf-8 -**/ -static const uint32_t DBT_EF_UTF = 0x00000010; - -/** - \brief event is virtual. it is not stored to db file yet. -**/ -static const uint32_t DBT_EF_VIRTUAL = 0x00000020; - -/** - \brief describes an event -**/ -typedef struct TDBTEvent { - uint32_t cbSize; /// size of the structure in bytes - char * ModuleName; /// - uint32_t Timestamp; /// seconds since 00:00, 01/01/1970. Gives us times until 2106 unless you use the standard C library which is signed and can only do until 2038. In GMT. - uint32_t Flags; /// the omnipresent flags - uint32_t EventType; /// module-unique event type ID - uint32_t cbBlob; /// size of pBlob in bytes - uint8_t * pBlob; /// pointer to buffer containing module-defined event data -} TDBTEvent, *PDBTEvent; - -static const uint32_t DBT_EventType_Message = 0; -static const uint32_t DBT_EventType_URL = 1; -static const uint32_t DBT_EventType_Contacts = 2; -static const uint32_t DBT_EventType_Added = 1000; -static const uint32_t DBT_EventType_AuthRequest = 1001; //specific codes, hence the module- -static const uint32_t DBT_EventType_File = 1002; //specific limit has been raised to 2000 - - -/** - \brief retrieves the blobsize of an event in bytes - \param wParam = hEvent - \param lParam = 0 - - \return blobsize -**/ -#define MS_DBT_EVENT_GETBLOBSIZE "DBT/Event/GetBlobSize" - - - -/** - \brief retrieves all information of an event - \param wParam = hEvent - \param lParam = PDBTEvent - - \return 0 on success -**/ -#define MS_DBT_EVENT_GET "DBT/Event/Get" - -/** - \brief retrieves all information of an event - \param wParam = hEntity - \param lParam = 0 - - \return Event count of specified Entity on success, DBT_INVALIDPARAM on error -**/ -#define MS_DBT_EVENT_GETCOUNT "DBT/Event/GetCount" - - -/** - \brief Deletes the specfied event - \param wParam = hEntity - \param lParam = hEvent - - \return 0 on success -**/ -#define MS_DBT_EVENT_DELETE "DBT/Event/Delete" - -/** - \brief Creates a new Event - \param wParam = hEntity - \param lParam = PDBTEvent - - \return hEvent on success, 0 otherwise -**/ - -#define MS_DBT_EVENT_ADD "DBT/Event/Add" - - -/** - \brief Changes the flags for an event to mark it as read. - \param wParam = hEntity - \param lParam = hEvent - - \return New flags -**/ -#define MS_DBT_EVENT_MARKREAD "DBT/Event/MarkRead" - -/** - \brief Saves a virtual event to file and changes the flags. - \param wParam = hEntity - \param lParam = hEvent - - \return 0 on success -**/ -#define MS_DBT_EVENT_WRITETODISK "DBT/Event/WriteToDisk" - -/** - \brief Retrieves a handle to a Entity that owns hEvent. - \param wParam = hEvent - \param lParam = 0 - - \return NULL is a valid return value, meaning, as usual, the user. - DBT_INVALIDPARAM if hDbEvent is invalid, or the handle to the Entity on - success -**/ -#define MS_DBT_EVENT_GETENTITY "DBT/Event/GetEntity" - -/** - \brief Event Filter Options for event iteration -**/ -typedef - struct TDBTEventIterFilter { - uint32_t cbSize; /// size in bytes of this structure - uint32_t Options; /// DBT_NIFO_* flags - TDBTEntityHandle hEntity; /// hEntity which events should be iterated (or where iteration begins) - uint32_t ExtraCount; /// count of additional Entities which settings are enumerated, size of the array pointed by ExtraEntities - TDBTEntityHandle * ExtraEntities; /// pointer to an array with additional Entity handles in prioritized order - - uint32_t tSince; /// timestamp when to start iteration, 0 for first item - uint32_t tTill; /// timestamp when to stop iteration, 0 for last item - - PDBTEvent Event; /// if set every events data gets stored there - - } TDBTEventIterFilter, *PDBTEventIterFilter; - - -/** - \brief Handle of a Event-Iteration -**/ -typedef uintptr_t TDBTEventIterationHandle; -/** - \brief initialize an iteration of events - \param wParam = PDBTEventIterFilter - \param lParam = 0 - - \return EnumID -**/ -#define MS_DBT_EVENT_ITER_INIT "DBT/Event/Iter/Init" - - -/** - \brief get the next event - \param wParam = EnumID returned by MS_DBT_EVENT_ITER_INIT - \param lParam = 0 - - \return hSetting, 0 at the end -**/ -#define MS_DBT_EVENT_ITER_NEXT "DBT/Event/Iter/Next" - -/** - \brief closes an iteration and frees its resourcs - \param wParam = IterationHandle returned by MS_DBT_EVENT_ITER_INIT - \param lParam = 0 - - \return 0 on success -**/ -#define MS_DBT_EVENT_ITER_CLOSE "DBT/Event/Iter/Close" - - - -#pragma pack(pop) - -#endif diff --git a/plugins/!Deprecated/ExternalAPI/m_fortunemsg.h b/plugins/!Deprecated/ExternalAPI/m_fortunemsg.h deleted file mode 100644 index bf13dc422c..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_fortunemsg.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - -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 _FORTUNEMSG_ -#define _FORTUNEMSG_ - -#define MIN_FORTUNEMSG 10 -#define MAX_FORTUNEMSG 1024 -#define FORTUNE_BUFSIZE (MAX_FORTUNEMSG + 1) - -//returns the fortune message (from a random file) -//wParam=0 -//lParam=(char *)buffer or 0 -//returns (char *)status msg (buffer if specified), or 0 on failure -//If lParam != 0 then the fortune msg is to be stored there, make sure -//its length is at least equal to FORTUNE_BUFSIZE. If lParam == 0, then -//the plugin will allocate the memory, but don't forget to free it (the -//return value) using MS_FORTUNEMSG_FREEMEMORY (but only if you specify lParam=0!!!) -#define MS_FORTUNEMSG_GETMESSAGE "FortuneMsg/GetMessage" - -//returns the fortune message for a protocol -//wParam=(char*)szProtoName -//lParam=(char *)buffer or 0 -//returns (char *)status msg (buffer if specified), or 0 on failure -//If lParam != 0 then the fortune msg is to be stored there, make sure -//its length is at least equal to FORTUNE_BUFSIZE. If lParam == 0, then -//the plugin will allocate the memory, but don't forget to free it (the -//return value) using MS_FORTUNEMSG_FREEMEMORY (but only if you specify lParam=0!!!) -#define MS_FORTUNEMSG_GETPROTOMSG "FortuneMsg/GetProtoMessage" - -//returns the fortune status message for a status -//wParam=(int)status -//lParam=(char *)buffer or 0 -//returns (char *)status msg (buffer if specified), or 0 on failure -//If lParam != 0 then the fortune msg is to be stored there, make sure -//its length is at least equal to FORTUNE_BUFSIZE. If lParam == 0, then -//the plugin will allocate the memory, but don't forget to free it (the -//return value) using MS_FORTUNEMSG_FREEMEMORY (but only if you specify lParam=0!!!) -#define MS_FORTUNEMSG_GETSTATUSMSG "FortuneMsg/GetStatusMessage" - -//frees the memory allocated by one of the other three services -//wParam=0 -//lParam=(void *)pointer to the memory to be freed -//(the returned value from one of the other three services if called with lParam=0) -//return value: 0 on success, -1 on failure (argument was NULL) -#define MS_FORTUNEMSG_FREEMEMORY "FortuneMsg/FreeMemory" - - -//this service was created for being used by Variables plugin -//wParam=0 -//lParam=(ARGUMENTSINFO *) see m_variables.h for description of the structure -//returns (char *)status msg, or 0 on failure -#define MS_FORTUNEMSG_FROMVARIABLES "FortuneMsg/FromVariables" - - -#endif diff --git a/plugins/!Deprecated/ExternalAPI/m_hddinfo.h b/plugins/!Deprecated/ExternalAPI/m_hddinfo.h deleted file mode 100644 index 3f529ec1ff..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_hddinfo.h +++ /dev/null @@ -1,6 +0,0 @@ -#define MS_SYSINFO_HDDTEMP "SysInfo/HddTemp" - // checks current hdd temperature -#define MS_SYSINFO_CUSTPOP "SysInfo/CustomPopup" - //shows special custom popup -#define ME_SYSINFO_HDDOVERHEAT "SysInfo/HddOverheat" - // happens if one ot the drives has current temperature higher than set as normal diff --git a/plugins/!Deprecated/ExternalAPI/m_help.h b/plugins/!Deprecated/ExternalAPI/m_help.h deleted file mode 100644 index ea8557628c..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_help.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - -Miranda IM Help Plugin -Copyright (C) 2002 Richard Hughes, 2005-2007 H. Herkenrath - -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 (Help-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_HELP_H__ -#define M_HELP_H__ - -/* - Help Plugin 0.2.1.2 - All services in here except MS_HELP_SHOWLANGDIALOG should be thread-safe, - you can call them from any thread -*/ - -/* interface id */ -#if !defined(MIID_HELP) - #define MIID_HELP {0x302660c5,0x1bf6,0x4054,{0xa7,0x9f,0x77,0xb1,0x96,0x5d,0x6f,0x48}} -#endif - -/* Enable/disable the help context menu for a specific control. v0.2.0.0+ -Note: You normally do not need to call this, read below. -You can can use this to deactivate the appearance of the help context menu -being shown when the user right clicks on an control. -You can use this service to disable the context menu. - -You do *not* need to use this service when you would like to show -a context menu by yourself, just handle WM_CONTEXTMENU correctly instead. -You need to return TRUE in your DlgProc or 0 in your WndProc, indicating 'message handled'. - -The context menu is disabled by default on the following controls (looks silly on multi-component controls): -ListView, TreeView, Statusbar, Toolbar, CLC -AutoTips are disabled by default for controls stating DLGC_WANTALLKEYS or DLGC_HASSETSEL at -WM_GETDLGCODE (autotips are annoying on edits). - wParam=(WPARAM)(HWND)hwndCtl - lParam=(LPARAM)flags (see below) -Returns 0 on success or nonzero on failure -*/ -#define MS_HELP_SETCONTEXTSTATE "Help/SetContextState" -#define HCSF_CONTEXTMENU 0x01 // show help context menu for this control -#define HCSF_AUTOTIP 0x02 // show automatic help tip on hover for this control - // only works for non-editable -#if !defined(HELP_NOHELPERFUNCTIONS) -__inline static int Help_SetContextState(HWND hwndCtl,DWORD flags) { - if (!ServiceExists(MS_HELP_SETCONTEXTSTATE)) return -1; - return CallService(MS_HELP_SETCONTEXTSTATE,(WPARAM)hwndCtl,flags); -} -#endif - -/* Show a help tooltip for a specific control or dialog. v0.2.0.0+ -You can call this if you would like to show help at a specific time. - wParam=(WPARAM)(HWND)hwndCtl - lParam=0 (unused) -Returns 0 on success or nonzero on failure. -The service fails when the help tooltip cannot be instantiated. -*/ -#define MS_HELP_SHOWHELP "Help/ShowHelp" - -/* Show the download language dialog. v0.2.1.0+ - wParam=lParam=0 -The dialog can't have a parent due to it's asynchronous nature. -If the language window is already opened it will be -brought to front instead (returns success). -Returns 0 on success, nonzero otherwise. -*/ -#define MS_HELP_SHOWLANGDIALOG "Help/ShowLangDialog" - - -#ifndef HELP_NOSETTINGS -#define SETTING_AUTOTIPSENABLED_DEFAULT 0 -#define SETTING_AUTOTIPDELAY_DEFAULT 4000 -#define SETTING_ENABLEHELPUPDATES_DEFAULT 1 -#endif - -#endif // M_HELP_H__ diff --git a/plugins/!Deprecated/ExternalAPI/m_icqplus.h b/plugins/!Deprecated/ExternalAPI/m_icqplus.h deleted file mode 100644 index 30c5b44a82..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_icqplus.h +++ /dev/null @@ -1,92 +0,0 @@ -// ---------------------------------------------------------------------------80 -// ICQ plugin for Miranda Instant Messenger -// ________________________________________ -// -// Copyright © 2000,2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede -// Copyright © 2001,2002 Jon Keating, Richard Hughes -// Copyright © 2002,2003,2004 Martin Öberg, Sam Kothari, Robert Rainwater -// Copyright © 2004,2005,2006,2007 Joe Kucera -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - -#ifndef M_ICQPLUS_H__ -#define M_ICQPLUS_H__ 1 - -/*#define PS_ICQP_SERVER_IGNORE "/ServerIgnore" - -#define MS_INCOGNITO_REQUEST "/IncognitoRequest" - - -#define MS_TZER_DIALOG "/TzerDialog" -//Send tzer -//wParam=(WPARAM)hContact; -//lParam=(int)tZer -#define MS_SEND_TZER "/SendtZer" - - - -*/ - -#define MAX_CAPNAME 64 -typedef struct -{ - int cbSize; - char caps[0x10]; - HANDLE hIcon; - char name[MAX_CAPNAME]; -} ICQ_CUSTOMCAP; - -// Add a custom icq capability. -// wParam = 0; -// lParam = (LPARAM)(ICQ_CUSTOMCAP *)&icqCustomCap; -#define PS_ICQ_ADDCAPABILITY "/IcqAddCapability" - -// Check if capability is supportes. Only icqCustomCap.caps does matter. -// wParam = (WPARAM)(HANDLE)hContact; -// lParam = (LPARAM)(ICQ_CUSTOMCAP *)&icqCustomCap; -// returns non-zero if capability is supported -#define PS_ICQ_CHECKCAPABILITY "/IcqCheckCapability" -/* - -#ifndef ICQ_NOHELPERS -static __inline void IcqBuildMirandaCap(ICQ_CUSTOMCAP *icqCustomCap, const char *name, HICON hIcon, const char *id) -{ - if (!icqCustomCap) return; - icqCustomCap->cbSize = sizeof(*icqCustomCap); - icqCustomCap->hIcon = hIcon; - strncpy(icqCustomCap->name, name, sizeof(icqCustomCap->name))[sizeof(icqCustomCap->name)-1]=0; - memset(icqCustomCap->caps, 0, 0x10); - strncpy(icqCustomCap->caps+0, "Miranda/", 8); - strncpy(icqCustomCap->caps+8, id, 8); -} -#endif*/ - -/* usage: -char icqCustomCapStr[0x10] = {...}; -ICQ_CUSTOMCAP icqCustomCap; -icqCustomCap.cbSize = sizeof(icqCustomCap); -memcpy(icqCustomCap.caps, icqCustomCapStr, 0x10); -lstrcpy(icqCustomCap.name, "Custom Name"); -CallProtoService("ICQ", PS_ICQ_ADDCAPABILITY, 0, (LPARAM)&icqCustomCap); -*/ - -//check user status via ASD -//wParam=(WPARAM)hContact; - -//#define MS_ICQ_GET_USER_STATUS "/IcqGetUserStatus" - - -#endif // M_ICQPLUS_H__ \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_ircscript.h b/plugins/!Deprecated/ExternalAPI/m_ircscript.h deleted file mode 100644 index ddab3b96bb..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_ircscript.h +++ /dev/null @@ -1,129 +0,0 @@ - -/* - This file is a description of the interface between the Miranda Scripting - Plugin (MSP) and IRC. It is mainly an internal draft. - - The MSP is a powerful PHP based scripting engine - which can automate many tasks in Miranda IM. With the implementation of - this interface IRC can also benefit from the advantages MSP brings. The - interface has been constructed by the respective authors of IRC and MSP. - - The idea is that MSP and IRC should communicate via the interface outlined herein, - but MSP should "package" the data in attractive functions that can be easily - used by eager scripters. - - Note that m_chat.h should be #included as the events defined therein is used in this interface - - The IRC plugin communicates with MSP mainly through 8 (2 x 4) services which are - illustrated by the following matrix (MSP has 4 services and IRC 4 services): - - - -------------------------------------------------- - | | | - | Incoming raw data | Data going | - | from server | to GUI | - | (before processing) | (after processing) | - | | | - -------------------------------------------------- - | | | - | Outgoing raw data | Data going | - | to server | from GUI | - | (after processing) | (before processing) | - | | | - -------------------------------------------------- - - (processing refers to the IRC plugin reacting to different commands) - -*/ - - -//------------------------- HANDLING RAW MESSAGES ------------------------ -/* - - The two leftmost boxes are related to data sent to and from the server in RAW form. - (a typical RAW message looks like this: ":nick!user@host COMMAND PARAMETERS") - - It is very useful for scripters to be able to manipulate and add RAW streams of data. - - The below structure is used when RAW data is generated and IRC must trigger an - event in MSP so the scripts can do their magic. - - If the data is modified make sure to use MS_SYSTEM_GET_MMI and then mmi_realloc() to - allocate from the same heap. Do not free the data. - - wParam= Module name - lParam= (LPARAM)( char* )pszRaw - returns nonzero if the message should be dropped -*/ - -/* - NOTE! IRC will implement two services which also uses the same parameters: - - "/InsertRawIn" //used for inserting a "fake" incoming RAW event - "/InsertRawOut" //used for inserting a "fake" outgoing RAW event - -*/ - - -#define MS_MBOT_IRC_RAW_IN "MBot/IrcRawIn" -#define MS_MBOT_IRC_RAW_OUT "MBot/IrcRawOut" - - -//------------------------- HANDLING GUI MESSAGES 1 ------------------------ -/* - - The top rightmost box is related to data sent to the gui - (currently chat.dll) in the form of GCEVENT's. (see m_chat.h) - - While maybe not as useful to the scripter, it can be useful to be able to - "tap into" messages to the GUI from the IRC plugin. - - If the data is modified make sure to realloc() or similar. - - wParam= (WPARAM) (WPARAM_GUI_IN) &wgi - lParam= (LPARAM)(GCEVENT *)&gce // see m_chat.h - returns nonzero if the message should be dropped -*/ - -/* - NOTE! IRC will implement a service which also uses the same parameters: - - "/InsertGuiIn" //used for inserting a "fake" event to the GUI - -*/ -typedef struct MBOT_GUI_WPARAM_IN_STRUCT -{ - const char* pszModule; - WPARAM wParam; -}WPARAM_GUI_IN; - -#define MS_MBOT_IRC_GUI_IN "MBot/IrcGuiIn" - - -//------------------------- HANDLING GUI MESSAGES 2 ------------------------ -/* - - The bottom rightmost box is related to data sent from the gui - (currently chat.dll) in the form of GCHOOKS's. Originally this is carried out in a hook, - but for MSP this is done via a service instead. - - It can be useful for scripters to simulate user actions, like entering text, closing the window etc - - If the data is modified make sure to realloc() or similar. - - wParam= Module name - lParam= (LPARAM)(GCHOOK *)gch // see m_chat.h - returns nonzero if the message should be dropped -*/ - -/* - NOTE! IRC will implement a service which also uses the same parameters: - - "/InsertGuiOut" //used for inserting a "fake" outgoing event to the GUI - -*/ - -#define MS_MBOT_IRC_GUI_OUT "MBot/IrcGuiOut" - -#define MS_MBOT_REGISTERIRC "MBot/RegisterIRCModule" - diff --git a/plugins/!Deprecated/ExternalAPI/m_langman.h b/plugins/!Deprecated/ExternalAPI/m_langman.h deleted file mode 100644 index 0461834d91..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_langman.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org), -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_LANGMAN_H__ -#define M_LANGMAN_H__ - -/* Show the download language dialog. v1.0.2.0+ - wParam=lParam=0 -The dialog can't have a parent due to it's asynchronous nature. -If the language window is already opened it will be -brought to front instead (returns success). -Returns 0 on success, nonzero otherwise. -*/ -#define MS_LANGMAN_SHOWLANGDIALOG "LangMan/ShowLangDialog" - - -#ifndef LANGMAN_NOSETTINGS -#define SETTING_ENABLEAUTOUPDATES_DEFAULT 1 -#endif - -#endif // M_LANGMAN_H diff --git a/plugins/!Deprecated/ExternalAPI/m_mucc.h b/plugins/!Deprecated/ExternalAPI/m_mucc.h deleted file mode 100644 index 44fc7dd2f1..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_mucc.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - -MUCC Group Chat GUI Plugin for Miranda IM -Copyright (C) 2004 Piotr Piastucki - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ -#ifndef M_MUCC_INCLUDED -#define M_MUCC_INCLUDED - -#define MUCC_WINDOW_CHATROOM 1 -#define MUCC_WINDOW_CHATLIST 2 - -#define MUCC_WF_BOLD 0x0001 //enable the 'bold' button -#define MUCC_WF_ITALIC 0x0002 //enable the 'italics' button -#define MUCC_WF_UNDERLINE 0x0004 //enable the 'underline' button -#define MUCC_WF_COLOR 0x0008 //enable the 'foreground color' button -#define MUCC_WF_BKGCOLOR 0x0010 //enable the 'background color' button -#define MUCC_WF_TYPNOTIF 0x0020 //enable typing notifications - -typedef struct { - int cbSize; - int iType; //Window type, MUCW_CHATROOM or MUCW_CHATLIST - DWORD dwFlags; //Window look & feel flags - const char *pszModule; //Identifier of the module owning the window - const char *pszModuleName; //Name of the module as displayed to the user - const char *pszID; //Unique identifier of the chat room - const char *pszName; //Name of the chat room - const char *pszUID; //Identifier of the user - const char *pszNick; //Nick name used by the user in the chat room - const char *pszStatusbarText; //Optional text to set in the statusbar -} MUCCWINDOW; - -#define MS_MUCC_NEW_WINDOW "MUCC/NewWindow" - -typedef struct { - const char *pszID; //Unique identifier of the group or the chat room - const char *pszName; //Name of the group or the chat room - const char *pszNick; //Name of the user - const char *pszText; //Text, usage depends on type of event - int iCount; //Number of users in the chat room - DWORD dwFlags; //Item flags -} MUCCQUERYITEM; - -typedef struct { - int cbSize; - int iType; //Query type, one of MUCC_EVENT_QUERY_* values - const char *pszModule; //Name of the module - const char *pszParent; //Parent of groups or the group chat rooms belong to - int iItemsNum; //Number of items pItems iws pointing to - MUCCQUERYITEM *pItems; //Pointer to array of result items - DWORD dwFlags; //Item flags - int iPage; //Number of page in room list - int iLastPage; //1 if the group has any child or there is a next page in room list, 0 otherwise -} MUCCQUERYRESULT; - -#define MS_MUCC_QUERY_RESULT "MUCC/QueryResult" - -/* - * The following fields must be set for all events: - * cbSize - size of the structure - * pszModule - module name - * iType - event type (id) - */ -/* - * Incoming messages - */ -#define MUCC_EVENT_MESSAGE 0x0001 -/* pszID - room ID - * pszUID - user UID (login etc.) - * pszNick - user nick (i.e. the name to be displayed) - * pszText - message - * iFont - font index - * iFontSize - font size - * color - text color - * dwFlags - flags - * time - time - * bIsMe - TRUE if this is an outgoing message, FALSE otherwise - */ -#define MUCC_EVENT_STATUS 0x0002 -/* pszID - room ID - * pszUID - user UID (login etc.) - * pszNick - user nick (i.e. the name to be displayed) - * pszText - unused - * dwData - status - * dwFlags - * bIsMe - */ -#define MUCC_EVENT_INVITATION 0x0003 -/* -*/ -#define MUCC_EVENT_ERROR 0x0004 - -#define MUCC_EVENT_TOPIC 0x0005 -/* pszID - * pszText - */ -#define MUCC_EVENT_ROOM_INFO 0x0006 - -/* - * Incoming & outgoing messages - */ -#define MUCC_EVENT_JOIN 0x0080 -#define MUCC_EVENT_LEAVE 0x0081 -/* - * Outgoing messages - */ -#define MUCC_EVENT_INVITE 0x0102 -#define MUCC_EVENT_START_PRIV 0x0103 -#define MUCC_EVENT_REGISTER_NICK 0x0105 -#define MUCC_EVENT_REMOVE_NICK 0x0106 -#define MUCC_EVENT_REGISTER_ROOM 0x0107 -#define MUCC_EVENT_REMOVE_ROOM 0x0108 -#define MUCC_EVENT_KICK_BAN 0x0109 -#define MUCC_EVENT_SET_USER_ROLE 0x010A -#define MUCC_EVENT_UNBAN 0x010B -/* - * Queries - */ -#define MUCC_EVENT_QUERY_GROUPS 0x0120 -#define MUCC_EVENT_QUERY_ROOMS 0x0121 -#define MUCC_EVENT_QUERY_USER_ROOMS 0x0122 -#define MUCC_EVENT_QUERY_USER_NICKS 0x0123 -#define MUCC_EVENT_QUERY_SEARCH 0x0124 -#define MUCC_EVENT_QUERY_CONTACTS 0x0130 -#define MUCC_EVENT_QUERY_USERS 0x0131 -/* - Event flags -*/ -#define MUCC_EF_FONT_BOLD 0x000100 // Bold font flag (MUCC_EVENT_MESSAGE) -#define MUCC_EF_FONT_ITALIC 0x000200 // Italic font flag (MUCC_EVENT_MESSAGE) -#define MUCC_EF_FONT_UNDERLINE 0x000400 // Underlined font flags (MUCC_EVENT_MESSAGE) -/* -#define MUCC_EF_FONT_NAME 0x000800 -#define MUCC_EF_FONT_SIZE 0x001000 -#define MUCC_EF_FONT_COLOR 0x002000 -*/ -#define MUCC_EF_ROOM_PUBLIC 0x000001 -#define MUCC_EF_ROOM_NICKNAMES 0x000002 -#define MUCC_EF_ROOM_PERMANENT 0x000004 -#define MUCC_EF_ROOM_MEMBERS_ONLY 0x000008 -#define MUCC_EF_ROOM_MODERATED 0x000020 -#define MUCC_EF_ROOM_OFFICIAL 0x000040 -#define MUCC_EF_ROOM_NAME 0x100000 - -#define MUCC_EF_USER_OWNER 0x000001 -#define MUCC_EF_USER_ADMIN 0x000002 -#define MUCC_EF_USER_REGISTERED 0x000004 -#define MUCC_EF_USER_MEMBER 0x000008 -#define MUCC_EF_USER_MODERATOR 0x000010 -#define MUCC_EF_USER_BANNED 0x000020 -#define MUCC_EF_USER_GLOBALOWNER 0x000040 - -typedef struct { - int cbSize; - int iType; // Event type, one of MUCC_EVENT_* values - DWORD dwFlags; // Event flags - MUCC_EF_* - int iFont; // Text font index - int iFontSize; // Text font size - COLORREF color; // Text color - const char *pszModule; // Name of the module - const char *pszID; // Unique identifier of the chat room corresponding to the event, - const char *pszName; // Name of the chat room visible to the user - const char *pszUID; // User identifier, usage depends on type of event - const char *pszNick; // Nick, usage depends on type of event - const char *pszText; // Text, usage depends on type of event - DWORD dwData; // DWORD data e.g. status - BOOL bIsMe; // TRUE if the event is related to the user - time_t time; // Time of the event -} MUCCEVENT; - -#define MS_MUCC_EVENT "MUCC/Event" -#define ME_MUCC_EVENT "MUCC/OutgoingEvent" - -#endif - diff --git a/plugins/!Deprecated/ExternalAPI/m_script.h b/plugins/!Deprecated/ExternalAPI/m_script.h deleted file mode 100644 index 481270ef00..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_script.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - -Miranda Scripting Plugin for Miranda NG -Copyright 2004-2006 Piotr Pawluczuk (www.pawluczuk.info) - -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. - -*/ -/* -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 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 M_SCRIPT_H__ -#define M_SCRIPT_H__ 1 - -#define MBOT_GETCPARAM(cp) ((void*)((unsigned char*)cp + 24)) - -typedef enum {MBOT_NUMBER=0,MBOT_STRING=1,MBOT_VOID=2}MBOT_TYPE; - -#ifndef _LIBPHP_H__ -enum SVAR_TYPE{SV_NULL,SV_LONG=1,SV_WORD=2,SV_DOUBLE=3, - SV_STRING=4,SV_LPOINTER=5,SV_ARRAY=11}; -#endif - -typedef struct{ - int cbSize; //Set to sizeof(); - char* pszOutput; - char* pszResult; -}MBOT_RESULT; - -struct MBOT_VPARAM{ - void* data; - long length; /*length of data, used for strings, and binary strings*/ - long type; -}; - -/* -MBOT function prototypes; -*/ -typedef int (*MBOT_RegisterFunction)(const char* name,void* fptr,long lp, - MBOT_TYPE rval,MBOT_TYPE p1,MBOT_TYPE p2,MBOT_TYPE p3,MBOT_TYPE p4); -typedef int (*MBOT_UnregisterFunction)(const char* name); - -typedef void* (*MBOT_Malloc)(long amount); -typedef char* (*MBOT_Strdup)(const char* str); -typedef void (*MBOT_Free)(void* ptr); -typedef void (*MBOT_FreeResult)(MBOT_RESULT* ptr); - -typedef int (*MBOT_GetVar)(const char* name,void** value,SVAR_TYPE* cType);//returns TRUE if var exists; -typedef int (*MBOT_DelVar)(const char* name); -typedef int (*MBOT_SetVar)(const char* name,void* value,SVAR_TYPE cType); -typedef int (*MBOT_NewVar)(const char* name,void* value,SVAR_TYPE cType,char locked); - -/******************************************************************* - * PARAMETERS: - pszScript - source code of the script; ***DO NOT USE PHP TAGS*** - pResult - if set, you'll get the struct filled with the result; - NOTE! Remember to release the struct with "fp_freeresult"!; - pCParam - custom parameter, for your own use; use MBOT_GETCPARAM(cparam) to get the pointer; - nCPType - its type {MBOT_NUMBER,MBOT_STRING,MBOT_VOID} if str or num, php will be able to get it too - - *EXAMPLE: - fpExecuteFile("mbot/scripts/my.php","fct1",&mbr,"parameter", - MBOT_STRING,"suf","hello",100,25.6); - *******************************************************************/ -typedef int (*MBOT_ExecuteScript)(const char* pszScript,MBOT_RESULT* pResult, - void* pCParam,MBOT_TYPE nCPType); - -/******************************************************************* - * PARAMETERS: - pszPathname - relative or absolute path of the php file; - pszFcnName - function name can be NULL (whole file will be executed then); - pResult - if set, you'll get the struct filled with the result; - NOTE! Remember to release the struct with "fp_freeresult"!; - pCParam - custom parameter, for your own use; use MBOT_GETCPARAM(cparam) to get the pointer; - nCPType - its type {MBOT_NUMBER,MBOT_STRING,MBOT_VOID} if str or num, php will be able to get it too - pszPTypes - a string containing pformats s-string,u-long,l-long,d-long,q-double,f-float,x-hex long, v - MBOT_VPARAM* - ... - values; - - *EXAMPLE: - fpExecuteScript("mbot/scripts/my.php","fct1",&mbr,"parameter", - MBOT_STRING,"suf","hello",100,25.6); - *******************************************************************/ -typedef int (*MBOT_ExecuteFile)(const char* pszPathname,const char* pszFcnName,MBOT_RESULT* pResult, - void* pCParam,MBOT_TYPE nCPType,const char* pszPTypes,...); - -typedef struct{ - int cbSize; //sizeof(MBOT_LPHP); - const char* pszMBotVersion; - //execution - MBOT_ExecuteScript fpExecuteScript; - MBOT_ExecuteFile fpExecuteFile; - //functions - MBOT_RegisterFunction fpRegister; - MBOT_UnregisterFunction fpUnregister; - //variables - MBOT_NewVar fpNewVar; - MBOT_SetVar fpSetVar; - MBOT_GetVar fpGetVar; - MBOT_DelVar fpDelVar; - //memory - MBOT_Strdup fp_strdup; - MBOT_Malloc fp_malloc; - MBOT_Free fp_free; - MBOT_FreeResult fp_freeresult; -}MBOT_FUNCTIONS; - -/*MS_MBOT_GET_FUNCTIONS -lParam = wParam = 0; -returns a pointer to const MBOT_FUNCTIONS structure; -*/ -#define MS_MBOT_GET_FCN_TABLE "MBot/GetFcnTable" -#endif //M_SCRIPT_H__ \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_simpleaway.h b/plugins/!Deprecated/ExternalAPI/m_simpleaway.h deleted file mode 100644 index e70dcbf4ac..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_simpleaway.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - -Simple Status Message plugin for Miranda IM -Copyright (C) 2006-2010 Bartosz 'Dezeath' Bia³ek, (C) 2005 Harven - -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., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#ifndef M_SIMPLEAWAY_H__ -#define M_SIMPLEAWAY_H__ 1 - -// -// NOTE: These services are deprecated. Please do not use them anymore. -// Take a look at m_simplestatusmsg.h instead. -// - -// Represents status that a protocol(s) is/are currently in -#define ID_STATUS_CURRENT 40082 - -// Force a change of global status mode/message -// wParam = (int)new status (from statusmodes.h), 0 or ID_STATUS_CURRENT for current -// lParam = (TCHAR *)status message -#define MS_SA_SETSTATUSMODE "SimpleAway/SetStatusMode" -#define MS_AWAYSYS_SETSTATUSMODE MS_SA_SETSTATUSMODE // for compatibility with some plugins - -// Brings up the status message dialog -// wParam = 0 -// lParam = (LPARAM)(char *)protocol name, NULL if for all protocols -#define MS_SA_SHOWSTATUSMSGDIALOG "SimpleAway/ShowStatusMessageDialog" - -// Similar to the service above, for internal use only -#define MS_SA_TTCHANGESTATUSMSG "SimpleAway/TTChangeStatusMessage" - -// Force a change of status mode/message. The status message dialog will appear, -// depending on the configuration of the user -// wParam = (int)new status -// lParam = (LPARAM)(char *)protocol name, NULL if for all protocols -// Returns 1 when changed without showing the status message dialog -#define MS_SA_CHANGESTATUSMSG "SimpleAway/ChangeStatusMessage" - -// For checking if SimpleAway is running -// wParam = lParam = 0 -// Always returns 1 -#define MS_SA_ISSARUNNING "SimpleAway/IsSARunning" - -// Copy the away/na/etc message of a contact -// wParam = (WPARAM)(HANDLE)hContact -// lParam = 0 -// Returns 0 on success or nonzero on failure -// Returns immediately, without waiting for the message to retrieve -#define MS_SA_COPYAWAYMSG "SimpleAway/CopyAwayMsg" - -// Go to URL in away/na/etc message of a contact -// wParam = (WPARAM)(HANDLE)hContact -// lParam = 0 -#define MS_SA_GOTOURLMSG "SimpleAway/GoToURLMsg" - -// Returns the default status message for a status in specified protocol module -// or the current status message for the specified protocol if 0 or ID_STATUS_CURRENT is used -// wParam = (int)status, 0 or ID_STATUS_CURRENT for current -// lParam = (LPARAM)(char *)protocol name, NULL if for all protocols -// Returns status msg. Remember to free the return value -#ifndef MS_AWAYMSG_GETSTATUSMSG - #define MS_AWAYMSG_GETSTATUSMSG "SRAway/GetStatusMessage" -#endif -#ifndef MS_AWAYMSG_GETSTATUSMSGW - #define MS_AWAYMSG_GETSTATUSMSGW "SRAway/GetStatusMessageW" -#endif - -#ifndef MS_AWAYMSG_GETSTATUSMSGT - #ifdef _UNICODE - #define MS_AWAYMSG_GETSTATUSMSGT MS_AWAYMSG_GETSTATUSMSGW - #else - #define MS_AWAYMSG_GETSTATUSMSGT MS_AWAYMSG_GETSTATUSMSG - #endif -#endif - -// Force a change to specified global status mode/message -// (calls MS_SA_CHANGESTATUSMSG with proper parameters) -// wParam = lParam = 0 -#define MS_SA_SETOFFLINESTATUS "SimpleAway/SetOfflineStatus" -#define MS_SA_SETONLINESTATUS "SimpleAway/SetOnlineStatus" -#define MS_SA_SETAWAYSTATUS "SimpleAway/SetAwayStatus" -#define MS_SA_SETDNDSTATUS "SimpleAway/SetDNDStatus" -#define MS_SA_SETNASTATUS "SimpleAway/SetNAStatus" -#define MS_SA_SETOCCUPIEDSTATUS "SimpleAway/SetOccupiedStatus" -#define MS_SA_SETFREECHATSTATUS "SimpleAway/SetFreeChatStatus" -#define MS_SA_SETINVISIBLESTATUS "SimpleAway/SetInvisibleStatus" -#define MS_SA_SETONTHEPHONESTATUS "SimpleAway/SetOnThePhoneStatus" -#define MS_SA_SETOUTTOLUNCHSTATUS "SimpleAway/SetOutToLunchStatus" - -#endif // M_SIMPLEAWAY_H__ diff --git a/plugins/!Deprecated/ExternalAPI/m_smileyadd_deprecated.h b/plugins/!Deprecated/ExternalAPI/m_smileyadd_deprecated.h deleted file mode 100644 index ff9feb93ce..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_smileyadd_deprecated.h +++ /dev/null @@ -1,108 +0,0 @@ -/* -Miranda SmileyAdd Plugin -Copyright (C) 2005 - 2009 Boris Krasnovskiy -Copyright (C) 2003 - 2004 Rein-Peter de Boer - -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 . -*/ - - - - -//find smileys in unicode text -//wParam = (WPARAM) 0; not used -//lParam = (LPARAM) (SMADD_PARSEW*) &smgp; //pointer to SMADD_PARSEW -typedef struct -{ - int cbSize; //size of the structure - const char* Protocolname; //protocol to use... if you have defined a protocol, u can - //use your own protocol name. Smiley add wil automatically - //select the smileypack that is defined for your protocol. - //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN" - //if you prefer those icons. - //If not found or NULL: "Standard" will be used - wchar_t* str; //String to parse - HICON SmileyIcon; //RETURN VALUE: the Icon handle is responsibility of the reciever - //it must be destroyed with DestroyIcon when not needed. - unsigned startChar; //Starting smiley character - //Because of iterative nature of the API caller should set this - //parameter to correct value - unsigned size; //Number of characters in smiley (0 if not found) - //Because of iterative nature of the API caller should set this - //parameter to correct value -} SMADD_PARSEW; - -#define MS_SMILEYADD_PARSEW "SmileyAdd/ParseW" - - -//find smiley in text, API could be called iterativly, on each iteration the remainder -//of the string after last smiley processed -//wParam = (WPARAM) 0; not used -//lParam = (LPARAM) (SMADD_PARSE*) &smgp; //pointer to SMADD_PARSE -//return: TRUE if API succeeded (all parameters were valid) , FALSE if not. -typedef struct -{ - int cbSize; //size of the structure - const char* Protocolname; //protocol to use... if you have defined a protocol, u can - //use your own protocol name. Smiley add wil automatically - //select the smileypack that is defined for your protocol. - //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN" - //if you prefer those icons. - //If not found or NULL: "Standard" will be used - char* str; //String to parse - HICON SmileyIcon; //RETURN VALUE: the Icon handle is responsibility of the reciever - //it must be destroyed with DestroyIcon when not needed. - unsigned startChar; //Starting smiley character - //Because of iterative nature of the API caller should set this - //parameter to correct value - unsigned size; //Number of characters in smiley (0 if not found) - //Because of iterative nature of the API caller should set this - //parameter to correct value -} SMADD_PARSE; - -#define MS_SMILEYADD_PARSE "SmileyAdd/Parse" - - -//get button smiley icon -//wParam = (WPARAM) 0; not used -//lParam = (LPARAM) (SMADD_INFO*) &smgi; //pointer to SMADD_INFO -//return: TRUE if API succeeded (all parameters were valid) , FALSE if not. -#define MS_SMILEYADD_GETINFO "SmileyAdd/GetInfo" - - -//find smiley, this API have been supreceeded with MS_SMILEYADD_PARSE[W] -//wParam = (WPARAM) 0; not used -//lParam = (LPARAM) (SMADD_GETICON*) &smgi; //pointer to SMADD_GETICON -//return: TRUE if SmileySequence starts with a smiley, FALSE if not -typedef struct -{ - int cbSize; //size of the structure - char* Protocolname; // " " - char* SmileySequence; //character string containing the smiley - HICON SmileyIcon; //RETURN VALUE: this is filled with the icon handle... - //do not destroy! - int Smileylength; //length of the smiley that is found. -} SMADD_GETICON; - -#define MS_SMILEYADD_GETSMILEYICON "SmileyAdd/GetSmileyIcon" - -#define SMADD_SHOWSEL_SIZE_V1 32 -#define SMADD_SHOWSEL_SIZE_V2 36 - -#define SMADD_RICHEDIT_SIZE_V1 16 -#define SMADD_RICHEDIT_SIZE_V2 24 - -#define SMADD_INFO_SIZE_V1 20 - -#define SMADD_BATCHPARSE_SIZE_V1 24 diff --git a/plugins/!Deprecated/ExternalAPI/m_snappingwindows.h b/plugins/!Deprecated/ExternalAPI/m_snappingwindows.h deleted file mode 100644 index fcfd679913..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_snappingwindows.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SNAPPING_WINDOWS_H -#define SNAPPING_WINDOWS_H - -struct SnapWindowProc_t -{ - HWND hWnd; - // - SIZE m_szMoveOffset; - WPARAM wParam; - LPARAM lParam; - // - int Reserved1; - int Reserved2; - int Reserved3; -}; - -#define CallSnappingWindowProc(hwnd,nMessage,wParam,lParam) {static struct SnapWindowProc_t SnapInfo; \ - if ((nMessage == WM_MOVING) || (nMessage == WM_NCLBUTTONDOWN) || (nMessage == WM_SYSCOMMAND) || (nMessage == WM_SIZING)){ \ - SnapInfo.hWnd = hwnd; \ - SnapInfo.wParam = wParam; \ - SnapInfo.lParam = lParam; \ - CallService("Utils/SnapWindowProc",(WPARAM)&SnapInfo,nMessage); \ - if (nMessage == WM_SIZING) return 1;}} - -#endif //SNAPPING_WINDOWS_H \ No newline at end of file diff --git a/plugins/!Deprecated/ExternalAPI/m_voice.h b/plugins/!Deprecated/ExternalAPI/m_voice.h deleted file mode 100644 index 5adf159f05..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_voice.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -Copyright (C) 2006 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -*/ - - -#ifndef __M_VOICE_H__ -# define __M_VOICE_H__ - - -#define EVENTTYPE_VOICE_CALL 8739 - - -#define PROTOTYPE_VOICE (PROTOTYPE_ENCRYPTION-9) - - -#define VOICE_UNICODE 0x80000000 - -#ifdef UNICODE -# define VOICE_TCHAR VOICE_UNICODE -#else -# define VOICE_TCHAR 0 -#endif - -#define VOICE_STATE_TALKING 0 -#define VOICE_STATE_RINGING 1 -#define VOICE_STATE_CALLING 2 -#define VOICE_STATE_ON_HOLD 3 -#define VOICE_STATE_ENDED 4 - -typedef struct { - int cbSize; // Struct size - const char *szModule; // The name of the protocol module (used only in notifications) - char *id; // Protocol especific ID for this call - int flags; // Can be VOICE_CALL_CONTACT or VOICE_CALL_STRING (VOICE_UNICODE to say the string is unicode) - union { // Who to call - MCONTACT hContact; - TCHAR *ptszContact; - char *pszContact; - WCHAR *pwszContact; - }; - int state; // VOICE_STATE_* - -} VOICE_CALL; - - -/* -Notifies that a voice call changed state - -wParam: const VOICE_CALL * -lParam: ignored -return: 0 on success -*/ -#define PE_VOICE_CALL_STATE "/Voice/State" - - -#define VOICE_SUPPORTED 1 // Set if proto support voice calls. Probabilly will be 1 ;) -#define VOICE_CALL_CONTACT 2 // Set if a call can be made to a hContact -#define VOICE_CALL_CONTACT_NEED_TEST 4 // Set if the contact need to be tested with PS_VOICE_CALL_CONTACT_VALID (needs VOICE_CALL_CONTACT set to work) -#define VOICE_CALL_STRING 8 // Set if a call can be made to some string (PS_VOICE_CALL_STRING_VALID is used to validate the string) -#define VOICE_CAN_SET_DEVICE 16 // Set if the devices to mic in and sound out can be set (or the protocol will handle it internally) -#define VOICE_CAN_HOLD 32 // Set if a call can be put on hold -/* -Get protocol voice support flags - -wParam: ignored -lParam: ignored -return: 0 on success -*/ -#define PS_VOICE_GETINFO "/Voice/GetInfo" - -/* -Request to the protocol a voice call to hContact. - -wParam: (HANDLE) hContact -lParam: ignored -return: 0 on success -*/ -#define PS_VOICE_CALL "/Voice/Call" - -/* -Service called to make the protocol answer a call. -It is an async call. If the call was answered, the PE_VOICE_STARTEDCALL -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -*/ -#define PS_VOICE_ANSWERCALL "/Voice/AnswerCall" - -/* -Service called to make the protocol answer a call. This can be called if the -call is ringing or has started. If called any other time it should be ignored. -It is an async call. If the call was droped, the PE_VOICE_ENDEDCALL -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -*/ -#define PS_VOICE_DROPCALL "/Voice/DropCall" - -/* -Service called to make the protocol hold a call. This means that the call should not -be droped, but it should be muted and put in a hold, to allow other call to be answered. -If the protocol can't hold a cal, it should be droped. - -This can be called if the call has started. If called any other time it should be ignored. -It is an async call. If the call was droped, the PE_VOICE_HOLDEDCALL -notification will be fired. - -wParam: (const char *) id -lParam: ignored -return: 0 on success -*/ -#define PS_VOICE_HOLDCALL "/Voice/HoldCall" - -/* -Used if protocol support VOICE_CALL_STRING. The call string is passed as -wParam and the proto should validate it. - -wParam: (const TCHAR *) call string -lParam: ignored -return: 0 if wrong, 1 if correct -*/ -#define PS_VOICE_CALL_STRING_VALID "/Voice/CallStringValid" - -/* -Used if protocol support VOICE_CALL_CONTACT and VOICE_CALL_CONTACT_NEED_TEST. -The hContact is passed as wParam and the proto should tell if this contact can be -called. - -wParam: (HANDLE) hContact -lParam: (BOOL) TRUE if it is a test for 'can call now?', FALSE if is a test for 'will be possible to call someday?' -return: 0 if can't be called, 1 if can -*/ -#define PS_VOICE_CALL_CONTACT_VALID "/Voice/CallContactValid" - - - - - -#endif // __M_VOICE_H__ diff --git a/plugins/!Deprecated/ExternalAPI/m_voiceservice.h b/plugins/!Deprecated/ExternalAPI/m_voiceservice.h deleted file mode 100644 index 98c3580aea..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_voiceservice.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -Copyright (C) 2007 Ricardo Pescuma Domenecci - -This is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this file; see the file license.txt. If -not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -*/ - - -#ifndef __M_VOICESERVICE_H__ -# define __M_VOICESERVICE_H__ - -#include "m_voice.h" - - -#define MIID_VOICESERVICE { 0x7d64437, 0xef2e, 0x4f60, { 0xbb, 0x2d, 0x3c, 0x51, 0x8f, 0xe2, 0x4d, 0x63 } } - - -/* -This services are a mirror of the services/notifications in m_voice.h, -with the difference that that ones are to be used by protocols, and this ones -are to be used by plugins that can make calls to contacts in multiple protocols. -*/ - - -/* -Notifies that a voice call changed state - -wParam: const VOICE_CALL * -lParam: ignored -return: 0 on success -*/ -#define MS_VOICESERVICE_STATE "VoiceService/State" - - - -struct VOICE_MODULE -{ - int cbSize; // sizeof(VOICE_MODULE) - char *name; // The internal name of the plugin. All PS_* serivces (except PS_VOICE_GETINFO) - // defined in m_voide.h need to be created based in this name. For example, - // PS_VOICE_CALL (/Voice/Call) need to be created as /Voice/Call - int flags; // VOICE_* from m_voice.h -}; -/* -Register a new plugin that can make/receive voice calls. - -wParam: const VOICE_MODULE * -lParam: ignored -return: 0 on success -*/ -#define MS_VOICESERVICE_REGISTER "VoiceService/Register" - - -/* -Request a voice call to hContact. - -wParam: (HANDLE) hContact -lParam: ignored -return: the number of option calls for a contact. If > 0, it can be called -*/ -#define MS_VOICESERVICE_CAN_CALL "VoiceService/CanCall" - -/* -Request a voice call to hContact. - -wParam: (HANDLE) hContact -lParam: (char *) Protocol or NULL to use any proto avaiable -return: 0 on success -*/ -#define MS_VOICESERVICE_CALL "VoiceService/Call" - - - -#endif // __M_VOICESERVICE_H__ diff --git a/plugins/!Deprecated/ExternalAPI/m_w7ui.h b/plugins/!Deprecated/ExternalAPI/m_w7ui.h deleted file mode 100644 index 6d8ee28b92..0000000000 --- a/plugins/!Deprecated/ExternalAPI/m_w7ui.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef m_w7ui_h__ -#define m_w7ui_h__ - -enum -{ - MIS_ICOLIB, - MIS_GENERAL, - MIS_PROTOCOL, -}; - -struct MIRANDAJUMPLISTITEM -{ - int iconSource; - char *iconName; - int iconIdx; - WCHAR *szTitle; - WCHAR *szPrefix; - WCHAR *szArgument; -}; - -// Force jumplist rebuild -#define MS_JUMPLIST_REBUILD "w7/JumpList/Rebuild" - -// --- -#define ME_JUMPLIST_BUILDCATEGORIES "w7/JumpList/BuildCategories" - -// lParam = (WCHAR *)category name -#define ME_JUMPLIST_BUILDITEMS "w7/JumpList/BuildItems" - -// lParam = (WCHAR *)category name -#define MS_JUMPLIST_ADDCATEGORY "w7/JumpList/AddCategory" - -// lParam = (MIRANDAJUMPLISTITEM *)item -#define MS_JUMPLIST_ADDITEM "w7/JumpList/AddItem" - -// wParam = prefix -// lParam = argument -#define ME_JUMPLIST_PROCESS "w7/JumpList/Process" - -static void MJumpList_AddCategory(WCHAR *name) -{ - CallService(MS_JUMPLIST_ADDCATEGORY, 0, (LPARAM)name); -} - -static void MJumpList_AddItem(char *mir_icon, WCHAR *title, WCHAR *prefix, WCHAR *argument) -{ - MIRANDAJUMPLISTITEM item = { MIS_ICOLIB, mir_icon, 0, title, prefix, argument }; - CallService(MS_JUMPLIST_ADDITEM, 0, (LPARAM)&item); -} - -static void MJumpList_AddItem(int skinicon, WCHAR *title, WCHAR *prefix, WCHAR *argument) -{ - MIRANDAJUMPLISTITEM item = { MIS_GENERAL, 0, skinicon, title, prefix, argument }; - CallService(MS_JUMPLIST_ADDITEM, 0, (LPARAM)&item); -} - -static void MJumpList_AddItem(char *proto, int skinicon, WCHAR *title, WCHAR *prefix, WCHAR *argument) -{ - MIRANDAJUMPLISTITEM item = { MIS_PROTOCOL, proto, skinicon, title, prefix, argument }; - CallService(MS_JUMPLIST_ADDITEM, 0, (LPARAM)&item); -} - -#endif // m_w7ui_h__ diff --git a/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj deleted file mode 100644 index 2e623e339c..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj +++ /dev/null @@ -1,202 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Fingerprint - {AF7D71D4-19B7-42B8-91DD-701F155AC4AE} - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - true - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;FINGERPRINT_EXPORTS;%(PreprocessorDefinitions) - true - Use - Level3 - global.h - true - - - true - true - false - $(IntDir)$(TargetName).lib - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;FINGERPRINT_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Use - Level3 - EditAndContinue - global.h - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - true - Use - Level3 - NDEBUG;_WINDOWS;_USRDLL;FINGERPRINT_EXPORTS;%(PreprocessorDefinitions) - global.h - true - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - true - true - $(IntDir)$(TargetName).lib - false - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;FINGERPRINT_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Use - Level3 - global.h - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - - - - - - - - - Create - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj.filters b/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj.filters deleted file mode 100644 index 99f40472b4..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/fingerprint_mod_vs2010.vcxproj.filters +++ /dev/null @@ -1,62 +0,0 @@ - - - - - {624fd4ab-b60d-44c3-8933-ada206cccec0} - - - {d5835025-72d0-4dd0-a8af-fc2183707beb} - - - {1df62bdc-3545-41d9-949c-4d694799b59f} - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_AIM.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_AIM.vcxproj deleted file mode 100644 index d9492edd6b..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_AIM.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_AIM - {2D1D3D7C-F86B-4189-8D57-96575D441182} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Gadu.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Gadu.vcxproj deleted file mode 100644 index 0ce9f55b3d..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Gadu.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Gadu - {48DDA047-898E-4C4C-A567-C76FE007BBB3} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_General.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_General.vcxproj deleted file mode 100644 index ea716fbc37..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_General.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_General - {7F854B13-37EA-4956-BAEE-9715AE9F4579} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_ICQ.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_ICQ.vcxproj deleted file mode 100644 index d9262c8f29..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_ICQ.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_ICQ - {14CB2AEA-EFE8-464E-9446-C08DF9619EBC} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_IRC.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_IRC.vcxproj deleted file mode 100644 index b97dc15339..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_IRC.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_IRC - {3BEFA882-9323-4CFF-83D2-368B7D7C2488} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Jabber.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Jabber.vcxproj deleted file mode 100644 index 5e13daff31..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Jabber.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - - - - - ClientIcons_Jabber - {23CF8697-38C5-4CEB-87BD-544EF8589619} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MRA.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MRA.vcxproj deleted file mode 100644 index 35cadb94d4..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MRA.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_MRA - {8DE3A1E9-BCD9-429D-A81D-35B6F86AA0AA} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MSN.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MSN.vcxproj deleted file mode 100644 index e33831c85b..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_MSN.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_MSN - {DA88431F-AAD2-4A15-BBA0-8435A3DE8BE7} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Multiprotocols.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Multiprotocols.vcxproj deleted file mode 100644 index 788f37c86b..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Multiprotocols.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Multiprotocols - {196C0237-7C8A-4887-BD0F-52E6BBE1D61B} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Packs.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Packs.vcxproj deleted file mode 100644 index f5c6556e0c..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Packs.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Packs - {99331043-10E4-4171-940E-D43E51B0401B} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_QQ.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_QQ.vcxproj deleted file mode 100644 index f3e63d8220..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_QQ.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_QQ - {DD92D185-5AE5-4E39-90C0-D9804E85768F} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_RSS.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_RSS.vcxproj deleted file mode 100644 index e6b6720e47..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_RSS.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_RSS - {EE41CC3A-FBC3-434E-B8E9-810D0287BC0D} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Skype.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Skype.vcxproj deleted file mode 100644 index 2d44688e9d..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Skype.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Skype - {1957D0AE-B386-4BF0-A8B9-42229922BA91} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Tlen.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Tlen.vcxproj deleted file mode 100644 index 4fa4977da1..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Tlen.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Tlen - {FC2C1A39-F5E3-4791-B425-E74E5F296C4B} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_VoIP.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_VoIP.vcxproj deleted file mode 100644 index 0dcf19136f..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_VoIP.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_VoIP - {7D81F099-33CC-4FF3-A465-3943CB3F70C6} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Weather.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Weather.vcxproj deleted file mode 100644 index 414b248d59..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Weather.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Weather - {D88692A8-F0A3-4B13-A35B-89D2DDA6A3FB} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Yahoo.vcxproj b/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Yahoo.vcxproj deleted file mode 100644 index c4f2e8e93c..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/iconpacks/ClientIcons_Yahoo.vcxproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - ClientIcons_Yahoo - {CF3A5226-1264-4735-83AE-A65C349FC61E} - - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - DynamicLibrary - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)64\Icons\Fp_ClientIcons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - true - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons.rc deleted file mode 100644 index 8276a03576..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons.rc +++ /dev/null @@ -1,73 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//########################################### Other ############################################################ -//############################################################################################################## - IDI_NOTFOUND ICON "icons\\Other\\notfound.ico" - IDI_UNDETECTED ICON "icons\\Other\\undetected.ico" - IDI_UNKNOWN ICON "icons\\Other\\unknown.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM.ico deleted file mode 100644 index 2d7ba76b21..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_4.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_4.x.ico deleted file mode 100644 index f82188d57d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_4.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_5.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_5.x.ico deleted file mode 100644 index 17c6907915..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_5.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mac.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mac.ico deleted file mode 100644 index 7c7c073c56..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mac.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mobile.ico deleted file mode 100644 index a37a19cbef..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Mobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Triton.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Triton.ico deleted file mode 100644 index 8df93cc206..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/AIM_Triton.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/TerraIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/TerraIM.ico deleted file mode 100644 index a1f32418fc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/TerraIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/miniaim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/miniaim.ico deleted file mode 100644 index 7daf67f49f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/miniaim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/naim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/naim.ico deleted file mode 100644 index 2098e69f67..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/AIM/naim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_6.ico deleted file mode 100644 index 9ed0e8cb7a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_7.ico deleted file mode 100644 index 59e50ec1a2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Gadu-Gadu/Gadu_Gadu_7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/&RQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/&RQ.ico deleted file mode 100644 index a420b5e8ed..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/&RQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/1&1.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/1&1.ico deleted file mode 100644 index 994b8deb77..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/1&1.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Anastasia.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Anastasia.ico deleted file mode 100644 index 1484d9534e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Anastasia.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/D[i]Chat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/D[i]Chat.ico deleted file mode 100644 index 316feaf4c2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/D[i]Chat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Delphi.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Delphi.ico deleted file mode 100644 index a00f558c1e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Delphi.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GLICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GLICQ.ico deleted file mode 100644 index 378d8de089..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GLICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GnomeICU.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GnomeICU.ico deleted file mode 100644 index ef14568e9c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/GnomeICU.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IC@.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IC@.ico deleted file mode 100644 index ff43ffdb01..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IC@.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/ICQ_2.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/ICQ_2.x.ico deleted file mode 100644 index 7d82df796a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/ICQ_2.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IMadering.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IMadering.ico deleted file mode 100644 index 501ef90545..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/IMadering.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/JICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/JICQ.ico deleted file mode 100644 index 46c387fe98..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/JICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/KM_Aska.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/KM_Aska.ico deleted file mode 100644 index f05acbba54..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/KM_Aska.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/LibICQ2000.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/LibICQ2000.ico deleted file mode 100644 index e3d26d8511..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/LibICQ2000.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Licq.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Licq.ico deleted file mode 100644 index 9090db1cca..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Licq.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/MIP.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/MIP.ico deleted file mode 100644 index c63e4ac7ea..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/MIP.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/NanoICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/NanoICQ.ico deleted file mode 100644 index 85524d7f85..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/NanoICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/QIP.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/QIP.ico deleted file mode 100644 index 251d6d2d0a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/QIP.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/R&Q.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/R&Q.ico deleted file mode 100644 index aab46fa0c9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/R&Q.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/SmartICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/SmartICQ.ico deleted file mode 100644 index 14fb18c8bc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/SmartICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Spambot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Spambot.ico deleted file mode 100644 index 824fd17156..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Spambot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/StrICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/StrICQ.ico deleted file mode 100644 index 662bee3232..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/StrICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/WebICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/WebICQ.ico deleted file mode 100644 index 157a6899a4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/WebICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/YSM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/YSM.ico deleted file mode 100644 index 00e4207a67..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/YSM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Yeemp.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Yeemp.ico deleted file mode 100644 index a5f68d5b44..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/Yeemp.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/alICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/alICQ.ico deleted file mode 100644 index b33abe2ad3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/alICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/biohazard.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/biohazard.ico deleted file mode 100644 index b0427a1498..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/biohazard.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/corepager.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/corepager.ico deleted file mode 100644 index ab90b2e25c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/corepager.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/kxICQ2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/kxICQ2.ico deleted file mode 100644 index 9254f77a2b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/kxICQ2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/locid.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/locid.ico deleted file mode 100644 index a51040b703..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/locid.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/mICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/mICQ.ico deleted file mode 100644 index 53b337dfef..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/mICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/nICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/nICQ.ico deleted file mode 100644 index 4f2907e914..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/nICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ for PocketPC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ for PocketPC.ico deleted file mode 100644 index fac72c3a84..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ for PocketPC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ.ico deleted file mode 100644 index f7243308f6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_6.ico deleted file mode 100644 index 952a5675e9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_ABV.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_ABV.ico deleted file mode 100644 index d345fedc0f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_ABV.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Bigmir.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Bigmir.ico deleted file mode 100644 index 153481e6af..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Bigmir.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Compad.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Compad.ico deleted file mode 100644 index 7d517906ea..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Compad.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite4.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite4.ico deleted file mode 100644 index a075efb3a0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite4.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite7.ico deleted file mode 100644 index fc37f0d34f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Lite7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Netvigator.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Netvigator.ico deleted file mode 100644 index cefaf9ad2f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Netvigator.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Pro7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Pro7.ico deleted file mode 100644 index c622909048..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Pro7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Rambler.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Rambler.ico deleted file mode 100644 index 8eb7a6d28a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_Rambler.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_iMac.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_iMac.ico deleted file mode 100644 index fbaa66ce30..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/ICQ_iMac.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.1.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.1.ico deleted file mode 100644 index daed9c2c54..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.1.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.ico deleted file mode 100644 index 002ec000e1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 6.ico deleted file mode 100644 index 98b04863fe..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 7.ico deleted file mode 100644 index 389d0b5015..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq 7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2000.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2000.ico deleted file mode 100644 index f50be52bea..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2000.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2001.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2001.ico deleted file mode 100644 index 868ee4db69..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2001.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2002.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2002.ico deleted file mode 100644 index e2cc9b0ed5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2002.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2003.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2003.ico deleted file mode 100644 index b22c02784d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/Icq2003.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/IcqLite 4.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/IcqLite 4.ico deleted file mode 100644 index d56afea91c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/official/IcqLite 4.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/slick.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/slick.ico deleted file mode 100644 index 3f0046f889..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/slick.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/smaper.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/smaper.ico deleted file mode 100644 index 493bdf8f0b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/smaper.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/stICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/stICQ.ico deleted file mode 100644 index 3ff3b16f91..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/stICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vICQ.ico deleted file mode 100644 index 9a77d80faa..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vmICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vmICQ.ico deleted file mode 100644 index 0047d93b78..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/ICQ/vmICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/AmIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/AmIRC.ico deleted file mode 100644 index 074acf8732..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/AmIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Babbel.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Babbel.ico deleted file mode 100644 index cd730a7e54..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Babbel.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/BersIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/BersIRC.ico deleted file mode 100644 index 3190518a95..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/BersIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ChatZilla.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ChatZilla.ico deleted file mode 100644 index 70efe0eac2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ChatZilla.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Conversation.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Conversation.ico deleted file mode 100644 index 028e927bd0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Conversation.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop.ico deleted file mode 100644 index e02d41c6c0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop_RacBot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop_RacBot.ico deleted file mode 100644 index c2f5222c19..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Eggdrop_RacBot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/FChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/FChat.ico deleted file mode 100644 index 9de2c8b39f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/FChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GDP Web Chat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GDP Web Chat.ico deleted file mode 100644 index 62730f82fd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GDP Web Chat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GoPowerTools.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GoPowerTools.ico deleted file mode 100644 index 575ff82d03..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/GoPowerTools.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/HydraIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/HydraIRC.ico deleted file mode 100644 index 009ee95638..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/HydraIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRCXpro.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRCXpro.ico deleted file mode 100644 index 2c88e8d55c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRCXpro.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRC_unknown.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRC_unknown.ico deleted file mode 100644 index 54a3b18f29..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IRC_unknown.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 5.ico deleted file mode 100644 index 9b402b9f57..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 7.ico deleted file mode 100644 index 8d18feaab7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat 7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat.ico deleted file mode 100644 index 76e729d2f7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/IceChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/KVIrc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/KVIrc.ico deleted file mode 100644 index d0c199b463..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/KVIrc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Klient.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Klient.ico deleted file mode 100644 index c686b77c7e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Klient.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Konversation.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Konversation.ico deleted file mode 100644 index 4dfab48e8a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Konversation.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NeoRa Trion.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NeoRa Trion.ico deleted file mode 100644 index 41e3799a42..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NeoRa Trion.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Nettalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Nettalk.ico deleted file mode 100644 index 9fdf9a5674..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Nettalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NoNameScript.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NoNameScript.ico deleted file mode 100644 index da3fe7d929..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/NoNameScript.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Opera.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Opera.ico deleted file mode 100644 index 2d0390104f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Opera.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/PJIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/PJIRC.ico deleted file mode 100644 index d279e6e3db..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/PJIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Pirch.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Pirch.ico deleted file mode 100644 index 220d78069f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Pirch.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ProChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ProChat.ico deleted file mode 100644 index c627e92b80..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ProChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SmartIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SmartIRC.ico deleted file mode 100644 index 17dc01c2f7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SmartIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Snak.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Snak.ico deleted file mode 100644 index f6f508b145..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Snak.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SysReset.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SysReset.ico deleted file mode 100644 index f6cde31e8d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/SysReset.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VircaIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VircaIRC.ico deleted file mode 100644 index 90c28f6472..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VircaIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisionIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisionIRC.ico deleted file mode 100644 index 9f55866ef4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisionIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisualIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisualIRC.ico deleted file mode 100644 index 73dd1a1a6b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VisualIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VortecIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VortecIRC.ico deleted file mode 100644 index 49928fcaa7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/VortecIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WLIrc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WLIrc.ico deleted file mode 100644 index 474d8780df..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WLIrc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WeeChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WeeChat.ico deleted file mode 100644 index 3b6b38b632..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/WeeChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/X-Chat Aqua.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/X-Chat Aqua.ico deleted file mode 100644 index 258a6578ba..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/X-Chat Aqua.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xirc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xirc.ico deleted file mode 100644 index f9ce1a0d2f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xirc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xircon.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xircon.ico deleted file mode 100644 index 608b8cba74..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/Xircon.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ZipTorrent.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ZipTorrent.ico deleted file mode 100644 index 93487f6939..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ZipTorrent.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/aMule.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/aMule.ico deleted file mode 100644 index 13d28001e0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/aMule.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/cbirc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/cbirc.ico deleted file mode 100644 index 8055b6336e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/cbirc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/dIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/dIRC.ico deleted file mode 100644 index 2c17d91dac..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/dIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule.ico deleted file mode 100644 index cac21886ff..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_MorphXT.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_MorphXT.ico deleted file mode 100644 index cfa35f193c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_MorphXT.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Neo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Neo.ico deleted file mode 100644 index c52b7a0cb1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Neo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Xtreme.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Xtreme.ico deleted file mode 100644 index 0e65fc0c51..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_Xtreme.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_plus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_plus.ico deleted file mode 100644 index 72dbdcb633..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/eMule_plus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ircle.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ircle.ico deleted file mode 100644 index 456a7feec4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ircle.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/irssi.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/irssi.ico deleted file mode 100644 index b8a7abea69..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/irssi.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jircii.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jircii.ico deleted file mode 100644 index 5a38f9ecb1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jircii.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jmIrc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jmIrc.ico deleted file mode 100644 index e576c402f3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/jmIrc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ksirc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ksirc.ico deleted file mode 100644 index 70d057271b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/ksirc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mIRC.ico deleted file mode 100644 index cd4020a8ca..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mp3script.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mp3script.ico deleted file mode 100644 index 964f2a2e61..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/mp3script.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/pIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/pIRC.ico deleted file mode 100644 index 1ef17e436c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/pIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/piorun.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/piorun.ico deleted file mode 100644 index f1037d52a3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/piorun.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/psyBNC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/psyBNC.ico deleted file mode 100644 index b04803c123..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/psyBNC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/savIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/savIRC.ico deleted file mode 100644 index c79fe7006c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/savIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/wmIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/wmIRC.ico deleted file mode 100644 index 21f5216c95..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/wmIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xBitch.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xBitch.ico deleted file mode 100644 index 8f2ce34a7a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xBitch.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xChat.ico deleted file mode 100644 index 792f37b5ca..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/xChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/zsIRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/zsIRC.ico deleted file mode 100644 index 26875552f3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/IRC/zsIRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Akeni.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Akeni.ico deleted file mode 100644 index 5dd2c6c926..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Akeni.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Android.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Android.ico deleted file mode 100644 index 1a6d688560..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Android.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Anothr Rss Bot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Anothr Rss Bot.ico deleted file mode 100644 index 27d44e1a89..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Anothr Rss Bot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Aqq.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Aqq.ico deleted file mode 100644 index 40b26eed58..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Aqq.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BellSouth.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BellSouth.ico deleted file mode 100644 index 099fe07ecd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BellSouth.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BitWise.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BitWise.ico deleted file mode 100644 index 2fba693e72..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BitWise.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BlackBerry.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BlackBerry.ico deleted file mode 100644 index d40cdb5036..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BlackBerry.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Bowline.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Bowline.ico deleted file mode 100644 index 209eabf70c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Bowline.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BuddySpace.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BuddySpace.ico deleted file mode 100644 index ad3345ef24..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/BuddySpace.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chatopus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chatopus.ico deleted file mode 100644 index c4ee122394..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chatopus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chikka.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chikka.ico deleted file mode 100644 index 730154466c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Chikka.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/ChitChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/ChitChat.ico deleted file mode 100644 index 1b2312ee49..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/ChitChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Coccinella.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Coccinella.ico deleted file mode 100644 index 07f5a2ca87..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Coccinella.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colibry.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colibry.ico deleted file mode 100644 index 9f72281c31..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colibry.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colloquy.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colloquy.ico deleted file mode 100644 index c9634272dd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Colloquy.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Desyr.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Desyr.ico deleted file mode 100644 index 2427e48c6b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Desyr.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Emacs.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Emacs.ico deleted file mode 100644 index 71b7124194..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Emacs.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Exodus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Exodus.ico deleted file mode 100644 index c3e81b8e17..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Exodus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Eyeball Chat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Eyeball Chat.ico deleted file mode 100644 index cd359a0870..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Eyeball Chat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Facebook.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Facebook.ico deleted file mode 100644 index eb23aac442..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Facebook.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Fire.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Fire.ico deleted file mode 100644 index 40ddc7b1ab..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Fire.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GCN.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GCN.ico deleted file mode 100644 index 28cc5f698c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GCN.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GNU_Gadu.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GNU_Gadu.ico deleted file mode 100644 index 40b9b219a8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GNU_Gadu.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GOIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GOIM.ico deleted file mode 100644 index 0840fa46c9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GOIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk Gadget.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk Gadget.ico deleted file mode 100644 index f682046446..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk Gadget.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk.ico deleted file mode 100644 index 4126f32885..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GTalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gabber.ico deleted file mode 100644 index 729bc9b0e0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gajim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gajim.ico deleted file mode 100644 index 91ad77a053..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gajim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail.ico deleted file mode 100644 index 09dcf65ce3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail_Conference_Bot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail_Conference_Bot.ico deleted file mode 100644 index dbcc7d54fa..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gmail_Conference_Bot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gnome.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gnome.ico deleted file mode 100644 index ae58e8673c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gnome.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GoTalkMobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GoTalkMobile.ico deleted file mode 100644 index d86299c12b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GoTalkMobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gossip.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gossip.ico deleted file mode 100644 index c0cdd46f0b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gossip.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GreenThumb.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GreenThumb.ico deleted file mode 100644 index 4b298e3c31..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/GreenThumb.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gush.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gush.ico deleted file mode 100644 index 02c9bdbb19..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Gush.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/IMCom.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/IMCom.ico deleted file mode 100644 index a0e3dc414e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/IMCom.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Imified.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Imified.ico deleted file mode 100644 index b958bf0ee5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Imified.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Importal.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Importal.ico deleted file mode 100644 index 49fd324f9d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Importal.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Instan-t.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Instan-t.ico deleted file mode 100644 index 6e4c2744d4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Instan-t.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Interaction.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Interaction.ico deleted file mode 100644 index b651eb4435..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Interaction.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JAJC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JAJC.ico deleted file mode 100644 index 13096e9849..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JAJC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JBother.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JBother.ico deleted file mode 100644 index ac8656acf1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JBother.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JClaim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JClaim.ico deleted file mode 100644 index bd19a824be..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JClaim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JMC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JMC.ico deleted file mode 100644 index 5161f07d5f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JMC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWChat.ico deleted file mode 100644 index 96b6bd984b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWGC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWGC.ico deleted file mode 100644 index 032bdd9a75..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JWGC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberApplet.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberApplet.ico deleted file mode 100644 index 704b035510..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberApplet.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberFoX.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberFoX.ico deleted file mode 100644 index c87f28b49c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberFoX.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberMessenger.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberMessenger.ico deleted file mode 100644 index 05ae27db71..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberMessenger.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberNaut.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberNaut.ico deleted file mode 100644 index 30131ccf1f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberNaut.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberWocky.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberWocky.ico deleted file mode 100644 index 72e6bf47aa..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberWocky.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberZilla.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberZilla.ico deleted file mode 100644 index 910f06315c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/JabberZilla.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabber_BeOS.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabber_BeOS.ico deleted file mode 100644 index 80ec6eaf75..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabber_BeOS.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabbin.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabbin.ico deleted file mode 100644 index 8c5ef1376f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabbin.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabiru.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabiru.ico deleted file mode 100644 index f3ba55b573..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jabiru.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jeti.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jeti.ico deleted file mode 100644 index c935ef7d77..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Jeti.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Konnekt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Konnekt.ico deleted file mode 100644 index 48af506663..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Konnekt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LLuna.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LLuna.ico deleted file mode 100644 index a3e4de6785..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LLuna.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Laffer.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Laffer.ico deleted file mode 100644 index f782a0ffcb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Laffer.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Leaf Messenger.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Leaf Messenger.ico deleted file mode 100644 index f60ce37531..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Leaf Messenger.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LeechCraft.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LeechCraft.ico deleted file mode 100644 index ef54b8d264..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LeechCraft.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LinQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LinQ.ico deleted file mode 100644 index cbebfe537e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/LinQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/M8Jabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/M8Jabber.ico deleted file mode 100644 index b68951d5dd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/M8Jabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MCabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MCabber.ico deleted file mode 100644 index 2041ace2ce..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MCabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MGTalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MGTalk.ico deleted file mode 100644 index 9bd4df764d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MGTalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mango.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mango.ico deleted file mode 100644 index 807ceabc60..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mango.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mercury_Messenger.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mercury_Messenger.ico deleted file mode 100644 index 6fe30d0fcd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Mercury_Messenger.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MozillaChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MozillaChat.ico deleted file mode 100644 index afd5d692f9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/MozillaChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Neos.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Neos.ico deleted file mode 100644 index 8389d7b9e4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Neos.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nitro.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nitro.ico deleted file mode 100644 index d72e39d3a7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nitro.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nostromo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nostromo.ico deleted file mode 100644 index cdb7ca7d51..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Nostromo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/OM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/OM.ico deleted file mode 100644 index 4a6a5b6b92..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/OM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Octro.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Octro.ico deleted file mode 100644 index 70d67386c4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Octro.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PSI.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PSI.ico deleted file mode 100644 index e71eca7465..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PSI.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Pandion.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Pandion.ico deleted file mode 100644 index 2c8e063be9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Pandion.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Papla.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Papla.ico deleted file mode 100644 index 1b30efec3c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Papla.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Psto.net.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Psto.net.ico deleted file mode 100644 index ee1e35218e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Psto.net.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyAIMt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyAIMt.ico deleted file mode 100644 index 68411ccc7d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyAIMt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyICQt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyICQt.ico deleted file mode 100644 index cd994f20a5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyICQt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyIRCt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyIRCt.ico deleted file mode 100644 index fcaa822e35..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyIRCt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMRAt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMRAt.ico deleted file mode 100644 index 1bd28dee69..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMRAt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMSNt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMSNt.ico deleted file mode 100644 index 6577a76fc2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyMSNt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyYIMt.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyYIMt.ico deleted file mode 100644 index 00c4cdbc00..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/PyYIMt.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/QTJim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/QTJim.ico deleted file mode 100644 index 20436f91f1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/QTJim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/RenRen.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/RenRen.ico deleted file mode 100644 index 2841cd9851..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/RenRen.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SIP Communicator.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SIP Communicator.ico deleted file mode 100644 index 3aeabd542e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SIP Communicator.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Sky Messager.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Sky Messager.ico deleted file mode 100644 index 710a4c866c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Sky Messager.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Smack.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Smack.ico deleted file mode 100644 index c5fbd3c9b4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Smack.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SoapBox.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SoapBox.ico deleted file mode 100644 index e3dbfbb8fa..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SoapBox.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spark.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spark.ico deleted file mode 100644 index 50089266f3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spark.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spik.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spik.ico deleted file mode 100644 index 42e96964c1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Spik.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SworIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SworIM.ico deleted file mode 100644 index becf0d4013..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/SworIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tapioca.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tapioca.ico deleted file mode 100644 index 7a37dbbd61..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tapioca.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Teabot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Teabot.ico deleted file mode 100644 index b0174968a0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Teabot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Telepathy.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Telepathy.ico deleted file mode 100644 index b35d87d063..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Telepathy.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Thunderbird.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Thunderbird.ico deleted file mode 100644 index 6b9ecad200..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Thunderbird.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TipicIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TipicIM.ico deleted file mode 100644 index f316201d7c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TipicIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tkabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tkabber.ico deleted file mode 100644 index 4016d7af63..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Tkabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TransactIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TransactIM.ico deleted file mode 100644 index e94e6e0f9f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TransactIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TripleSoftwareIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TripleSoftwareIM.ico deleted file mode 100644 index e7181f8421..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/TripleSoftwareIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Vayusphere.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Vayusphere.ico deleted file mode 100644 index 034fa7d690..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Vayusphere.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WTW.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WTW.ico deleted file mode 100644 index 3a5b5ba4f1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WTW.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WannaChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WannaChat.ico deleted file mode 100644 index bab246d551..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WannaChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WebEx.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WebEx.ico deleted file mode 100644 index ebc1b1a16b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WebEx.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhisperIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhisperIM.ico deleted file mode 100644 index 641e51fd50..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhisperIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhoisBot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhoisBot.ico deleted file mode 100644 index 6e0849bd66..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WhoisBot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Wildfire.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Wildfire.ico deleted file mode 100644 index 89941a30e7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Wildfire.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WinJab.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WinJab.ico deleted file mode 100644 index 049d469984..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/WinJab.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Xiffian.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Xiffian.ico deleted file mode 100644 index 4dd1f72a93..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Xiffian.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Yambi.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Yambi.ico deleted file mode 100644 index 7cf0a8e5de..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/Yambi.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/beejive.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/beejive.ico deleted file mode 100644 index fe25acf392..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/beejive.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombus.ico deleted file mode 100644 index 0bc47f1030..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusmod.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusmod.ico deleted file mode 100644 index 2801754430..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusmod.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusqd.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusqd.ico deleted file mode 100644 index 1db263729f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/bombusqd.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/emess.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/emess.ico deleted file mode 100644 index 914b5f4212..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/emess.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/gYaber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/gYaber.ico deleted file mode 100644 index 72f7b55491..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/gYaber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/glu.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/glu.ico deleted file mode 100644 index cca3bf4041..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/glu.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iGoogle.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iGoogle.ico deleted file mode 100644 index ee7c943abf..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iGoogle.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMeem.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMeem.ico deleted file mode 100644 index 8ad5587735..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMeem.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMov.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMov.ico deleted file mode 100644 index e552e61418..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iMov.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iruka.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iruka.ico deleted file mode 100644 index 62c56814fe..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/iruka.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jTalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jTalk.ico deleted file mode 100644 index 24e5898d6a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jTalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jabbim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jabbim.ico deleted file mode 100644 index 0b87f542f8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jabbim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jdisk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jdisk.ico deleted file mode 100644 index 721202ac2a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jdisk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jrudevels.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jrudevels.ico deleted file mode 100644 index 6bb29faa8d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/jrudevels.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/juick.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/juick.ico deleted file mode 100644 index 14cad3c4cd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/juick.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kadu.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kadu.ico deleted file mode 100644 index ed62e52e82..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kadu.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kf.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kf.ico deleted file mode 100644 index 9d00748a45..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/kf.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/landell.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/landell.ico deleted file mode 100644 index 957d6775c8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/landell.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/meinvz.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/meinvz.ico deleted file mode 100644 index bda6d5348d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/meinvz.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/moJab.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/moJab.ico deleted file mode 100644 index 1ea938faea..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/moJab.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/mobber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/mobber.ico deleted file mode 100644 index 2cb80ec49c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/mobber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/myJabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/myJabber.ico deleted file mode 100644 index 661593e201..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/myJabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/orkut.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/orkut.ico deleted file mode 100644 index 323a2e8cd3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/orkut.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/paltalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/paltalk.ico deleted file mode 100644 index 4929d82c4d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/paltalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/pjc.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/pjc.ico deleted file mode 100644 index ebf12bdf5b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/pjc.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/schuelervz.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/schuelervz.ico deleted file mode 100644 index a6069c911e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/schuelervz.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/smtp_transport.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/smtp_transport.ico deleted file mode 100644 index bfe044db15..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/smtp_transport.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/studivz.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/studivz.ico deleted file mode 100644 index 7749a07ec8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/studivz.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/talkonaut.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/talkonaut.ico deleted file mode 100644 index 6c7155f13c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/talkonaut.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/twitter.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/twitter.ico deleted file mode 100644 index e46ccc7548..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/twitter.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/vacuum.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/vacuum.ico deleted file mode 100644 index b1d09122e4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/vacuum.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/wija.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/wija.ico deleted file mode 100644 index fc69f43e2b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/wija.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/xeus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/xeus.ico deleted file mode 100644 index 19c5b0824f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/xeus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/yaonline.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/yaonline.ico deleted file mode 100644 index cf75d455c5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Jabber/yaonline.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN Mac.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN Mac.ico deleted file mode 100644 index 44dabaeed0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN Mac.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v4.5-v5.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v4.5-v5.x.ico deleted file mode 100644 index a4540eaee6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v4.5-v5.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v6.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v6.x.ico deleted file mode 100644 index 2fb63feb47..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v6.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v7.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v7.x.ico deleted file mode 100644 index 3ec3f7e440..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v7.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v8.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v8.x.ico deleted file mode 100644 index 8e4a3dc8a8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/MSN v8.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM10-11.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM10-11.ico deleted file mode 100644 index 2c154ef5d8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM10-11.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM9.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM9.ico deleted file mode 100644 index a2dfe8d6b5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WLM9.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WebMessenger.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WebMessenger.ico deleted file mode 100644 index 9f2d38ce0b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/WebMessenger.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/aMSN.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/aMSN.ico deleted file mode 100644 index 07a95e539e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MSN/aMSN.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_Mobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_Mobile.ico deleted file mode 100644 index 48f321e1fc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_Mobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_WebAgent.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_WebAgent.ico deleted file mode 100644 index 8e80a47002..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_WebAgent.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_official.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_official.ico deleted file mode 100644 index 56da10df60..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_official.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_unknown.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_unknown.ico deleted file mode 100644 index 7d4d19b1b2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Mail.Ru/Mail.Ru_unknown.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10.ico deleted file mode 100644 index 3dc71f8086..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10s.ico deleted file mode 100644 index bb2b0bd10b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/10s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4.ico deleted file mode 100644 index e1f14b8c47..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4s.ico deleted file mode 100644 index af3cdef913..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/4s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5.ico deleted file mode 100644 index 2ba6064762..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5s.ico deleted file mode 100644 index f58fd94462..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/5s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6.ico deleted file mode 100644 index ec58723af1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6s.ico deleted file mode 100644 index 89b77c92d2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/6s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7.ico deleted file mode 100644 index 9aa81b69b1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7s.ico deleted file mode 100644 index a30e3c6308..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/7s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8.ico deleted file mode 100644 index 504c807977..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8s.ico deleted file mode 100644 index d19c0b32f5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/8s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9.ico deleted file mode 100644 index f61e48c305..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9s.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9s.ico deleted file mode 100644 index 1f9b0d2025..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/9s.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010.ico deleted file mode 100644 index b3f949735d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010U.ico deleted file mode 100644 index c154c9ef94..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_010U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_04.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_04.ico deleted file mode 100644 index 59ec76e2b0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_04.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05.ico deleted file mode 100644 index ce8c786623..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05U.ico deleted file mode 100644 index ee2fc5e5f0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_05U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06.ico deleted file mode 100644 index ae1e8b075f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06U.ico deleted file mode 100644 index bcbd8ea62a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_06U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07.ico deleted file mode 100644 index f3393df560..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07U.ico deleted file mode 100644 index 5fabd369a1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_07U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08.ico deleted file mode 100644 index 7be689b639..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08U.ico deleted file mode 100644 index 30f58fbe5b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_08U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09.ico deleted file mode 100644 index 7be689b639..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09U.ico deleted file mode 100644 index 30f58fbe5b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_09U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_666.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_666.ico deleted file mode 100644 index 157bd3edb6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_666.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_U.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_U.ico deleted file mode 100644 index c154c9ef94..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_U.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_unknown.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_unknown.ico deleted file mode 100644 index b3f949735d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaIM_unknown.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaNG.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaNG.ico deleted file mode 100644 index 0162722316..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/MirandaIM/MirandaNG.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/notfound.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/notfound.ico deleted file mode 100644 index 020747cea8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/notfound.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/undetected.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/undetected.ico deleted file mode 100644 index 322c62b943..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/undetected.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/unknown.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/unknown.ico deleted file mode 100644 index 55fb08edcc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Other/unknown.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Mobile QQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Mobile QQ.ico deleted file mode 100644 index 49240fec0e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Mobile QQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2000.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2000.ico deleted file mode 100644 index c53bcd41dd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2000.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2004.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2004.ico deleted file mode 100644 index 013f666ff3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ 2004.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ CRM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ CRM.ico deleted file mode 100644 index 859bba24d5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ CRM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Concept.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Concept.ico deleted file mode 100644 index eddd5a5faa..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Concept.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ International.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ International.ico deleted file mode 100644 index a99a4fc558..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ International.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Silverlight.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Silverlight.ico deleted file mode 100644 index bbfd8fe31a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ Silverlight.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ.ico deleted file mode 100644 index 38a1b1eada..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/QQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 1.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 1.ico deleted file mode 100644 index 1ef0abe1c0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 1.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2.ico deleted file mode 100644 index 85012dc0bc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2008.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2008.ico deleted file mode 100644 index 4b1685b09f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 2008.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 3 QQ 2003.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 3 QQ 2003.ico deleted file mode 100644 index 6c07b7a1b0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM 3 QQ 2003.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2005.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2005.ico deleted file mode 100644 index 6b8450cf95..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2005.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2006.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2006.ico deleted file mode 100644 index add255a825..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2006.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2007.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2007.ico deleted file mode 100644 index ef304c6793..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2007.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2008.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2008.ico deleted file mode 100644 index 58091c2168..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2008.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2009.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2009.ico deleted file mode 100644 index f422cb907a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2009.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2010.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2010.ico deleted file mode 100644 index b7670661c5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2010.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2011.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2011.ico deleted file mode 100644 index ff36d17d88..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM QQ 2011.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM.ico deleted file mode 100644 index c9b62cbd93..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/TM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/WebQQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/WebQQ.ico deleted file mode 100644 index 51b3982eba..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/WebQQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Yam QQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Yam QQ.ico deleted file mode 100644 index e3cb6a9bdb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/QQ/Yam QQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 1.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 1.ico deleted file mode 100644 index abfc7807c0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 1.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 3.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 3.ico deleted file mode 100644 index 52100ff1b6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/Atom 3.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 0.9.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 0.9.ico deleted file mode 100644 index 38ca23ca9b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 0.9.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 1.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 1.ico deleted file mode 100644 index d0c9475429..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 1.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 2.ico deleted file mode 100644 index fc51d5b147..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/RSS/RSS 2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 1.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 1.x.ico deleted file mode 100644 index 6e764ef493..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 1.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 2.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 2.x.ico deleted file mode 100644 index 1ffe3a011f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 2.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 3.x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 3.x.ico deleted file mode 100644 index 07fbb024a5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Skype/Skype 3.x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 5.ico deleted file mode 100644 index fe8af13dff..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 6.ico deleted file mode 100644 index 2afdd191cc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 7.ico deleted file mode 100644 index 6c9831fb53..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen 7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen.ico deleted file mode 100644 index df6c175f9f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Tlen/Tlen.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Gizmo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Gizmo.ico deleted file mode 100644 index 793ba48cc9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Gizmo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/WengoPhone.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/WengoPhone.ico deleted file mode 100644 index c3c9b3a02e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/WengoPhone.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Zoep.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Zoep.ico deleted file mode 100644 index 79556887a0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/VoIP/Zoep.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/accu.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/accu.ico deleted file mode 100644 index 5c370e31f9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/accu.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/gismeteo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/gismeteo.ico deleted file mode 100644 index 212d5838f8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/gismeteo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/intelli.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/intelli.ico deleted file mode 100644 index e6370e0538..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/intelli.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteogid.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteogid.ico deleted file mode 100644 index cddbdddeb5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteogid.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteonovosti.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteonovosti.ico deleted file mode 100644 index 46348fc70d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/meteonovosti.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/noaa.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/noaa.ico deleted file mode 100644 index 1d5206c330..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/noaa.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/realmeteo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/realmeteo.ico deleted file mode 100644 index d385b816ef..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/realmeteo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/underground.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/underground.ico deleted file mode 100644 index 045c3988eb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/underground.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather.ico deleted file mode 100644 index b907fc3c9c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_cn.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_cn.ico deleted file mode 100644 index 41993241d5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_cn.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_over.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_over.ico deleted file mode 100644 index e956eac7f7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weather_over.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weatherxml.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weatherxml.ico deleted file mode 100644 index ea1b4bbccd..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/weatherxml.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/wetter.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/wetter.ico deleted file mode 100644 index 2036baa0a9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/wetter.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/yweather.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/yweather.ico deleted file mode 100644 index c42698714c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Weather/yweather.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/PingBox.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/PingBox.ico deleted file mode 100644 index 6e49570976..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/PingBox.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 10.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 10.ico deleted file mode 100644 index 14ce1900ea..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 10.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 5.ico deleted file mode 100644 index 5a22be6fb8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 6.ico deleted file mode 100644 index c6565cde4d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 7.ico deleted file mode 100644 index 531cc43748..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 8.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 8.ico deleted file mode 100644 index 73cafdcb07..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo 8.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo Go Mobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo Go Mobile.ico deleted file mode 100644 index 196496d789..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo Go Mobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo.ico deleted file mode 100644 index adaf64febb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_10.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_10.ico deleted file mode 100644 index b575c5e6cb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_10.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_5.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_5.ico deleted file mode 100644 index a3fe1e9f09..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_5.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_6.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_6.ico deleted file mode 100644 index 00b6f25f04..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_6.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_7.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_7.ico deleted file mode 100644 index ce09e47108..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_7.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_8.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_8.ico deleted file mode 100644 index 1323522c9a..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_8.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_9.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_9.ico deleted file mode 100644 index 4716d9c3d1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/Yahoo_9.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/libyahoo2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/libyahoo2.ico deleted file mode 100644 index 1fab69de59..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/Yahoo/libyahoo2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Adium.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Adium.ico deleted file mode 100644 index 7c7a3d247f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Adium.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/AgileMobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/AgileMobile.ico deleted file mode 100644 index d87a841f7b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/AgileMobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Ayttm.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Ayttm.ico deleted file mode 100644 index 7fb3d10033..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Ayttm.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BayanICQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BayanICQ.ico deleted file mode 100644 index 3414210a9b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BayanICQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BitlBee.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BitlBee.ico deleted file mode 100644 index 196f8efe87..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/BitlBee.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Centericq.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Centericq.ico deleted file mode 100644 index 36b6f30642..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Centericq.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Citronim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Citronim.ico deleted file mode 100644 index 53825f29c4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Citronim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Digsby.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Digsby.ico deleted file mode 100644 index 4257b5269d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Digsby.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EKG2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EKG2.ico deleted file mode 100644 index 72fba64294..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EKG2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EasyMessage.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EasyMessage.ico deleted file mode 100644 index 8b70f78a87..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/EasyMessage.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Fring.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Fring.ico deleted file mode 100644 index 1d070ba059..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Fring.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/GAIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/GAIM.ico deleted file mode 100644 index 1b634b65b6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/GAIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM+.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM+.ico deleted file mode 100644 index 84c86794fe..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM+.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM2.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM2.ico deleted file mode 100644 index 6949b09f7e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/IM2.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Inlux Messenger.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Inlux Messenger.ico deleted file mode 100644 index c3b31c5f96..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Inlux Messenger.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Instantbird.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Instantbird.ico deleted file mode 100644 index 082d0d869f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Instantbird.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/JasmineIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/JasmineIM.ico deleted file mode 100644 index dab1238e02..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/JasmineIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Jimm.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Jimm.ico deleted file mode 100644 index 26491e3403..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Jimm.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Kopete.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Kopete.ico deleted file mode 100644 index dd1f86cf57..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Kopete.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Meetro.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Meetro.ico deleted file mode 100644 index 840ef00211..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Meetro.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/NatSiemens.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/NatSiemens.ico deleted file mode 100644 index 2a38ddf1f6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/NatSiemens.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/OneTeam.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/OneTeam.ico deleted file mode 100644 index 5711775483..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/OneTeam.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Palringo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Palringo.ico deleted file mode 100644 index b520f9b171..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Palringo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Pidgin.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Pidgin.ico deleted file mode 100644 index b3e6880afb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Pidgin.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Prelude.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Prelude.ico deleted file mode 100644 index db00c912e0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Prelude.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Proteus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Proteus.ico deleted file mode 100644 index b4ee01981b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Proteus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2010.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2010.ico deleted file mode 100644 index 70e0241580..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2010.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2012.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2012.ico deleted file mode 100644 index e4ec765b41..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP 2012.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP Infium.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP Infium.ico deleted file mode 100644 index 70e0241580..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP Infium.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP PDA.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP PDA.ico deleted file mode 100644 index 061a562f91..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/QIP PDA.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Qnext.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Qnext.ico deleted file mode 100644 index 6851be474d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Qnext.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM.ico deleted file mode 100644 index af988017e6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux.ico deleted file mode 100644 index 06eed2c444..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux_old.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux_old.ico deleted file mode 100644 index f30e9dcce4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Linux_old.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX.ico deleted file mode 100644 index afb6e3a1e8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX_old.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX_old.ico deleted file mode 100644 index cc4c5fb62f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_MacOSX_old.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win.ico deleted file mode 100644 index 31f9757c38..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win_old.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win_old.ico deleted file mode 100644 index 331b3834d9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_Win_old.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_other_old.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_other_old.ico deleted file mode 100644 index 25baed70e7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/SIM_other_old.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Astra.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Astra.ico deleted file mode 100644 index 42e02c7dfb..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Astra.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Pro.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Pro.ico deleted file mode 100644 index 5888781e79..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian Pro.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian.ico deleted file mode 100644 index 70afe6d8d2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Trillian.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Yamigo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Yamigo.ico deleted file mode 100644 index 6cbba7d241..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/Yamigo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/eBuddy.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/eBuddy.ico deleted file mode 100644 index afc84a95d4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/eBuddy.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/iChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/iChat.ico deleted file mode 100644 index 72a1c32399..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/iChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/imoim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/imoim.ico deleted file mode 100644 index c139b0c0a0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/imoim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/mChat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/mChat.ico deleted file mode 100644 index 4ebf39c24e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/mChat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/meebo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/meebo.ico deleted file mode 100644 index 433df7f464..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/meebo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/pigeon.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/pigeon.ico deleted file mode 100644 index 333e0a8c0e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/pigeon.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/python.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/python.ico deleted file mode 100644 index 10549ee4e1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/python.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/qutim.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/qutim.ico deleted file mode 100644 index 8526a3dea5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/qutim.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/uIM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/uIM.ico deleted file mode 100644 index 8e8b27f8e6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/multi-protocol/uIM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_AimOscar.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_AimOscar.ico deleted file mode 100644 index 9c52652661..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_AimOscar.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ.ico deleted file mode 100644 index 06fb768cc7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ_Plus.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ_Plus.ico deleted file mode 100644 index 97db43f146..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQJ_Plus.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQM.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQM.ico deleted file mode 100644 index 1e72ea45db..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQM.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQ_Sin.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQ_Sin.ico deleted file mode 100644 index adcdcc4275..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_ICQ_Sin.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_IRC.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_IRC.ico deleted file mode 100644 index bae07272fc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_IRC.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JGTalk.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JGTalk.ico deleted file mode 100644 index 061653862e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JGTalk.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JMeebo.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JMeebo.ico deleted file mode 100644 index 4bb4e64f39..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_JMeebo.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Jabber.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Jabber.ico deleted file mode 100644 index f55fb4583e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Jabber.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_MailRu.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_MailRu.ico deleted file mode 100644 index c50cbb92c3..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_MailRu.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_QQ.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_QQ.ico deleted file mode 100644 index f9e3912207..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_QQ.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Tlen.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Tlen.ico deleted file mode 100644 index 44ecce6bbc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_Tlen.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_gmail.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_gmail.ico deleted file mode 100644 index ee4f45e1b5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_gmail.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_msn.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_msn.ico deleted file mode 100644 index 7bee4e6d5c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Miranda client/overlay_msn.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Android.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Android.ico deleted file mode 100644 index cc0f91559f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Android.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Flash.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Flash.ico deleted file mode 100644 index 36a24aae64..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Flash.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Java.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Java.ico deleted file mode 100644 index 5641b558e5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Java.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Symbian.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Symbian.ico deleted file mode 100644 index 74befa2749..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Symbian.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Windows.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Windows.ico deleted file mode 100644 index 2ab31cd56c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_Windows.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_iMac.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_iMac.ico deleted file mode 100644 index 0e11f643d4..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_iMac.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_linux.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_linux.ico deleted file mode 100644 index b605426c71..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/OS/overlay_linux.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_IMsecure_arrow.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_IMsecure_arrow.ico deleted file mode 100644 index 47ffb37058..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_IMsecure_arrow.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SecureIM_arrow.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SecureIM_arrow.ico deleted file mode 100644 index 0e855dd172..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SecureIM_arrow.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpLite_arrow.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpLite_arrow.ico deleted file mode 100644 index 8b4c9d3a9b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpLite_arrow.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpPro_arrow.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpPro_arrow.ico deleted file mode 100644 index 85544d349f..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/Secure/overlay_SimpPro_arrow.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/_blank.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/_blank.ico deleted file mode 100644 index 74ae0e1255..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/_blank.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_debug.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_debug.ico deleted file mode 100644 index 11a788c58c..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_debug.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_home.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_home.ico deleted file mode 100644 index 36029b7589..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_home.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_mobile.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_mobile.ico deleted file mode 100644 index 4ab82a4a77..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_mobile.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_notebook.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_notebook.ico deleted file mode 100644 index 7ead77c78d..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_notebook.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_office.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_office.ico deleted file mode 100644 index b31a7cba16..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_office.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_work.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_work.ico deleted file mode 100644 index 95f77d9711..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/overlay2/overlay_work.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_666.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_666.ico deleted file mode 100644 index c5d4596bf5..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_666.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_AF.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_AF.ico deleted file mode 100644 index 846513ebb7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_AF.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Cappuccino.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Cappuccino.ico deleted file mode 100644 index 5315c448b9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Cappuccino.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FaithPack.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FaithPack.ico deleted file mode 100644 index 3d44d86af9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FaithPack.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FinalPack.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FinalPack.ico deleted file mode 100644 index 7f9f1e83a9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_FinalPack.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_KDL.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_KDL.ico deleted file mode 100644 index 1a2b1a7f73..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_KDL.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Kolich.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Kolich.ico deleted file mode 100644 index a314b055c8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Kolich.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Lestat.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Lestat.ico deleted file mode 100644 index 4c33f3d1b6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Lestat.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_LexSys.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_LexSys.ico deleted file mode 100644 index c8f8d1c4c8..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_LexSys.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_FR.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_FR.ico deleted file mode 100644 index 1c371967f6..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_FR.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_ME.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_ME.ico deleted file mode 100644 index 93d0dbf6ec..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Miranda_ME.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_New_Style.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_New_Style.ico deleted file mode 100644 index 2b85e1b905..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_New_Style.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_RobyerPack.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_RobyerPack.ico deleted file mode 100644 index f3b01cd8bf..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_RobyerPack.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_SSS.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_SSS.ico deleted file mode 100644 index 9507959186..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_SSS.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Se7ven.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Se7ven.ico deleted file mode 100644 index 409e3a9573..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Se7ven.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Stalker.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Stalker.ico deleted file mode 100644 index 7ded7bfcf0..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Stalker.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ValeraVi.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ValeraVi.ico deleted file mode 100644 index 646a11b28b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ValeraVi.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Yaol.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Yaol.ico deleted file mode 100644 index 64dff745b2..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_Yaol.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_a0x.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_a0x.ico deleted file mode 100644 index 17f5cc040b..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_a0x.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_alfamar.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_alfamar.ico deleted file mode 100644 index 81ee5cf7cc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_alfamar.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_amatory.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_amatory.ico deleted file mode 100644 index a87232910e..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_amatory.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_bri.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_bri.ico deleted file mode 100644 index bdfb92c5a7..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_bri.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dar_veter.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dar_veter.ico deleted file mode 100644 index 0b9b163b67..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dar_veter.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dmikos.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dmikos.ico deleted file mode 100644 index 8ca679a637..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_dmikos.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_e33.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_e33.ico deleted file mode 100644 index adff0303fc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_e33.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_freize.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_freize.ico deleted file mode 100644 index 969e034447..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_freize.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ghost.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ghost.ico deleted file mode 100644 index a9b566d6d1..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_ghost.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_hieros.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_hieros.ico deleted file mode 100644 index b53e707612..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_hieros.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_kuzzman.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_kuzzman.ico deleted file mode 100644 index cde20a9e13..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_kuzzman.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_leninpack.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_leninpack.ico deleted file mode 100644 index d79e07d646..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_leninpack.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_mataes.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_mataes.ico deleted file mode 100644 index 44677c40d9..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_mataes.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_md.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_md.ico deleted file mode 100644 index 314a9fb029..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_md.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_native.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_native.ico deleted file mode 100644 index 8381cbf2bf..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_native.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_pilot.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_pilot.ico deleted file mode 100644 index 267e644b69..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_pilot.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_razunter.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_razunter.ico deleted file mode 100644 index ee7ef57085..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_razunter.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_tweety.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_tweety.ico deleted file mode 100644 index ebef950336..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_tweety.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_umedon.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_umedon.ico deleted file mode 100644 index e9ef5ad413..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_umedon.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_watcher.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_watcher.ico deleted file mode 100644 index a26cfab0cf..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_watcher.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_xSpellhowleRx.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_xSpellhowleRx.ico deleted file mode 100644 index a52c4ea4cc..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_xSpellhowleRx.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_zeleboba.ico b/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_zeleboba.ico deleted file mode 100644 index 37fb67b984..0000000000 Binary files a/plugins/!Deprecated/FingerPrintModPlus/res/icons/overlays/packs/overlay_packs_zeleboba.ico and /dev/null differ diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_AIM.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_AIM.rc deleted file mode 100644 index ad083d37aa..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_AIM.rc +++ /dev/null @@ -1,79 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################# AIM ######################################################## -//############################################################################################################## - IDI_AIM ICON "icons\\AIM\\AIM.ico" - IDI_AIM_4 ICON "icons\\AIM\\AIM_4.x.ico" - IDI_AIM_5 ICON "icons\\AIM\\AIM_5.x.ico" - IDI_AIM_MAC ICON "icons\\AIM\\AIM_Mac.ico" - IDI_AIM_MOBILE ICON "icons\\AIM\\AIM_Mobile.ico" - IDI_AIM_TRITON ICON "icons\\AIM\\AIM_Triton.ico" - IDI_MINIAIM ICON "icons\\AIM\\miniaim.ico" - IDI_NAIM ICON "icons\\AIM\\naim.ico" - IDI_TERRAIM ICON "icons\\AIM\\TerraIM.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Gadu.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Gadu.rc deleted file mode 100644 index b0079a9484..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Gadu.rc +++ /dev/null @@ -1,72 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//########################################### Gadu-Gadu ######################################################## -//############################################################################################################## - IDI_GADU_GADU_6 ICON "icons\\Gadu-Gadu\\Gadu_Gadu_6.ico" - IDI_GADU_GADU_7 ICON "icons\\Gadu-Gadu\\Gadu_Gadu_7.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_General.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_General.rc deleted file mode 100644 index a8ed94221a..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_General.rc +++ /dev/null @@ -1,147 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################### MirandaIM clients ######################################## -//############################################################################################################## - IDI_MIRANDA_4 ICON "icons\\MirandaIM\\4.ico" - IDI_MIRANDA_4s ICON "icons\\MirandaIM\\4s.ico" - IDI_MIRANDA_5 ICON "icons\\MirandaIM\\5.ico" - IDI_MIRANDA_5s ICON "icons\\MirandaIM\\5s.ico" - IDI_MIRANDA_6 ICON "icons\\MirandaIM\\6.ico" - IDI_MIRANDA_6s ICON "icons\\MirandaIM\\6s.ico" - IDI_MIRANDA_7 ICON "icons\\MirandaIM\\7.ico" - IDI_MIRANDA_7s ICON "icons\\MirandaIM\\7s.ico" - IDI_MIRANDA_8 ICON "icons\\MirandaIM\\8.ico" - IDI_MIRANDA_8s ICON "icons\\MirandaIM\\8s.ico" - IDI_MIRANDA_9 ICON "icons\\MirandaIM\\9.ico" - IDI_MIRANDA_9s ICON "icons\\MirandaIM\\9s.ico" - IDI_MIRANDA_10 ICON "icons\\MirandaIM\\10.ico" - IDI_MIRANDA_10s ICON "icons\\MirandaIM\\10s.ico" - IDI_MIRANDA_04 ICON "icons\\MirandaIM\\MirandaIM_04.ico" - IDI_MIRANDA_05 ICON "icons\\MirandaIM\\MirandaIM_05.ico" - IDI_MIRANDA_05U ICON "icons\\MirandaIM\\MirandaIM_05U.ico" - IDI_MIRANDA_06 ICON "icons\\MirandaIM\\MirandaIM_06.ico" - IDI_MIRANDA_06U ICON "icons\\MirandaIM\\MirandaIM_06U.ico" - IDI_MIRANDA_07 ICON "icons\\MirandaIM\\MirandaIM_07.ico" - IDI_MIRANDA_07U ICON "icons\\MirandaIM\\MirandaIM_07U.ico" - IDI_MIRANDA_08 ICON "icons\\MirandaIM\\MirandaIM_08.ico" - IDI_MIRANDA_08U ICON "icons\\MirandaIM\\MirandaIM_08U.ico" - IDI_MIRANDA_09 ICON "icons\\MirandaIM\\MirandaIM_09.ico" - IDI_MIRANDA_09U ICON "icons\\MirandaIM\\MirandaIM_09U.ico" - IDI_MIRANDA_010 ICON "icons\\MirandaIM\\MirandaIM_010.ico" - IDI_MIRANDA_010U ICON "icons\\MirandaIM\\MirandaIM_010U.ico" - IDI_MIRANDA_666 ICON "icons\\MirandaIM\\MirandaIM_666.ico" - IDI_MIRANDA_U ICON "icons\\MirandaIM\\MirandaIM_U.ico" - IDI_MIRANDA_NG ICON "icons\\MirandaIM\\MirandaNG.ico" - IDI_MIRANDA_UNKNOWN ICON "icons\\MirandaIM\\MirandaIM_unknown.ico" - -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//##################################### Miranda client overlays ################################################ -//############################################################################################################## - IDI_AIMOSCAR_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_AimOscar.ico" - IDI_GMAIL_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_Gmail.ico" - IDI_ICQJ_SIN_MOD_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_ICQ_Sin.ico" - IDI_ICQJ_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_ICQJ.ico" - IDI_ICQJ_PLUS_MOD_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_ICQJ_Plus.ico" - IDI_ICQJM_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_ICQM.ico" - IDI_IRC_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_IRC.ico" - IDI_JABBER_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_Jabber.ico" - IDI_JGTALK_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_JGTalk.ico" - IDI_JMEEBO_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_JMeebo.ico" - IDI_MAILRU_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_MailRu.ico" - IDI_MSN_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_MSN.ico" - IDI_QQ_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_QQ.ico" - IDI_TLEN_OVERLAY ICON "icons\\overlays\\Miranda client\\overlay_Tlen.ico" - -//############################################################################################################## -//########################################### OS ############################################################ -//############################################################################################################## - IDI_CLIENTANDROID ICON "icons\\overlays\\OS\\overlay_Android.ico" - IDI_CLIENTFLASH ICON "icons\\overlays\\OS\\overlay_Flash.ico" - IDI_CLIENTMAC ICON "icons\\overlays\\OS\\overlay_iMac.ico" - IDI_CLIENTJAVA ICON "icons\\overlays\\OS\\overlay_Java.ico " - IDI_CLIENTLINUX ICON "icons\\overlays\\OS\\overlay_linux.ico" - IDI_CLIENTSYMBIAN ICON "icons\\overlays\\OS\\overlay_Symbian.ico" - IDI_CLIENTWIN ICON "icons\\overlays\\OS\\overlay_Windows.ico" - -//############################################################################################################## -//########################################### Secure overlays ################################################## -//############################################################################################################## - IDI_IMSECURE_OVERLAY ICON "icons\\overlays\\Secure\\overlay_IMsecure_arrow.ico" - IDI_SECUREIM_OVERLAY ICON "icons\\overlays\\Secure\\overlay_SecureIM_arrow.ico" - IDI_SIMPLITE_OVERLAY ICON "icons\\overlays\\Secure\\overlay_SimpLite_arrow.ico" - IDI_SIMPPRO_OVERLAY ICON "icons\\overlays\\Secure\\overlay_SimpPro_arrow.ico" - -//############################################################################################################## -//########################################### Other ############################################################ -//############################################################################################################## - IDI_BLANK ICON "icons\\overlays\\_blank.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_ICQ.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_ICQ.rc deleted file mode 100644 index 1a730956ce..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_ICQ.rc +++ /dev/null @@ -1,140 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//########################################## Unofficial ICQ clients ############################################ -//############################################################################################################## - IDI_ANDRQ ICON "icons\\ICQ\\&RQ.ico" - IDI_1UND1 ICON "icons\\ICQ\\1&1.ico" - IDI_ALICQ ICON "icons\\ICQ\\Alicq.ico" - IDI_ANASTASIA ICON "icons\\ICQ\\Anastasia.ico" - IDI_VIRUS ICON "icons\\ICQ\\Biohazard.ico" - IDI_COREPAGER ICON "icons\\ICQ\\corepager.ico" - IDI_DICHAT ICON "icons\\ICQ\\D[i]Chat.ico" - IDI_DELPHI ICON "icons\\ICQ\\Delphi.ico" - IDI_GLICQ ICON "icons\\ICQ\\GLICQ.ico" - IDI_GNOMEICU ICON "icons\\ICQ\\GnomeICU.ico" - IDI_ICAT ICON "icons\\ICQ\\IC@.ico" - IDI_ICQ2X ICON "icons\\ICQ\\ICQ_2.x.ico" - IDI_IMADERING ICON "icons\\ICQ\\imadering.ico" - IDI_JICQ ICON "icons\\ICQ\\JICQ.ico" - IDI_KMASKA ICON "icons\\ICQ\\KM_Aska.ico" - IDI_KXICQ ICON "icons\\ICQ\\kxICQ2.ico" - IDI_LIBICQ2000 ICON "icons\\ICQ\\LibICQ2000.ico" - IDI_LICQ ICON "icons\\ICQ\\Licq.ico" - IDI_LOCID ICON "icons\\ICQ\\locid.ico" - IDI_MICQ ICON "icons\\ICQ\\mICQ.ico" - IDI_MIP ICON "icons\\ICQ\\MIP.ico" - IDI_NANOICQ ICON "icons\\ICQ\\NanoICQ.ico" - IDI_NICQ ICON "icons\\ICQ\\nICQ.ico" - IDI_QIP ICON "icons\\ICQ\\QIP.ico" - IDI_RANDQ_NEW ICON "icons\\ICQ\\R&Q.ico" - IDI_SLICK ICON "icons\\ICQ\\slick.ico" - IDI_SMAPER ICON "icons\\ICQ\\smaper.ico" - IDI_SMARTICQ ICON "icons\\ICQ\\SmartICQ.ico" - IDI_SPAMBOT ICON "icons\\ICQ\\Spambot.ico" - IDI_STICQ ICON "icons\\ICQ\\stICQ.ico" - IDI_STRICQ ICON "icons\\ICQ\\StrICQ.ico" - IDI_VICQ ICON "icons\\ICQ\\vICQ.ico" - IDI_VMICQ ICON "icons\\ICQ\\vmICQ.ico" - IDI_WEBICQ ICON "icons\\ICQ\\WebICQ.ico" - IDI_YEEMP ICON "icons\\ICQ\\Yeemp.ico" - IDI_YSM ICON "icons\\ICQ\\YSM.ico" - -//############################################################################################################## -//############################################# Official ICQ clients ########################################### -//############################################################################################################## - IDI_ICQ ICON "icons\\ICQ\\official\\ICQ.ico" - IDI_ICQ_6 ICON "icons\\ICQ\\official\\ICQ_6.ico" - IDI_ICQ_ABV ICON "icons\\ICQ\\official\\ICQ_ABV.ico" - IDI_ICQ_BIGMIR ICON "icons\\ICQ\\official\\ICQ_Bigmir.ico" - IDI_ICQ_COMPAD ICON "icons\\ICQ\\official\\ICQ_ComPad.ico" - IDI_ICQ4MAC ICON "icons\\ICQ\\official\\ICQ_iMac.ico" - IDI_ICQ_LITE4 ICON "icons\\ICQ\\official\\ICQ_Lite4.ico" - IDI_ICQ_LITE7 ICON "icons\\ICQ\\official\\ICQ_Lite7.ico" - IDI_ICQ_NETVIGATOR ICON "icons\\ICQ\\official\\ICQ_Netvigator.ico" - IDI_ICQ_PRO7 ICON "icons\\ICQ\\official\\ICQ_Pro7.ico" - IDI_ICQ_RAMBLER ICON "icons\\ICQ\\official\\ICQ_Rambler.ico" - IDI_ICQ_POCKETPC ICON "icons\\ICQ\\official\\ICQ for PocketPC.ico" - -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//################################# ICQ overlays ############################################################### -//############################################################################################################## - - IDI_CLIENTICQLITE5 ICON "icons\\ICQ\\official\\Icq 5.ico" - IDI_CLIENTICQLITE51 ICON "icons\\ICQ\\official\\Icq 5.1.ico" - IDI_CLIENTICQ6 ICON "icons\\ICQ\\official\\Icq 6.ico" - IDI_CLIENTICQ7 ICON "icons\\ICQ\\official\\Icq 7.ico" - IDI_CLIENTICQ2000 ICON "icons\\ICQ\\official\\Icq2000.ico" - IDI_CLIENTICQ2001 ICON "icons\\ICQ\\official\\icq2001.ico" - IDI_CLIENTICQ2002 ICON "icons\\ICQ\\official\\icq2002.ico" - IDI_CLIENTICQ2003 ICON "icons\\ICQ\\official\\icq2003.ico" - IDI_CLIENTICQLITE4 ICON "icons\\ICQ\\official\\IcqLite 4.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_IRC.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_IRC.rc deleted file mode 100644 index 311d20840e..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_IRC.rc +++ /dev/null @@ -1,132 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################ IRC ######################################################### -//############################################################################################################## - IDI_AMIRC ICON "icons\\IRC\\AmIRC.ico" - IDI_AMULE ICON "icons\\IRC\\aMule.ico" - IDI_BABBEL ICON "icons\\IRC\\Babbel.ico" - IDI_BERSIRC ICON "icons\\IRC\\BersIRC.ico" - IDI_CBIRC ICON "icons\\IRC\\cbirc.ico" - IDI_CHATZILLA ICON "icons\\IRC\\ChatZilla.ico" - IDI_CONVERSATION ICON "icons\\IRC\\Conversation.ico" - IDI_DIRC ICON "icons\\IRC\\dIRC.ico" - IDI_EGGDROP ICON "icons\\IRC\\Eggdrop.ico" - IDI_EGGDROP_RACBOT ICON "icons\\IRC\\Eggdrop_RacBot.ico" - IDI_EMULE ICON "icons\\IRC\\eMule.ico" - IDI_EMULE_MORPHXT ICON "icons\\IRC\\eMule_MorphXT.ico" - IDI_EMULE_NEO ICON "icons\\IRC\\eMule_Neo.ico" - IDI_EMULE_PLUS ICON "icons\\IRC\\eMule_Plus.ico" - IDI_EMULE_XTREME ICON "icons\\IRC\\eMule_Xtreme.ico" - IDI_FCHAT ICON "icons\\IRC\\FChat.ico" - IDI_GDPCHAT ICON "icons\\IRC\\GDP Web Chat.ico" - IDI_GOPOWERTOOLS ICON "icons\\IRC\\GoPowerTools.ico" - IDI_HYDRA_IRC ICON "icons\\IRC\\HydraIRC.ico" - IDI_ICECHAT ICON "icons\\IRC\\IceChat.ico" - IDI_ICECHAT5 ICON "icons\\IRC\\IceChat 5.ico" - IDI_ICECHAT7 ICON "icons\\IRC\\IceChat 7.ico" - IDI_IRC_UNKNOWN ICON "icons\\IRC\\IRC_Unknown.ico" - IDI_IRCLE ICON "icons\\IRC\\ircle.ico" - IDI_IRCXPRO ICON "icons\\IRC\\IRCXPro.ico" - IDI_IRSSI ICON "icons\\IRC\\irssi.ico" - IDI_JIRCII ICON "icons\\IRC\\jircii.ico" - IDI_JMIRC ICON "icons\\IRC\\jmIRC.ico" - IDI_KLIENT ICON "icons\\IRC\\Klient.ico" - IDI_KONVERSATION ICON "icons\\IRC\\Konversation.ico" - IDI_KSIRC ICON "icons\\IRC\\ksirc.ico" - IDI_KVIRC ICON "icons\\IRC\\KVIrc.ico" - IDI_MIRC ICON "icons\\IRC\\MIRC.ico" - IDI_MP3_SCRIPT ICON "icons\\IRC\\mp3script.ico" - IDI_NEORATRION ICON "icons\\IRC\\NeoRa Trion.ico" - IDI_NETTALK ICON "icons\\IRC\\Nettalk.ico" - IDI_NONAME_SCRIPT ICON "icons\\IRC\\NoNameScript.ico" - IDI_OPERA ICON "icons\\IRC\\Opera.ico" - IDI_PIORUN ICON "icons\\IRC\\Piorun.ico" - IDI_PIRC ICON "icons\\IRC\\pIRC.ico" - IDI_PIRCH ICON "icons\\IRC\\Pirch.ico" - IDI_PJIRC ICON "icons\\IRC\\pjIRC.ico" - IDI_PROCHAT ICON "icons\\IRC\\ProChat.ico" - IDI_PSYBNC ICON "icons\\IRC\\PsyBNC.ico" - IDI_SAVIRC ICON "icons\\IRC\\savIRC.ico" - IDI_SMART_IRC ICON "icons\\IRC\\SmartIRC.ico" - IDI_SNAK ICON "icons\\IRC\\Snak.ico" - IDI_SYSRESET ICON "icons\\IRC\\SysReset.ico" - IDI_VIRCAIRC ICON "icons\\IRC\\VircaIRC.ico" - IDI_VISIONIRC ICON "icons\\IRC\\VisionIRC.ico" - IDI_VISUALIRC ICON "icons\\IRC\\VisualIRC.ico" - IDI_VORTECIRC ICON "icons\\IRC\\VortecIRC.ico" - IDI_WEECHAT ICON "icons\\IRC\\WeeChat.ico" - IDI_WLIRC ICON "icons\\IRC\\wlIRC.ico" - IDI_WMIRC ICON "icons\\IRC\\wmIRC.ico" - IDI_XCHATAQUA ICON "icons\\IRC\\X-Chat Aqua.ico" - IDI_XBITCH ICON "icons\\IRC\\xBitch.ico" - IDI_XCHAT ICON "icons\\IRC\\xChat.ico" - IDI_XIRC ICON "icons\\IRC\\Xirc.ico" - IDI_XIRCON ICON "icons\\IRC\\XIRCON.ico" - IDI_ZIPTORRENT ICON "icons\\IRC\\ZipTorrent.ico" - IDI_ZSIRC ICON "icons\\IRC\\zsIRC.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Jabber.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Jabber.rc deleted file mode 100644 index fc88c36709..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Jabber.rc +++ /dev/null @@ -1,230 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################## Jabber clients ############################################ -//############################################################################################################## - IDI_AKENI ICON "icons\\Jabber\\Akeni.ico" - IDI_ANDROID ICON "icons\\Jabber\\Android.ico" - IDI_ANOTHRSSBOT ICON "icons\\Jabber\\Anothr Rss Bot.ico" - IDI_AQQ ICON "icons\\Jabber\\Aqq.ico" - IDI_BEEJIVE ICON "icons\\Jabber\\beejive.ico" - IDI_BELLSOUTH ICON "icons\\Jabber\\BellSouth.ico" - IDI_BITWISE ICON "icons\\Jabber\\BitWise.ico" - IDI_BLACKBERRY ICON "icons\\Jabber\\BlackBerry.ico" - IDI_BOMBUS ICON "icons\\Jabber\\Bombus.ico" - IDI_BOMBUSMOD ICON "icons\\Jabber\\Bombusmod.ico" - IDI_BOMBUSQD ICON "icons\\Jabber\\bombusqd.ico" - IDI_BOWLINE ICON "icons\\Jabber\\Bowline.ico" - IDI_BUDDYSPACE ICON "icons\\Jabber\\BuddySpace.ico" - IDI_CHATOPUS ICON "icons\\Jabber\\Chatopus.ico" - IDI_CHIKKA ICON "icons\\Jabber\\Chikka.ico" - IDI_CHITCHAT ICON "icons\\Jabber\\ChitChat.ico" - IDI_COCCINELLA ICON "icons\\Jabber\\Coccinella.ico" - IDI_COLIBRY ICON "icons\\Jabber\\Colibry.ico" - IDI_COLLOQUY ICON "icons\\Jabber\\Colloquy.ico" - IDI_DESYR ICON "icons\\Jabber\\Desyr.ico" - IDI_EMACS ICON "icons\\Jabber\\Emacs.ico" - IDI_EMESS ICON "icons\\Jabber\\emess.ico" - IDI_EXODUS ICON "icons\\Jabber\\Exodus.ico" - IDI_EYEBALL_CHAT ICON "icons\\Jabber\\Eyeball Chat.ico" - IDI_FACEBOOK ICON "icons\\Jabber\\Facebook.ico" - IDI_FIRE ICON "icons\\Jabber\\Fire.ico" - IDI_GABBER ICON "icons\\Jabber\\Gabber.ico" - IDI_GAJIM ICON "icons\\Jabber\\Gajim.ico" - IDI_GCN ICON "icons\\Jabber\\GCN.ico" - IDI_GLU ICON "icons\\Jabber\\glu.ico" - IDI_GMAIL ICON "icons\\Jabber\\GMail.ico" - IDI_CONFERENCE ICON "icons\\Jabber\\Gmail_Conference_Bot.ico" - IDI_GNOME ICON "icons\\Jabber\\Gnome.ico" - IDI_GNUGADU ICON "icons\\Jabber\\GNU_Gadu.ico" - IDI_GOIM ICON "icons\\Jabber\\GOIM.ico" - IDI_GOSSIP ICON "icons\\Jabber\\Gossip.ico" - IDI_GOTALKMOBILE ICON "icons\\Jabber\\GoTalkMobile.ico" - IDI_GREENTHUMB ICON "icons\\Jabber\\GreenThumb.ico" - IDI_GTALK ICON "icons\\Jabber\\GTalk.ico" - IDI_GTALK_GADGET ICON "icons\\Jabber\\GTalk Gadget.ico" - IDI_GUSH ICON "icons\\Jabber\\Gush.ico" - IDI_GYABER ICON "icons\\Jabber\\gYaber.ico" - IDI_IGOOGLE ICON "icons\\Jabber\\iGoogle.ico" - IDI_IMCOM ICON "icons\\Jabber\\IMCom.ico" - IDI_IMEEM ICON "icons\\Jabber\\iMeem.ico" - IDI_IMIFIED ICON "icons\\Jabber\\Imified.ico" - IDI_IMOV ICON "icons\\Jabber\\iMov.ico" - IDI_IMPORTAL ICON "icons\\Jabber\\Importal.ico" - IDI_INSTANT ICON "icons\\Jabber\\Instan-t.ico" - IDI_INTERACTION ICON "icons\\Jabber\\Interaction.ico" - IDI_IRUKA ICON "icons\\Jabber\\iruka.ico" - IDI_JABBER_BEOS ICON "icons\\Jabber\\Jabber_BeOS.ico" - IDI_JABBER_APPLET ICON "icons\\Jabber\\JabberApplet.ico" - IDI_JABBERFOX ICON "icons\\Jabber\\JabberFoX.ico" - IDI_JABBER_MESSENGER ICON "icons\\Jabber\\JabberMessenger.ico" - IDI_JABBERNAUT ICON "icons\\Jabber\\JabberNaut.ico" - IDI_JABBERWOCKY ICON "icons\\Jabber\\JabberWocky.ico" - IDI_JABBERZILLA ICON "icons\\Jabber\\JabberZilla.ico" - IDI_JABBIM ICON "icons\\Jabber\\jabbim.ico" - IDI_JABBIN ICON "icons\\Jabber\\Jabbin.ico" - IDI_JABIRU ICON "icons\\Jabber\\Jabiru.ico" - IDI_JAJC ICON "icons\\Jabber\\JAJC.ico" - IDI_JBOTHER ICON "icons\\Jabber\\JBother.ico" - IDI_JCLAIM ICON "icons\\Jabber\\JClaim.ico" - IDI_JDISK ICON "icons\\Jabber\\jdisk.ico" - IDI_JETI ICON "icons\\Jabber\\Jeti.ico" - IDI_JMC ICON "icons\\Jabber\\JMC.ico" - IDI_JRUDEVELS ICON "icons\\Jabber\\jrudevels.ico" - IDI_JTALK ICON "icons\\Jabber\\jTalk.ico" - IDI_JUICK ICON "icons\\Jabber\\juick.ico" - IDI_JWCHAT ICON "icons\\Jabber\\JWChat.ico" - IDI_JWGC ICON "icons\\Jabber\\JWGC.ico" - IDI_KADU ICON "icons\\Jabber\\kadu.ico" - IDI_KF ICON "icons\\Jabber\\kf.ico" - IDI_KONNEKT ICON "icons\\Jabber\\Konnekt.ico" - IDI_LAFFER ICON "icons\\Jabber\\Laffer.ico" - IDI_LANDELL ICON "icons\\Jabber\\Landell.ico" - IDI_LEAF ICON "icons\\Jabber\\Leaf Messenger.ico" - IDI_LEECHCRAFT ICON "icons\\Jabber\\LeechCraft.ico" - IDI_LINQ ICON "icons\\Jabber\\LinQ.ico" - IDI_LLUNA ICON "icons\\Jabber\\LLuna.ico" - IDI_M8JABBER ICON "icons\\Jabber\\m8jabber.ico" - IDI_MANGO ICON "icons\\Jabber\\Mango.ico" - IDI_MCABBER ICON "icons\\Jabber\\MCabber.ico" - IDI_MEINVZ ICON "icons\\Jabber\\meinvz.ico" - IDI_MERCURY_MESSENGER ICON "icons\\Jabber\\Mercury_Messenger.ico" - IDI_MGTALK ICON "icons\\Jabber\\MGTalk.ico" - IDI_MOBBER ICON "icons\\Jabber\\mobber.ico" - IDI_MOJAB ICON "icons\\Jabber\\moJab.ico" - IDI_MOZILLACHAT ICON "icons\\Jabber\\MozillaChat.ico" - IDI_MYJABBER ICON "icons\\Jabber\\myJabber.ico" - IDI_NEOS ICON "icons\\Jabber\\Neos.ico" - IDI_NITRO ICON "icons\\Jabber\\Nitro.ico" - IDI_NOSTROMO ICON "icons\\Jabber\\Nostromo.ico" - IDI_OCTRO ICON "icons\\Jabber\\Octro.ico" - IDI_OM ICON "icons\\Jabber\\OM.ico" - IDI_ORKUT ICON "icons\\Jabber\\orkut.ico" - IDI_PALTALK ICON "icons\\Jabber\\paltalk.ico" - IDI_PANDION ICON "icons\\Jabber\\Pandion.ico" - IDI_PAPLA ICON "icons\\Jabber\\Papla.ico" - IDI_PJC ICON "icons\\Jabber\\pjc.ico" - IDI_PSI ICON "icons\\Jabber\\PSI.ico" - IDI_PSTO ICON "icons\\Jabber\\Psto.net.ico" - IDI_PYAIMT ICON "icons\\Jabber\\PyAIMt.ico" - IDI_PYICQT ICON "icons\\Jabber\\PyICQt.ico" - IDI_PYIRCT ICON "icons\\Jabber\\PyIRCt.ico" - IDI_PYMRAT ICON "icons\\Jabber\\PyMRAt.ico" - IDI_PYMSNT ICON "icons\\Jabber\\PyMSNt.ico" - IDI_PYYAHOOT ICON "icons\\Jabber\\PyYIMt.ico" - IDI_QTJIM ICON "icons\\Jabber\\QTJim.ico" - IDI_RENREN ICON "icons\\Jabber\\RenRen.ico" - IDI_SCHULERVZ ICON "icons\\Jabber\\schuelervz.ico" - IDI_SIP_COMM ICON "icons\\Jabber\\SIP Communicator.ico" - IDI_SKYMESSAGER ICON "icons\\Jabber\\Sky Messager.ico" - IDI_SMACK ICON "icons\\Jabber\\Smack.ico" - IDI_SMTP_TRANSPORT ICON "icons\\Jabber\\smtp_transport.ico" - IDI_SOAPBOX ICON "icons\\Jabber\\SoapBox.ico" - IDI_SPARK ICON "icons\\Jabber\\Spark.ico" - IDI_SPIK ICON "icons\\Jabber\\Spik.ico" - IDI_STUDIVZ ICON "icons\\Jabber\\studivz.ico" - IDI_SWORIM ICON "icons\\Jabber\\SworIM.ico" - IDI_TALKONAUT ICON "icons\\Jabber\\Talkonaut.ico" - IDI_TAPIOCA ICON "icons\\Jabber\\Tapioca.ico" - IDI_TEABOT ICON "icons\\Jabber\\Teabot.ico" - IDI_TELEPATHY ICON "icons\\Jabber\\Telepathy.ico" - IDI_THUNDERBIRD ICON "icons\\Jabber\\Thunderbird.ico" - IDI_TIPICIM ICON "icons\\Jabber\\TipicIM.ico" - IDI_TKABBER ICON "icons\\Jabber\\Tkabber.ico" - IDI_TRANSACTIM ICON "icons\\Jabber\\TransactIM.ico" - IDI_TRIPLE_SOFTWARE ICON "icons\\Jabber\\TripleSoftwareIM.ico" - IDI_TWITTER ICON "icons\\Jabber\\twitter.ico" - IDI_VACUUM ICON "icons\\Jabber\\Vacuum.ico" - IDI_VAYUSPHERE ICON "icons\\Jabber\\Vayusphere.ico" - IDI_WANNACHAT ICON "icons\\Jabber\\WannaChat.ico" - IDI_WEBEX ICON "icons\\Jabber\\WebEx.ico" - IDI_WHISPERIM ICON "icons\\Jabber\\WhisperIM.ico" - IDI_WHOISBOT ICON "icons\\Jabber\\WhoisBot.ico" - IDI_WIJA ICON "icons\\Jabber\\wija.ico" - IDI_WILDFIRE ICON "icons\\Jabber\\Wildfire.ico" - IDI_WINJAB ICON "icons\\Jabber\\WinJab.ico" - IDI_WTW ICON "icons\\Jabber\\WTW.ico" - IDI_XEUS ICON "icons\\Jabber\\Xeus.ico" - IDI_XIFFIAN ICON "icons\\Jabber\\Xiffian.ico" - IDI_YAMBI ICON "icons\\Jabber\\Yambi.ico" - IDI_YAONLINE ICON "icons\\Jabber\\yaonline.ico" - -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//########################################### overlay2 ######################################################### -//############################################################################################################## - - IDI_DEBUG_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_debug.ico" - IDI_HOME_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_home.ico" - IDI_MOBILE_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_mobile.ico" - IDI_NOTEBOOK_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_notebook.ico" - IDI_OFFICE_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_office.ico" - IDI_WORK_OVERLAY ICON "icons\\overlays\\overlay2\\overlay_work.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_MRA.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_MRA.rc deleted file mode 100644 index 60e8b0c7d8..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_MRA.rc +++ /dev/null @@ -1,74 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//########################################### Mail.ru Agent #################################################### -//############################################################################################################## - IDI_MAIL_RU_MOBILE ICON "icons\\Mail.Ru\\Mail.Ru_Mobile.ico" - IDI_MAIL_RU_OFFICIAL ICON "icons\\Mail.Ru\\Mail.Ru_official.ico" - IDI_MAIL_RU_UNKNOWN ICON "icons\\Mail.Ru\\Mail.Ru_unknown.ico" - IDI_MAIL_RU_WEBAGENT ICON "icons\\Mail.Ru\\Mail.Ru_WebAgent.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_MSN.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_MSN.rc deleted file mode 100644 index 7259133b43..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_MSN.rc +++ /dev/null @@ -1,80 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################### MSN ###################################################### -//############################################################################################################## - IDI_AMSN ICON "icons\\MSN\\aMSN.ico" - IDI_MSN_MAC ICON "icons\\MSN\\MSN Mac.ico" - IDI_MSN_45 ICON "icons\\MSN\\MSN v4.5-v5.x.ico" - IDI_MSN_6 ICON "icons\\MSN\\MSN v6.x.ico" - IDI_MSN_7 ICON "icons\\MSN\\MSN v7.x.ico" - IDI_MSN_8 ICON "icons\\MSN\\MSN v8.x.ico" - IDI_MSN ICON "icons\\MSN\\MSN v8.x.ico" - IDI_WEBMESSENGER ICON "icons\\MSN\\WebMessenger.ico" - IDI_WLM_9 ICON "icons\\MSN\\wlm9.ico" - IDI_WLM_10 ICON "icons\\MSN\\WLM10-11.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Multiprotocols.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Multiprotocols.rc deleted file mode 100644 index 465358cb24..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Multiprotocols.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//#################################### Multi-protocol clients ################################################## -//############################################################################################################## - IDI_ADIUM ICON "icons\\multi-protocol\\Adium.ico" - IDI_AGILE ICON "icons\\multi-protocol\\AgileMobile.ico" - IDI_AYTTM ICON "icons\\multi-protocol\\Ayttm.ico" - IDI_BAYANICQ ICON "icons\\multi-protocol\\BayanICQ.ico" - IDI_BITLBEE ICON "icons\\multi-protocol\\BitlBee.ico" - IDI_CENTERICQ ICON "icons\\multi-protocol\\Centericq.ico" - IDI_CITRON ICON "icons\\multi-protocol\\Citronim.ico" - IDI_DIGSBY ICON "icons\\multi-protocol\\Digsby.ico" - IDI_EASYMESSAGE ICON "icons\\multi-protocol\\EasyMessage.ico" - IDI_EBUDDY ICON "icons\\multi-protocol\\eBuddy.ico" - IDI_EKG2 ICON "icons\\multi-protocol\\EKG2.ico" - IDI_FRING ICON "icons\\multi-protocol\\Fring.ico" - IDI_GAIM ICON "icons\\multi-protocol\\GAIM.ico" - IDI_ICHAT ICON "icons\\multi-protocol\\iChat.ico" - IDI_IMPLUS ICON "icons\\multi-protocol\\IM+.ico" - IDI_IM2 ICON "icons\\multi-protocol\\IM2.ico" - IDI_IMOIM ICON "icons\\multi-protocol\\imoim.ico" - IDI_INLUX ICON "icons\\multi-protocol\\Inlux Messenger.ico" - IDI_INSTANTBIRD ICON "icons\\multi-protocol\\Instantbird.ico" - IDI_JASMINEIM ICON "icons\\multi-protocol\\JasmineIM.ico" - IDI_JIMM ICON "icons\\multi-protocol\\Jimm.ico" - IDI_KOPETE ICON "icons\\multi-protocol\\Kopete.ico" - IDI_MCHAT ICON "icons\\multi-protocol\\mChat.ico" - IDI_MEEBO ICON "icons\\multi-protocol\\Meebo.ico" - IDI_MEETRO ICON "icons\\multi-protocol\\Meetro.ico" - IDI_NATSIEMENS ICON "icons\\multi-protocol\\NatSiemens.ico" - IDI_ONETEAM ICON "icons\\multi-protocol\\OneTeam.ico" - IDI_PALRINGO ICON "icons\\multi-protocol\\Palringo.ico" - IDI_PIDGIN ICON "icons\\multi-protocol\\Pidgin.ico" - IDI_PIGEON ICON "icons\\multi-protocol\\Pigeon.ico" - IDI_PRELUDE ICON "icons\\multi-protocol\\Prelude.ico" - IDI_PROTEUS ICON "icons\\multi-protocol\\Proteus.ico" - IDI_PYTHON ICON "icons\\multi-protocol\\Python.ico" - IDI_QIP_2012 ICON "icons\\multi-protocol\\QIP 2012.ico" - IDI_QIP_2010 ICON "icons\\multi-protocol\\QIP 2010.ico" - IDI_QIP_INFIUM ICON "icons\\multi-protocol\\QIP Infium.ico" - IDI_QIP_PDA ICON "icons\\multi-protocol\\QIP PDA.ico" - IDI_QNEXT ICON "icons\\multi-protocol\\Qnext.ico" - IDI_QUTIM ICON "icons\\multi-protocol\\qutim.ico" - IDI_SIM ICON "icons\\multi-protocol\\SIM.ico" - IDI_SIM_LINUX ICON "icons\\multi-protocol\\SIM_Linux.ico" - IDI_SIM_LINUX_OLD ICON "icons\\multi-protocol\\SIM_Linux_old.ico" - IDI_SIM_MACOSX ICON "icons\\multi-protocol\\SIM_MacOSX.ico" - IDI_SIM_MACOSX_OLD ICON "icons\\multi-protocol\\SIM_MacOSX_old.ico" - IDI_SIM_OLD ICON "icons\\multi-protocol\\SIM_other_old.ico" - IDI_SIM_WIN ICON "icons\\multi-protocol\\SIM_Win.ico" - IDI_SIM_WIN_OLD ICON "icons\\multi-protocol\\SIM_Win_old.ico" - IDI_TRILLIAN ICON "icons\\multi-protocol\\Trillian.ico" - IDI_TRILLIAN_ASTRA ICON "icons\\multi-protocol\\Trillian Astra.ico" - IDI_TRILLIAN_PRO ICON "icons\\multi-protocol\\Trillian Pro.ico" - IDI_UIM ICON "icons\\multi-protocol\\uIM.ico" - IDI_YAMIGO ICON "icons\\multi-protocol\\Yamigo.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Packs.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Packs.rc deleted file mode 100644 index baa6e55b35..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Packs.rc +++ /dev/null @@ -1,114 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//############################################## MirandaIM Packs ############################################### -//############################################################################################################## - IDI_MIRANDA_A0X ICON "icons\\overlays\\packs\\overlay_packs_a0x.ico" - IDI_MIRANDA_AF ICON "icons\\overlays\\packs\\overlay_packs_AF.ico" - IDI_MIRANDA_ALFAMAR ICON "icons\\overlays\\packs\\overlay_packs_alfamar.ico" - IDI_MIRANDA_AMATORY ICON "icons\\overlays\\packs\\overlay_packs_amatory.ico" - IDI_MIRANDA_BRI ICON "icons\\overlays\\packs\\overlay_packs_bri.ico" - IDI_MIRANDA_CAPPUCCINO ICON "icons\\overlays\\packs\\overlay_packs_Cappuccino.ico" - IDI_MIRANDA_DAR ICON "icons\\overlays\\packs\\overlay_packs_dar_veter.ico" - IDI_MIRANDA_DMIKOS ICON "icons\\overlays\\packs\\overlay_packs_Dmikos.ico" - IDI_MIRANDA_E33 ICON "icons\\overlays\\packs\\overlay_packs_e33.ico" - IDI_MIRANDA_FAITH ICON "icons\\overlays\\packs\\overlay_packs_FaithPack.ico" - IDI_MIRANDA_FINAL ICON "icons\\overlays\\packs\\overlay_packs_FinalPack.ico" - IDI_MIRANDA_FREIZE ICON "icons\\overlays\\packs\\overlay_packs_freize.ico" - IDI_MIRANDA_GHOST ICON "icons\\overlays\\packs\\overlay_packs_ghost.ico" - IDI_MIRANDA_HIEROS ICON "icons\\overlays\\packs\\overlay_packs_hieros.ico" - IDI_MIRANDA_KDL ICON "icons\\overlays\\packs\\overlay_packs_KDL.ico" - IDI_MIRANDA_KOLICH ICON "icons\\overlays\\packs\\overlay_packs_Kolich.ico" - IDI_MIRANDA_KUZZMAN ICON "icons\\overlays\\packs\\overlay_packs_Kuzzman.ico" - IDI_MIRANDA_LESTAT ICON "icons\\overlays\\packs\\overlay_packs_Lestat.ico" - IDI_MIRANDA_LEXSYS ICON "icons\\overlays\\packs\\overlay_packs_LexSys.ico" - IDI_MIRANDA_MATAES ICON "icons\\overlays\\packs\\overlay_packs_mataes.ico" - IDI_MIRANDA_MD ICON "icons\\overlays\\packs\\overlay_packs_md.ico" - IDI_MIRANDA_FR ICON "icons\\overlays\\packs\\overlay_packs_Miranda_FR.ico" - IDI_MIRANDA_ME ICON "icons\\overlays\\packs\\overlay_packs_Miranda_ME.ico" - IDI_MIRANDA_NATIVE ICON "icons\\overlays\\packs\\overlay_packs_native.ico" - IDI_MIRANDA_NEW_STYLE ICON "icons\\overlays\\packs\\overlay_packs_New_Style.ico" - IDI_MIRANDA_PILOT ICON "icons\\overlays\\packs\\overlay_packs_pilot.ico" - IDI_MIRANDA_RAZUNTER ICON "icons\\overlays\\packs\\overlay_packs_razunter.ico" - IDI_MIRANDA_ROBYER ICON "icons\\overlays\\packs\\overlay_packs_RobyerPack.ico" - IDI_MIRANDA_SE7VEN ICON "icons\\overlays\\packs\\overlay_packs_Se7ven.ico" - IDI_MIRANDA_SSS_MOD ICON "icons\\overlays\\packs\\overlay_packs_SSS.ico" - IDI_MIRANDA_STALKER ICON "icons\\overlays\\packs\\overlay_packs_Stalker.ico" - IDI_MIRANDA_TWEETY ICON "icons\\overlays\\packs\\overlay_packs_Tweety.ico" - IDI_MIRANDA_UMEDON ICON "icons\\overlays\\packs\\overlay_packs_Umedon.ico" - IDI_MIRANDA_VALERAVI ICON "icons\\overlays\\packs\\overlay_packs_ValeraVi.ico" - IDI_MIRANDA_WATCHER ICON "icons\\overlays\\packs\\overlay_packs_watcher.ico" - IDI_MIRANDA_SPELLHOWLER ICON "icons\\overlays\\packs\\overlay_packs_xSpellhowleRx.ico" - IDI_MIRANDA_YAOL ICON "icons\\overlays\\packs\\overlay_packs_Yaol.ico" - IDI_MIRANDA_ZELEBOBA ICON "icons\\overlays\\packs\\overlay_packs_zeleboba.ico" - IDI_MIRANDA_DEVIL ICON "icons\\overlays\\packs\\overlay_packs_666.ico" - IDI_MIRANDA_LENINPACK ICON "icons\\overlays\\packs\\overlay_packs_LeninPack.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_QQ.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_QQ.rc deleted file mode 100644 index 11eaa23c9c..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_QQ.rc +++ /dev/null @@ -1,96 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//############################################QQ############################################################### -//############################################################################################################## - IDI_MOBILEQQ ICON "icons\\QQ\\Mobile QQ.ico" - IDI_QQ ICON "icons\\QQ\\QQ.ico" - IDI_QQCONCEPT ICON "icons\\QQ\\QQ Concept.ico" - IDI_QQCRM ICON "icons\\QQ\\QQ CRM.ico" - IDI_QQINT ICON "icons\\QQ\\QQ International.ico" - IDI_QQSILVER ICON "icons\\QQ\\QQ Silverlight.ico" - IDI_TM ICON "icons\\QQ\\TM.ico" - IDI_TM2008 ICON "icons\\QQ\\TM 2008.ico" - IDI_WEBQQ ICON "icons\\QQ\\WebQQ.ico" - IDI_YAMQQ ICON "icons\\QQ\\Yam QQ.ico" - -//############################################################################################################## -//########################################### QQ overlays ###################################################### -//############################################################################################################## - IDI_CLIENT_QQ2000 ICON "icons\\QQ\\QQ 2000.ico" - IDI_CLIENT_QQ2004 ICON "icons\\QQ\\QQ 2004.ico" - IDI_CLIENT_TM1 ICON "icons\\QQ\\TM 1.ico" - IDI_CLIENT_TM2 ICON "icons\\QQ\\TM 2.ico" - IDI_CLIENT_TM_QQ2003 ICON "icons\\QQ\\TM 3 QQ 2003.ico" - IDI_CLIENT_TM_QQ2005 ICON "icons\\QQ\\TM QQ 2005.ico" - IDI_CLIENT_TM_QQ2006 ICON "icons\\QQ\\TM QQ 2006.ico" - IDI_CLIENT_TM_QQ2007 ICON "icons\\QQ\\TM QQ 2007.ico" - IDI_CLIENT_TM_QQ2008 ICON "icons\\QQ\\TM QQ 2008.ico" - IDI_CLIENT_TM_QQ2009 ICON "icons\\QQ\\TM QQ 2009.ico" - IDI_CLIENT_TM_QQ2010 ICON "icons\\QQ\\TM QQ 2010.ico" - IDI_CLIENT_TM_QQ2011 ICON "icons\\QQ\\TM QQ 2011.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_RSS.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_RSS.rc deleted file mode 100644 index 5f34b3cd7e..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_RSS.rc +++ /dev/null @@ -1,75 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//############################################RSS############################################################### -//############################################################################################################## - IDI_ATOM1 ICON "icons\\rss\\Atom 1.ico" - IDI_ATOM3 ICON "icons\\rss\\Atom 3.ico" - IDI_RSS09 ICON "icons\\rss\\RSS 0.9.ico" - IDI_RSS1 ICON "icons\\rss\\RSS 1.ico" - IDI_RSS2 ICON "icons\\rss\\RSS 2.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Skype.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Skype.rc deleted file mode 100644 index 46f7e1ec86..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Skype.rc +++ /dev/null @@ -1,73 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//############################################# Skype ########################################################## -//############################################################################################################## - IDI_SKYPE1 ICON "icons\\Skype\\Skype 1.x.ico" - IDI_SKYPE2 ICON "icons\\Skype\\Skype 2.x.ico" - IDI_SKYPE3 ICON "icons\\Skype\\Skype 3.x.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Tlen.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Tlen.rc deleted file mode 100644 index c7751d2602..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Tlen.rc +++ /dev/null @@ -1,78 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################### Tlen ##################################################### -//############################################################################################################## - IDI_TLEN ICON "icons\\Tlen\\Tlen.ico" - -//############################################################################################################## -//########################################### Tlen overlays #################################################### -//############################################################################################################## - IDI_CLIENT_TLEN5 ICON "icons\\Tlen\\Tlen 5.ico" - IDI_CLIENT_TLEN6 ICON "icons\\Tlen\\Tlen 6.ico" - IDI_CLIENT_TLEN7 ICON "icons\\Tlen\\Tlen 7.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_VoIP.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_VoIP.rc deleted file mode 100644 index 72377b5508..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_VoIP.rc +++ /dev/null @@ -1,73 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//######################################### VoIP clients ####################################################### -//############################################################################################################## - IDI_GIZMO ICON "icons\\VoIP\\Gizmo.ico" - IDI_WENGOPHONE ICON "icons\\VoIP\\WengoPhone.ico" - IDI_ZOEP ICON "icons\\VoIP\\Zoep.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Weather.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Weather.rc deleted file mode 100644 index cc2f04507a..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Weather.rc +++ /dev/null @@ -1,92 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//############################################# Weather ######################################################## -//############################################################################################################## - IDI_ACCU ICON "icons\\Weather\\accu.ico" - IDI_GISMETEO ICON "icons\\Weather\\gismeteo.ico" - IDI_INTELLI ICON "icons\\Weather\\intelli.ico" - IDI_METEOGID ICON "icons\\Weather\\meteogid.ico" - IDI_METEONOVOSTI ICON "icons\\Weather\\meteonovosti.ico" - IDI_NOAA ICON "icons\\Weather\\noaa.ico" - IDI_REALMETEO ICON "icons\\Weather\\realmeteo.ico" - IDI_UNDERGROUND ICON "icons\\Weather\\underground.ico" - IDI_WEATHER ICON "icons\\Weather\\weather.ico" - IDI_WEATHER_CN ICON "icons\\Weather\\weather_cn.ico" - IDI_WEATHERXML ICON "icons\\Weather\\weatherxml.ico" - IDI_WETTER ICON "icons\\Weather\\wetter.ico" - IDI_YWEATHER ICON "icons\\Weather\\yweather.ico" - -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//################################# Weather overlays ########################################################### -//############################################################################################################## - IDI_CLIENT_WEATHER ICON "icons\\Weather\\weather_over.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Yahoo.rc b/plugins/!Deprecated/FingerPrintModPlus/res/icons_Yahoo.rc deleted file mode 100644 index 8cb3a061a5..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/icons_Yahoo.rc +++ /dev/null @@ -1,93 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -// -// Generated from the TEXTINCLUDE 2 resource. -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#endif // Russian 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 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -//############################################################################################################## -//################################################ Yahoo ####################################################### -//############################################################################################################## - IDI_LIBYAHOO2 ICON "icons\\Yahoo\\libyahoo2.ico" - IDI_PINGBOX ICON "icons\\Yahoo\\PingBox.ico" - IDI_YAHOO ICON "icons\\Yahoo\\Yahoo.ico" - IDI_YAHOO5 ICON "icons\\Yahoo\\Yahoo 5.ico" - IDI_YAHOO6 ICON "icons\\Yahoo\\Yahoo 6.ico" - IDI_YAHOO7 ICON "icons\\Yahoo\\Yahoo 7.ico" - IDI_YAHOO8 ICON "icons\\Yahoo\\Yahoo 8.ico" - IDI_YAHOO10 ICON "icons\\Yahoo\\Yahoo 10.ico" - IDI_YAHOO_GO_MOBILE ICON "icons\\Yahoo\\Yahoo Go Mobile.ico" - -//############################################################################################################## -//################################################## Overlays ################################################## -//############################################################################################################## - -//############################################################################################################## -//################################# Yahoo overlays ############################################################# -//############################################################################################################## - IDI_CLIENT_YAHOO5 ICON "icons\\Yahoo\\Yahoo_5.ico" - IDI_CLIENT_YAHOO6 ICON "icons\\Yahoo\\Yahoo_6.ico" - IDI_CLIENT_YAHOO7 ICON "icons\\Yahoo\\Yahoo_7.ico" - IDI_CLIENT_YAHOO8 ICON "icons\\Yahoo\\Yahoo_8.ico" - IDI_CLIENT_YAHOO9 ICON "icons\\Yahoo\\Yahoo_9.ico" - IDI_CLIENT_YAHOO10 ICON "icons\\Yahoo\\Yahoo_10.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_IDENTIFY "# Finger Icons #" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/resource.rc b/plugins/!Deprecated/FingerPrintModPlus/res/resource.rc deleted file mode 100644 index 96ce67b6fb..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/resource.rc +++ /dev/null @@ -1,118 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -#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_DIALOG DIALOGEX 0, 0, 314, 254 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - GROUPBOX "Fingerprint icons",IDC_STATIC,0,0,156,238 - CONTROL "Overlay#1",IDC_OVERLAY1,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,13,144,10 - CONTROL "Overlay#2",IDC_OVERLAY2,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,23,144,10 - CONTROL "Overlay#3",IDC_OVERLAY3,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,33,144,10 - CONTROL "Show Version as Overlay#2",IDC_VERSION,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,43,144,10 - GROUPBOX "Showing groups",IDC_STATIC,158,0,155,238 - CONTROL "Miranda",IDC_GROUPMIRANDA,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,13,144,10 - CONTROL "Multi-Protocol",IDC_GROUPMULTI,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,23,144,10 - CONTROL "Pack overlays",IDC_GROUPPACKS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,33,144,10 - CONTROL "Others",IDC_GROUPOTHERS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,43,144,10 - CONTROL "AIM",IDC_GROUPAIM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,63,144,10 - CONTROL "Gadu-Gadu",IDC_GROUPGADU,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,73,144,10 - CONTROL "ICQ",IDC_GROUPICQ,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,83,144,10 - CONTROL "IRC",IDC_GROUPIRC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,93,144,10 - CONTROL "Jabber",IDC_GROUPJABBER,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,103,144,10 - CONTROL "Mail.ru Agent",IDC_GROUPMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,113,144,10 - CONTROL "MSN",IDC_GROUPMSN,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,123,144,10 - CONTROL "QQ",IDC_GROUPQQ,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,133,144,10 - CONTROL "RSS",IDC_GROUPRSS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,143,144,10 - CONTROL "Skype",IDC_GROUPSKYPE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,153,144,10 - CONTROL "Tlen",IDC_GROUPTLEN,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,163,144,10 - CONTROL "VoIP",IDC_GROUPVOIP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,173,144,10 - CONTROL "Weather",IDC_GROUPWEATHER,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,183,144,10 - CONTROL "Yahoo",IDC_GROUPYAHOO,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,164,193,144,10 - LTEXT "Note: Miranda NG will have to be restarted for changes to take effect.",IDC_OPTCHANGENOTE,0,240,302,10 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 307 - TOPMARGIN, 7 - BOTTOMMARGIN, 233 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/FingerPrintModPlus/res/version.rc b/plugins/!Deprecated/FingerPrintModPlus/res/version.rc deleted file mode 100644 index cfcefd0a61..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/res/version.rc +++ /dev/null @@ -1,64 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda NG - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - -#include -#include "..\src\version.h" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION __FILEVERSION_STRING - PRODUCTVERSION __FILEVERSION_STRING - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "041904b0" - BEGIN - VALUE "FileDescription", "Fingerprint Mod+ client version icons module" - VALUE "FileVersion", __VERSION_STRING - VALUE "InternalName", __INTERNAL_NAME_STRING - VALUE "LegalCopyright", __LEGAL_COPYRIGHT_STRING - VALUE "OriginalFilename", "fingerprint.dll" - VALUE "ProductName", "Fingerprint Mod+ client version icons module" - VALUE "ProductVersion", __VERSION_STRING - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x419, 1200 - END -END - diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/finger_groups.h b/plugins/!Deprecated/FingerPrintModPlus/src/finger_groups.h deleted file mode 100644 index 75c595a491..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/finger_groups.h +++ /dev/null @@ -1,94 +0,0 @@ -case MIRANDA_CASE: - if ( db_get_b(NULL, "Finger", "GroupMiranda", 1)) - return _T("Client Icons/Miranda"); - break; -case MULTIPROTOCOL_CASE: - if ( db_get_b(NULL, "Finger", "GroupMulti", 1)) - return _T("Client Icons/Multi-Protocol"); - break; -case ICQ_OFF_CASE: - if ( db_get_b(NULL, "Finger", "GroupIcq", 1)) - return _T("Client Icons/ICQ/Official"); - break; -case ICQ_UNOFF_CASE: - if ( db_get_b(NULL, "Finger", "GroupIcq", 1)) - return _T("Client Icons/ICQ/Unofficial"); - break; -case JABBER_CASE: - if ( db_get_b(NULL, "Finger", "GroupJabber", 1)) - return _T("Client Icons/Jabber"); - break; -case MSN_CASE: - if ( db_get_b(NULL, "Finger", "GroupMsn", 1)) - return _T("Client Icons/MSN"); - break; -case AIM_CASE: - if ( db_get_b(NULL, "Finger", "GroupAim", 1)) - return _T("Client Icons/AIM"); - break; -case YAHOO_CASE: - if ( db_get_b(NULL, "Finger", "GroupYahoo", 1)) - return _T("Client Icons/Yahoo"); - break; -case IRC_CASE: - if ( db_get_b(NULL, "Finger", "GroupIrc", 1)) - return _T("Client Icons/IRC"); - break; -case VOIP_CASE: - if ( db_get_b(NULL, "Finger", "GroupVoIP", 1)) - return _T("Client Icons/VoIP"); - break; -case SKYPE_CASE: - if ( db_get_b(NULL, "Finger", "GroupSkype", 1)) - return _T("Client Icons/Skype"); - break; -case GADU_CASE: - if ( db_get_b(NULL, "Finger", "GroupGadu", 1)) - return _T("Client Icons/Gadu-Gadu"); - break; -case PACKS_CASE: - if ( db_get_b(NULL, "Finger", "GroupPacks", 1)) - return _T("Client Icons/Miranda/Pack overlays"); - break; -case MRA_CASE: - if ( db_get_b(NULL, "Finger", "GroupMail", 1)) - return _T("Client Icons/Mail.Ru Agent"); - break; -case OVER1_CASE: - if ( db_get_b(NULL, "Finger", "GroupMiranda", 1)) - return _T("Client Icons/Miranda/Overlays#1"); - break; -case SECURITY_CASE: - if ( db_get_b(NULL, "Finger", "GroupOtherProtos", 1)) - return _T("Client Icons/Overlays/Security"); - break; -case OTHER_CASE: - if ( db_get_b(NULL, "Finger", "GroupOtherProtos", 1)) - return _T("Client Icons/Other"); - break; -case OVER2_CASE: - if ( db_get_b(NULL, "Finger", "GroupMiranda", 1)) - return _T("Client Icons/Miranda/Overlays#2"); - break; -case PLATFORM_CASE: - if ( db_get_b(NULL, "Finger", "GroupOtherProtos", 1)) - return _T("Client Icons/Overlays/Platform"); - break; -case WEATHER_CASE: - if ( db_get_b(NULL, "Finger", "GroupWeather", 1)) - return _T("Client Icons/Weather"); - break; -case RSS_CASE: - if ( db_get_b(NULL, "Finger", "GroupRSS", 1)) - return _T("Client Icons/RSS"); - break; -case QQ_CASE: - if ( db_get_b(NULL, "Finger", "GroupQQ", 1)) - return _T("Client Icons/QQ"); - break; -case TLEN_CASE: - if ( db_get_b(NULL, "Finger", "GroupTlen", 1)) - return _T("Client Icons/Tlen"); - break; -default: - return _T("Client Icons"); \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/fingerprint.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/fingerprint.cpp deleted file mode 100644 index 0a628b23bd..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/fingerprint.cpp +++ /dev/null @@ -1,1102 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -//Start of header -#include "global.h" - -static UINT g_LPCodePage; -static TCHAR g_szSkinLib[MAX_PATH]; -static HANDLE hExtraIcon = NULL; -static HANDLE hFolderChanged = NULL, hIconFolder = NULL; - -static FOUNDINFO* fiList = NULL; -static int nFICount = 0; - -/* -* Prepare -* prepares upperstring masks and registers them in IcoLib -*/ - -static TCHAR* getSectionName(int flag) -{ - switch(flag) - { - #include "finger_groups.h" - } - return NULL; -} - -void FASTCALL Prepare(KN_FP_MASK* mask, bool bEnable) -{ - mask->szMaskUpper = NULL; - - if (mask->hIcolibItem) - Skin_RemoveIcon(mask->szIconName); - mask->hIcolibItem = NULL; - - if (!mask->szMask || !mask->szIconFileName || !bEnable) - return; - - size_t iMaskLen = _tcslen(mask->szMask) + 1; - LPTSTR pszNewMask = (LPTSTR)HeapAlloc(hHeap, HEAP_NO_SERIALIZE, iMaskLen * sizeof(TCHAR)); - _tcscpy_s(pszNewMask, iMaskLen, mask->szMask); - _tcsupr_s(pszNewMask, iMaskLen); - mask->szMaskUpper = pszNewMask; - - TCHAR destfile[MAX_PATH]; - if (*mask->szIconFileName == 0) - GetModuleFileName(g_hInst, destfile, MAX_PATH); - else { - mir_sntprintf(destfile, SIZEOF(destfile), _T("%s\\%s.dll"), g_szSkinLib, mask->szIconFileName); - - struct _stat64i32 stFileInfo; - if ( _tstat(destfile, &stFileInfo) == -1) - return; - } - - LPTSTR SectName = getSectionName(mask->iSectionFlag); - if (SectName == NULL) - return; - - SKINICONDESC sid = { sizeof(sid) }; - sid.flags = SIDF_ALL_TCHAR; - sid.ptszSection = SectName; - sid.pszName = mask->szIconName; - sid.ptszDescription = mask->szClientDescription; - sid.ptszDefaultFile = destfile; - sid.iDefaultIndex = -mask->iIconIndex; - sid.cx = sid.cy = 16; - mask->hIcolibItem = Skin_AddIcon(&sid); -} - -/* -* Register icons -*/ - -void RegisterIcons() -{ - // prepare masks - int i; - - if (hHeap) - HeapDestroy(hHeap); - hHeap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0); - - for (i=0; i < DEFAULT_KN_FP_MASK_COUNT; i++) - Prepare(&def_kn_fp_mask[i], true); - - bool bEnable = db_get_b(NULL, "Finger", "Overlay1", 1) != 0; - for (i=0; i < DEFAULT_KN_FP_OVERLAYS_COUNT; i++) - Prepare(&def_kn_fp_overlays_mask[i], bEnable); - - bEnable = db_get_b(NULL, "Finger", "Overlay2", 1) != 0; - if ( db_get_b(NULL, "Finger", "ShowVersion", 0)) { - for (i = 0; i < DEFAULT_KN_FP_OVERLAYS2_COUNT; i++) - Prepare(&def_kn_fp_overlays2_mask[i], bEnable); - } - else { - for (i=0; i < DEFAULT_KN_FP_OVERLAYS2_NO_VER_COUNT; i++) - Prepare(&def_kn_fp_overlays2_mask[i], bEnable); - for (; i < DEFAULT_KN_FP_OVERLAYS2_COUNT; i++) - Prepare(&def_kn_fp_overlays2_mask[i], false); - } - - bEnable = db_get_b(NULL, "Finger", "Overlay3", 1) != 0; - for (i=0; i < DEFAULT_KN_FP_OVERLAYS3_COUNT; i++) - Prepare(&def_kn_fp_overlays3_mask[i], bEnable); -} - -/* -* OnModulesLoaded -* Hook necessary events here -*/ -int OnModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - g_LPCodePage = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); - - //Hook necessary events - HookEvent(ME_SKIN2_ICONSCHANGED, OnIconsChanged); - HookEvent(ME_DB_CONTACT_SETTINGCHANGED, OnContactSettingChanged); - HookEvent(ME_OPT_INITIALISE, OnOptInitialise); - - hExtraIcon = ExtraIcon_Register("Client","Fingerprint","client_Miranda_Unknown", - OnExtraIconListRebuild,OnExtraImageApply,OnExtraIconClick); - - if (ServiceExists(MS_FOLDERS_REGISTER_PATH)) { - hIconFolder = FoldersRegisterCustomPathT("Fingerprint", "Icons", _T(MIRANDA_PATH) _T("\\") DEFAULT_SKIN_FOLDER); - FoldersGetCustomPathT(hIconFolder, g_szSkinLib, SIZEOF(g_szSkinLib), _T("")); - } - else CallService(MS_UTILS_PATHTOABSOLUTET, (WPARAM)DEFAULT_SKIN_FOLDER, (LPARAM)g_szSkinLib); - - RegisterIcons(); - return 0; -} - -/* ApplyFingerprintImage -* 1)Try to find appropriate mask -* 2)Register icon in extraimage list if not yet registered (EMPTY_EXTRA_ICON) -* 3)Set ExtraImage for contact -*/ - -int FASTCALL ApplyFingerprintImage(HANDLE hContact, LPTSTR szMirVer) -{ - if (hContact == NULL) - return 0; - - HANDLE hImage = INVALID_HANDLE_VALUE; - if (szMirVer) - hImage = GetIconIndexFromFI(szMirVer); - - ExtraIcon_SetIcon(hExtraIcon, hContact, hImage); - return 0; -} - -int OnExtraIconClick(WPARAM wParam, LPARAM lParam, LPARAM) -{ - CallService(MS_USERINFO_SHOWDIALOG, wParam, NULL); - return 0; -} - -/* -* OnExtraIconListRebuild -* Set all registered indexes in array to EMPTY_EXTRA_ICON (unregistered icon) -*/ -int OnExtraIconListRebuild(WPARAM wParam, LPARAM lParam) -{ - ClearFI(); - return 0; -} - -/* -* OnIconsChanged -*/ -int OnIconsChanged(WPARAM wParam, LPARAM lParam) -{ - ClearFI(); - return 0; -} - -/* -* OnExtraImageApply -* Try to get MirVer value from db for contact and if success calls ApplyFingerprintImage -*/ - -int OnExtraImageApply(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if (hContact == NULL) - return 0; - - char *szProto = GetContactProto((HANDLE)wParam); - if (szProto != NULL) { - DBVARIANT dbvMirVer = { 0 }; - - if (!DBGetContactSettingTString(hContact, szProto, "MirVer", &dbvMirVer)) { - ApplyFingerprintImage(hContact, dbvMirVer.ptszVal); - DBFreeVariant(&dbvMirVer); - } - else ApplyFingerprintImage(hContact, NULL); - } - else ApplyFingerprintImage(hContact, NULL); - return 0; -} - -/* -* OnContactSettingChanged -* if contact settings changed apply new image or remove it -*/ -int OnContactSettingChanged(WPARAM wParam, LPARAM lParam) -{ - if ((HANDLE)wParam == NULL) - return 0; - - DBCONTACTWRITESETTING* cws = (DBCONTACTWRITESETTING*)lParam; - if (cws && cws->szSetting && !strcmp(cws->szSetting, "MirVer")) { - if (cws->value.type == DBVT_UTF8) { - LPWSTR wszVal = NULL; - int iValLen = MultiByteToWideChar(CP_UTF8, 0, cws->value.pszVal, -1, NULL, 0); - if (iValLen > 0) { - wszVal = (LPWSTR)mir_alloc(iValLen * sizeof(WCHAR)); - MultiByteToWideChar(CP_UTF8, 0, cws->value.pszVal, -1, wszVal, iValLen); - } - ApplyFingerprintImage((HANDLE)wParam, wszVal); - mir_free(wszVal); - } - else if (cws->value.type == DBVT_ASCIIZ) { - LPWSTR wszVal = NULL; - int iValLen = MultiByteToWideChar(g_LPCodePage, 0, cws->value.pszVal, -1, NULL, 0); - if (iValLen > 0) { - wszVal = (LPWSTR)mir_alloc(iValLen * sizeof(WCHAR)); - MultiByteToWideChar(g_LPCodePage, 0, cws->value.pszVal, -1, wszVal, iValLen); - } - ApplyFingerprintImage((HANDLE)wParam, wszVal); - mir_free(wszVal); - } - else if (cws->value.type == DBVT_WCHAR) { - ApplyFingerprintImage((HANDLE)wParam, cws->value.pwszVal); - } - else ApplyFingerprintImage((HANDLE)wParam, NULL); - } - return 0; -} - -/* -* WildCompareA -* Compare 'name' string with 'mask' strings. -* Masks can contain '*' or '?' wild symbols -* Asterics '*' symbol covers 'empty' symbol too e.g WildCompare("Tst","T*st*"), returns TRUE -* In order to handle situation 'at least one any sybol' use "?*" combination: -* e.g WildCompare("Tst","T?*st*"), returns FALSE, but both WildCompare("Test","T?*st*") and -* WildCompare("Teeest","T?*st*") return TRUE. -* -* Function is case sensitive! so convert input or modify func to use _qtoupper() -* -* Mask can contain several submasks. In this case each submask (including first) -* should start from '|' e.g: "|first*submask|second*mask". -* -* Dec 25, 2006 by FYR: -* Added Exception to masks: the mask "|^mask3|mask2|mask1" means: -* if NOT according to mask 3 AND (mask1 OR mask2) -* EXCEPTION should be BEFORE main mask: -* IF Exception match - the comparing stops as FALSE -* IF Exception does not match - comparing continue -* IF Mask match - comparing stops as TRUE -* IF Mask does not not match comparing continue -*/ -BOOL FASTCALL WildCompareA(LPSTR szName, LPSTR szMask) -{ - if (*szMask != '|') - return WildCompareProcA(szName, szMask); - - size_t s = 1, e = 1; - LPSTR szTemp = (LPSTR)_alloca(strlen(szMask) * sizeof(CHAR) + sizeof(CHAR)); - BOOL bExcept; - - while(szMask[e] != '\0') { - s = e; - while(szMask[e] != '\0' && szMask[e] != '|') e++; - - // exception mask - bExcept = (*(szMask + s) == '^'); - if (bExcept) s++; - - memcpy(szTemp, szMask + s, (e - s) * sizeof(CHAR)); - szTemp[e - s] = '\0'; - - if (WildCompareProcA(szName, szTemp)) - return !bExcept; - - if (szMask[e] != '\0') - e++; - else - return FALSE; - } - return FALSE; -} - -/* -* WildCompareW -* Compare 'name' string with 'mask' strings. -* Masks can contain '*' or '?' wild symbols -* Asterics '*' symbol covers 'empty' symbol too e.g WildCompare("Tst","T*st*"), returns TRUE -* In order to handle situation 'at least one any sybol' use "?*" combination: -* e.g WildCompare("Tst","T?*st*"), returns FALSE, but both WildCompare("Test","T?*st*") and -* WildCompare("Teeest","T?*st*") return TRUE. -* -* Function is case sensitive! so convert input or modify func to use _qtoupper() -* -* Mask can contain several submasks. In this case each submask (including first) -* should start from '|' e.g: "|first*submask|second*mask". -* -* Dec 25, 2006 by FYR: -* Added Exception to masks: the mask "|^mask3|mask2|mask1" means: -* if NOT according to mask 3 AND (mask1 OR mask2) -* EXCEPTION should be BEFORE main mask: -* IF Exception match - the comparing stops as FALSE -* IF Exception does not match - comparing continue -* IF Mask match - comparing stops as TRUE -* IF Mask does not not match comparing continue -*/ -BOOL FASTCALL WildCompareW(LPWSTR wszName, LPWSTR wszMask) -{ - if (wszMask == NULL) - return NULL; - - if (*wszMask != L'|') - return WildCompareProcW(wszName, wszMask); - - size_t s = 1, e = 1; - LPWSTR wszTemp = (LPWSTR)_alloca(wcslen(wszMask) * sizeof(WCHAR) + sizeof(WCHAR)); - BOOL bExcept; - - while(wszMask[e] != L'\0') - { - s = e; - while(wszMask[e] != L'\0' && wszMask[e] != L'|') e++; - - // exception mask - bExcept = (*(wszMask + s) == L'^'); - if (bExcept) s++; - - memcpy(wszTemp, wszMask + s, (e - s) * sizeof(WCHAR)); - wszTemp[e - s] = L'\0'; - - if (WildCompareProcW(wszName, wszTemp)) - return !bExcept; - - if (wszMask[e] != L'\0') - e++; - else - return FALSE; - } - return FALSE; -} - -BOOL __inline WildCompareProcA(LPSTR szName, LPSTR szMask) -{ - LPSTR szLast = NULL; - for (;; szMask++, szName++) - { - if (*szMask != '?' && *szMask != *szName) break; - if (*szName == '\0') return ((BOOL)!*szMask); - } - if (*szMask != '*') return FALSE; - for (;; szMask++, szName++) - { - while(*szMask == '*') - { - szLast = szMask++; - if (*szMask == '\0') return ((BOOL)!*szMask); /* true */ - } - if (*szName == '\0') return ((BOOL)!*szMask); /* *mask == EOS */ - if (*szMask != '?' && *szMask != *szName && szLast != NULL) - { - szName -= (size_t)(szMask - szLast) - 1; - szMask = szLast; - } - } -} - -BOOL __inline WildCompareProcW(LPWSTR wszName, LPWSTR wszMask) -{ - LPWSTR wszLast = NULL; - for (;; wszMask++, wszName++) - { - if (*wszMask != L'?' && *wszMask != *wszName) break; - if (*wszName == L'\0') return ((BOOL)!*wszMask); - } - if (*wszMask != L'*') return FALSE; - for (;; wszMask++, wszName++) - { - while(*wszMask == L'*') - { - wszLast = wszMask++; - if (*wszMask == L'\0') return ((BOOL)!*wszMask); /* true */ - } - if (*wszName == L'\0') return ((BOOL)!*wszMask); /* *mask == EOS */ - if (*wszMask != L'?' && *wszMask != *wszName && wszLast != NULL) - { - wszName -= (size_t)(wszMask - wszLast) - 1; - wszMask = wszLast; - } - } -} - -static void MatchMasks(TCHAR* szMirVer, short *base, short *overlay,short *overlay2,short *overlay3) -{ - short i = 0, j = -1, k = -1, n = -1; - - for (i=0; i < DEFAULT_KN_FP_MASK_COUNT; i++) { - KN_FP_MASK& p = def_kn_fp_mask[i]; - if (p.hIcolibItem == NULL) - continue; - - if ( !WildCompareW(szMirVer, p.szMaskUpper)) - continue; - - if (p.szIconFileName != _T("")) { - TCHAR destfile[MAX_PATH]; - mir_sntprintf(destfile, SIZEOF(destfile), _T("%s\\%s.dll"), g_szSkinLib, p.szIconFileName); - struct _stat64i32 stFileInfo; - - if (_tstat(destfile, &stFileInfo) == -1) - i = NOTFOUND_MASK_NUMBER; - } - break; - } - - if (!def_kn_fp_mask[i].fNotUseOverlay && i < DEFAULT_KN_FP_MASK_COUNT) { - for (j = 0; j < DEFAULT_KN_FP_OVERLAYS_COUNT; j++) { - KN_FP_MASK& p = def_kn_fp_overlays_mask[j]; - if (p.hIcolibItem == NULL) - continue; - - if ( !WildCompare(szMirVer, p.szMaskUpper)) - continue; - - if (p.szIconFileName != _T("ClientIcons_Packs")) - break; - - TCHAR destfile[MAX_PATH]; - mir_sntprintf(destfile, SIZEOF(destfile), _T("%s\\%s.dll"), g_szSkinLib, p.szIconFileName); - - struct _stat64i32 stFileInfo; - if ( _tstat(destfile, &stFileInfo) != -1) - break; - } - - for (k = 0; k < DEFAULT_KN_FP_OVERLAYS2_COUNT; k++) { - KN_FP_MASK& p = def_kn_fp_overlays2_mask[k]; - if (p.hIcolibItem == NULL) - continue; - - if ( WildCompareW(szMirVer, p.szMaskUpper)) - break; - } - - for (n = 0; n < DEFAULT_KN_FP_OVERLAYS3_COUNT; n++) { - KN_FP_MASK& p = def_kn_fp_overlays3_mask[n]; - if (p.hIcolibItem == NULL) - continue; - - if ( WildCompareW(szMirVer, p.szMaskUpper)) - break; - } - } - - *base = (i < DEFAULT_KN_FP_MASK_COUNT) ? i : -1; - *overlay = (j < DEFAULT_KN_FP_OVERLAYS_COUNT) ? j : -1; - *overlay2 = (k < DEFAULT_KN_FP_OVERLAYS2_COUNT) ? k : -1; - *overlay3 = (n < DEFAULT_KN_FP_OVERLAYS3_COUNT) ? n : -1; -} - -/* GetIconsIndexesA -* Retrieves Icons indexes by Mirver -*/ - -void FASTCALL GetIconsIndexesA(LPSTR szMirVer, short *base, short *overlay,short *overlay2,short *overlay3) -{ - if (strcmp(szMirVer, "?") == 0) { - *base = UNKNOWN_MASK_NUMBER; - *overlay = -1; - *overlay2 = -1; - *overlay3 = -1; - return; - } - - LPTSTR tszMirVerUp = mir_a2t(szMirVer); - _tcsupr(tszMirVerUp); - MatchMasks(tszMirVerUp, base, overlay, overlay2, overlay3); - mir_free(tszMirVerUp); -} - -/* GetIconsIndexesW -* Retrieves Icons indexes by Mirver -*/ - -void FASTCALL GetIconsIndexesW(LPWSTR wszMirVer, short *base, short *overlay,short *overlay2,short *overlay3) -{ - if (wcscmp(wszMirVer, L"?") == 0) - { - *base = UNKNOWN_MASK_NUMBER; - *overlay = -1; - *overlay2 = -1; - *overlay3 = -1; - return; - } - - LPWSTR wszMirVerUp = NEWWSTR_ALLOCA(wszMirVer); - _wcsupr(wszMirVerUp); - MatchMasks(wszMirVerUp, base, overlay, overlay2, overlay3); -} - -/* -* CreateIconFromIndexes -* returns hIcon of joined icon by given indexes -*/ - -HICON FASTCALL CreateIconFromIndexes(short base, short overlay, short overlay2, short overlay3) -{ - HICON hIcon = NULL; // returned HICON - HICON hTmp = NULL; - HICON icMain = NULL; - HICON icOverlay = NULL; - HICON icOverlay2 = NULL; - HICON icOverlay3 = NULL; - - KN_FP_MASK* mainMask = &(def_kn_fp_mask[base]); - icMain = Skin_GetIconByHandle(mainMask->hIcolibItem); - - if (icMain) { - KN_FP_MASK* overlayMask = (overlay != -1) ? &(def_kn_fp_overlays_mask[overlay]) : NULL; - KN_FP_MASK* overlay2Mask = (overlay2 != -1) ? &(def_kn_fp_overlays2_mask[overlay2]) : NULL; - KN_FP_MASK* overlay3Mask = (overlay3 != -1) ? &(def_kn_fp_overlays3_mask[overlay3]) : NULL; - icOverlay = (overlayMask == NULL) ? NULL : Skin_GetIconByHandle(overlayMask->hIcolibItem); - icOverlay2 = (overlay2Mask == NULL) ? NULL : Skin_GetIconByHandle(overlay2Mask->hIcolibItem); - icOverlay3 = (overlay3Mask == NULL) ? NULL : Skin_GetIconByHandle(overlay3Mask->hIcolibItem); - - hIcon = icMain; - - if (overlayMask) { - hIcon = CreateJoinedIcon(hIcon, icOverlay); - hTmp = hIcon; - } - - if (overlay2Mask) { - hIcon = CreateJoinedIcon(hIcon, icOverlay2); - if (hTmp) DestroyIcon(hTmp); - hTmp = hIcon; - } - - if (overlay3Mask) { - hIcon = CreateJoinedIcon(hIcon, icOverlay3); - if (hTmp) DestroyIcon(hTmp); - } - } - - if (hIcon == icMain) - hIcon = CopyIcon(icMain); - - Skin_ReleaseIcon(icMain); - Skin_ReleaseIcon(icOverlay); - Skin_ReleaseIcon(icOverlay2); - Skin_ReleaseIcon(icOverlay3); - return hIcon; -} - -/* -* ServiceGetClientIconA -* MS_FP_GETCLIENTICON service implementation. -* wParam - char * MirVer value to get client for. -* lParam - int noCopy - if wParam is equal to "1" will return icon handler without copiing icon. -* ICON IS ALWAYS COPIED!!! -*/ - -INT_PTR ServiceGetClientIconA(WPARAM wParam, LPARAM lParam) -{ - LPSTR szMirVer = (LPSTR)wParam; // MirVer value to get client for. - if (szMirVer == NULL) - return 0; - - HICON hIcon = NULL; // returned HICON - int NoCopy = (int)lParam; // noCopy - short base, overlay, overlay2, overlay3; - - GetIconsIndexesA(szMirVer, &base, &overlay, &overlay2, &overlay3); - if (base != -1) - hIcon = CreateIconFromIndexes(base, overlay, overlay2, overlay3); - return (INT_PTR)hIcon; -} - -/* - * ServiceSameClientA - * MS_FP_SAMECLIENTS service implementation. - * wParam - char * first MirVer value - * lParam - char * second MirVer value - * return pointer to char string - client desription (do not destroy) if clients are same - */ - -INT_PTR ServiceSameClientsA(WPARAM wParam, LPARAM lParam) -{ - LPSTR szMirVerFirst = (LPSTR)wParam; // MirVer value to get client for. - LPSTR szMirVerSecond = (LPSTR)lParam; // MirVer value to get client for. - int firstIndex, secondIndex; - BOOL Result = FALSE; - - firstIndex = secondIndex = 0; - if (!szMirVerFirst || !szMirVerSecond) - return (INT_PTR)NULL; //one of its is not null - - { - LPTSTR tszMirVerFirstUp, tszMirVerSecondUp; - int iMirVerFirstUpLen, iMirVerSecondUpLen; - - iMirVerFirstUpLen = MultiByteToWideChar(g_LPCodePage, 0, szMirVerFirst, -1, NULL, 0); - iMirVerSecondUpLen = MultiByteToWideChar(g_LPCodePage, 0, szMirVerSecond, -1, NULL, 0); - - tszMirVerFirstUp = (LPTSTR)mir_alloc(iMirVerFirstUpLen * sizeof(TCHAR)); - tszMirVerSecondUp = (LPTSTR)mir_alloc(iMirVerSecondUpLen * sizeof(TCHAR)); - - MultiByteToWideChar(g_LPCodePage, 0, szMirVerFirst, -1, tszMirVerFirstUp, iMirVerFirstUpLen); - MultiByteToWideChar(g_LPCodePage, 0, szMirVerSecond, -1, tszMirVerSecondUp, iMirVerSecondUpLen); - - _tcsupr_s(tszMirVerFirstUp, iMirVerFirstUpLen); - _tcsupr_s(tszMirVerSecondUp, iMirVerSecondUpLen); - - if (_tcscmp(tszMirVerFirstUp, _T("?")) == 0) - firstIndex = UNKNOWN_MASK_NUMBER; - else - while(firstIndex < DEFAULT_KN_FP_MASK_COUNT) { - if (WildCompare(tszMirVerFirstUp, def_kn_fp_mask[firstIndex].szMaskUpper)) - break; - firstIndex++; - } - - if (_tcscmp(tszMirVerSecondUp, _T("?")) == 0) - secondIndex = UNKNOWN_MASK_NUMBER; - else - while(secondIndex < DEFAULT_KN_FP_MASK_COUNT) { - if (WildCompare(tszMirVerSecondUp, def_kn_fp_mask[secondIndex].szMaskUpper)) - break; - secondIndex++; - } - - mir_free(tszMirVerFirstUp); - mir_free(tszMirVerSecondUp); - - if (firstIndex == secondIndex && firstIndex < DEFAULT_KN_FP_MASK_COUNT) - { - int iClientDescriptionLen = WideCharToMultiByte(g_LPCodePage, 0, def_kn_fp_mask[firstIndex].szClientDescription, -1, NULL, 0, NULL, NULL); - if (iClientDescriptionLen > 0) - g_szClientDescription = (LPSTR)mir_realloc(g_szClientDescription, iClientDescriptionLen * sizeof(CHAR)); - else - return (INT_PTR)NULL; - - WideCharToMultiByte(g_LPCodePage, 0, def_kn_fp_mask[firstIndex].szClientDescription, -1, g_szClientDescription, iClientDescriptionLen, NULL, NULL); - return (INT_PTR)g_szClientDescription; - - } - } - return (INT_PTR)NULL; -} - -/* -* ServiceGetClientIconW -* MS_FP_GETCLIENTICONW service implementation. -* wParam - LPWSTR MirVer value to get client for. -* lParam - int noCopy - if wParam is equal to "1" will return icon handler without copiing icon. -* ICON IS ALWAYS COPIED!!! -*/ - -INT_PTR ServiceGetClientIconW(WPARAM wParam, LPARAM lParam) -{ - LPWSTR wszMirVer = (LPWSTR)wParam; // MirVer value to get client for. - if (wszMirVer == NULL) - return 0; - - short base, overlay, overlay2, overlay3; - GetIconsIndexesW(wszMirVer, &base, &overlay, &overlay2, &overlay3); - - HICON hIcon = NULL; // returned HICON - if (base != -1) - hIcon = CreateIconFromIndexes(base, overlay, overlay2, overlay3); - - return (INT_PTR)hIcon; -} - -/* - * ServiceSameClientW - * MS_FP_SAMECLIENTSW service implementation. - * wParam - LPWSTR first MirVer value - * lParam - LPWSTR second MirVer value - * return pointer to char string - client desription (do not destroy) if clients are same - */ -INT_PTR ServiceSameClientsW(WPARAM wParam, LPARAM lParam) -{ - LPWSTR wszMirVerFirst = (LPWSTR)wParam; // MirVer value to get client for. - LPWSTR wszMirVerSecond = (LPWSTR)lParam; // MirVer value to get client for. - int firstIndex, secondIndex; - BOOL Result = FALSE; - - firstIndex = secondIndex = 0; - if (!wszMirVerFirst || !wszMirVerSecond) return (INT_PTR)NULL; //one of its is not null - - { - LPWSTR wszMirVerFirstUp, wszMirVerSecondUp; - size_t iMirVerFirstUpLen, iMirVerSecondUpLen; - - iMirVerFirstUpLen = wcslen(wszMirVerFirst) + 1; - iMirVerSecondUpLen = wcslen(wszMirVerSecond) + 1; - - wszMirVerFirstUp = (LPWSTR)mir_alloc(iMirVerFirstUpLen * sizeof(WCHAR)); - wszMirVerSecondUp = (LPWSTR)mir_alloc(iMirVerSecondUpLen * sizeof(WCHAR)); - - wcscpy_s(wszMirVerFirstUp, iMirVerFirstUpLen, wszMirVerFirst); - wcscpy_s(wszMirVerSecondUp, iMirVerSecondUpLen, wszMirVerSecond); - - _wcsupr_s(wszMirVerFirstUp, iMirVerFirstUpLen); - _wcsupr_s(wszMirVerSecondUp, iMirVerSecondUpLen); - - if (wcscmp(wszMirVerFirstUp, L"?") == 0) - firstIndex = UNKNOWN_MASK_NUMBER; - else - while(firstIndex < DEFAULT_KN_FP_MASK_COUNT) { - if (WildCompareW(wszMirVerFirstUp, def_kn_fp_mask[firstIndex].szMaskUpper)) - break; - firstIndex++; - } - - if (wcscmp(wszMirVerSecondUp, L"?") == 0) - secondIndex = UNKNOWN_MASK_NUMBER; - else - while(secondIndex < DEFAULT_KN_FP_MASK_COUNT) { - if (WildCompareW(wszMirVerSecondUp, def_kn_fp_mask[secondIndex].szMaskUpper)) - break; - secondIndex++; - } - - mir_free(wszMirVerFirstUp); - mir_free(wszMirVerSecondUp); - - if (firstIndex == secondIndex && firstIndex < DEFAULT_KN_FP_MASK_COUNT) - { - return (INT_PTR)def_kn_fp_mask[firstIndex].szClientDescription; - } - } - return (INT_PTR)NULL; -} - -/****************************************************************************** - * Futher routines is for creating joined 'overlay' icons. - ******************************************************************************/ - - /* - * CreateBitmap32 - Create DIB 32 bitmap with sizes cx*cy - */ - -HBITMAP __inline CreateBitmap32(int cx, int cy) -{ - return CreateBitmap32Point(cx, cy, NULL); -} - - /* - * CreateBitmap32 - Create DIB 32 bitmap with sizes cx*cy and put reference - * to new bitmap pixel image memory area to void ** bits - */ -HBITMAP FASTCALL CreateBitmap32Point(int cx, int cy, LPVOID* bits) -{ - BITMAPINFO bmpi = { 0 }; - LPVOID ptPixels = NULL; - HBITMAP DirectBitmap; - - if (cx < 0 || cy < 0) return NULL; - - bmpi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bmpi.bmiHeader.biWidth = cx; - bmpi.bmiHeader.biHeight = cy; - bmpi.bmiHeader.biPlanes = 1; -// bmpi.bmiHeader.biCompression = BI_RGB; - bmpi.bmiHeader.biBitCount = 32; - - DirectBitmap = CreateDIBSection(NULL, - &bmpi, - DIB_RGB_COLORS, - &ptPixels, - NULL, 0); - GdiFlush(); - if (ptPixels) memset(ptPixels, 0, cx * cy * 4); - if (bits != NULL) *bits = ptPixels; - - return DirectBitmap; -} - -/* -* checkHasAlfa - checks if image has at least one BYTE in alpha channel -* that is not a 0. (is image real 32 bit or just 24 bit) -*/ -BOOL FASTCALL checkHasAlfa(LPBYTE from, int width, int height) -{ - LPDWORD pt = (LPDWORD)from; - LPDWORD lim = pt + width * height; - while(pt < lim) - { - if (*pt & 0xFF000000) - return TRUE; - pt++; - } - - return FALSE; -} - -/* -* checkMaskUsed - checks if mask image has at least one that is not a 0. -* Not sure is it required or not -*/ -BOOL FASTCALL checkMaskUsed(LPBYTE from) -{ - int i; - for (i=0; i < 16 * 16 / 8; i++) - { - if (from[i] != 0) return TRUE; - } - return FALSE; -} - -/* -* GetMaskBit - return value of apropriate mask bit in line at x position -*/ -BOOL __inline GetMaskBit(LPBYTE line, int x) -{ - return ((*(line + (x >> 3))) & (0x01 << (7 - (x & 0x07)))) != 0; -} - -/* -* blend - alpha blend ARGB values of 2 pixels. X1 - underlaying, -* X2 - overlaying points. -*/ -DWORD FASTCALL blend(DWORD X1,DWORD X2) -{ - RGBA* q1 = (RGBA*)&X1; - RGBA* q2 = (RGBA*)&X2; - BYTE a_1 = ~q1->a; - BYTE a_2 = ~q2->a; - WORD am = q1->a * a_2; - - WORD ar = q1->a + ((a_1 * q2->a) / 255); - // if a2 more than 0 than result should be more - // or equal (if a1==0) to a2, else in combination - // with mask we can get here black points - - ar = (q2->a > ar) ? q2->a : ar; - - if (ar == 0) return 0; - - { - WORD arm = ar * 255; - WORD rr = ((q1->r * am + q2->r * q2->a * 255)) / arm; - WORD gr = ((q1->g * am + q2->g * q2->a * 255)) / arm; - WORD br = ((q1->b * am + q2->b * q2->a * 255)) / arm; - return (ar << 24) | (rr << 16) | (gr << 8) | br; - } -} - -/* -* CreateJoinedIcon - creates new icon by drawing hTop over hBottom. -*/ -HICON FASTCALL CreateJoinedIcon(HICON hBottom, HICON hTop) -{ - BOOL drawn = FALSE; - HDC tempDC, tempDC2, tempDC3; - HICON res = NULL; - HBITMAP oImage,nImage; - HBITMAP nMask, hbm, obmp, obmp2; - LPBYTE ptPixels = NULL; - ICONINFO iNew = { 0 }; - BYTE p[32] = { 0 }; - - tempDC = CreateCompatibleDC(NULL); - nImage = CreateBitmap32Point(16, 16, (LPVOID*)&ptPixels); - oImage = (HBITMAP)SelectObject(tempDC, nImage); - -// if (ptPixels) memset(ptPixels, 0, 16 * 16 * 4); - - if (IsWinVerXPPlus()) - { - ICONINFO iciBottom = { 0 }; - ICONINFO iciTop = { 0 }; - - BITMAP bmp_top = { 0 }; - BITMAP bmp_top_mask = { 0 }; - - BITMAP bmp_bottom = { 0 }; - BITMAP bmp_bottom_mask = { 0 }; - - GetIconInfo(hBottom, &iciBottom); - GetObject(iciBottom.hbmColor, sizeof(BITMAP), &bmp_bottom); - GetObject(iciBottom.hbmMask, sizeof(BITMAP), &bmp_bottom_mask); - - GetIconInfo(hTop, &iciTop); - GetObject(iciTop.hbmColor, sizeof(BITMAP), &bmp_top); - GetObject(iciTop.hbmMask, sizeof(BITMAP), &bmp_top_mask); - - if (bmp_bottom.bmBitsPixel == 32 && bmp_top.bmBitsPixel == 32) - { - LPBYTE BottomBuffer, TopBuffer, BottomMaskBuffer, TopMaskBuffer; - LPBYTE bb, tb, bmb, tmb; - LPBYTE db = ptPixels; - int vstep_d = 16 * 4; - int vstep_b = bmp_bottom.bmWidthBytes; - int vstep_t = bmp_top.bmWidthBytes; - int vstep_bm = bmp_bottom_mask.bmWidthBytes; - int vstep_tm = bmp_top_mask.bmWidthBytes; - - if (bmp_bottom.bmBits) - bb = BottomBuffer = (LPBYTE)bmp_bottom.bmBits; - else - { - BottomBuffer = (LPBYTE)_alloca(bmp_bottom.bmHeight * bmp_bottom.bmWidthBytes); - GetBitmapBits(iciBottom.hbmColor, bmp_bottom.bmHeight * bmp_bottom.bmWidthBytes, BottomBuffer); - bb = BottomBuffer + vstep_b * (bmp_bottom.bmHeight - 1); - vstep_b = -vstep_b; - } - if (bmp_top.bmBits) - tb = TopBuffer = (LPBYTE)bmp_top.bmBits; - else - { - TopBuffer = (LPBYTE)_alloca(bmp_top.bmHeight * bmp_top.bmWidthBytes); - GetBitmapBits(iciTop.hbmColor, bmp_top.bmHeight * bmp_top.bmWidthBytes, TopBuffer); - tb = TopBuffer + vstep_t * (bmp_top.bmHeight - 1); - vstep_t = -vstep_t; - } - if (bmp_bottom_mask.bmBits) - bmb = BottomMaskBuffer = (LPBYTE)bmp_bottom_mask.bmBits; - else - { - BottomMaskBuffer = (LPBYTE)_alloca(bmp_bottom_mask.bmHeight * bmp_bottom_mask.bmWidthBytes); - GetBitmapBits(iciBottom.hbmMask, bmp_bottom_mask.bmHeight * bmp_bottom_mask.bmWidthBytes, BottomMaskBuffer); - bmb = BottomMaskBuffer + vstep_bm * (bmp_bottom_mask.bmHeight - 1); - vstep_bm = -vstep_bm; - } - if (bmp_top_mask.bmBits) - tmb = TopMaskBuffer = (LPBYTE)bmp_top_mask.bmBits; - else - { - TopMaskBuffer = (LPBYTE)_alloca(bmp_top_mask.bmHeight * bmp_top_mask.bmWidthBytes); - GetBitmapBits(iciTop.hbmMask, bmp_top_mask.bmHeight * bmp_top_mask.bmWidthBytes, TopMaskBuffer); - tmb = TopMaskBuffer + vstep_tm * (bmp_top_mask.bmHeight - 1); - vstep_tm = -vstep_tm; - } - { - int x; int y; - BOOL topHasAlpha = checkHasAlfa(TopBuffer, bmp_top.bmWidth, bmp_top.bmHeight); - BOOL bottomHasAlpha = checkHasAlfa(BottomBuffer, bmp_bottom.bmWidth, bmp_bottom.bmHeight); - BOOL topMaskUsed = !topHasAlpha && checkMaskUsed(TopMaskBuffer); - BOOL bottomMaskUsed = !bottomHasAlpha && checkMaskUsed(BottomMaskBuffer); - - for(y = 0; y < 16; y++) - { - for(x = 0; x < 16; x++) - { - DWORD bottom_d = ((LPDWORD)bb)[x]; - DWORD top_d = ((LPDWORD)tb)[x]; - - if (topMaskUsed) - { - if (GetMaskBit(tmb, x)) - top_d &= 0x00FFFFFF; - else - top_d |= 0xFF000000; - } - else if (!topHasAlpha) - top_d |= 0xFF000000; - - if (bottomMaskUsed) - { - if (GetMaskBit(bmb, x)) - bottom_d &= 0x00FFFFFF; - else - bottom_d |= 0xFF000000; - } - else if (!bottomHasAlpha) - bottom_d |= 0xFF000000; - - ((LPDWORD)db)[x] = blend(bottom_d, top_d); - } - bb += vstep_b; - tb += vstep_t; - bmb += vstep_bm; - tmb += vstep_tm; - db += vstep_d; - } - } - - drawn = TRUE; - } - - DeleteObject(iciBottom.hbmColor); - DeleteObject(iciTop.hbmColor); - DeleteObject(iciBottom.hbmMask); - DeleteObject(iciTop.hbmMask); - } - - if (!drawn) { - DrawIconEx(tempDC, 0, 0, hBottom, 16, 16, 0, NULL, DI_NORMAL); - DrawIconEx(tempDC, 0, 0, hTop, 16, 16, 0, NULL, DI_NORMAL); - } - - nMask = CreateBitmap(16, 16, 1, 1, p); - tempDC2 = CreateCompatibleDC(NULL); - tempDC3 = CreateCompatibleDC(NULL); - hbm = CreateCompatibleBitmap(tempDC3, 16, 16); - obmp = (HBITMAP)SelectObject(tempDC2, nMask); - obmp2 = (HBITMAP)SelectObject(tempDC3, hbm); - DrawIconEx(tempDC2, 0, 0, hBottom, 16, 16, 0, NULL, DI_MASK); - DrawIconEx(tempDC3, 0, 0, hTop, 16, 16, 0, NULL, DI_MASK); - BitBlt(tempDC2, 0, 0, 16, 16, tempDC3, 0, 0, SRCAND); - - GdiFlush(); - - SelectObject(tempDC2, obmp); - DeleteDC(tempDC2); - - SelectObject(tempDC3, obmp2); - DeleteDC(tempDC3); - - SelectObject(tempDC, oImage); - DeleteDC(tempDC); - - DeleteObject(hbm); - - iNew.fIcon = TRUE; - iNew.hbmColor = nImage; - iNew.hbmMask = nMask; - res = CreateIconIndirect(&iNew); - - DeleteObject(nImage); - DeleteObject(nMask); - - return res; -} - -HANDLE FASTCALL GetIconIndexFromFI(LPTSTR szMirVer) -{ - short base, overlay, overlay2, overlay3; - GetIconsIndexes(szMirVer, &base, &overlay, &overlay2, &overlay3); - if (base == -1 || nFICount == 0xFFFF) - return INVALID_HANDLE_VALUE; - - // MAX: 1024 + 256 + 128 + 128 - DWORD val = (base << 22) | ((overlay & 0xFF) << 14) | ((overlay2 & 0x7F) << 7) | (overlay3 & 0x7F); - - int i; - HANDLE hFoundImage = INVALID_HANDLE_VALUE; - for (i=0; i < nFICount; i++) { - if (fiList[i].dwArray == val) { - hFoundImage = fiList[i].hRegisteredImage; - break; - } - } - - if (hFoundImage == INVALID_HANDLE_VALUE && i == nFICount) { //not found - then add - HICON hIcon = CreateIconFromIndexes(base, overlay, overlay2, overlay3); - - fiList = (FOUNDINFO*)mir_realloc(fiList, sizeof(FOUNDINFO) * (nFICount + 1)); - fiList[nFICount].dwArray = val; - - if (hIcon != NULL) { - hFoundImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)hIcon, 0); - fiList[nFICount].hRegisteredImage = hFoundImage; - DestroyIcon(hIcon); - } - else fiList[nFICount].hRegisteredImage = INVALID_HANDLE_VALUE; - - nFICount++; - } - - return hFoundImage; -} - -VOID ClearFI() -{ - if (fiList != NULL) - mir_free(fiList); - fiList = NULL; - nFICount = 0; -} diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/global.h b/plugins/!Deprecated/FingerPrintModPlus/src/global.h deleted file mode 100644 index 408b36e07e..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/global.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -#define _CRT_SECURE_NO_DEPRECATE - -//Start of header -// Native include -#include -#include -#include - -// Miranda IM SDK includes -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// plugins SDK -#include -#include - -//plugins header -#include "version.h" -#include "m_fingerprint.h" -#include "resource.h" -#include "utilities.h" - -#if defined(__GNUC__) -#define _alloca alloca -//#define FASTCALL -#else -#define FASTCALL __fastcall -#endif - -typedef struct { - BYTE b; - BYTE g; - BYTE r; - BYTE a; -} RGBA; - -struct KN_FP_MASK -{ - LPSTR szIconName; - LPTSTR szMask; - LPTSTR szClientDescription; - LPTSTR szIconFileName; - int iIconIndex; - int iSectionFlag; - BOOL fNotUseOverlay; - - HANDLE hIcolibItem; - LPTSTR szMaskUpper; -}; - -typedef struct _foundInfo -{ - DWORD dwArray; - HANDLE hRegisteredImage; -} FOUNDINFO; - -#define MIRANDA_CASE 1 -#define MULTIPROTOCOL_CASE 2 -#define ICQ_OFF_CASE 3 -#define ICQ_UNOFF_CASE 4 -#define JABBER_CASE 5 -#define MSN_CASE 6 -#define AIM_CASE 7 -#define YAHOO_CASE 8 -#define IRC_CASE 9 -#define VOIP_CASE 10 -#define SKYPE_CASE 11 -#define GADU_CASE 12 -#define PACKS_CASE 13 -#define MRA_CASE 14 -#define OVER1_CASE 15 -#define SECURITY_CASE 16 -#define OTHER_CASE 17 -#define OVER2_CASE 18 -#define PLATFORM_CASE 19 -#define WEATHER_CASE 20 -#define RSS_CASE 21 -#define QQ_CASE 22 -#define TLEN_CASE 23 - -#define PtrIsValid(p) (((p)!=0)&&(((HANDLE)(p))!=INVALID_HANDLE_VALUE)) -#define SAFE_FREE(p) {if (PtrIsValid(p)){free((VOID*)p);(p)=NULL;}} - -#define LIB_REG 2 -#define LIB_USE 3 - -#define DEFAULT_SKIN_FOLDER _T("Icons\\Fp_ClientIcons") - -void ClearFI(); - -int OnIconsChanged(WPARAM wParam, LPARAM lParam); -int OnExtraIconClick(WPARAM wParam, LPARAM lParam,LPARAM); -int OnExtraIconListRebuild(WPARAM wParam, LPARAM lParam); -int OnExtraImageApply(WPARAM wParam, LPARAM lParam); -int OnContactSettingChanged(WPARAM wParam, LPARAM lParam); -int OnOptInitialise(WPARAM wParam, LPARAM lParam); -int OnModulesLoaded(WPARAM wParam, LPARAM lParam); -int OnPreShutdown(WPARAM wParam, LPARAM lParam); - -INT_PTR ServiceSameClientsA(WPARAM wParam, LPARAM lParam); -INT_PTR ServiceGetClientIconA(WPARAM wParam, LPARAM lParam); -INT_PTR ServiceSameClientsW(WPARAM wParam, LPARAM lParam); -INT_PTR ServiceGetClientIconW(WPARAM wParam, LPARAM lParam); - -HICON FASTCALL CreateJoinedIcon(HICON hBottom, HICON hTop); -HBITMAP __inline CreateBitmap32(int cx, int cy); -HBITMAP FASTCALL CreateBitmap32Point(int cx, int cy, LPVOID* bits); -HANDLE FASTCALL GetIconIndexFromFI(LPTSTR szMirVer); - -BOOL FASTCALL WildCompareA(LPSTR name, LPSTR mask); -BOOL FASTCALL WildCompareW(LPWSTR name, LPWSTR mask); -BOOL __inline WildCompareProcA(LPSTR name, LPSTR mask); -BOOL __inline WildCompareProcW(LPWSTR name, LPWSTR mask); - -void FASTCALL Prepare(KN_FP_MASK* mask); -void RegisterIcons(); - -#define WildCompare WildCompareW -#define GetIconsIndexes GetIconsIndexesW - -extern HINSTANCE g_hInst; -extern HANDLE hHeap; -extern LPSTR g_szClientDescription; - -extern KN_FP_MASK - def_kn_fp_mask[], - def_kn_fp_overlays_mask[], - def_kn_fp_overlays1_mask[], - def_kn_fp_overlays2_mask[], - def_kn_fp_overlays3_mask[]; - -extern int DEFAULT_KN_FP_MASK_COUNT, DEFAULT_KN_FP_OVERLAYS_COUNT, DEFAULT_KN_FP_OVERLAYS2_COUNT, DEFAULT_KN_FP_OVERLAYS3_COUNT; - -#define UNKNOWN_MASK_NUMBER (DEFAULT_KN_FP_MASK_COUNT - 2) // second from end -#define NOTFOUND_MASK_NUMBER (DEFAULT_KN_FP_MASK_COUNT - 3) // third from end -#define DEFAULT_KN_FP_OVERLAYS2_NO_VER_COUNT (DEFAULT_KN_FP_OVERLAYS2_COUNT - 7) diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/main.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/main.cpp deleted file mode 100644 index 4de8a793a2..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/main.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -//Start of header -#include "global.h" - -#define LIB_REG 2 -#define LIB_USE 3 - -HINSTANCE g_hInst; -int hLangpack; - -HANDLE hHeap = NULL; - -HANDLE compClientServA = NULL; -HANDLE getClientIconA = NULL; - -HANDLE compClientServW = NULL; -HANDLE getClientIconW = NULL; -LPSTR g_szClientDescription = NULL; - -HANDLE hStaticHooks[1] = { NULL }; - -//End of header - -// PluginInfo & PluginInfoEx -PLUGININFOEX pluginInfoEx = { - sizeof(PLUGININFOEX), - __INTERNAL_NAME_STRING, - __VERSION_DWORD, - "Fingerprint Mod+ (client version) icons module set extra icon of your buddies according to their client version.", - "Artem Shpynov aka FYR, Bio, Faith Healer, HierOS", - "crazy.hieros@gmail.com", - __LEGAL_COPYRIGHT_STRING, - "http://miranda-ng.org/", - UNICODE_AWARE, - MIID_THIS_PLUGIN -}; - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - g_hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfoEx; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_FINGERPRINT, MIID_LAST }; - -/////////////////////////////////////////////////////////////////////////////// - -static int OnPreShutdown(WPARAM wParam, LPARAM lParam) -{ - DestroyServiceFunction(compClientServA); - DestroyServiceFunction(getClientIconA); - DestroyServiceFunction(compClientServW); - DestroyServiceFunction(getClientIconW); - - return 0; -} - -extern "C" int __declspec(dllexport) Load(void) -{ - mir_getLP(&pluginInfoEx); - - hStaticHooks[0] = HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - HookEvent(ME_SYSTEM_PRESHUTDOWN, OnPreShutdown); - compClientServA = CreateServiceFunction(MS_FP_SAMECLIENTS, ServiceSameClientsA); - getClientIconA = CreateServiceFunction(MS_FP_GETCLIENTICON, ServiceGetClientIconA); - - compClientServW = CreateServiceFunction(MS_FP_SAMECLIENTSW, ServiceSameClientsW); - getClientIconW = CreateServiceFunction(MS_FP_GETCLIENTICONW, ServiceGetClientIconW); - return 0; -} - -/////////////////////////////////////////////////////////////////////////////// - -extern "C" int __declspec(dllexport) Unload() -{ - if (g_szClientDescription != NULL) - mir_free(g_szClientDescription); - - HeapDestroy(hHeap); - ClearFI(); - - for (size_t i = 0; i < SIZEOF(hStaticHooks); i++) - { - UnhookEvent(hStaticHooks[i]); - hStaticHooks[i] = NULL; - } - return 0; -} diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/masks.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/masks.cpp deleted file mode 100644 index 21fb0d160e..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/masks.cpp +++ /dev/null @@ -1,751 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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 "global.h" - -/************************************************************************/ -/* This file contains data about appropriate MirVer values */ -/************************************************************************/ - -/* -* NOTE: Masks can contain '*' or '?' wild symbols -* Asterics '*' symbol covers 'empty' symbol too e.g WildCompare("Tst","T*st*"), returns TRUE -* In order to handle situation 'at least one any sybol' use '?*' combination: -* e.g WildCompare("Tst","T?*st*"), returns FALSE, but both WildCompare("Test","T?*st*") and -* WildCompare("Teeest","T?*st*") return TRUE. -* -* Function is 'dirt' case insensitive (it is ignore 5th bit (0x20) so it is no difference -* beetween some symbols. But it is faster than valid converting to uppercase. -* -* Mask can contain several submasks. In this case each submask (including first) -* should start from '|' e.g: "|first*submask|second*mask". -* -* ORDER OF RECORDS IS IMPORTANT: system search first suitable mask and returns it. -* e.g. if MirVer is "Miranda IM" and first mask is "*im*" and second is "Miranda *" the -* result will be client associated with first mask, not second! -* So in order to avoid such situation, place most generalised masks to latest place. -* -* In order to get "Unknown" client, last mask should be "?*". -*/ - -KN_FP_MASK def_kn_fp_mask[] = -{// IconName Mask Icon caption NULL ICON_RESOURCE_ID -//######################################################################################################################################### -//######################################################### MirandaIM clients ############################################################# -//######################################################################################################################################### - { "client_Miranda_NG", _T("|*http://miranda-ng.org*|*http://nightly.miranda.im*") - _T("|*Miranda*NG*"), _T("Miranda NG"), _T("ClientIcons_General"), IDI_MIRANDA_NG, MIRANDA_CASE }, - { "client_Miranda_666", _T("Miranda*6.6.6*"), _T("Miranda evil"), _T("ClientIcons_General"), IDI_MIRANDA_666, MIRANDA_CASE }, - { "client_Miranda_010U", _T("|Miranda IM*0.10.*Unicode*") - _T("|Miranda IM*Unicode*0.10.*"), _T("Miranda v0.10 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_010U, MIRANDA_CASE }, - { "client_Miranda_09U", _T("|Miranda IM*0.9.*Unicode*") - _T("|Miranda IM*Unicode*0.9.*"), _T("Miranda v0.9 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_09U, MIRANDA_CASE }, - { "client_Miranda_08U", _T("|Miranda IM*0.8.*Unicode*") - _T("|Miranda IM*Unicode*0.8.*"), _T("Miranda v0.8 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_08U, MIRANDA_CASE }, - { "client_Miranda_07U", _T("|Miranda IM*0.7.*Unicode*") - _T("|Miranda IM*Unicode*0.7.*"), _T("Miranda v0.7 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_07U, MIRANDA_CASE }, - { "client_Miranda_06U", _T("|Miranda IM*0.6.*Unicode*") - _T("|Miranda IM*Unicode*0.6.*"), _T("Miranda v0.6 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_06U, MIRANDA_CASE }, - { "client_Miranda_05U", _T("|Miranda IM*0.5.*Unicode*") - _T("|Miranda IM*Unicode*0.5.*"), _T("Miranda v0.5 Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_05U, MIRANDA_CASE }, - { "client_Miranda_U", _T("*Miranda IM*Unicode*"), _T("Miranda Unicode"), _T("ClientIcons_General"), IDI_MIRANDA_U, MIRANDA_CASE }, - { "client_Miranda_010", _T("*Miranda IM*0.10.*"), _T("Miranda v0.10"), _T("ClientIcons_General"), IDI_MIRANDA_010, MIRANDA_CASE }, - { "client_Miranda_09", _T("*Miranda IM*0.9.*"), _T("Miranda v0.9"), _T("ClientIcons_General"), IDI_MIRANDA_09, MIRANDA_CASE }, - { "client_Miranda_08", _T("*Miranda IM*0.8.*"), _T("Miranda v0.8"), _T("ClientIcons_General"), IDI_MIRANDA_08, MIRANDA_CASE }, - { "client_Miranda_07", _T("*Miranda IM*0.7.*"), _T("Miranda v0.7"), _T("ClientIcons_General"), IDI_MIRANDA_07, MIRANDA_CASE }, - { "client_Miranda_06", _T("*Miranda IM*0.6.*"), _T("Miranda v0.6"), _T("ClientIcons_General"), IDI_MIRANDA_06, MIRANDA_CASE }, - { "client_Miranda_05", _T("*Miranda IM*0.5.*"), _T("Miranda v0.5"), _T("ClientIcons_General"), IDI_MIRANDA_05, MIRANDA_CASE }, - { "client_Miranda_04", _T("*Miranda IM*0.4.*"), _T("Miranda v0.4"), _T("ClientIcons_General"), IDI_MIRANDA_04, MIRANDA_CASE }, - { "client_Miranda_Unknown", _T("|*Miranda*|*Mira*"), _T("Miranda IM"), _T("ClientIcons_General"), IDI_MIRANDA_UNKNOWN, MIRANDA_CASE }, - -//######################################################################################################################################### -//###################################################### Multi-protocol clients ########################################################### -//######################################################################################################################################### - { "client_SIM_Win32_old", _T("|^*SIM*0.9.4*|^*SIM*0.9.5*") - _T("|^*SIM*0.9.6*|^*SIM*0.9.7*") - _T("|*SIM*Win32"), _T("SIM (Win32) old"), _T("ClientIcons_Multiprotocols"), IDI_SIM_WIN_OLD, MULTIPROTOCOL_CASE }, - { "client_SIM_MacOS_old", _T("|^*SIM*0.9.4*|^*SIM*0.9.5*") - _T("|^*SIM*0.9.6*|^*SIM*0.9.7*") - _T("|*SIM*MacOS"), _T("SIM (MacOS) old"), _T("ClientIcons_Multiprotocols"), IDI_SIM_MACOSX_OLD, MULTIPROTOCOL_CASE }, - { "client_SIM_Linux_old", _T("SIM*?.8.?"), _T("SIM (Linux) old"), _T("ClientIcons_Multiprotocols"), IDI_SIM_LINUX_OLD, MULTIPROTOCOL_CASE }, - { "client_SIM_old", _T("|^*SIM*0.9.4*|^*SIM*0.9.5*") - _T("|^*SIM*0.9.6*|^*SIM*0.9.7*|^SIM") - _T("|*SIM*Simp*|^*Simp*|*SIM*"), _T("SIM (others) old"), _T("ClientIcons_Multiprotocols"), IDI_SIM_OLD, MULTIPROTOCOL_CASE }, - - { "client_SIM_Win32", _T("|*SIM*Win32"), _T("SIM (Win32)"), _T("ClientIcons_Multiprotocols"), IDI_SIM_WIN, MULTIPROTOCOL_CASE }, - { "client_SIM_MacOSX", _T("|*SIM*MacOS"), _T("SIM (MacOS)"), _T("ClientIcons_Multiprotocols"), IDI_SIM_MACOSX, MULTIPROTOCOL_CASE }, - { "client_SIM_Linux", _T("SIM*?.9.?"), _T("SIM (Linux)"), _T("ClientIcons_Multiprotocols"), IDI_SIM_LINUX, MULTIPROTOCOL_CASE }, - { "client_SIM", _T("|*SIM*"), _T("SIM (others)"), _T("ClientIcons_Multiprotocols"), IDI_SIM, MULTIPROTOCOL_CASE }, - - { "client_BayanICQ", _T("|*BayanICQ*|*barobin*"), _T("BayanICQ"), _T("ClientIcons_Multiprotocols"), IDI_BAYANICQ, MULTIPROTOCOL_CASE }, - - { "client_Adium", _T("Adium*"), _T("Adium"), _T("ClientIcons_Multiprotocols"), IDI_ADIUM, MULTIPROTOCOL_CASE }, - { "client_Trillian_Astra", _T("Trillian*Astra*"), _T("Trillian Astra"), _T("ClientIcons_Multiprotocols"), IDI_TRILLIAN_ASTRA, MULTIPROTOCOL_CASE }, - { "client_Trillian_Pro", _T("Trillian*Pro*"), _T("Trillian Pro"), _T("ClientIcons_Multiprotocols"), IDI_TRILLIAN_PRO, MULTIPROTOCOL_CASE }, - { "client_Trillian", _T("|Trillian*|http://trillian.im/*"), _T("Trillian"), _T("ClientIcons_Multiprotocols"), IDI_TRILLIAN, MULTIPROTOCOL_CASE }, - { "client_Gaim", _T("*gaim*"), _T("Gaim (libgaim)"), _T("ClientIcons_Multiprotocols"), IDI_GAIM, MULTIPROTOCOL_CASE }, - { "client_Pidgin", _T("|*Pidgin*|libpurple*|Purple*"), _T("Pidgin (libpurple) (ex-Gaim)"), _T("ClientIcons_Multiprotocols"), IDI_PIDGIN, MULTIPROTOCOL_CASE }, - { "client_Pigeon", _T("*PIGEON*"), _T("PIGEON!"), _T("ClientIcons_Multiprotocols"), IDI_PIGEON, MULTIPROTOCOL_CASE }, - { "client_Kopete", _T("|Kopete*|http://kopete.kde.org*"), _T("Kopete"), _T("ClientIcons_Multiprotocols"), IDI_KOPETE, MULTIPROTOCOL_CASE }, - { "client_IM2", _T("IM2*"), _T("IM2"), _T("ClientIcons_Multiprotocols"), IDI_IM2, MULTIPROTOCOL_CASE }, - - { "client_CenterICQ", _T("Centericq*"), _T("Centericq"), _T("ClientIcons_Multiprotocols"), IDI_CENTERICQ, MULTIPROTOCOL_CASE }, - { "client_Meebo", _T("Meebo*"), _T("Meebo"), _T("ClientIcons_Multiprotocols"), IDI_MEEBO, MULTIPROTOCOL_CASE }, - - { "client_AgileMessenger", _T("*Agile Messenger*"), _T("Agile Messenger"), _T("ClientIcons_Multiprotocols"), IDI_AGILE, MULTIPROTOCOL_CASE }, - { "client_Prelude", _T("Prelude*"), _T("Prelude"), _T("ClientIcons_Multiprotocols"), IDI_PRELUDE, MULTIPROTOCOL_CASE }, - { "client_IMPlus", _T("|IM+*|IMPLUS*|IM *"), _T("IM+"), _T("ClientIcons_Multiprotocols"), IDI_IMPLUS, MULTIPROTOCOL_CASE }, - { "client_uIM", _T("uIM*"), _T("uIM"), _T("ClientIcons_Multiprotocols"), IDI_UIM, MULTIPROTOCOL_CASE }, - { "client_Inlux", _T("*Inlux*"), _T("Inlux Messenger"), _T("ClientIcons_Multiprotocols"), IDI_INLUX, MULTIPROTOCOL_CASE }, - { "client_Qnext", _T("QNext*"), _T("Qnext"), _T("ClientIcons_Multiprotocols"), IDI_QNEXT, MULTIPROTOCOL_CASE }, - { "client_mChat", _T("|mChat*|gsICQ*|http://mchat.mgslab.com*"),_T("mChat"), _T("ClientIcons_Multiprotocols"), IDI_MCHAT, MULTIPROTOCOL_CASE }, - { "client_natSiemens", _T("|SieJC*|NatICQ*|Siemens*Client*"), _T("Siemens Native ICQ/Jabber Client"), _T("ClientIcons_Multiprotocols"), IDI_NATSIEMENS, MULTIPROTOCOL_CASE }, - { "client_Fring", _T("*fring*"), _T("Fring"), _T("ClientIcons_Multiprotocols"), IDI_FRING, MULTIPROTOCOL_CASE }, - { "client_eBuddy", _T("|*eBuddy*|*eMessenger*"), _T("eBuddy"), _T("ClientIcons_Multiprotocols"), IDI_EBUDDY, MULTIPROTOCOL_CASE }, - { "client_Meetro", _T("Meetro*"), _T("Meetro"), _T("ClientIcons_Multiprotocols"), IDI_MEETRO, MULTIPROTOCOL_CASE }, - { "client_EasyMessage", _T("Easy*Message*"), _T("Easy Message"), _T("ClientIcons_Multiprotocols"), IDI_EASYMESSAGE, MULTIPROTOCOL_CASE }, - { "client_BitlBee", _T("BitlBee*"), _T("BitlBee"), _T("ClientIcons_Multiprotocols"), IDI_BITLBEE, MULTIPROTOCOL_CASE }, - { "client_Proteus", _T("*Proteus*"), _T("Proteus"), _T("ClientIcons_Multiprotocols"), IDI_PROTEUS, MULTIPROTOCOL_CASE }, - { "client_iChat", _T("|iChat*") - _T("|http://www.apple.com/ichat/caps*"), _T("iChat"), _T("ClientIcons_Multiprotocols"), IDI_ICHAT, MULTIPROTOCOL_CASE }, - { "client_EKG2", _T("*ekg*2*"), _T("EKG2"), _T("ClientIcons_Multiprotocols"), IDI_EKG2, MULTIPROTOCOL_CASE }, - { "client_Ayttm", _T("*Ayttm*"), _T("Ayttm"), _T("ClientIcons_Multiprotocols"), IDI_AYTTM, MULTIPROTOCOL_CASE }, - { "client_qutIM", _T("*qutIM*"), _T("qutIM"), _T("ClientIcons_Multiprotocols"), IDI_QUTIM, MULTIPROTOCOL_CASE }, - { "client_YamiGo", _T("YamiGo*"), _T("YamiGo"), _T("ClientIcons_Multiprotocols"), IDI_YAMIGO, MULTIPROTOCOL_CASE }, - { "client_QIP_2012", _T("|QIP 2012*|http://qip.ru/caps*"), _T("QIP 2012"), _T("ClientIcons_Multiprotocols"), IDI_QIP_2012, MULTIPROTOCOL_CASE }, - { "client_QIP_Infium", _T("|QIP Infium*|http://qip*"), _T("QIP Infium"), _T("ClientIcons_Multiprotocols"), IDI_QIP_INFIUM, MULTIPROTOCOL_CASE }, - { "client_QIP_2010", _T("|QIP 2010*|http://2010.qip.ru*"), _T("QIP 2010"), _T("ClientIcons_Multiprotocols"), IDI_QIP_2010, MULTIPROTOCOL_CASE }, - { "client_QIP_PDA", _T("|QIP PDA*|http://pda.qip.ru/caps*") - _T("|*QIP Mobile*"), _T("QIP Mobile"), _T("ClientIcons_Multiprotocols"), IDI_QIP_PDA, MULTIPROTOCOL_CASE }, - { "client_CitronIM", _T("*Citron IM*"), _T("Citron IM"), _T("ClientIcons_Multiprotocols"), IDI_CITRON, MULTIPROTOCOL_CASE }, - { "client_Palringo", _T("|*Palringo*|http://palringo.com/caps*"), _T("Palringo"), _T("ClientIcons_Multiprotocols"), IDI_PALRINGO, MULTIPROTOCOL_CASE }, - { "client_ImoIm", _T("|*imo.im*"), _T("Imo.im"), _T("ClientIcons_Multiprotocols"), IDI_IMOIM, MULTIPROTOCOL_CASE }, - { "client_OneTeam", _T("*OneTeam*"), _T("OneTeam"), _T("ClientIcons_Multiprotocols"), IDI_ONETEAM, MULTIPROTOCOL_CASE }, - { "client_Python", _T("Py*t"), _T("Python transport clients"), _T("ClientIcons_Multiprotocols"), IDI_PYTHON, MULTIPROTOCOL_CASE }, - { "client_Instantbird", _T("*Instantbird*"), _T("Instantbird"), _T("ClientIcons_Multiprotocols"), IDI_INSTANTBIRD, MULTIPROTOCOL_CASE }, - { "client_Jimm", _T("|*Jimm*|mobicq*"), _T("Jimm"), _T("ClientIcons_Multiprotocols"), IDI_JIMM, MULTIPROTOCOL_CASE }, - { "client_Digsby", _T("*Digsby*"), _T("Digsby"), _T("ClientIcons_Multiprotocols"), IDI_DIGSBY, MULTIPROTOCOL_CASE }, - { "client_Jasmine_IM", _T("|Jasmine IM*|http://jasmineicq.ru/caps*"), _T("Jasmine IM"), _T("ClientIcons_Multiprotocols"), IDI_JASMINEIM, MULTIPROTOCOL_CASE }, - -//######################################################################################################################################### -//########################################################### Other ICQ clients ########################################################### -//######################################################################################################################################### - { "client_QIP", _T("QIP*"), _T("QIP"), _T("ClientIcons_ICQ"), IDI_QIP, ICQ_UNOFF_CASE }, - { "client_&RQ", _T("&RQ*"), _T("&RQ"), _T("ClientIcons_ICQ"), IDI_ANDRQ, ICQ_UNOFF_CASE }, - { "client_R&Q", _T("R&Q*"), _T("R&Q"), _T("ClientIcons_ICQ"), IDI_RANDQ_NEW, ICQ_UNOFF_CASE }, - { "client_TICQ", _T("*TICQ*Client*"), _T("TICQ (Delphi lib)"), _T("ClientIcons_ICQ"), IDI_DELPHI, ICQ_UNOFF_CASE }, - { "client_ICAT", _T("IC@*"), _T("IC@"), _T("ClientIcons_ICQ"), IDI_ICAT, ICQ_UNOFF_CASE }, - { "client_StrICQ", _T("StrICQ*"), _T("StrICQ"), _T("ClientIcons_ICQ"), IDI_STRICQ, ICQ_UNOFF_CASE }, - { "client_mICQ", _T("mICQ*"), _T("mICQ"), _T("ClientIcons_ICQ"), IDI_MICQ, ICQ_UNOFF_CASE }, - { "client_VmICQ", _T("VmICQ*"), _T("VmICQ"), _T("ClientIcons_ICQ"), IDI_VMICQ, ICQ_UNOFF_CASE }, - { "client_vICQ", _T("vICQ*"), _T("vICQ"), _T("ClientIcons_ICQ"), IDI_VICQ, ICQ_UNOFF_CASE }, - { "client_YSM", _T("YSM*"), _T("YSM"), _T("ClientIcons_ICQ"), IDI_YSM, ICQ_UNOFF_CASE }, - { "client_MIP", _T("*MIP*"), _T("MIP"), _T("ClientIcons_ICQ"), IDI_MIP, ICQ_UNOFF_CASE }, - { "client_D[i]Chat", _T("D[i]Chat*"), _T("D[i]Chat"), _T("ClientIcons_ICQ"), IDI_DICHAT, ICQ_UNOFF_CASE }, - { "client_Corepager", _T("Core*Pager*"), _T("Core Pager"), _T("ClientIcons_ICQ"), IDI_COREPAGER, ICQ_UNOFF_CASE }, - { "client_LocID", _T("LocID*"), _T("LocID"), _T("ClientIcons_ICQ"), IDI_LOCID, ICQ_UNOFF_CASE }, - { "client_Slick", _T("Slick*"), _T("Slick"), _T("ClientIcons_ICQ"), IDI_SLICK, ICQ_UNOFF_CASE }, - { "client_Smaper", _T("*SmapeR*"), _T("SmapeR"), _T("ClientIcons_ICQ"), IDI_SMAPER, ICQ_UNOFF_CASE }, - { "client_Anastasia", _T("Anastasia*"), _T("Anastasia"), _T("ClientIcons_ICQ"), IDI_ANASTASIA, ICQ_UNOFF_CASE }, - { "client_JICQ", _T("*JICQ*"), _T("JICQ"), _T("ClientIcons_ICQ"), IDI_JICQ, ICQ_UNOFF_CASE }, - { "client_ICQ_2X", _T("ICQ*2.x*"), _T("ICQ 2.x"), _T("ClientIcons_ICQ"), IDI_ICQ2X, ICQ_UNOFF_CASE }, - { "client_nICQ", _T("nICQ*"), _T("nICQ"), _T("ClientIcons_ICQ"), IDI_NICQ, ICQ_UNOFF_CASE }, - { "client_kxICQ", _T("kxICQ*"), _T("KxICQ2"), _T("ClientIcons_ICQ"), IDI_KXICQ, ICQ_UNOFF_CASE }, - { "client_NanoICQ", _T("*Nano*ICQ*"), _T("NanoICQ"), _T("ClientIcons_ICQ"), IDI_NANOICQ, ICQ_UNOFF_CASE }, - { "client_Yeemp", _T("Yeemp*"), _T("Yeemp"), _T("ClientIcons_ICQ"), IDI_YEEMP, ICQ_UNOFF_CASE }, - { "client_KM_Aska", _T("*KM*Aska*"), _T("KM Aska"), _T("ClientIcons_ICQ"), IDI_KMASKA, ICQ_UNOFF_CASE }, - { "client_1und1", _T("|*Pocket*Web*|*1&1*|*1*und*1") - _T("|*1*and*1"), _T("1&1"), _T("ClientIcons_ICQ"), IDI_1UND1, ICQ_UNOFF_CASE }, - { "client_WebICQ", _T("WebICQ*"), _T("WebICQ"), _T("ClientIcons_ICQ"), IDI_WEBICQ, ICQ_UNOFF_CASE }, - { "client_alicq", _T("alicq*"), _T("Alicq"), _T("ClientIcons_ICQ"), IDI_ALICQ, ICQ_UNOFF_CASE }, - { "client_Licq", _T("Licq*"), _T("Licq"), _T("ClientIcons_ICQ"), IDI_LICQ, ICQ_UNOFF_CASE }, - { "client_GnomeICU", _T("GnomeICU*"), _T("GnomeICU"), _T("ClientIcons_ICQ"), IDI_GNOMEICU, ICQ_UNOFF_CASE }, - { "client_SmartICQ", _T("SmartICQ*"), _T("SmartICQ (via mIRC)"), _T("ClientIcons_ICQ"), IDI_SMARTICQ, ICQ_UNOFF_CASE }, - { "client_Sticq", _T("stICQ*"), _T("stICQ"), _T("ClientIcons_ICQ"), IDI_STICQ, ICQ_UNOFF_CASE }, - { "client_GlICQ", _T("GlICQ*"), _T("GlICQ"), _T("ClientIcons_ICQ"), IDI_GLICQ, ICQ_UNOFF_CASE }, - { "client_libicq2k", _T("libicq2*"), _T("LibICQ/JIT"), _T("ClientIcons_ICQ"), IDI_LIBICQ2000, ICQ_UNOFF_CASE }, - { "client_IMadering", _T("*IMadering*"), _T("IMadering"), _T("ClientIcons_ICQ"), IDI_IMADERING, ICQ_UNOFF_CASE }, - { "client_SpamBot", _T("*Spam*Bot*"), _T("Spam Bot"), _T("ClientIcons_ICQ"), IDI_SPAMBOT, ICQ_UNOFF_CASE }, - { "client_Virus", _T("*Virus*"), _T("Virus (Stration worm)"), _T("ClientIcons_ICQ"), IDI_VIRUS, ICQ_UNOFF_CASE }, - -//######################################################################################################################################### -//############################################## Official ICQ clients ##################################################################### -//######################################################################################################################################### - { "client_ICQ_Rambler", _T("ICQ*5*Rambler*"), _T("ICQ Rambler (Lite v5)"), _T("ClientIcons_ICQ"), IDI_ICQ_RAMBLER, ICQ_OFF_CASE, TRUE }, - { "client_ICQ_BigMir", _T("ICQ*bigmir*"), _T("ICQ bigmir.net (Lite v5)"), _T("ClientIcons_ICQ"), IDI_ICQ_BIGMIR, ICQ_OFF_CASE }, - { "client_ICQ_NetVigator", _T("ICQ*5*Netvigator*"), _T("ICQ Netvigator (Lite v5)"), _T("ClientIcons_ICQ"), IDI_ICQ_NETVIGATOR, ICQ_OFF_CASE, TRUE }, - { "client_ICQ_Pro7", _T("ICQ*Pro7*"), _T("ICQ ProSieben aka Pro7 (Lite v5)"),_T("ClientIcons_ICQ"), IDI_ICQ_PRO7, ICQ_OFF_CASE, TRUE }, - { "client_ICQ_Abv", _T("ICQ*Abv*"), _T("ICQ ABV (Lite v5)"), _T("ClientIcons_ICQ"), IDI_ICQ_ABV, ICQ_OFF_CASE }, - { "client_ICQ_Lite4", _T("ICQ Lite v4*"), _T("ICQ Lite v4"), _T("ClientIcons_ICQ"), IDI_ICQ_LITE4, ICQ_OFF_CASE, TRUE }, - { "client_ICQ_Lite7", _T("ICQ Lite v7*"), _T("ICQ Lite v7"), _T("ClientIcons_ICQ"), IDI_ICQ_LITE7, ICQ_OFF_CASE, TRUE }, - { "client_ICQ_6", _T("|ICQ*6*|ICQ*7*"), _T("ICQ v6,ICQ v7"), _T("ClientIcons_ICQ"), IDI_ICQ_6, ICQ_OFF_CASE }, - { "client_ICQ_98-99", _T("|^*Transport*|ICQ*98*|ICQ*99*|ICQ*2000*") - _T("|ICQ*2001*|ICQ*2002*|ICQ*200?a*") - _T("|ICQ*2003b*|ICQ*5*|ICQ Lite*|ICQ2Go!*"), _T("ICQ/ICQ2Go!"), _T("ClientIcons_ICQ"), IDI_ICQ, ICQ_OFF_CASE }, - { "client_ComPad", _T("*ComPad*"), _T("ICQ ComPad"), _T("ClientIcons_ICQ"), IDI_ICQ_COMPAD, ICQ_OFF_CASE }, - { "client_ICQ4Mac", _T("ICQ for Mac"), _T("ICQ for Mac"), _T("ClientIcons_ICQ"), IDI_ICQ4MAC, ICQ_OFF_CASE, TRUE }, - { "client_PocketPC", _T("ICQ*Pocket*PC*"), _T("ICQ for PocketPC"), _T("ClientIcons_ICQ"), IDI_ICQ_POCKETPC, ICQ_OFF_CASE }, - -//######################################################################################################################################### -//#########################################################¹¹#### Jabber BOTS #¹########################################################### -//######################################################################################################################################### - { "client_juick", _T("*juick*"), _T("Juick"), _T("ClientIcons_Jabber"), IDI_JUICK, JABBER_CASE }, - { "client_jrudevels", _T("*jrudevels*"), _T("Jrudevels"), _T("ClientIcons_Jabber"), IDI_JRUDEVELS, JABBER_CASE }, - { "client_whoisbot", _T("whoisbot"), _T("Swissjabber Whois Bot"), _T("ClientIcons_Jabber"), IDI_WHOISBOT, JABBER_CASE }, - { "client_pjc", _T("|*PJC*|http://pjc.googlecode.com/*"), _T("PHP Jabber Client"), _T("ClientIcons_Jabber"), IDI_PJC, JABBER_CASE }, - { "client_jdisk", _T("|*jdisk*|JabberDisk*"), _T("Jabber disk"), _T("ClientIcons_Jabber"), IDI_JDISK, JABBER_CASE }, - { "client_Teabot", _T("|*teabot*|http://teabot.org/bot*|bot"), _T("Teabot"), _T("ClientIcons_Jabber"), IDI_TEABOT, JABBER_CASE }, - { "client_Psto", _T("*Psto*"), _T("Psto.net"), _T("ClientIcons_Jabber"), IDI_PSTO, JABBER_CASE }, - -//######################################################################################################################################### -//############################################################# Jabber clients ############################################################ -//######################################################################################################################################### - { "client_Psi", _T("*Psi*"), _T("PSI"), _T("ClientIcons_Jabber"), IDI_PSI, JABBER_CASE }, - { "client_GTalk_Gadget", _T("*TalkGadget*"), _T("GTalk Gadget"), _T("ClientIcons_Jabber"), IDI_GTALK_GADGET, JABBER_CASE }, - { "client_orkut", _T("orkut*"), _T("orkut"), _T("ClientIcons_Jabber"), IDI_ORKUT, JABBER_CASE }, - { "client_iGoogle", _T("iGoogle*"), _T("iGoogle"), _T("ClientIcons_Jabber"), IDI_IGOOGLE, JABBER_CASE }, - { "client_GMail", _T("|*gmail.*|GMail*"), _T("GMail"), _T("ClientIcons_Jabber"), IDI_GMAIL, JABBER_CASE }, - { "client_GTalk", _T("|*Talk.v*|*Google*Talk*|*Gtalk*|*-iPhon*"), _T("GoogleTalk aka GTalk"), _T("ClientIcons_Jabber"), IDI_GTALK, JABBER_CASE }, - { "client_Talkonaut", _T("*Talkonaut*"), _T("Talkonaut"), _T("ClientIcons_Jabber"), IDI_TALKONAUT, JABBER_CASE }, - { "client_Jajc", _T("|*Jajc*|Just Another Jabber Client"), _T("JAJC"), _T("ClientIcons_Jabber"), IDI_JAJC, JABBER_CASE }, - { "client_Tkabber", _T("|*Tkabber*|http://tkabber*"), _T("Tkabber"), _T("ClientIcons_Jabber"), IDI_TKABBER, JABBER_CASE }, - { "client_Exodus", _T("*Exodus*"), _T("Exodus"), _T("ClientIcons_Jabber"), IDI_EXODUS, JABBER_CASE }, - { "client_Pandion", _T("|*Pandion*|*Ïàíäèîí*"), _T("Pandion"), _T("ClientIcons_Jabber"), IDI_PANDION, JABBER_CASE }, - { "client_Gush", _T("*Gush*"), _T("Gush"), _T("ClientIcons_Jabber"), IDI_GUSH, JABBER_CASE }, - { "client_Gabber", _T("*Gabber*"), _T("Gabber"), _T("ClientIcons_Jabber"), IDI_GABBER, JABBER_CASE }, - { "client_Gajim", _T("*Gajim*"), _T("Gajim"), _T("ClientIcons_Jabber"), IDI_GAJIM, JABBER_CASE }, - { "client_Spark", _T("*Spark*"), _T("Spark"), _T("ClientIcons_Jabber"), IDI_SPARK, JABBER_CASE }, - { "client_Beejive", _T("*Beejive*"), _T("Beejive"), _T("ClientIcons_Jabber"), IDI_BEEJIVE, JABBER_CASE }, - - { "client_Jabbin", _T("*Jabbin*"), _T("Jabbin"), _T("ClientIcons_Jabber"), IDI_JABBIN, JABBER_CASE }, - { "client_Papla", _T("*Papla*"), _T("Papla"), _T("ClientIcons_Jabber"), IDI_PAPLA, JABBER_CASE }, - { "client_JabberZilla", _T("*Zilla*"), _T("JabberZilla"), _T("ClientIcons_Jabber"), IDI_JABBERZILLA, JABBER_CASE }, - { "client_BombusQD", _T("|*Bombusmod-qd*|*bombusqd*"), _T("BombusQD"), _T("ClientIcons_Jabber"), IDI_BOMBUSQD, JABBER_CASE }, - { "client_BombusMod", _T("|*Bombus*mod*|*bombusmod*"), _T("BombusMod"), _T("ClientIcons_Jabber"), IDI_BOMBUSMOD, JABBER_CASE }, - { "client_Bombus", _T("*Bombus*"), _T("Bombus"), _T("ClientIcons_Jabber"), IDI_BOMBUS, JABBER_CASE }, - { "client_Wildfire", _T("Wildfire*"), _T("Wildfire"), _T("ClientIcons_Jabber"), IDI_WILDFIRE, JABBER_CASE }, - { "client_M8Jabber", _T("*M8Jabber*"), _T("M8Jabber"), _T("ClientIcons_Jabber"), IDI_M8JABBER, JABBER_CASE }, - { "client_EMess", _T("*EMess*"), _T("EMess"), _T("ClientIcons_Jabber"), IDI_EMESS, JABBER_CASE }, - - { "client_Colibry", _T("Colibry*"), _T("Colibry"), _T("ClientIcons_Jabber"), IDI_COLIBRY, JABBER_CASE }, - - { "client_GoTalkMobile", _T("*Go*Talk*Mobile*"), _T("GoTalkMobile"), _T("ClientIcons_Jabber"), IDI_GOTALKMOBILE, JABBER_CASE }, - { "client_MGTalk", _T("Mobile?\?\?\?\?\?\?\?"), _T("MGTalk"), _T("ClientIcons_Jabber"), IDI_MGTALK, JABBER_CASE }, - { "client_Colloquy", _T("Colloquy*"), _T("Colloquy"), _T("ClientIcons_Jabber"), IDI_COLLOQUY, JABBER_CASE }, - { "client_WTW", _T("|http://wtw.k2t.eu*|wtw*"), _T("WTW"), _T("ClientIcons_Jabber"), IDI_WTW, JABBER_CASE }, - { "client_Spik", _T("Spik*"), _T("Spik"), _T("ClientIcons_Jabber"), IDI_SPIK, JABBER_CASE }, - { "client_Konnekt", _T("Konnekt*"), _T("Konnekt"), _T("ClientIcons_Jabber"), IDI_KONNEKT, JABBER_CASE }, - { "client_Vacuum", _T("*Vacuum*"), _T("Vacuum IM"), _T("ClientIcons_Jabber"), IDI_VACUUM, JABBER_CASE }, - - { "client_Neos", _T("Neos*"), _T("Neos"), _T("ClientIcons_Jabber"), IDI_NEOS, JABBER_CASE }, - { "client_GOIM", _T("*GOIM*"), _T("GOIM"), _T("ClientIcons_Jabber"), IDI_GOIM, JABBER_CASE }, - - { "client_SoapBox", _T("SoapBox*"), _T("SoapBox"), _T("ClientIcons_Jabber"), IDI_SOAPBOX, JABBER_CASE }, - - { "client_MozillaChat", _T("*Mozilla*Chat*"), _T("MozillaChat"), _T("ClientIcons_Jabber"), IDI_MOZILLACHAT, JABBER_CASE }, - { "client_WannaChat", _T("Wanna*Chat*"), _T("WannaChat"), _T("ClientIcons_Jabber"), IDI_WANNACHAT, JABBER_CASE }, - { "client_Nitro", _T("Nitro*"), _T("Nitro"), _T("ClientIcons_Jabber"), IDI_NITRO, JABBER_CASE }, - - { "client_JBother", _T("*JBother*"), _T("JBother"), _T("ClientIcons_Jabber"), IDI_JBOTHER, JABBER_CASE }, - { "client_gYaber", _T("gYaber*"), _T("gYaber"), _T("ClientIcons_Jabber"), IDI_GYABER, JABBER_CASE }, - - { "client_myJabber", _T("myJabber*"), _T("myJabber"), _T("ClientIcons_Jabber"), IDI_MYJABBER, JABBER_CASE }, - - { "client_JabberMSNGR", _T("Jabber Messenger*"), _T("Jabber Messenger"), _T("ClientIcons_Jabber"), IDI_JABBER_MESSENGER, JABBER_CASE }, - { "client_Jabberwocky", _T("Jabberwocky*"), _T("Jabberwocky (Amiga)"), _T("ClientIcons_Jabber"), IDI_JABBERWOCKY, JABBER_CASE }, - { "client_TipicIM", _T("Tipic*"), _T("TipicIM"), _T("ClientIcons_Jabber"), IDI_TIPICIM, JABBER_CASE }, - { "client_Triple", _T("Triple*"), _T("TripleSoftwareIM (TSIM)"),_T("ClientIcons_Jabber"), IDI_TRIPLE_SOFTWARE, JABBER_CASE }, - { "client_Leaf", _T("*Leaf*"), _T("Leaf Messenger"), _T("ClientIcons_Jabber"), IDI_LEAF, JABBER_CASE }, - - { "client_Chatopus", _T("*Chatopus*"), _T("Chatopus"), _T("ClientIcons_Jabber"), IDI_CHATOPUS, JABBER_CASE }, - { "client_Akeni", _T("*Akeni*"), _T("Akeni"), _T("ClientIcons_Jabber"), IDI_AKENI, JABBER_CASE }, - { "client_Coccinella", _T("*Coccinella*"), _T("Coccinella"), _T("ClientIcons_Jabber"), IDI_COCCINELLA, JABBER_CASE }, - { "client_WhisperIM", _T("*Whisper*"), _T("WhisperIM"), _T("ClientIcons_Jabber"), IDI_WHISPERIM, JABBER_CASE }, - { "client_Wija", _T("*wija*"), _T("Wija"), _T("ClientIcons_Jabber"), IDI_WIJA, JABBER_CASE }, - - { "client_JabberFoX", _T("*fox*"), _T("JabberFoX"), _T("ClientIcons_Jabber"), IDI_JABBERFOX, JABBER_CASE }, - - { "client_Gossip", _T("*Gossip*"), _T("Gossip"), _T("ClientIcons_Jabber"), IDI_GOSSIP, JABBER_CASE }, - { "client_Fire", _T("*Fire*"), _T("Fire"), _T("ClientIcons_Jabber"), IDI_FIRE, JABBER_CASE }, - { "client_Mercury", _T("*Mercury*"), _T("Mercury Messenger"), _T("ClientIcons_Jabber"), IDI_MERCURY_MESSENGER, JABBER_CASE }, - { "client_BitWise", _T("*BitWise*"), _T("BitWise"), _T("ClientIcons_Jabber"), IDI_BITWISE, JABBER_CASE }, - { "client_Iruka", _T("*Iruka*"), _T("Iruka"), _T("ClientIcons_Jabber"), IDI_IRUKA, JABBER_CASE }, - - { "client_Importal", _T("*Importal*"), _T("Importal"), _T("ClientIcons_Jabber"), IDI_IMPORTAL, JABBER_CASE }, - { "client_kf", _T("*kf*"), _T("kf jabber"), _T("ClientIcons_Jabber"), IDI_KF, JABBER_CASE }, - { "client_JClaim", _T("*JClaim*"), _T("JClaim"), _T("ClientIcons_Jabber"), IDI_JCLAIM, JABBER_CASE }, - - { "client_Nostromo", _T("*USCSS*Nostromo*"), _T("USCSS Nostromo"), _T("ClientIcons_Jabber"), IDI_NOSTROMO, JABBER_CASE }, - { "client_LLuna", _T("LLuna*"), _T("LLuna"), _T("ClientIcons_Jabber"), IDI_LLUNA, JABBER_CASE }, - - { "client_ChitChat", _T("*Chit*Chat*"), _T("ChitChat"), _T("ClientIcons_Jabber"), IDI_CHITCHAT, JABBER_CASE }, - { "client_WinJab", _T("WinJab*"), _T("WinJab"), _T("ClientIcons_Jabber"), IDI_WINJAB, JABBER_CASE }, - - { "client_JMC", _T("JMC*"), _T("JMC (Jabber Mix Client)"),_T("ClientIcons_Jabber"), IDI_JMC, JABBER_CASE }, - { "client_BlackBerry", _T("|*Berry*|*ICS?\?\?\?\?\?\?\?"), _T("BlackBerry"), _T("ClientIcons_Jabber"), IDI_BLACKBERRY, JABBER_CASE }, - { "client_mobber", _T("*mobber*"), _T("mobber"), _T("ClientIcons_Jabber"), IDI_MOBBER, JABBER_CASE }, - { "client_MCabber", _T("*mcabber*"), _T("MCabber"), _T("ClientIcons_Jabber"), IDI_MCABBER, JABBER_CASE }, - { "client_Jeti", _T("*Jeti*"), _T("Jeti"), _T("ClientIcons_Jabber"), IDI_JETI, JABBER_CASE }, - { "client_Gnome", _T("*Gnome*"), _T("Gnome"), _T("ClientIcons_Jabber"), IDI_GNOME, JABBER_CASE }, - { "client_JabberBeOS", _T("Jabber*BeOS*"), _T("Jabber (BeOS)"), _T("ClientIcons_Jabber"), IDI_JABBER_BEOS, JABBER_CASE }, - - { "client_JabberApplet", _T("Jabber*Applet*"), _T("JabberApplet"), _T("ClientIcons_Jabber"), IDI_JABBER_APPLET, JABBER_CASE }, - { "client_JabberNaut", _T("*Jabber*Naut*"), _T("JabberNaut"), _T("ClientIcons_Jabber"), IDI_JABBERNAUT, JABBER_CASE }, - - { "client_moJab", _T("moJab*"), _T("moJab"), _T("ClientIcons_Jabber"), IDI_MOJAB, JABBER_CASE }, - { "client_Chikka", _T("*Chikka*"), _T("Chikka"), _T("ClientIcons_Jabber"), IDI_CHIKKA, JABBER_CASE }, - - { "client_GreenThumb", _T("gReeNtHumB*"), _T("GreenThumb"), _T("ClientIcons_Jabber"), IDI_GREENTHUMB, JABBER_CASE }, - - { "client_BellSouth", _T("*BellSouth*"), _T("BellSouth"), _T("ClientIcons_Jabber"), IDI_BELLSOUTH, JABBER_CASE }, - - { "client_IMCom", _T("*IMCom*"), _T("IMCom"), _T("ClientIcons_Jabber"), IDI_IMCOM, JABBER_CASE }, - { "client_BuddySpace", _T("Buddy*Space*"), _T("BuddySpace"), _T("ClientIcons_Jabber"), IDI_BUDDYSPACE, JABBER_CASE }, - { "client_Kadu", _T("*Kadu*"), _T("Kadu"), _T("ClientIcons_Jabber"), IDI_KADU, JABBER_CASE }, - - { "client_Xiffian", _T("Xiffian*"), _T("Xiffian"), _T("ClientIcons_Jabber"), IDI_XIFFIAN, JABBER_CASE }, - { "client_Mango", _T("Mango*"), _T("Mango"), _T("ClientIcons_Jabber"), IDI_MANGO, JABBER_CASE }, - { "client_Sky_Messager", _T("Sky*Mess*"), _T("Sky Messager"), _T("ClientIcons_Jabber"), IDI_SKYMESSAGER, JABBER_CASE }, - { "client_QTJim", _T("*QTJim*"), _T("QTJim"), _T("ClientIcons_Jabber"), IDI_QTJIM, JABBER_CASE }, - { "client_Tapioca", _T("*Tapioca*"), _T("Tapioca"), _T("ClientIcons_Jabber"), IDI_TAPIOCA, JABBER_CASE }, - { "client_Telepathy", _T("*Telepathy*"), _T("Telepathy"), _T("ClientIcons_Jabber"), IDI_TELEPATHY, JABBER_CASE }, - { "client_Landell", _T("*Landell*"), _T("Landell"), _T("ClientIcons_Jabber"), IDI_LANDELL, JABBER_CASE }, - - { "client_Octro", _T("*Octro*"), _T("Octro"), _T("ClientIcons_Jabber"), IDI_OCTRO, JABBER_CASE }, - { "client_Desyr", _T("*Desyr*"), _T("Desyr Messenger"), _T("ClientIcons_Jabber"), IDI_DESYR, JABBER_CASE }, - { "client_LinQ", _T("*LinQ*"), _T("LinQ"), _T("ClientIcons_Jabber"), IDI_LINQ, JABBER_CASE }, - { "client_Xeus", _T("*Xeus*"), _T("Xeus"), _T("ClientIcons_Jabber"), IDI_XEUS, JABBER_CASE }, - { "client_OM", _T("OM*"), _T("OM aka Online Messenger"),_T("ClientIcons_Jabber"), IDI_OM, JABBER_CASE }, - - { "client_Interaction", _T("*Interaction*"), _T("Interaction"), _T("ClientIcons_Jabber"), IDI_INTERACTION, JABBER_CASE }, - { "client_JWGC", _T("|*JWGC*|Jabber *Gram*"), _T("JWGC (Jabber WindowGram Client)"), _T("ClientIcons_Jabber"), IDI_JWGC, JABBER_CASE }, - { "client_SIP_Comm", _T("*SIP*Communicator*"), _T("SIP Communicator"), _T("ClientIcons_Jabber"), IDI_SIP_COMM, JABBER_CASE }, - { "client_Bowline", _T("*Bow*line*"), _T("Bowline"), _T("ClientIcons_Jabber"), IDI_BOWLINE, JABBER_CASE }, - { "client_Vayusphere", _T("*Vayusphere*"), _T("Vayusphere"), _T("ClientIcons_Jabber"), IDI_VAYUSPHERE, JABBER_CASE }, - { "client_TransactIM", _T("*Transact*"), _T("TransactIM"), _T("ClientIcons_Jabber"), IDI_TRANSACTIM, JABBER_CASE }, - { "client_laffer", _T("*laffer*"), _T("Laffer"), _T("ClientIcons_Jabber"), IDI_LAFFER, JABBER_CASE }, - - { "client_InstanT", _T("*Instan-t*"), _T("Instan-t"), _T("ClientIcons_Jabber"), IDI_INSTANT, JABBER_CASE }, - { "client_GCN", _T("*GCN*"), _T("GCN"), _T("ClientIcons_Jabber"), IDI_GCN, JABBER_CASE }, - - { "client_Conference", _T("Conference*"), _T("Conference Bot (GMail)"), _T("ClientIcons_Jabber"), IDI_CONFERENCE, JABBER_CASE, TRUE }, - - { "client_Paltalk", _T("*Paltalk*"), _T("Paltalk"), _T("ClientIcons_Jabber"), IDI_PALTALK, JABBER_CASE }, - { "client_Twitter", _T("*Twitter*"), _T("Twitter"), _T("ClientIcons_Jabber"), IDI_TWITTER, JABBER_CASE }, - { "client_SMTPTransport", _T("smtp*transport*"), _T("SMTP Transport"), _T("ClientIcons_Jabber"), IDI_SMTP_TRANSPORT, JABBER_CASE }, - { "client_studivz", _T("*studivz*"), _T("StudiVZ"), _T("ClientIcons_Jabber"), IDI_STUDIVZ, JABBER_CASE }, - { "client_schuelervz", _T("*schuelervz*"), _T("SchulerVZ"), _T("ClientIcons_Jabber"), IDI_SCHULERVZ, JABBER_CASE }, - { "client_meinvz", _T("*meinvz*"), _T("MeinVZ"), _T("ClientIcons_Jabber"), IDI_MEINVZ, JABBER_CASE }, - { "client_jabbim", _T("*jabbim*"), _T("Jabbim"), _T("ClientIcons_Jabber"), IDI_JABBIM, JABBER_CASE }, - { "client_yaonline", _T("|*yandex*|*ß.Îíëàéí*|*ßíäåêñ*|*yaonline*"), _T("YA online"), _T("ClientIcons_Jabber"), IDI_YAONLINE, JABBER_CASE }, - { "client_jabiru", _T("|*Jabiru*|http://jabiru*"), _T("Jabiru"), _T("ClientIcons_Jabber"), IDI_JABIRU, JABBER_CASE }, - { "client_SworIM", _T("*SworIM*"), _T("SworIM"), _T("ClientIcons_Jabber"), IDI_SWORIM, JABBER_CASE }, - { "client_Yambi", _T("*Yambi*"), _T("Yambi"), _T("ClientIcons_Jabber"), IDI_YAMBI, JABBER_CASE }, - { "client_Glu", _T("|*glu*|http://glu.net/*"), _T("Glu"), _T("ClientIcons_Jabber"), IDI_GLU, JABBER_CASE }, - { "client_Facebook", _T("*Facebook*"), _T("Facebook"), _T("ClientIcons_Jabber"), IDI_FACEBOOK, JABBER_CASE }, - { "client_WebEx", _T("|http://webex.com/connect /*"), _T("Cisco WebEx Connect"), _T("ClientIcons_Jabber"), IDI_WEBEX, JABBER_CASE }, - { "client_JWChat", _T("|jwchat*"), _T("JWChat"), _T("ClientIcons_Jabber"), IDI_JWCHAT, JABBER_CASE }, - { "client_Smack", _T("|http://www.igniterealtime.org/projects/smack/*|*smack*"), _T("Smack"), _T("ClientIcons_Jabber"), IDI_SMACK, JABBER_CASE }, - { "client_Android", _T("Android *"), _T("Android"), _T("ClientIcons_Jabber"), IDI_ANDROID, JABBER_CASE }, - { "client_PyICQ-t", _T("|*PyICQ-t*|*pyICQ*|ICQ*Transport*"), _T("PyICQ-t Jabber Transport"), _T("ClientIcons_Jabber"), IDI_PYICQT, JABBER_CASE }, - { "client_PyAIM-t", _T("|*PyAIM-t*|*pyAIM*"), _T("PyAIM-t Jabber Transport"), _T("ClientIcons_Jabber"), IDI_PYAIMT, JABBER_CASE }, - { "client_PyMRA-t", _T("|*PyMRA-t*|*pyMRA*|*DRQZ00fz5WP*") - _T("|http://svn.xmpp.ru/repos/mrim*|Mrim*"), _T("PyMRA-t Jabber Transport"), _T("ClientIcons_Jabber"), IDI_PYMRAT, JABBER_CASE }, - { "client_PyMSN-t", _T("|*PyMSN-t*|*pyMSN*"), _T("PyMSN-t Jabber Transport"), _T("ClientIcons_Jabber"), IDI_PYMSNT, JABBER_CASE }, - { "client_PyIRC-t", _T("|*PyIRC-t*|*pyIRC*"), _T("PyIRC-t Jabber Transport"), _T("ClientIcons_Jabber"), IDI_PYIRCT, JABBER_CASE }, - { "client_PyYIM-t", _T("|*PyYIM-t*|*pyYIM*"), _T("PyYahoo-t Jabber Transport"),_T("ClientIcons_Jabber"), IDI_PYYAHOOT, JABBER_CASE }, - { "client_GnuGadu", _T("Gnu Gadu*"), _T("GNU Gadu"), _T("ClientIcons_Jabber"), IDI_GNUGADU, JABBER_CASE }, - { "client_Eyeball", _T("*Eye*ball*"), _T("Eyeball Chat"), _T("ClientIcons_Jabber"), IDI_EYEBALL_CHAT, JABBER_CASE }, - { "client_iMov", _T("*imov*"), _T("iMov"), _T("ClientIcons_Jabber"), IDI_IMOV, JABBER_CASE }, - { "client_iMeem", _T("iMeem*"), _T("iMeem"), _T("ClientIcons_Jabber"), IDI_IMEEM, JABBER_CASE }, - { "client_AnothRSSBot", _T("|*Anothrbot*|*Anothr Rss Bot*"), _T("Anothr Rss Bot"), _T("ClientIcons_Jabber"), IDI_ANOTHRSSBOT, JABBER_CASE }, - { "client_Imified", _T("*someresource*"), _T("Imified"), _T("ClientIcons_Jabber"), IDI_IMIFIED, JABBER_CASE }, - { "client_RenRen", _T("|*WTalkProxy0_0*|*http://talk.xiaonei.com*"), _T("RenRen"), _T("ClientIcons_Jabber"), IDI_RENREN, JABBER_CASE }, - { "client_Aqq", _T("|http://aqq.eu*|aqq*"), _T("Aqq"), _T("ClientIcons_Jabber"), IDI_AQQ, JABBER_CASE }, - { "client_LeechCraft", _T("|http://leechcraft.org*|LeechCraft*"), _T("LeechCraft"), _T("ClientIcons_Jabber"), IDI_LEECHCRAFT, JABBER_CASE }, - { "client_Emas", _T("*.el*"), _T("Emacs"), _T("ClientIcons_Jabber"), IDI_EMACS, JABBER_CASE }, - { "client_jTalk", _T("|http://jtalk*|jTalk*"), _T("jTalk"), _T("ClientIcons_Jabber"), IDI_JTALK, JABBER_CASE }, - { "client_Thunderbird", _T("Thunderbir*"), _T("Thunderbird"), _T("ClientIcons_Jabber"), IDI_THUNDERBIRD, JABBER_CASE }, - -//######################################################################################################################################### -//############################################################### VoIP #################################################################### -//######################################################################################################################################### - { "client_Gizmo", _T("*Gizmo*"), _T("Gizmo"), _T("ClientIcons_VoIP"), IDI_GIZMO, VOIP_CASE }, - { "client_Zoep", _T("*Zoep*"), _T("Zoep"), _T("ClientIcons_VoIP"), IDI_ZOEP, VOIP_CASE }, - { "client_WengoPhone", _T("*Wengo*"), _T("WengoPhone"), _T("ClientIcons_VoIP"), IDI_WENGOPHONE, VOIP_CASE }, - -//######################################################################################################################################### -//################################################################## Tlen ################################################################## -//######################################################################################################################################### - { "client_Tlen", _T("*Tlen*"), _T("Tlen.pl"), _T("ClientIcons_Tlen"), IDI_TLEN, TLEN_CASE }, - -//######################################################################################################################################### -//################################################################## IRC ################################################################## -//######################################################################################################################################### - { "client_KVIrc", _T("*KVIrc*"), _T("KVIrc"), _T("ClientIcons_IRC"), IDI_KVIRC, IRC_CASE }, - { "client_mIRC", _T("*mIRC*"), _T("mIRC"), _T("ClientIcons_IRC"), IDI_MIRC, IRC_CASE }, - { "client_Opera", _T("*Opera*"), _T("Opera"), _T("ClientIcons_IRC"), IDI_OPERA, IRC_CASE }, - { "client_ChatZilla", _T("*ChatZilla*"), _T("ChatZilla"), _T("ClientIcons_IRC"), IDI_CHATZILLA, IRC_CASE }, - { "client_KSirc", _T("*ksirk*"), _T("KSirc"), _T("ClientIcons_IRC"), IDI_KSIRC, IRC_CASE }, - - { "client_xBitch", _T("*xBitch*"), _T("xBitch"), _T("ClientIcons_IRC"), IDI_XBITCH, IRC_CASE }, - { "client_xChat", _T("*xChat*"), _T("xChat"), _T("ClientIcons_IRC"), IDI_XCHAT, IRC_CASE }, - { "client_Pirch", _T("*Pirch*"), _T("Pirch"), _T("ClientIcons_IRC"), IDI_PIRCH, IRC_CASE }, - { "client_pIRC", _T("*pIRC*"), _T("pIRC"), _T("ClientIcons_IRC"), IDI_PIRC, IRC_CASE }, - { "client_psyBNC", _T("*psyBNC*"), _T("psyBNC"), _T("ClientIcons_IRC"), IDI_PSYBNC, IRC_CASE }, - - { "client_SysReset", _T("*Sys*Reset*"), _T("SysReset"), _T("ClientIcons_IRC"), IDI_SYSRESET, IRC_CASE }, - { "client_FChat", _T("*FChat*"), _T("FChat"), _T("ClientIcons_IRC"), IDI_FCHAT, IRC_CASE }, - - { "client_Konversation", _T("*Konversation*"), _T("Konversation"), _T("ClientIcons_IRC"), IDI_KONVERSATION, IRC_CASE }, - { "client_Conversation", _T("*Conversation*"), _T("Conversation"), _T("ClientIcons_IRC"), IDI_CONVERSATION, IRC_CASE }, - - { "client_aMule", _T("*aMule*"), _T("aMule"), _T("ClientIcons_IRC"), IDI_AMULE, IRC_CASE }, - { "client_eMuleMorphXT", _T("eMule*MorphXT*"), _T("eMule MorphXT"), _T("ClientIcons_IRC"), IDI_EMULE_MORPHXT, IRC_CASE }, - { "client_eMuleNeo", _T("eMule*Neo*"), _T("eMule Neo"), _T("ClientIcons_IRC"), IDI_EMULE_NEO, IRC_CASE }, - { "client_eMuleXtreme", _T("eMule*Xtreme*"), _T("eMule Xtreme"), _T("ClientIcons_IRC"), IDI_EMULE_XTREME, IRC_CASE }, - { "client_eMulePlus", _T("|eMule*plus*|eMule*+*"), _T("eMule+"), _T("ClientIcons_IRC"), IDI_EMULE_PLUS, IRC_CASE }, - { "client_eMule", _T("*eMule*"), _T("eMule"), _T("ClientIcons_IRC"), IDI_EMULE, IRC_CASE }, - - { "client_EggdropRacBot", _T("*Eggdrop*RacBot*"), _T("Eggdrop RacBot"), _T("ClientIcons_IRC"), IDI_EGGDROP_RACBOT, IRC_CASE }, - { "client_Eggdrop", _T("*Eggdrop*"), _T("Eggdrop"), _T("ClientIcons_IRC"), IDI_EGGDROP, IRC_CASE }, - - { "client_AmIRC", _T("*AmIRC*"), _T("AmIRC"), _T("ClientIcons_IRC"), IDI_AMIRC, IRC_CASE }, - { "client_BersIRC", _T("*BersIRC*"), _T("BersIRC"), _T("ClientIcons_IRC"), IDI_BERSIRC, IRC_CASE }, - { "client_cbirc", _T("*cbirc*"), _T("cbirc"), _T("ClientIcons_IRC"), IDI_CBIRC, IRC_CASE }, - { "client_dIRC", _T("*dIRC*"), _T("dIRC"), _T("ClientIcons_IRC"), IDI_DIRC, IRC_CASE }, - - { "client_GDPChat", _T("*GDPChat*"), _T("GDP Web Chat"), _T("ClientIcons_IRC"), IDI_GDPCHAT, IRC_CASE }, - { "client_IceChat7", _T("*Ice*Chat*7*"), _T("IceChat 7"), _T("ClientIcons_IRC"), IDI_ICECHAT7, IRC_CASE }, - { "client_IceChat5", _T("*Ice*Chat*5*"), _T("IceChat 5"), _T("ClientIcons_IRC"), IDI_ICECHAT5, IRC_CASE }, - { "client_IceChat", _T("*Ice*Chat*"), _T("IceChat"), _T("ClientIcons_IRC"), IDI_ICECHAT, IRC_CASE }, - - { "client_piorun", _T("*piorun*"), _T("Piorun"), _T("ClientIcons_IRC"), IDI_PIORUN, IRC_CASE }, - - { "client_ProChat", _T("*Pro*Chat*"), _T("ProChat"), _T("ClientIcons_IRC"), IDI_PROCHAT, IRC_CASE }, - { "client_SmartIRC", _T("*Smart*IRC*"), _T("SmartIRC"), _T("ClientIcons_IRC"), IDI_SMART_IRC, IRC_CASE }, - - { "client_GoPowerTools", _T("*Go*PowerTools*"), _T("GoPowerTools"), _T("ClientIcons_IRC"), IDI_GOPOWERTOOLS, IRC_CASE }, - { "client_HydraIRC", _T("*Hydra*IRC*"), _T("HydraIRC"), _T("ClientIcons_IRC"), IDI_HYDRA_IRC, IRC_CASE }, - - { "client_ircle", _T("*ircle*"), _T("ircle"), _T("ClientIcons_IRC"), IDI_IRCLE, IRC_CASE }, - { "client_IRCXpro", _T("*IRCXpro*"), _T("IRCXpro"), _T("ClientIcons_IRC"), IDI_IRCXPRO, IRC_CASE }, - { "client_irssi", _T("*irssi*"), _T("irssi"), _T("ClientIcons_IRC"), IDI_IRSSI, IRC_CASE }, - { "client_jircii", _T("*jircii*"), _T("jircii"), _T("ClientIcons_IRC"), IDI_JIRCII, IRC_CASE }, - { "client_jmIrc", _T("*jmIrc*"), _T("jmIrc"), _T("ClientIcons_IRC"), IDI_JMIRC, IRC_CASE }, - { "client_Klient", _T("*Klient*"), _T("Klient"), _T("ClientIcons_IRC"), IDI_KLIENT, IRC_CASE }, - - { "client_zsIRC", _T("*zsIRC*"), _T("zsIRC"), _T("ClientIcons_IRC"), IDI_ZSIRC, IRC_CASE }, - - { "client_NeoRaTrion", _T("*NeoRa*Trion*"), _T("NeoRa Trion"), _T("ClientIcons_IRC"), IDI_NEORATRION, IRC_CASE }, - { "client_Nettalk", _T("*Nettalk*"), _T("Nettalk"), _T("ClientIcons_IRC"), IDI_NETTALK, IRC_CASE }, - { "client_NoNameScript", _T("*NoName*Script*"), _T("NoNameScript"), _T("ClientIcons_IRC"), IDI_NONAME_SCRIPT, IRC_CASE }, - { "client_PJIRC", _T("*PJIRC*"), _T("PJIRC"), _T("ClientIcons_IRC"), IDI_PJIRC, IRC_CASE }, - { "client_Snak", _T("*Snak*"), _T("Snak"), _T("ClientIcons_IRC"), IDI_SNAK, IRC_CASE }, - - { "client_VircaIRC", _T("*VircaIRC*"), _T("VircaIRC"), _T("ClientIcons_IRC"), IDI_VIRCAIRC, IRC_CASE }, - { "client_VisionIRC", _T("*VisionIRC*"), _T("VisionIRC"), _T("ClientIcons_IRC"), IDI_VISIONIRC, IRC_CASE }, - { "client_VisualIRC", _T("*VisualIRC*"), _T("VisualIRC"), _T("ClientIcons_IRC"), IDI_VISUALIRC, IRC_CASE }, - { "client_VortecIRC", _T("*VortecIRC*"), _T("VortecIRC"), _T("ClientIcons_IRC"), IDI_VORTECIRC, IRC_CASE }, - - { "client_WeeChat", _T("*WeeChat*"), _T("WeeChat"), _T("ClientIcons_IRC"), IDI_WEECHAT, IRC_CASE }, - { "client_WLIrc", _T("*WLIrc*"), _T("WLIrc"), _T("ClientIcons_IRC"), IDI_WLIRC, IRC_CASE }, - { "client_wmIRC", _T("*wmIRC*"), _T("wmIRC"), _T("ClientIcons_IRC"), IDI_WMIRC, IRC_CASE }, - - { "client_XChatAqua", _T("*X*Chat*Aqua*"), _T("X-Chat Aqua"), _T("ClientIcons_IRC"), IDI_XCHATAQUA, IRC_CASE }, - - { "client_ZipTorrent", _T("*ZipTorrent*"), _T("ZipTorrent"), _T("ClientIcons_IRC"), IDI_ZIPTORRENT, IRC_CASE }, - - { "client_Babbel", _T("*Babbel*"), _T("Babbel"), _T("ClientIcons_IRC"), IDI_BABBEL, IRC_CASE }, - { "client_Xirc", _T("*Xirc*"), _T("Xirc"), _T("ClientIcons_IRC"), IDI_XIRC, IRC_CASE }, - { "client_savIRC", _T("*savIRC*"), _T("savIRC"), _T("ClientIcons_IRC"), IDI_SAVIRC, IRC_CASE }, - { "client_XiRCON", _T("*XiRCON*"), _T("XiRCON"), _T("ClientIcons_IRC"), IDI_XIRCON, IRC_CASE }, - - { "client_MP3Script", _T("*MP3*Script*"), _T("MP3 Script for mIRC"), _T("ClientIcons_IRC"), IDI_MP3_SCRIPT, IRC_CASE }, - { "client_IRCUnknown", _T("*IRC*"), _T("Unknown IRC client"), _T("ClientIcons_IRC"), IDI_IRC_UNKNOWN, IRC_CASE }, - -//######################################################################################################################################### -//################################################################## MSN ################################################################## -//######################################################################################################################################### - { "client_WLM11", _T("WLM*2011*"), _T("Windows Live 11"), _T("ClientIcons_MSN"), IDI_WLM_10, MSN_CASE }, - { "client_WLM10", _T("WLM*2010*"), _T("Windows Live 10"), _T("ClientIcons_MSN"), IDI_WLM_10, MSN_CASE }, - { "client_WLM9", _T("WLM*9*"), _T("Windows Live v9.x"), _T("ClientIcons_MSN"), IDI_WLM_9, MSN_CASE }, - { "client_MSN8", _T("|WLM*8.*|MSN*8.*"), _T("Windows Live v8.x"), _T("ClientIcons_MSN"), IDI_MSN_8, MSN_CASE }, - { "client_MSN7x", _T("MSN*7.*"), _T("MSN Messenger v7.x"), _T("ClientIcons_MSN"), IDI_MSN_7, MSN_CASE }, - { "client_MSN6x", _T("MSN*6.*"), _T("MSN Messenger v6.x"), _T("ClientIcons_MSN"), IDI_MSN_6, MSN_CASE }, - { "client_MSN45", _T("MSN*4.x-5.x"), _T("MSN Messenger v4.x-5.x"),_T("ClientIcons_MSN"), IDI_MSN_45, MSN_CASE }, - { "client_MSN4Mac", _T("MSN*Mac*"), _T("MSN for Mac"), _T("ClientIcons_MSN"), IDI_MSN_MAC, MSN_CASE }, - { "client_aMSN", _T("*aMSN*"), _T("aMSN"), _T("ClientIcons_MSN"), IDI_AMSN, MSN_CASE }, - { "client_WebMessenger", _T("WebMessenger*"), _T("WebMessenger"), _T("ClientIcons_MSN"), IDI_WEBMESSENGER, MSN_CASE }, - { "client_MSN", _T("|WLM*|MSN*|Windows Live*"), _T("MSN"), _T("ClientIcons_MSN"), IDI_MSN, MSN_CASE, TRUE }, - -//######################################################################################################################################### -//################################################################## AIM ################################################################## -//######################################################################################################################################### - { "client_AIM_Triton", _T("*AIM*Triton*"), _T("AIM Triton"), _T("ClientIcons_AIM"), IDI_AIM_TRITON, AIM_CASE }, - { "client_Aim4", _T("AIM*4.*"), _T("AIM v4.x"), _T("ClientIcons_AIM"), IDI_AIM_4, AIM_CASE }, - { "client_Aim5", _T("AIM*5.*"), _T("AIM v5.x"), _T("ClientIcons_AIM"), IDI_AIM_5, AIM_CASE }, - { "client_AimMac", _T("AIM*Mac*"), _T("AIM for MacOS"), _T("ClientIcons_AIM"), IDI_AIM_MAC, AIM_CASE }, - - { "client_AimMobile", _T("|AIM*Mobile*|AIM*gprs*|Aim*sms*"), _T("AIM Mobile"), _T("ClientIcons_AIM"), IDI_AIM_MOBILE, AIM_CASE }, - { "client_Naim", _T("*naim*"), _T("Naim"), _T("ClientIcons_AIM"), IDI_NAIM, AIM_CASE }, - { "client_miniaim", _T("*miniaim*"), _T("miniaim"), _T("ClientIcons_AIM"), IDI_MINIAIM, AIM_CASE }, - { "client_TerraIM", _T("*Terra*"), _T("TerraIM"), _T("ClientIcons_AIM"), IDI_TERRAIM, AIM_CASE }, - { "client_Aim", _T("AIM*"), _T("AIM"), _T("ClientIcons_AIM"), IDI_AIM, AIM_CASE }, - -//######################################################################################################################################### -//################################################################# Yahoo ################################################################# -//######################################################################################################################################### - { "client_libyahoo2", _T("*libyahoo*"), _T("libyahoo2"), _T("ClientIcons_Yahoo"), IDI_LIBYAHOO2, YAHOO_CASE }, - { "client_Yahoo5", _T("*Yahoo*5*"), _T("Yahoo v5.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO5, YAHOO_CASE }, - { "client_Yahoo6", _T("*Yahoo*6*"), _T("Yahoo v6.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO6, YAHOO_CASE }, - { "client_Yahoo7", _T("*Yahoo*7*"), _T("Yahoo v7.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO7, YAHOO_CASE }, - { "client_Yahoo8", _T("*Yahoo*8*"), _T("Yahoo v8.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO8, YAHOO_CASE }, - { "client_Yahoo9", _T("*Yahoo*9*"), _T("Yahoo v9.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO8, YAHOO_CASE }, - { "client_Yahoo10", _T("*Yahoo*10*"), _T("Yahoo v10.x"), _T("ClientIcons_Yahoo"), IDI_YAHOO10, YAHOO_CASE }, - { "client_YahooGoMobile", _T("|Yahoo*Go*|Yahoo*Mobile*"), _T("Yahoo! Go Mobile"), _T("ClientIcons_Yahoo"), IDI_YAHOO_GO_MOBILE, YAHOO_CASE }, - { "client_PingBox", _T("*Yahoo*PingBox*"), _T("Yahoo PingBox"), _T("ClientIcons_Yahoo"), IDI_PINGBOX, YAHOO_CASE }, - { "client_YahooWebMessenger",_T("*Yahoo*Web*Messenger"), _T("Yahoo Web Messenger"), _T("ClientIcons_Yahoo"), IDI_YAHOO10, YAHOO_CASE }, - { "client_Yahoo", _T("*Yahoo*"), _T("Yahoo"), _T("ClientIcons_Yahoo"), IDI_YAHOO, YAHOO_CASE }, - -//######################################################################################################################################### -//##################################################### Gadu-Gadu clients ################################################################# -//######################################################################################################################################### - { "client_Gadu_Gadu_7", _T("Gadu-Gadu*7*"), _T("Gadu-Gadu v7.x"), _T("ClientIcons_Gadu"), IDI_GADU_GADU_7, GADU_CASE }, - { "client_Gadu_Gadu_6", _T("Gadu-Gadu*6*"), _T("Gadu-Gadu v6.x"), _T("ClientIcons_Gadu"), IDI_GADU_GADU_6, GADU_CASE }, - -//######################################################################################################################################### -//###################################################### Mail.Ru clients ################################################################## -//######################################################################################################################################### - { "client_MailRu_official", _T("|magent*|Mail.ru Agent*official*|Mail.ru Agent*PC*") - _T("|http://agent.mail.ru*"), _T("Mail.Ru Agent (official client)"), _T("ClientIcons_MRA"), IDI_MAIL_RU_OFFICIAL, 14 }, - { "client_MailRu_Mobile", _T("|wmagent*|MobileAgent*|sagent*|Mail.ru Agent*Symbian*") - _T("|jagent*"), _T("Mail.Ru Mobile Agent"), _T("ClientIcons_MRA"), IDI_MAIL_RU_MOBILE, 14 }, - { "client_MailRu_web_official", _T("Web Agent*"), _T("Mail.Ru Web Agent"), _T("ClientIcons_MRA"), IDI_MAIL_RU_WEBAGENT, 14 }, - { "client_MailRu_unknown", _T("Mail.ru Agent*"), _T("Mail.Ru (unknown client)"), _T("ClientIcons_MRA"), IDI_MAIL_RU_UNKNOWN, 14 }, - -//######################################################################################################################################### -//####################################################### Skype clients ################################################################### -//######################################################################################################################################### - { "client_Skype3", _T("*Skype*3.*"), _T("Skype v3.x"), _T("ClientIcons_Skype"), IDI_SKYPE3, SKYPE_CASE }, - { "client_Skype2", _T("*Skype*2.*"), _T("Skype v2.x"), _T("ClientIcons_Skype"), IDI_SKYPE2, SKYPE_CASE }, - { "client_Skype1", _T("*Skype*"), _T("Skype v1.x"), _T("ClientIcons_Skype"), IDI_SKYPE1, SKYPE_CASE }, - -//######################################################################################################################################### -//###################################################### Weather clients ################################################################## -//######################################################################################################################################### - { "client_accu", _T("*accuweather*"), _T("AccuWeather"), _T("ClientIcons_Weather"), IDI_ACCU, WEATHER_CASE, TRUE }, - { "client_gismeteo", _T("*gismeteo*"), _T("GisMeteo"), _T("ClientIcons_Weather"), IDI_GISMETEO, WEATHER_CASE, TRUE }, - { "client_intelli", _T("*intellicast*"), _T("Intellicast"), _T("ClientIcons_Weather"), IDI_INTELLI, WEATHER_CASE, TRUE }, - { "client_meteogid", _T("|*meteo-gid*|*meteogid*|*MeteoGid*"), _T("Meteo-Gid"), _T("ClientIcons_Weather"), IDI_METEOGID, WEATHER_CASE, TRUE }, - { "client_meteonovosti", _T("*meteonovosti*"), _T("Meteonovosti"), _T("ClientIcons_Weather"), IDI_METEONOVOSTI, WEATHER_CASE, TRUE }, - { "client_noaa", _T("*noaa*"), _T("NOAA Weather"), _T("ClientIcons_Weather"), IDI_NOAA, WEATHER_CASE, TRUE }, - { "client_real", _T("*realmeteo*"), _T("RealMeteo"), _T("ClientIcons_Weather"), IDI_REALMETEO, WEATHER_CASE, TRUE }, - { "client_under", _T("Weather Underground*"), _T("Weather Underground"), _T("ClientIcons_Weather"), IDI_UNDERGROUND, WEATHER_CASE, TRUE }, - { "client_weatherxml", _T("*WeatherXML*"), _T("WeatherXML"), _T("ClientIcons_Weather"), IDI_WEATHERXML, WEATHER_CASE, TRUE }, - { "client_wetter", _T("*wetter*"), _T("Wetter"), _T("ClientIcons_Weather"), IDI_WETTER, WEATHER_CASE, TRUE }, - { "client_yweather", _T("*Yahoo Weather*"), _T("Yahoo Weather"), _T("ClientIcons_Weather"), IDI_YWEATHER, WEATHER_CASE, TRUE }, - { "client_weather_cn", _T("*weather.com.cn*"), _T("Weather CN"), _T("ClientIcons_Weather"), IDI_WEATHER_CN, WEATHER_CASE, TRUE }, - { "client_weather", _T("*weather*"), _T("Weather"), _T("ClientIcons_Weather"), IDI_WEATHER, WEATHER_CASE, TRUE }, - -//######################################################################################################################################### -//############################################################ RSS ######################################################################## -//######################################################################################################################################### - { "client_rss09x", _T("*RSS*0.9*"), _T("RSS 0.9x"), _T("ClientIcons_RSS"), IDI_RSS09, RSS_CASE }, - { "client_rss1", _T("*RSS*1.*"), _T("RSS 1"), _T("ClientIcons_RSS"), IDI_RSS1, RSS_CASE }, - { "client_rss2", _T("*RSS*2.*"), _T("RSS 2"), _T("ClientIcons_RSS"), IDI_RSS2, RSS_CASE }, - { "client_atom1", _T("*Atom*1.*"), _T("Atom 1"), _T("ClientIcons_RSS"), IDI_ATOM1, RSS_CASE }, - { "client_atom3", _T("*Atom*3.*"), _T("Atom 3"), _T("ClientIcons_RSS"), IDI_ATOM3, RSS_CASE }, - -//######################################################################################################################################### -//############################################################ QQ ######################################################################### -//######################################################################################################################################### - { "client_MobileQQ", _T("|Mobile*QQ*|iPhone*QQ*|QQ WAP*"), _T("Mobile QQ"), _T("ClientIcons_QQ"), IDI_MOBILEQQ, QQ_CASE }, - { "client_QQConcept", _T("QQ*Concept*"), _T("QQ Concept"), _T("ClientIcons_QQ"), IDI_QQCONCEPT, QQ_CASE }, - { "client_QQCRM", _T("QQ*CRM*"), _T("QQ CRM"), _T("ClientIcons_QQ"), IDI_QQCRM, QQ_CASE }, - { "client_QQSilver", _T("QQ*Silverlight*"), _T("QQ Silverlight"), _T("ClientIcons_QQ"), IDI_QQSILVER, QQ_CASE }, - { "client_TM2008", _T("|TM2008*|TM2009*|TM2010*"), _T("TM 2008 and >"), _T("ClientIcons_QQ"), IDI_TM2008, QQ_CASE }, - { "client_TM", _T("TM*"), _T("TM"), _T("ClientIcons_QQ"), IDI_TM, QQ_CASE }, - { "client_QQInt", _T("QQ*International*"), _T("QQ International"), _T("ClientIcons_QQ"), IDI_QQINT, QQ_CASE }, - { "client_YamQQ", _T("YamQQ*"), _T("Yam QQ"), _T("ClientIcons_QQ"), IDI_YAMQQ, QQ_CASE }, - { "client_WebQQ", _T("WebQQ*"), _T("WebQQ"), _T("ClientIcons_QQ"), IDI_WEBQQ, QQ_CASE }, - { "client_QQ", _T("QQ*"), _T("QQ"), _T("ClientIcons_QQ"), IDI_QQ, QQ_CASE }, - - { "client_Notfound", _T("Notfound"), _T("Not founded icon"), _T(""), IDI_NOTFOUND, OTHER_CASE, TRUE }, - { "client_Unknown", _T("|*Unknown*|..."), _T("Unknown client"), _T(""), IDI_UNKNOWN, OTHER_CASE, TRUE }, - { "client_Undetected", _T("?*"), _T("Undetected client"), _T(""), IDI_UNDETECTED, OTHER_CASE, TRUE }, -}; - -int DEFAULT_KN_FP_MASK_COUNT = SIZEOF(def_kn_fp_mask); - -//######################################################################################################################################### -//######################################################### Overlays, layer #1 ############################################################ -//######################################################################################################################################### -KN_FP_MASK def_kn_fp_overlays_mask[] = -{// IconName Mask Icon caption NULL ICON_RESOURCE_ID -//######################################################################################################################################### -//#################################################### Miranda Packs ###################################################################### -//######################################################################################################################################### - { "client_HIEROS_", _T("*HierOS*"), _T("HierOS"), _T("ClientIcons_Packs"), IDI_MIRANDA_HIEROS, PACKS_CASE }, - { "client_YAOL_", _T("*yaol*"), _T("YAOL"), _T("ClientIcons_Packs"), IDI_MIRANDA_YAOL, PACKS_CASE }, - { "client_KDL_", _T("|*KDL*|*ÊÄË*"), _T("KDL"), _T("ClientIcons_Packs"), IDI_MIRANDA_KDL, PACKS_CASE }, - { "client_ValeraVi_", _T("*Valera*Vi*"), _T("ValeraVi"), _T("ClientIcons_Packs"), IDI_MIRANDA_VALERAVI, PACKS_CASE }, - { "client_Stalker_", _T("*Stalker*"), _T("Stalker"), _T("ClientIcons_Packs"), IDI_MIRANDA_STALKER, PACKS_CASE }, - { "client_Kuzzman_", _T("*kuzzman*"), _T("Kuzzman"), _T("ClientIcons_Packs"), IDI_MIRANDA_KUZZMAN, PACKS_CASE }, - { "client_AF_", _T("*AF*Pack*"), _T("AF"), _T("ClientIcons_Packs"), IDI_MIRANDA_AF, PACKS_CASE }, - { "client_Kolich_", _T("*Kolich*"), _T("Kolich"), _T("ClientIcons_Packs"), IDI_MIRANDA_KOLICH, PACKS_CASE }, - { "client_Umedon_", _T("*Miranda*Umedon*"), _T("Umedon"), _T("ClientIcons_Packs"), IDI_MIRANDA_UMEDON, PACKS_CASE }, - { "client_Se7ven_", _T("|^*sss*|*[S7*pack]*|*[S7]*"), _T("Se7ven"), _T("ClientIcons_Packs"), IDI_MIRANDA_SE7VEN, PACKS_CASE }, - { "client_SSS_", _T("*sss*pack*"), _T("SSS build"), _T("ClientIcons_Packs"), IDI_MIRANDA_SSS_MOD, PACKS_CASE }, - { "client_Faith_", _T("*Faith*Pack*"), _T("Faith"), _T("ClientIcons_Packs"), IDI_MIRANDA_FAITH, PACKS_CASE }, - { "client_LexSys_", _T("|*MirandaLS*|*LexSys*"), _T("LexSys"), _T("ClientIcons_Packs"), IDI_MIRANDA_LEXSYS, PACKS_CASE }, - { "client_dmikos_", _T("*dmikos*"), _T("Dmikos"), _T("ClientIcons_Packs"), IDI_MIRANDA_DMIKOS, PACKS_CASE }, - { "client_Tweety_", _T("*tweety*"), _T("Tweety"), _T("ClientIcons_Packs"), IDI_MIRANDA_TWEETY, PACKS_CASE }, - { "client_ME_", _T("*[Miranda ME]*"), _T("Miranda ME"), _T("ClientIcons_Packs"), IDI_MIRANDA_ME, PACKS_CASE }, - { "client_BRI_", _T("*bri*edition*"), _T("Bri edition"), _T("ClientIcons_Packs"), IDI_MIRANDA_BRI, PACKS_CASE }, - { "client_ALFAMAR_", _T("*AlfaMaR*"), _T("AlfaMaR"), _T("ClientIcons_Packs"), IDI_MIRANDA_ALFAMAR, PACKS_CASE }, - { "client_ZELEBOBA_", _T("*zeleboba's*"), _T("zeleboba's"), _T("ClientIcons_Packs"), IDI_MIRANDA_ZELEBOBA, PACKS_CASE }, - { "client_MD_", _T("*MDpack*"), _T("MDpack"), _T("ClientIcons_Packs"), IDI_MIRANDA_MD, PACKS_CASE }, - { "client_PILOT_", _T("*Pilot*"), _T("Pilot"), _T("ClientIcons_Packs"), IDI_MIRANDA_PILOT, PACKS_CASE }, - { "client_AMATORY_", _T("*Amatory*"), _T("Amatory"), _T("ClientIcons_Packs"), IDI_MIRANDA_AMATORY, PACKS_CASE }, - { "client_RAZUNTER_", _T("*Razunter's*"), _T("Razunter's Pk"), _T("ClientIcons_Packs"), IDI_MIRANDA_RAZUNTER, PACKS_CASE }, - { "client_GHOST_", _T("*Ghost's*"), _T("Ghost's Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_GHOST, PACKS_CASE }, - { "client_DAR_", _T("*Dar_veter*"), _T("Dar_veter Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_DAR, PACKS_CASE }, - { "client_MATAES_", _T("*Mataes*"), _T("Mataes Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_MATAES, PACKS_CASE }, - { "client_FREIZE_", _T("*Freize*"), _T("Freize"), _T("ClientIcons_Packs"), IDI_MIRANDA_FREIZE, PACKS_CASE }, - { "client_FR_", _T("*FR*Pack*"), _T("Miranda FR"), _T("ClientIcons_Packs"), IDI_MIRANDA_FR, PACKS_CASE }, - { "client_Native_", _T("*Native*"), _T("Native"), _T("ClientIcons_Packs"), IDI_MIRANDA_NATIVE, PACKS_CASE }, - { "client_E33_", _T("*[E33]*"), _T("E33"), _T("ClientIcons_Packs"), IDI_MIRANDA_E33, PACKS_CASE }, - { "client_ROBYER_", _T("*RobyerPack*"), _T("Robyer Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_ROBYER, PACKS_CASE }, - { "client_New Style_", _T("*New Style*"), _T("New Style"), _T("ClientIcons_Packs"), IDI_MIRANDA_NEW_STYLE, PACKS_CASE }, - { "client_SPELLHOWLER_", _T("*Spellhowler*"), _T("xSpellhowleRx Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_SPELLHOWLER, PACKS_CASE }, - { "client_LESTAT_", _T("*[Lpack]*"), _T("Lestat Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_LESTAT, PACKS_CASE }, - { "client_DEVILSUITE_", _T("*6.6.6*"), _T("Devil Suite"), _T("ClientIcons_Packs"), IDI_MIRANDA_DEVIL, PACKS_CASE }, - { "client_FINAL", _T("*[FinalPack]*"), _T("Final Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_FINAL, PACKS_CASE }, - { "client_CAPPUCCINO", _T("*[HotCoffee]*"), _T("HotCoffee"), _T("ClientIcons_Packs"), IDI_MIRANDA_CAPPUCCINO, PACKS_CASE }, - { "client_WATCHER", _T("*[WatcherPack]*"), _T("Watcher Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_WATCHER, PACKS_CASE }, - { "client_LENINPACK", _T("*[Lenin Pack]*"), _T("Lenin Pack"), _T("ClientIcons_Packs"), IDI_MIRANDA_LENINPACK, PACKS_CASE }, -//######################################################################################################################################### -//######################################################################################################################################### - { "client_AimOscar_over", _T("Miranda*AIM*"), _T("AIM"), _T("ClientIcons_General"), IDI_AIMOSCAR_OVERLAY, OVER1_CASE }, //FIX - { "client_ICQJ_Plus_over", _T("Miranda*ICQ*Plus*"), _T("ICQJ Plus Mod"), _T("ClientIcons_General"), IDI_ICQJ_PLUS_MOD_OVERLAY, OVER1_CASE }, - { "client_ICQJ_SIN_over", _T("Miranda*ICQ*S!N*"), _T("ICQJ S!N Mod"), _T("ClientIcons_General"), IDI_ICQJ_SIN_MOD_OVERLAY, OVER1_CASE }, - { "client_ICQJ_over", _T("Miranda*ICQ*0.*"), _T("ICQJ"), _T("ClientIcons_General"), IDI_ICQJ_OVERLAY, OVER1_CASE }, - { "client_ICQ_Unknown_over", _T("Miranda*ICQ*"), _T("ICQ unknown"), _T("ClientIcons_General"), IDI_ICQJM_OVERLAY, OVER1_CASE }, - { "client_IRC_over", _T("Miranda*IRC*"), _T("IRC"), _T("ClientIcons_General"), IDI_IRC_OVERLAY, OVER1_CASE }, - { "client_JGmail_over", _T("Miranda*JGmail*"), _T("JGmail"), _T("ClientIcons_General"), IDI_GMAIL_OVERLAY, OVER1_CASE }, - { "client_JGTalk_over", _T("Miranda*JGTalk*"), _T("JGTalk"), _T("ClientIcons_General"), IDI_JGTALK_OVERLAY, OVER1_CASE }, - { "client_JMeebo_over", _T("Miranda*JMeebo*"), _T("JMeebo"), _T("ClientIcons_General"), IDI_JMEEBO_OVERLAY, OVER1_CASE }, - { "client_Jabber_over", _T("Miranda*Jabber*"), _T("Jabber"), _T("ClientIcons_General"), IDI_JABBER_OVERLAY, OVER1_CASE }, - { "client_MailRu_over", _T("|*Mail.ru*IM*|*MRA*"), _T("MailRu Agent"), _T("ClientIcons_General"), IDI_MAILRU_OVERLAY, OVER1_CASE }, - { "client_MSN_over", _T("Miranda*MSN*"), _T("MSN"), _T("ClientIcons_General"), IDI_MSN_OVERLAY, OVER1_CASE }, - { "client_QQ_over", _T("|Miranda*QQ*|MIMQQ*"), _T("QQ"), _T("ClientIcons_General"), IDI_QQ_OVERLAY, OVER1_CASE }, - { "client_Tlen_over", _T("*tlen.pl"), _T("Tlen.pl"), _T("ClientIcons_General"), IDI_TLEN_OVERLAY, OVER1_CASE }, - - { "client_Mira_010_over", _T("*Miranda*0.10.*"), _T("Miranda v0.10"), _T("ClientIcons_General"), IDI_MIRANDA_10, OVER1_CASE }, - { "client_Mira_09_over", _T("*Miranda*0.9.*"), _T("Miranda v0.9"), _T("ClientIcons_General"), IDI_MIRANDA_9, OVER1_CASE }, - { "client_Mira_08_over", _T("*Miranda*0.8.*"), _T("Miranda v0.8"), _T("ClientIcons_General"), IDI_MIRANDA_8, OVER1_CASE }, - { "client_Mira_07_over", _T("*Miranda*0.7.*"), _T("Miranda v0.7"), _T("ClientIcons_General"), IDI_MIRANDA_7, OVER1_CASE }, - { "client_Mira_06_over", _T("*Miranda*0.6.*"), _T("Miranda v0.6"), _T("ClientIcons_General"), IDI_MIRANDA_6, OVER1_CASE }, - { "client_Mira_05_over", _T("*Miranda*0.5.*"), _T("Miranda v0.5"), _T("ClientIcons_General"), IDI_MIRANDA_5, OVER1_CASE }, - { "client_Mira_04_over", _T("*Miranda*0.4.*"), _T("Miranda v0.4"), _T("ClientIcons_General"), IDI_MIRANDA_4, OVER1_CASE }, - - { "client_ICQ 2000", _T("ICQ*2000*"), _T("ICQ 2000"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ2000, ICQ_OFF_CASE }, - { "client_ICQ 2001b", _T("ICQ*2001*"), _T("ICQ 2001"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ2001, ICQ_OFF_CASE }, - { "client_ICQ 2002", _T("ICQ*2002*"), _T("ICQ 2002/2003a"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ2002, ICQ_OFF_CASE }, - { "client_ICQ 2003", _T("ICQ*2003*"), _T("ICQ 2003b"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ2003, ICQ_OFF_CASE }, - { "client_ICQ v4", _T("ICQ*4*"), _T("ICQ Lite v4"), _T("ClientIcons_ICQ"), IDI_CLIENTICQLITE4, ICQ_OFF_CASE }, - { "client_ICQ v5.1", _T("ICQ*5.1*"), _T("ICQ v5.1"), _T("ClientIcons_ICQ"), IDI_CLIENTICQLITE51, ICQ_OFF_CASE }, - { "client_ICQ v5", _T("|^*Transport*|ICQ*5*"), _T("ICQ v5"), _T("ClientIcons_ICQ"), IDI_CLIENTICQLITE5, ICQ_OFF_CASE }, - { "client_ICQ v6", _T("ICQ*6*"), _T("ICQ v6"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ6, ICQ_OFF_CASE }, - { "client_ICQ v7", _T("ICQ*7*"), _T("ICQ v7"), _T("ClientIcons_ICQ"), IDI_CLIENTICQ7, ICQ_OFF_CASE }, - - { "client_Yahoo v5.x", _T("*Yahoo 5*"), _T("Yahoo 5.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO5, YAHOO_CASE }, - { "client_Yahoo v6.x", _T("*Yahoo 6*"), _T("Yahoo 6.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO6, YAHOO_CASE }, - { "client_Yahoo v7.x", _T("*Yahoo 7*"), _T("Yahoo 7.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO7, YAHOO_CASE }, - { "client_Yahoo v8.x", _T("*Yahoo 8*"), _T("Yahoo 8.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO8, YAHOO_CASE }, - { "client_Yahoo v9.x", _T("*Yahoo 9*"), _T("Yahoo 9.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO9, YAHOO_CASE }, - { "client_Yahoo v10.x", _T("*Yahoo 10*"), _T("Yahoo 10.x"), _T("ClientIcons_Yahoo"), IDI_CLIENT_YAHOO10, YAHOO_CASE }, - - { "client_QQ 2000", _T("QQ2000*"), _T("QQ 2000"), _T("ClientIcons_QQ"), IDI_CLIENT_QQ2000, QQ_CASE }, - { "client_TM 1", _T("TM 1.*"), _T("TM 1.x"), _T("ClientIcons_QQ"), IDI_CLIENT_TM1, QQ_CASE }, - { "client_TM 2", _T("TM 2.*"), _T("TM 2.x"), _T("ClientIcons_QQ"), IDI_CLIENT_TM2, QQ_CASE }, - { "client_TMQQ 2003", _T("|QQ2003*|TM 3.*"), _T("TM 3.x, QQ 2003"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2003, QQ_CASE }, - { "client_QQ 2004", _T("QQ2004*"), _T("QQ 2004"), _T("ClientIcons_QQ"), IDI_CLIENT_QQ2004, QQ_CASE }, - { "client_TM_QQ 2005", _T("|QQ2005*|TM2005*"), _T("TM/QQ 2005"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2005, QQ_CASE }, - { "client_TM_QQ 2006", _T("|QQ2006*|TM2006*"), _T("TM/QQ 2006"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2006, QQ_CASE }, - { "client_TM_QQ 2007", _T("|QQ2007*|TM2007*"), _T("TM/QQ 2007"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2007, QQ_CASE }, - { "client_TM_QQ 2008", _T("|QQ2008*|TM2008*"), _T("TM/QQ 2008"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2008, QQ_CASE }, - { "client_TM_QQ 2009", _T("|QQ2009*|TM2009*"), _T("TM/QQ 2009"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2009, QQ_CASE }, - { "client_TM_QQ 2010", _T("|QQ2010*|TM2010*"), _T("TM/QQ 2010"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2010, QQ_CASE }, - { "client_TM_QQ 2011", _T("|QQ2011*|TM2011*"), _T("TM/QQ 2011"), _T("ClientIcons_QQ"), IDI_CLIENT_TM_QQ2011, QQ_CASE }, - - { "client_Tlen 5", _T("Tlen Protocol 7"), _T("Tlen 5.x"), _T("ClientIcons_Tlen"), IDI_CLIENT_TLEN5, TLEN_CASE }, - { "client_Tlen 6", _T("Tlen Protocol 10"), _T("Tlen 6.x"), _T("ClientIcons_Tlen"), IDI_CLIENT_TLEN6, TLEN_CASE }, - { "client_Tlen 7", _T("Tlen Protocol 16"), _T("Tlen 7.x"), _T("ClientIcons_Tlen"), IDI_CLIENT_TLEN7, TLEN_CASE }, - - { "client_weather_over", _T("*Weather*"), _T("Weather"), _T("ClientIcons_Weather"), IDI_CLIENT_WEATHER, WEATHER_CASE }, - - { "client_on Win32", _T("|*Win32*|*windows*|* WM *|wmagent*|*Vista*"), _T("on Windows"), _T("ClientIcons_General"), IDI_CLIENTWIN, PLATFORM_CASE }, - { "client_on Mac", _T("|* Mac *|*IPhone*"), _T("on MacOS"), _T("ClientIcons_General"), IDI_CLIENTMAC, PLATFORM_CASE }, - { "client_on Linux", _T("*Linux*"), _T("on Linux"), _T("ClientIcons_General"), IDI_CLIENTLINUX, PLATFORM_CASE }, - { "client_on Flash", _T("*Flash*"), _T("on Flash"), _T("ClientIcons_General"), IDI_CLIENTFLASH, PLATFORM_CASE }, - { "client_on Java", _T("|*Java*|jagent*|ICQ2Go!*"), _T("on Java"), _T("ClientIcons_General"), IDI_CLIENTJAVA, PLATFORM_CASE }, - { "client_on Symbian", _T("|*Symbian*|sagent*"), _T("on Symbian"), _T("ClientIcons_General"), IDI_CLIENTSYMBIAN, PLATFORM_CASE }, - { "client_on Android", _T("|* Android*|*/Android*"), _T("on Android"), _T("ClientIcons_General"), IDI_CLIENTANDROID, PLATFORM_CASE }, -}; - -int DEFAULT_KN_FP_OVERLAYS_COUNT = SIZEOF(def_kn_fp_overlays_mask); - -//######################################################################################################################################### -//######################################################### Overlays, layer #2 ############################################################ -//######################################################################################################################################### -KN_FP_MASK def_kn_fp_overlays2_mask[] = -{// IconName Mask Icon caption NULL ICON_RESOURCE_ID - { "client_debug_overlay", _T("*[*debug*]*"), _T("[Debug]"), _T("ClientIcons_Jabber"), IDI_DEBUG_OVERLAY, OVER2_CASE }, - { "client_home_overlay", _T("|*[*home*]*|*[*äîì*]*"), _T("[Home]"), _T("ClientIcons_Jabber"), IDI_HOME_OVERLAY, OVER2_CASE }, - { "client_work_overlay", _T("|*[*work*]*|*[*ðàáîòà*]*"), _T("[Work]"), _T("ClientIcons_Jabber"), IDI_WORK_OVERLAY, OVER2_CASE }, - { "client_office_overlay", _T("|*[*office*]*|*[*îôèñ*]*"), _T("[Office]"), _T("ClientIcons_Jabber"), IDI_OFFICE_OVERLAY, OVER2_CASE }, - { "client_mobile_overlay", _T("|*[*mobile*]*|*[*pda*]*"), _T("[Mobile]"), _T("ClientIcons_Jabber"), IDI_MOBILE_OVERLAY, OVER2_CASE }, - { "client_notebook_overlay", _T("|*[*note*]*|*[*portable*]*|*[*usb*]*") - _T("|*[*laptop*]*|*[*flash*]*"), _T("[Portable]"), _T("ClientIcons_Jabber"), IDI_NOTEBOOK_OVERLAY, OVER2_CASE }, - { "client_Miranda_010_overlay", _T("*Miranda*0.10.*"), _T("Miranda v0.10"), _T("ClientIcons_General"), IDI_MIRANDA_10s, OVER2_CASE }, - { "client_Miranda_09_overlay", _T("*Miranda*0.9.*"), _T("Miranda v0.9"), _T("ClientIcons_General"), IDI_MIRANDA_9s, OVER2_CASE }, - { "client_Miranda_08_overlay", _T("*Miranda*0.8.*"), _T("Miranda v0.8"), _T("ClientIcons_General"), IDI_MIRANDA_8s, OVER2_CASE }, - { "client_Miranda_07_overlay", _T("*Miranda*0.7.*"), _T("Miranda v0.7"), _T("ClientIcons_General"), IDI_MIRANDA_7s, OVER2_CASE }, - { "client_Miranda_06_overlay", _T("*Miranda*0.6.*"), _T("Miranda v0.6"), _T("ClientIcons_General"), IDI_MIRANDA_6s, OVER2_CASE }, - { "client_Miranda_05_overlay", _T("*Miranda*0.5.*"), _T("Miranda v0.5"), _T("ClientIcons_General"), IDI_MIRANDA_5s, OVER2_CASE }, - { "client_Miranda_04_overlay", _T("*Miranda*0.4.*"), _T("Miranda v0.4"), _T("ClientIcons_General"), IDI_MIRANDA_4s, OVER2_CASE }, -}; - -int DEFAULT_KN_FP_OVERLAYS2_COUNT = SIZEOF(def_kn_fp_overlays2_mask); - -//######################################################################################################################################### -//######################################################### Overlays, layer #3 ############################################################ -//######################################################################################################################################### -KN_FP_MASK def_kn_fp_overlays3_mask[] = -{// IconName Mask Icon caption NULL ICON_RESOURCE_ID - { "client_SecureIM_overlay", _T("*Secure*IM*"), _T("+SecureIM"), _T("ClientIcons_General"), IDI_SECUREIM_OVERLAY, SECURITY_CASE }, - { "client_SimpPro_overlay", _T("*SimpPro*"), _T("+SimpPro"), _T("ClientIcons_General"), IDI_SIMPPRO_OVERLAY, SECURITY_CASE }, - { "client_SimpLite_overlay", _T("*SimpLite*"), _T("+SimpLite"), _T("ClientIcons_General"), IDI_SIMPLITE_OVERLAY, SECURITY_CASE }, - { "client_IMSecure_overlay", _T("*IMSecure*"), _T("+IMSecure"), _T("ClientIcons_General"), IDI_IMSECURE_OVERLAY, SECURITY_CASE }, -}; - -int DEFAULT_KN_FP_OVERLAYS3_COUNT = SIZEOF(def_kn_fp_overlays3_mask); diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/options.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/options.cpp deleted file mode 100644 index df054bba89..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/options.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -//Start of header -#include "global.h" - -struct _settingsInfo -{ - int idCtrl; - LPCSTR szSetName; -} -static settings [] = -{ - {IDC_OVERLAY1, "Overlay1"}, - {IDC_OVERLAY2, "Overlay2"}, - {IDC_OVERLAY3, "Overlay3"}, - {IDC_VERSION, "ShowVersion"}, - - {IDC_GROUPMIRANDA, "GroupMiranda"}, - {IDC_GROUPMULTI, "GroupMulti"}, - {IDC_GROUPPACKS, "GroupPacks"}, - {IDC_GROUPOTHERS, "GroupOtherProtos"}, - - {IDC_GROUPAIM, "GroupAim"}, - {IDC_GROUPGADU, "GroupGadu"}, - {IDC_GROUPICQ, "GroupIcq"}, - {IDC_GROUPIRC, "GroupIrc"}, - {IDC_GROUPJABBER, "GroupJabber"}, - {IDC_GROUPMAIL, "GroupMail"}, - {IDC_GROUPMSN, "GroupMsn"}, - {IDC_GROUPQQ, "GroupQQ"}, - {IDC_GROUPRSS, "GroupRSS"}, - {IDC_GROUPSKYPE, "GroupSkype"}, - {IDC_GROUPTLEN, "GroupTlen"}, - {IDC_GROUPVOIP, "GroupVoIP"}, - {IDC_GROUPWEATHER, "GroupWeather"}, - {IDC_GROUPYAHOO, "GroupYahoo"} -}; - -static void OptDlgChanged(HWND hwndDlg, BOOL show) -{ - if (show) - ShowWindow(GetDlgItem(hwndDlg, IDC_OPTCHANGENOTE), SW_SHOW); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); -} - -static void LoadDBCheckState(HWND hwndDlg, int idCtrl, LPCSTR szSetting, BYTE bDef) -{ - CheckDlgButton(hwndDlg, idCtrl, db_get_b(NULL, "Finger", szSetting, bDef)); -} - -static void StoreDBCheckState(HWND hwndDlg, int idCtrl, LPCSTR szSetting) -{ - db_set_b(NULL, "Finger", szSetting, (BYTE)IsDlgButtonChecked(hwndDlg, idCtrl)); -} - -static INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) { - case WM_INITDIALOG: - { - TranslateDialogDefault(hwndDlg); - for (int i = 0; i < SIZEOF(settings); i++) { - if (lstrcmpA(settings[i].szSetName, "ShowVersion") == 0) - LoadDBCheckState(hwndDlg, settings[i].idCtrl, settings[i].szSetName, 0); - else - LoadDBCheckState(hwndDlg, settings[i].idCtrl, settings[i].szSetName, 1); - } - - ShowWindow(GetDlgItem(hwndDlg, IDC_OPTCHANGENOTE), SW_HIDE); - } - break; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_OVERLAY1: - case IDC_OVERLAY2: - case IDC_OVERLAY3: - case IDC_VERSION: - OptDlgChanged(hwndDlg, true); - break; - - case IDC_GROUPMIRANDA: - case IDC_GROUPMULTI: - case IDC_GROUPPACKS: - case IDC_GROUPOTHERS: - case IDC_GROUPAIM: - case IDC_GROUPGADU: - case IDC_GROUPICQ: - case IDC_GROUPIRC: - case IDC_GROUPJABBER: - case IDC_GROUPMAIL: - case IDC_GROUPMSN: - case IDC_GROUPQQ: - case IDC_GROUPRSS: - case IDC_GROUPSKYPE: - case IDC_GROUPTLEN: - case IDC_GROUPVOIP: - case IDC_GROUPWEATHER: - case IDC_GROUPYAHOO: - OptDlgChanged(hwndDlg, false); - break; - - default: - return 0; - } - break; - - case WM_NOTIFY: - { - NMHDR *hdr = (NMHDR *)lParam; - if (hdr && hdr->code == PSN_APPLY) { - for (int i = 0; i < SIZEOF(settings); i++) - StoreDBCheckState(hwndDlg, settings[i].idCtrl, settings[i].szSetName); - - ClearFI(); - RegisterIcons(); - } - } - break; - } - return FALSE; -} - -int OnOptInitialise(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); - odp.hInstance = g_hInst; - odp.ptszGroup = LPGENT("Icons"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_DIALOG); - odp.ptszTitle = LPGENT("Fingerprint"); - odp.pfnDlgProc = DlgProcOptions; - odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR;; - Options_AddPage(wParam, &odp); - return 0; -} diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/resource.h b/plugins/!Deprecated/FingerPrintModPlus/src/resource.h deleted file mode 100644 index aeed13978d..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/resource.h +++ /dev/null @@ -1,646 +0,0 @@ -#include "version.h" - -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by resource.rc -//############################################################################################################## -//AIM -#define IDI_AIM 10 -#define IDI_AIM_4 11 -#define IDI_AIM_5 12 -#define IDI_AIM_MAC 13 -#define IDI_AIM_MOBILE 14 -#define IDI_AIM_TRITON 15 -#define IDI_MINIAIM 16 -#define IDI_NAIM 17 -#define IDI_TERRAIM 18 - -//############################################################################################################## -//Gadu-Gadu clients -#define IDI_GADU_GADU_6 30 -#define IDI_GADU_GADU_7 31 - -//############################################################################################################## -//Unofficial ICQ clients -#define IDI_ANDRQ 50 -#define IDI_1UND1 51 -#define IDI_ALICQ 52 -#define IDI_ANASTASIA 53 -#define IDI_VIRUS 54 -#define IDI_COREPAGER 55 -#define IDI_DICHAT 56 -#define IDI_DELPHI 57 -#define IDI_GLICQ 58 -#define IDI_GNOMEICU 59 -#define IDI_ICAT 60 -#define IDI_ICQ2X 61 -#define IDI_IMADERING 62 -#define IDI_JICQ 63 -#define IDI_KMASKA 64 -#define IDI_KXICQ 65 -#define IDI_LIBICQ2000 66 -#define IDI_LICQ 67 -#define IDI_LOCID 68 -#define IDI_MICQ 69 -#define IDI_MIP 70 -#define IDI_NANOICQ 71 -#define IDI_NICQ 72 -#define IDI_QIP 73 -#define IDI_RANDQ_NEW 74 -#define IDI_SLICK 75 -#define IDI_SMAPER 76 -#define IDI_SMARTICQ 77 -#define IDI_SPAMBOT 78 -#define IDI_STICQ 79 -#define IDI_STRICQ 80 -#define IDI_VICQ 81 -#define IDI_VMICQ 82 -#define IDI_WEBICQ 83 -#define IDI_YEEMP 84 -#define IDI_YSM 85 - -//############################################################################################################## -//Official ICQ clients -#define IDI_ICQ 100 -#define IDI_ICQ_6 101 -#define IDI_ICQ_ABV 102 -#define IDI_ICQ_BIGMIR 103 -#define IDI_ICQ_COMPAD 104 -#define IDI_ICQ4MAC 105 -#define IDI_ICQ_LITE4 106 -#define IDI_ICQ_LITE7 107 -#define IDI_ICQ_NETVIGATOR 108 -#define IDI_ICQ_PRO7 109 -#define IDI_ICQ_RAMBLER 110 -#define IDI_ICQ_POCKETPC 111 - -//############################################################################################################## -//Official ICQ overlays -#define IDI_CLIENTICQLITE5 120 -#define IDI_CLIENTICQLITE51 121 -#define IDI_CLIENTICQ6 122 -#define IDI_CLIENTICQ7 123 -#define IDI_CLIENTICQ2000 124 -#define IDI_CLIENTICQ2001 125 -#define IDI_CLIENTICQ2002 126 -#define IDI_CLIENTICQ2003 127 -#define IDI_CLIENTICQLITE4 128 - -//############################################################################################################## -//IRC -#define IDI_AMIRC 140 -#define IDI_AMULE 141 -#define IDI_BABBEL 142 -#define IDI_BERSIRC 143 -#define IDI_CBIRC 144 -#define IDI_CHATZILLA 145 -#define IDI_CONVERSATION 146 -#define IDI_DIRC 147 -#define IDI_EGGDROP 148 -#define IDI_EGGDROP_RACBOT 149 -#define IDI_EMULE 150 -#define IDI_EMULE_MORPHXT 151 -#define IDI_EMULE_NEO 152 -#define IDI_EMULE_PLUS 153 -#define IDI_EMULE_XTREME 154 -#define IDI_FCHAT 155 -#define IDI_GDPCHAT 156 -#define IDI_GOPOWERTOOLS 157 -#define IDI_HYDRA_IRC 158 -#define IDI_ICECHAT 159 -#define IDI_ICECHAT5 160 -#define IDI_ICECHAT7 161 -#define IDI_IRC_UNKNOWN 162 -#define IDI_IRCLE 163 -#define IDI_IRCXPRO 164 -#define IDI_IRSSI 165 -#define IDI_JIRCII 166 -#define IDI_JMIRC 167 -#define IDI_KLIENT 168 -#define IDI_KONVERSATION 169 -#define IDI_KSIRC 170 -#define IDI_KVIRC 171 -#define IDI_MIRC 172 -#define IDI_MP3_SCRIPT 173 -#define IDI_NEORATRION 174 -#define IDI_NETTALK 175 -#define IDI_NONAME_SCRIPT 176 -#define IDI_OPERA 177 -#define IDI_PIORUN 178 -#define IDI_PIRC 179 -#define IDI_PIRCH 180 -#define IDI_PJIRC 181 -#define IDI_PROCHAT 182 -#define IDI_PSYBNC 183 -#define IDI_SAVIRC 184 -#define IDI_SMART_IRC 185 -#define IDI_SNAK 186 -#define IDI_SYSRESET 187 -#define IDI_VIRCAIRC 188 -#define IDI_VISIONIRC 189 -#define IDI_VISUALIRC 190 -#define IDI_VORTECIRC 191 -#define IDI_WEECHAT 192 -#define IDI_WLIRC 193 -#define IDI_WMIRC 194 -#define IDI_XCHATAQUA 195 -#define IDI_XBITCH 196 -#define IDI_XCHAT 197 -#define IDI_XIRC 198 -#define IDI_XIRCON 199 -#define IDI_ZIPTORRENT 200 -#define IDI_ZSIRC 201 - -//############################################################################################################## -//Jabber clients -#define IDI_AKENI 220 -#define IDI_ANDROID 221 -#define IDI_ANOTHRSSBOT 222 -#define IDI_AQQ 223 -#define IDI_BEEJIVE 224 -#define IDI_BELLSOUTH 225 -#define IDI_BITWISE 226 -#define IDI_BLACKBERRY 227 -#define IDI_BOMBUS 228 -#define IDI_BOMBUSMOD 229 -#define IDI_BOMBUSQD 230 -#define IDI_BOWLINE 231 -#define IDI_BUDDYSPACE 232 -#define IDI_CHATOPUS 233 -#define IDI_CHIKKA 234 -#define IDI_CHITCHAT 235 -#define IDI_COCCINELLA 236 -#define IDI_COLIBRY 237 -#define IDI_COLLOQUY 238 -#define IDI_DESYR 239 -#define IDI_EMACS 240 -#define IDI_EMESS 241 -#define IDI_EXODUS 242 -#define IDI_EYEBALL_CHAT 243 -#define IDI_FACEBOOK 244 -#define IDI_FIRE 245 -#define IDI_GABBER 246 -#define IDI_GAJIM 247 -#define IDI_GCN 248 -#define IDI_GLU 249 -#define IDI_GMAIL 250 -#define IDI_CONFERENCE 251 -#define IDI_GNOME 252 -#define IDI_GNUGADU 253 -#define IDI_GOIM 254 -#define IDI_GOSSIP 255 -#define IDI_GOTALKMOBILE 256 -#define IDI_GREENTHUMB 257 -#define IDI_GTALK 258 -#define IDI_GTALK_GADGET 259 -#define IDI_GUSH 260 -#define IDI_GYABER 261 -#define IDI_IGOOGLE 262 -#define IDI_IMCOM 263 -#define IDI_IMEEM 264 -#define IDI_IMIFIED 265 -#define IDI_IMOV 266 -#define IDI_IMPORTAL 267 -#define IDI_INSTANT 268 -#define IDI_INTERACTION 269 -#define IDI_IRUKA 270 -#define IDI_JABBER_BEOS 271 -#define IDI_JABBER_APPLET 272 -#define IDI_JABBERFOX 273 -#define IDI_JABBER_MESSENGER 274 -#define IDI_JABBERNAUT 275 -#define IDI_JABBERWOCKY 276 -#define IDI_JABBERZILLA 277 -#define IDI_JABBIM 278 -#define IDI_JABBIN 279 -#define IDI_JABIRU 280 -#define IDI_JAJC 281 -#define IDI_JBOTHER 282 -#define IDI_JCLAIM 283 -#define IDI_JDISK 284 -#define IDI_JETI 285 -#define IDI_JMC 286 -#define IDI_JRUDEVELS 287 -#define IDI_JTALK 288 -#define IDI_JUICK 289 -#define IDI_JWCHAT 290 -#define IDI_JWGC 291 -#define IDI_KADU 292 -#define IDI_KF 293 -#define IDI_KONNEKT 294 -#define IDI_LAFFER 295 -#define IDI_LANDELL 296 -#define IDI_LEAF 297 -#define IDI_LEECHCRAFT 298 -#define IDI_LINQ 299 -#define IDI_LLUNA 300 -#define IDI_M8JABBER 301 -#define IDI_MANGO 302 -#define IDI_MCABBER 303 -#define IDI_MEINVZ 304 -#define IDI_MERCURY_MESSENGER 305 -#define IDI_MGTALK 306 -#define IDI_MOBBER 307 -#define IDI_MOJAB 308 -#define IDI_MOZILLACHAT 309 -#define IDI_MYJABBER 310 -#define IDI_NEOS 311 -#define IDI_NITRO 312 -#define IDI_NOSTROMO 313 -#define IDI_OCTRO 314 -#define IDI_OM 315 -#define IDI_ORKUT 316 -#define IDI_PALTALK 317 -#define IDI_PANDION 318 -#define IDI_PAPLA 319 -#define IDI_PJC 320 -#define IDI_PSI 321 -#define IDI_PSTO 322 -#define IDI_PYAIMT 323 -#define IDI_PYICQT 324 -#define IDI_PYIRCT 325 -#define IDI_PYMRAT 326 -#define IDI_PYMSNT 327 -#define IDI_PYYAHOOT 328 -#define IDI_QTJIM 329 -#define IDI_RENREN 330 -#define IDI_SCHULERVZ 331 -#define IDI_SIP_COMM 332 -#define IDI_SKYMESSAGER 333 -#define IDI_SMACK 334 -#define IDI_SMTP_TRANSPORT 335 -#define IDI_SOAPBOX 336 -#define IDI_SPARK 337 -#define IDI_SPIK 338 -#define IDI_STUDIVZ 339 -#define IDI_SWORIM 340 -#define IDI_TALKONAUT 341 -#define IDI_TAPIOCA 342 -#define IDI_TEABOT 343 -#define IDI_TELEPATHY 344 -#define IDI_THUNDERBIRD 345 -#define IDI_TIPICIM 346 -#define IDI_TKABBER 347 -#define IDI_TRANSACTIM 348 -#define IDI_TRIPLE_SOFTWARE 349 -#define IDI_TWITTER 350 -#define IDI_VACUUM 351 -#define IDI_VAYUSPHERE 352 -#define IDI_WANNACHAT 353 -#define IDI_WEBEX 354 -#define IDI_WHISPERIM 355 -#define IDI_WHOISBOT 356 -#define IDI_WIJA 357 -#define IDI_WILDFIRE 358 -#define IDI_WINJAB 359 -#define IDI_WTW 360 -#define IDI_XEUS 361 -#define IDI_XIFFIAN 362 -#define IDI_YAMBI 363 -#define IDI_YAONLINE 364 - -//############################################################################################################## -//VoIP clients -#define IDI_GIZMO 380 -#define IDI_WENGOPHONE 381 -#define IDI_ZOEP 382 - -//############################################################################################################## -//Jabber resource overlays -#define IDI_DEBUG_OVERLAY 400 -#define IDI_HOME_OVERLAY 401 -#define IDI_MOBILE_OVERLAY 402 -#define IDI_NOTEBOOK_OVERLAY 403 -#define IDI_OFFICE_OVERLAY 404 -#define IDI_WORK_OVERLAY 405 - -//############################################################################################################## -//Mail.Ru Agent clients -#define IDI_MAIL_RU_MOBILE 410 -#define IDI_MAIL_RU_OFFICIAL 411 -#define IDI_MAIL_RU_UNKNOWN 412 -#define IDI_MAIL_RU_WEBAGENT 413 - -//############################################################################################################## -//MirandaIM clients -#define IDI_MIRANDA_4 430 -#define IDI_MIRANDA_4s 431 -#define IDI_MIRANDA_5 432 -#define IDI_MIRANDA_5s 433 -#define IDI_MIRANDA_6 434 -#define IDI_MIRANDA_6s 435 -#define IDI_MIRANDA_7 436 -#define IDI_MIRANDA_7s 437 -#define IDI_MIRANDA_8 438 -#define IDI_MIRANDA_8s 439 -#define IDI_MIRANDA_9 440 -#define IDI_MIRANDA_9s 441 -#define IDI_MIRANDA_10 442 -#define IDI_MIRANDA_10s 443 -#define IDI_MIRANDA_04 444 -#define IDI_MIRANDA_05 445 -#define IDI_MIRANDA_05U 446 -#define IDI_MIRANDA_06 447 -#define IDI_MIRANDA_06U 448 -#define IDI_MIRANDA_07 449 -#define IDI_MIRANDA_07U 450 -#define IDI_MIRANDA_08 451 -#define IDI_MIRANDA_08U 452 -#define IDI_MIRANDA_09 453 -#define IDI_MIRANDA_09U 454 -#define IDI_MIRANDA_010 455 -#define IDI_MIRANDA_010U 456 -#define IDI_MIRANDA_666 457 -#define IDI_MIRANDA_U 458 -#define IDI_MIRANDA_UNKNOWN 459 -#define IDI_MIRANDA_NG 460 - -//############################################################################################################## -//Clients overlays -#define IDI_AIMOSCAR_OVERLAY 481 -#define IDI_GMAIL_OVERLAY 482 -#define IDI_ICQJ_SIN_MOD_OVERLAY 483 -#define IDI_ICQJ_OVERLAY 484 -#define IDI_ICQJ_PLUS_MOD_OVERLAY 485 -#define IDI_ICQJM_OVERLAY 486 -#define IDI_IRC_OVERLAY 487 -#define IDI_JABBER_OVERLAY 488 -#define IDI_JGTALK_OVERLAY 489 -#define IDI_JMEEBO_OVERLAY 490 -#define IDI_MAILRU_OVERLAY 491 -#define IDI_MSN_OVERLAY 492 -#define IDI_QQ_OVERLAY 493 -#define IDI_TLEN_OVERLAY 494 - -//############################################################################################################## -//Platform -#define IDI_CLIENTANDROID 510 -#define IDI_CLIENTFLASH 511 -#define IDI_CLIENTMAC 512 -#define IDI_CLIENTJAVA 513 -#define IDI_CLIENTLINUX 514 -#define IDI_CLIENTSYMBIAN 515 -#define IDI_CLIENTWIN 516 - -//############################################################################################################## -//Secure overlays -#define IDI_IMSECURE_OVERLAY 520 -#define IDI_SECUREIM_OVERLAY 521 -#define IDI_SIMPLITE_OVERLAY 522 -#define IDI_SIMPPRO_OVERLAY 523 - -//############################################################################################################## -//Other -#define IDI_BLANK 530 -#define IDI_NOTFOUND 531 -#define IDI_UNDETECTED 532 -#define IDI_UNKNOWN 533 - -//############################################################################################################## -//MSN -#define IDI_AMSN 540 -#define IDI_MSN_MAC 541 -#define IDI_MSN_45 542 -#define IDI_MSN_6 543 -#define IDI_MSN_7 544 -#define IDI_MSN_8 545 -#define IDI_MSN 546 -#define IDI_WEBMESSENGER 547 -#define IDI_WLM_9 548 -#define IDI_WLM_10 549 - -//############################################################################################################## -//Multi-protocols clients -#define IDI_ADIUM 560 -#define IDI_AGILE 561 -#define IDI_AYTTM 562 -#define IDI_BAYANICQ 563 -#define IDI_BITLBEE 564 -#define IDI_CENTERICQ 565 -#define IDI_CITRON 566 -#define IDI_DIGSBY 567 -#define IDI_EASYMESSAGE 568 -#define IDI_EBUDDY 569 -#define IDI_EKG2 570 -#define IDI_FRING 571 -#define IDI_GAIM 572 -#define IDI_ICHAT 573 -#define IDI_IMPLUS 574 -#define IDI_IM2 575 -#define IDI_IMOIM 576 -#define IDI_INLUX 577 -#define IDI_INSTANTBIRD 578 -#define IDI_JASMINEIM 579 -#define IDI_JIMM 580 -#define IDI_KOPETE 581 -#define IDI_MCHAT 582 -#define IDI_MEEBO 583 -#define IDI_MEETRO 584 -#define IDI_NATSIEMENS 585 -#define IDI_ONETEAM 586 -#define IDI_PALRINGO 587 -#define IDI_PIDGIN 588 -#define IDI_PIGEON 589 -#define IDI_PRELUDE 590 -#define IDI_PROTEUS 591 -#define IDI_PYTHON 592 -#define IDI_QIP_2010 593 -#define IDI_QIP_INFIUM 594 -#define IDI_QIP_PDA 595 -#define IDI_QNEXT 596 -#define IDI_QUTIM 597 -#define IDI_SIM 598 -#define IDI_SIM_LINUX 599 -#define IDI_SIM_LINUX_OLD 600 -#define IDI_SIM_MACOSX 601 -#define IDI_SIM_MACOSX_OLD 602 -#define IDI_SIM_OLD 603 -#define IDI_SIM_WIN 604 -#define IDI_SIM_WIN_OLD 605 -#define IDI_TRILLIAN 606 -#define IDI_TRILLIAN_ASTRA 607 -#define IDI_TRILLIAN_PRO 608 -#define IDI_UIM 609 -#define IDI_YAMIGO 610 -#define IDI_QIP_2012 611 - -//############################################################################################################## -//MirandaIM Packs -#define IDI_MIRANDA_A0X 630 -#define IDI_MIRANDA_AF 631 -#define IDI_MIRANDA_ALFAMAR 632 -#define IDI_MIRANDA_AMATORY 633 -#define IDI_MIRANDA_BRI 634 -#define IDI_MIRANDA_CAPPUCCINO 635 -#define IDI_MIRANDA_DAR 636 -#define IDI_MIRANDA_DMIKOS 637 -#define IDI_MIRANDA_E33 638 -#define IDI_MIRANDA_FAITH 639 -#define IDI_MIRANDA_FINAL 640 -#define IDI_MIRANDA_FREIZE 641 -#define IDI_MIRANDA_GHOST 642 -#define IDI_MIRANDA_HIEROS 643 -#define IDI_MIRANDA_KDL 644 -#define IDI_MIRANDA_KOLICH 645 -#define IDI_MIRANDA_KUZZMAN 646 -#define IDI_MIRANDA_LESTAT 647 -#define IDI_MIRANDA_LEXSYS 648 -#define IDI_MIRANDA_MATAES 649 -#define IDI_MIRANDA_MD 650 -#define IDI_MIRANDA_FR 651 -#define IDI_MIRANDA_ME 652 -#define IDI_MIRANDA_NATIVE 653 -#define IDI_MIRANDA_NEW_STYLE 654 -#define IDI_MIRANDA_PILOT 655 -#define IDI_MIRANDA_RAZUNTER 656 -#define IDI_MIRANDA_ROBYER 657 -#define IDI_MIRANDA_SE7VEN 658 -#define IDI_MIRANDA_SSS_MOD 659 -#define IDI_MIRANDA_STALKER 660 -#define IDI_MIRANDA_TWEETY 661 -#define IDI_MIRANDA_UMEDON 662 -#define IDI_MIRANDA_VALERAVI 663 -#define IDI_MIRANDA_WATCHER 664 -#define IDI_MIRANDA_SPELLHOWLER 665 -#define IDI_MIRANDA_YAOL 666 -#define IDI_MIRANDA_ZELEBOBA 667 -#define IDI_MIRANDA_DEVIL 668 -#define IDI_MIRANDA_LENINPACK 669 - -//############################################################################################################## -//QQ clients -#define IDI_MOBILEQQ 680 -#define IDI_QQ 681 -#define IDI_QQCONCEPT 682 -#define IDI_QQCRM 683 -#define IDI_QQINT 684 -#define IDI_QQSILVER 685 -#define IDI_TM 686 -#define IDI_TM2008 687 -#define IDI_WEBQQ 688 -#define IDI_YAMQQ 689 - -//############################################################################################################## -//QQ clients overlays -#define IDI_CLIENT_QQ2000 700 -#define IDI_CLIENT_QQ2004 701 -#define IDI_CLIENT_TM1 702 -#define IDI_CLIENT_TM2 703 -#define IDI_CLIENT_TM_QQ2003 704 -#define IDI_CLIENT_TM_QQ2005 705 -#define IDI_CLIENT_TM_QQ2006 706 -#define IDI_CLIENT_TM_QQ2007 707 -#define IDI_CLIENT_TM_QQ2008 708 -#define IDI_CLIENT_TM_QQ2009 709 -#define IDI_CLIENT_TM_QQ2010 710 -#define IDI_CLIENT_TM_QQ2011 711 - -//############################################################################################################## -//RSS -#define IDI_ATOM1 720 -#define IDI_ATOM3 721 -#define IDI_RSS09 722 -#define IDI_RSS1 723 -#define IDI_RSS2 724 - -//############################################################################################################## -//Skype clients -#define IDI_SKYPE1 730 -#define IDI_SKYPE2 731 -#define IDI_SKYPE3 732 - -//############################################################################################################## -//Tlen clients -#define IDI_TLEN 750 - -//############################################################################################################## -//Tlen clients overlays -#define IDI_CLIENT_TLEN5 755 -#define IDI_CLIENT_TLEN6 756 -#define IDI_CLIENT_TLEN7 757 - -//############################################################################################################## -//Weather clients -#define IDI_ACCU 770 -#define IDI_GISMETEO 771 -#define IDI_INTELLI 772 -#define IDI_REALMETEO 773 -#define IDI_WETTER 774 -#define IDI_UNDERGROUND 775 -#define IDI_WEATHER 776 -#define IDI_WEATHER_CN 777 -#define IDI_WEATHERXML 778 -#define IDI_METEOGID 779 -#define IDI_YWEATHER 780 -#define IDI_METEONOVOSTI 781 -#define IDI_NOAA 782 - -//############################################################################################################## -//Weather overlay -#define IDI_CLIENT_WEATHER 790 - -//############################################################################################################## -//Yahoo -#define IDI_LIBYAHOO2 800 -#define IDI_PINGBOX 801 -#define IDI_YAHOO 802 -#define IDI_YAHOO5 803 -#define IDI_YAHOO6 804 -#define IDI_YAHOO7 805 -#define IDI_YAHOO8 806 -#define IDI_YAHOO10 807 -#define IDI_YAHOO_GO_MOBILE 808 - -//############################################################################################################## -//Yahoo overlays -#define IDI_CLIENT_YAHOO5 820 -#define IDI_CLIENT_YAHOO6 821 -#define IDI_CLIENT_YAHOO7 822 -#define IDI_CLIENT_YAHOO8 823 -#define IDI_CLIENT_YAHOO9 824 -#define IDI_CLIENT_YAHOO10 825 - - -//############################################################################################################## -//resources -#define IDD_DIALOG 10000 -#define IDC_OVERLAY1 10002 -#define IDC_OVERLAY2 10003 -#define IDC_OVERLAY3 10004 -#define IDC_VERSION 10005 - -#define IDC_GROUPMIRANDA 10025 -#define IDC_GROUPMULTI 10026 -#define IDC_GROUPPACKS 10027 -#define IDC_GROUPOTHERS 10028 - -#define IDC_GROUPAIM 10029 -#define IDC_GROUPGADU 10030 -#define IDC_GROUPICQ 10031 -#define IDC_GROUPIRC 10032 -#define IDC_GROUPJABBER 10033 -#define IDC_GROUPMAIL 10034 -#define IDC_GROUPMSN 10035 -#define IDC_GROUPQQ 10036 -#define IDC_GROUPRSS 10037 -#define IDC_GROUPSKYPE 10038 -#define IDC_GROUPTLEN 10039 -#define IDC_GROUPVOIP 10040 -#define IDC_GROUPWEATHER 10041 -#define IDC_GROUPYAHOO 10042 - -#define IDS_IDENTIFY 11001 -#define IDC_OPTCHANGENOTE 11002 - -//############################################################################################################## - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 2000 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 7001 -#define _APS_NEXT_SYMED_VALUE 7000 -#endif -#endif diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/stdafx.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/stdafx.cpp deleted file mode 100644 index 93691c05e8..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "global.h" \ No newline at end of file diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/utilities.cpp b/plugins/!Deprecated/FingerPrintModPlus/src/utilities.cpp deleted file mode 100644 index 5b623af54b..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/utilities.cpp +++ /dev/null @@ -1,321 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -//Start of header -#include "global.h" - -LPWSTR make_unicode_string(LPCSTR utf8); -LPWSTR make_unicode_string_static(LPCSTR utf8, LPWSTR unicode, size_t unicode_len); -LPSTR make_utf8_string(LPCWSTR unicode); -LPSTR make_utf8_string_static(LPCWSTR unicode, LPSTR utf8, size_t utf_size); - -LPVOID __fastcall SAFE_MALLOC(size_t size) -{ - LPVOID p = NULL; - - if (size) - { - p = malloc(size); - - if (p) - ZeroMemory(p, size); - } - return p; -} - -size_t __fastcall strlennull(LPCSTR string) -{ - if (string) - return strlen(string); - - return 0; -} - -int null_snprintf(LPSTR buffer, size_t count, LPCSTR fmt, ...) -{ - va_list va; - int len; - - ZeroMemory(buffer, count); - va_start(va, fmt); - len = _vsnprintf(buffer, count-1, fmt, va); - va_end(va); - return len; -} - -LPSTR __fastcall TranslateUtfStatic(LPCSTR src, LPSTR buf, size_t bufsize) -{ // this takes UTF-8 strings only!!! - if (strlennull(src)) - { // we can use unicode translate (0.5+) - LPWSTR usrc = make_unicode_string(src); - - make_utf8_string_static(TranslateW(usrc), buf, bufsize); - - SAFE_FREE(usrc); - } - else - buf[0] = '\0'; - - return buf; -} - -//unsigned char *make_utf8_string_static(LPCWSTR unicode, unsigned char *utf8, size_t utf_size) -LPSTR make_utf8_string_static(LPCWSTR unicode, LPSTR utf8, size_t utf_size) -{ - size_t index = 0; - size_t out_index = 0; - WORD c; - - c = (WORD)unicode[index++]; - while(c) - { - if (c < 0x080) - { - if (out_index + 1 >= utf_size) break; - utf8[out_index++] = (CHAR)c; - } - else if (c < 0x800) - { - if (out_index + 2 >= utf_size) break; - utf8[out_index++] = 0xc0 | (c >> 6); - utf8[out_index++] = 0x80 | (c & 0x3f); - } - else - { - if (out_index + 3 >= utf_size) break; - utf8[out_index++] = 0xe0 | (c >> 12); - utf8[out_index++] = 0x80 | ((c >> 6) & 0x3f); - utf8[out_index++] = 0x80 | (c & 0x3f); - } - c = (WORD)unicode[index++]; - } - utf8[out_index] = 0x00; - - return utf8; -} - -LPSTR make_utf8_string(LPCWSTR unicode) -{ - size_t size = 0; - size_t index = 0; - LPSTR out; - WORD c; - - if (!unicode) return NULL; - - /* first calculate the size of the target string */ - c = (WORD)unicode[index++]; - while(c) - { - if (c < 0x0080) - size++; - else if (c < 0x0800) - size += 2; - else - size += 3; - c = (WORD)unicode[index++]; - } - - //out = (unsigned char*)SAFE_MALLOC(size + 1); - out = (LPSTR)SAFE_MALLOC(size + 1); - if (out == NULL) - return NULL; - else - return make_utf8_string_static(unicode, out, size + 1); -} - -LPWSTR make_unicode_string_static(LPCSTR utf8, LPWSTR unicode, size_t unicode_len) -{ - size_t index = 0; - size_t out_index = 0; - BYTE c; - - c = (BYTE)utf8[index++]; - while(c) - { - if (out_index + 1 >= unicode_len) break; - if ((c & 0x80) == 0) - { - unicode[out_index++] = c; - } - else if ((c & 0xe0) == 0xe0) - { - unicode[out_index] = (c & 0x1F) << 12; - c = (BYTE)utf8[index++]; - unicode[out_index] |= (c & 0x3F) << 6; - c = (BYTE)utf8[index++]; - unicode[out_index++] |= (c & 0x3F); - } - else - { - unicode[out_index] = (c & 0x3F) << 6; - c = (BYTE)utf8[index++]; - unicode[out_index++] |= (c & 0x3F); - } - c = (BYTE)utf8[index++]; - } - unicode[out_index] = 0; - - return unicode; -} - -LPWSTR make_unicode_string(LPCSTR utf8) -{ - size_t size = 0, index = 0; - LPWSTR out; - BYTE c; - - if (!utf8) return NULL; - - /* first calculate the size of the target string */ - c = (BYTE)utf8[index++]; - while(c) - { - if ((c & 0x80) == 0) - { - index += 0; - } - else if ((c & 0xe0) == 0xe0) - { - index += 2; - } - else - { - index++; - } - size++; - c = (BYTE)utf8[index++]; - } - - out = (LPWSTR)SAFE_MALLOC((size + 1) * sizeof(WCHAR)); - if (out == NULL) - return NULL; - else - return make_unicode_string_static(utf8, out, size + 1); -} - -int UTF8_IsValid(LPCSTR pszInput) -{ - int nb, i; - LPCSTR c = pszInput; - - if (!pszInput) return 0; - - for(c = pszInput; *c; c += (nb + 1)) - { - if (!(*c & 0x80)) nb = 0; - else if ((*c & 0xc0) == 0x80) return 0; - else if ((*c & 0xe0) == 0xc0) nb = 1; - else if ((*c & 0xf0) == 0xe0) nb = 2; - else if ((*c & 0xf8) == 0xf0) nb = 3; - else if ((*c & 0xfc) == 0xf8) nb = 4; - else if ((*c & 0xfe) == 0xfc) nb = 5; - - for(i = 1; i <= nb; i++) // we this forward, do not cross end of string - if ((*(c + i) & 0xc0) != 0x80) - return 0; - } - - return 1; -} - -static BOOL bHasCP_UTF8 = FALSE; -int utf8_decode_static(LPCSTR from, LPSTR to, int to_size) -{ - int nResult = 0; - // Validate the string - if (!UTF8_IsValid(from)) - return 0; - - // Use the native conversion routines when available - if (bHasCP_UTF8) - { - LPWSTR wszTemp = NULL; - size_t inlen = strlennull(from); - - wszTemp = (LPWSTR)_alloca((inlen + 1) * sizeof(WCHAR)); - - // Convert the UTF-8 string to UCS - if (MultiByteToWideChar(CP_UTF8, 0, from, -1, wszTemp, (int)inlen + 1)) - { - // Convert the UCS string to local ANSI codepage - if (WideCharToMultiByte(CP_ACP, 0, wszTemp, -1, to, to_size, NULL, NULL)) - { - nResult = 1; - } - } - } - else - { - size_t chars = strlennull(from) + 1; - LPWSTR unicode = (LPWSTR)_alloca(chars * sizeof(WCHAR)); - - make_unicode_string_static(from, unicode, chars); - - WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, -1, to, to_size, NULL, NULL); - - nResult = 1; - } - - return nResult; -} - -static LRESULT ControlAddStringUtf(HWND ctrl, DWORD msg, LPCSTR szString) -{ - char str[MAX_PATH]; - LPSTR szItem = TranslateUtfStatic(szString, str, MAX_PATH); - LRESULT item = -1; - - LPWSTR wItem = make_unicode_string(szItem); - item = SendMessageW(ctrl, msg, 0, (LPARAM)wItem); - SAFE_FREE(wItem); - return item; -} - -static LRESULT ControlAddStringW(HWND ctrl, DWORD msg, LPCWSTR wszString) -{ - return SendMessageW(ctrl, msg, 0, (LPARAM)TranslateW(wszString)); -} - -LRESULT ComboBoxAddStringUtf(HWND hCombo, LPCSTR szString, DWORD data) -{ - LRESULT item = ControlAddStringUtf(hCombo, CB_ADDSTRING, szString); - SendMessage(hCombo, CB_SETITEMDATA, item, data); - - return item; -} - -LRESULT ComboBoxAddStringW(HWND hCombo, LPCWSTR wszString, DWORD data) -{ - LRESULT item = ControlAddStringW(hCombo, CB_ADDSTRING, wszString); - SendMessageW(hCombo, CB_SETITEMDATA, item, data); - - return item; -} - -LRESULT ListBoxAddStringUtf(HWND hList, LPCSTR szString) -{ - return ControlAddStringUtf(hList, LB_ADDSTRING, szString); -} - -LRESULT ListBoxAddStringW(HWND hList, LPCWSTR wszString) -{ - return ControlAddStringW(hList, LB_ADDSTRING, wszString); -} diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/utilities.h b/plugins/!Deprecated/FingerPrintModPlus/src/utilities.h deleted file mode 100644 index bc748d9d51..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/utilities.h +++ /dev/null @@ -1,33 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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. -*/ - -static LRESULT ControlAddStringUtf(HWND ctrl, DWORD msg, const char* szString); -static LRESULT ControlAddStringW(HWND ctrl, DWORD msg, LPCWSTR szString); - -LRESULT ComboBoxAddStringUtf(HWND hCombo, const char* szString, DWORD data); -LRESULT ComboBoxAddStringW(HWND hCombo, LPCWSTR szString, DWORD data); - -LRESULT ListBoxAddStringUtf(HWND hList, const char* szString); -LRESULT ListBoxAddStringW(HWND hList, LPCWSTR szString); - -#define ControlAddString ControlAddStringW -#define ComboBoxAddString ComboBoxAddStringW -#define ListBoxAddString ListBoxAddStringW - diff --git a/plugins/!Deprecated/FingerPrintModPlus/src/version.h b/plugins/!Deprecated/FingerPrintModPlus/src/version.h deleted file mode 100644 index 6e163ec77d..0000000000 --- a/plugins/!Deprecated/FingerPrintModPlus/src/version.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -Fingerprint Mod+ (client version) icons module for Miranda IM - -Copyright © 2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer. 2009-2010 HierOS - -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 __MAJOR_VERSION 0 -#define __MINOR_VERSION 2 -#define __RELEASE_NUM 2 -#define __BUILD_NUM 4 - -#include - -#define __INTERNAL_NAME_STRING "Fingerprint Mod+" -#define __PLUGIN_ID 4300 -#define __PLUGIN_ID_STR "4300" -#define __BETA_FILE_TITLE "fingerprint" - - -#define __LEGAL_COPYRIGHT_STRING "©2009-2010 HierOS, ©2006-2007 Artem Shpynov aka FYR, Bio, Faith Healer." - -// Fingerprint interface ID. Should be the same for ALL fingerprint plugins. -// {FFF4B77A-CE40-11DB-A5CD-06A755D89593} -#define MIID_FINGERPRINT {0xFFF4B77A, 0xCE40, 0x11DB, { 0xA5, 0xCD, 0x06, 0xA7, 0x55, 0xD8, 0x95, 0x93}} -#define MIID_THIS_PLUGIN {0x687364af, 0x58b0, 0x4af2, { 0xa4, 0xee, 0x20, 0xf4, 0xa, 0x8d, 0x9a, 0xfb}} diff --git a/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj b/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj deleted file mode 100644 index a9296f47d6..0000000000 --- a/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj +++ /dev/null @@ -1,192 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {2CBA4321-8FA3-4385-BAB6-5387668FBBC4} - FirstRun - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Full - OnlyExplicitInline - ..\..\include;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - false - Use - commonheaders.h - - - false - true - true - $(IntDir)$(TargetName).lib - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - ..\..\include\msapi - - - - - Full - OnlyExplicitInline - ..\..\include;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - false - Use - commonheaders.h - - - false - true - true - $(IntDir)$(TargetName).lib - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - ..\..\include\msapi - - - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - false - Use - commonheaders.h - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - ..\..\include\msapi - - - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - false - Use - commonheaders.h - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - ..\..\include\msapi - - - - - - Create - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj.filters b/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj.filters deleted file mode 100644 index 5faa296026..0000000000 --- a/plugins/!Deprecated/FirstRun/FirstRun_10.vcxproj.filters +++ /dev/null @@ -1,37 +0,0 @@ - - - - - {27fbd9e8-a1b4-43ce-9fb9-18d89fdb2d70} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {196047f9-ebe5-4820-92f6-8142fff77f44} - h;hpp;hxx;hm;inl - - - {25f47b14-8246-4a8c-aa14-bc73970c74bf} - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj b/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj deleted file mode 100644 index bea8897167..0000000000 --- a/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj +++ /dev/null @@ -1,195 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {2CBA4321-8FA3-4385-BAB6-5387668FBBC4} - FirstRun - - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Full - OnlyExplicitInline - ..\..\include;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - false - Use - commonheaders.h - - - false - true - true - $(IntDir)$(TargetName).lib - true - Windows - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - - - - - Full - OnlyExplicitInline - ..\..\include;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - false - Use - commonheaders.h - - - false - true - true - $(IntDir)$(TargetName).lib - true - Windows - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - - - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - false - Use - commonheaders.h - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - false - - - ..\..\include\msapi - - - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - false - Use - commonheaders.h - - - true - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - - - - - - Create - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj.filters b/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj.filters deleted file mode 100644 index 5faa296026..0000000000 --- a/plugins/!Deprecated/FirstRun/FirstRun_12.vcxproj.filters +++ /dev/null @@ -1,37 +0,0 @@ - - - - - {27fbd9e8-a1b4-43ce-9fb9-18d89fdb2d70} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {196047f9-ebe5-4820-92f6-8142fff77f44} - h;hpp;hxx;hm;inl - - - {25f47b14-8246-4a8c-aa14-bc73970c74bf} - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/res/Version.rc b/plugins/!Deprecated/FirstRun/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/FirstRun/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/!Deprecated/FirstRun/src/Version.h b/plugins/!Deprecated/FirstRun/src/Version.h deleted file mode 100644 index 1536df74b5..0000000000 --- a/plugins/!Deprecated/FirstRun/src/Version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 2 - -#include - -#define __PLUGIN_NAME "First run" -#define __FILENAME "FirstRun.dll" -#define __DESCRIPTION "Displays the Accounts window at the first start." -#define __AUTHOR "Yasnovidyashii" -#define __AUTHOREMAIL "yasnovidyashii@gmail.com" -#define __AUTHORWEB "http://miranda-ng.org/p/FirstRun/" -#define __COPYRIGHT "© 2008 Mikhail Yuriev" diff --git a/plugins/!Deprecated/FirstRun/src/commonheaders.h b/plugins/!Deprecated/FirstRun/src/commonheaders.h deleted file mode 100644 index 369f963af8..0000000000 --- a/plugins/!Deprecated/FirstRun/src/commonheaders.h +++ /dev/null @@ -1,10 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS - -#include - -#include -#include -#include -#include - -#include "Version.h" \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/src/main.cpp b/plugins/!Deprecated/FirstRun/src/main.cpp deleted file mode 100644 index 23a9867d1a..0000000000 --- a/plugins/!Deprecated/FirstRun/src/main.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "commonheaders.h" - -HINSTANCE hInst; - -int hLangpack; - -PLUGININFOEX pluginInfo={ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {49C2CF54-7898-44DE-BE3A-6D2E4EF90079} - {0x49c2cf54, 0x7898, 0x44de, {0xbe, 0x3a, 0x6d, 0x2e, 0x4e, 0xf9, 0x0, 0x79}} -}; - -int ModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - TCHAR* ptszDllName; - TCHAR ptszDllPath[MAX_PATH]; - - GetModuleFileName(hInst, ptszDllPath, MAX_PATH); - ptszDllName = _tcslwr(_tcsrchr(ptszDllPath, '\\')); - - if (ptszDllName != NULL) - ptszDllName = ptszDllName + 1; - - CallService(MS_PROTO_SHOWACCMGR, 0, 0); - - db_set_b(NULL, "PluginDisable", _T2A(ptszDllName), 1); - - return 0; -} - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) int Load(void) -{ - mir_getLP(&pluginInfo); - HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); - return 0; -} - -extern "C" __declspec(dllexport) int Unload(void) -{ - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/FirstRun/src/stdafx.cpp b/plugins/!Deprecated/FirstRun/src/stdafx.cpp deleted file mode 100644 index 048b14e9d2..0000000000 --- a/plugins/!Deprecated/FirstRun/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 diff --git a/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj b/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj deleted file mode 100644 index bbbee617ed..0000000000 --- a/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj +++ /dev/null @@ -1,207 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - FlashAvatars - {914B61B9-3383-4FA1-9BA9-350200B734B5} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Use - stdafx.h - Level3 - EditAndContinue - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - 0x25000000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Use - stdafx.h - Level3 - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - 0x25000000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - Use - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - true - true - Windows - 0x25000000 - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - OnlyExplicitInline - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - Use - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - true - true - Windows - 0x25000000 - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - Create - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj.filters b/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj.filters deleted file mode 100644 index 84595578e0..0000000000 --- a/plugins/!Deprecated/FlashAvatars/FlashAvatars_10.vcxproj.filters +++ /dev/null @@ -1,52 +0,0 @@ - - - - - {baed73f6-6413-4a48-81f1-44736cdf7d50} - h;hpp;hxx;hm;inl - - - {a22eadc9-ed9b-4e56-8e1e-350ce8875bef} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - {e502d69e-3182-4849-8a80-09df8b3f5ce5} - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj b/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj deleted file mode 100644 index 534445879e..0000000000 --- a/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj +++ /dev/null @@ -1,210 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - FlashAvatars - {914B61B9-3383-4FA1-9BA9-350200B734B5} - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Use - stdafx.h - Level3 - EditAndContinue - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - 0x25000000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - false - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Use - stdafx.h - Level3 - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - 0x25000000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - Use - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - true - true - Windows - 0x25000000 - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Level3 - Size - Use - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - true - true - Windows - 0x25000000 - $(ProfileDir)..\..\bin12\lib - - - - - - - - - - - - - - - - Create - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj.filters b/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj.filters deleted file mode 100644 index 84595578e0..0000000000 --- a/plugins/!Deprecated/FlashAvatars/FlashAvatars_12.vcxproj.filters +++ /dev/null @@ -1,52 +0,0 @@ - - - - - {baed73f6-6413-4a48-81f1-44736cdf7d50} - h;hpp;hxx;hm;inl - - - {a22eadc9-ed9b-4e56-8e1e-350ce8875bef} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - {e502d69e-3182-4849-8a80-09df8b3f5ce5} - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/FlashAvatars/docs/changelog.txt b/plugins/!Deprecated/FlashAvatars/docs/changelog.txt deleted file mode 100644 index 79a9b5a972..0000000000 --- a/plugins/!Deprecated/FlashAvatars/docs/changelog.txt +++ /dev/null @@ -1,81 +0,0 @@ -* 0.0.0.1 - initial version - -* 0.0.1.1 - changed service functions - avatars should work correctly - -* 0.0.1.2 - better switching when user changes flash avatar to another flash avatar - avatar faces on status change - support/service constants are now in separate file (m_flash.h) - shutdown cleanup - -* 0.0.1.3 - FLASHAVATAR structure is used to post more information in service functions - flash object is created for each flash avatar, it solves many problems - -* 0.0.1.4 - avatar faces on standard ICQ emoticon - invalidate parent object after creating flash object - changed services' names (for the last time!) - -* 0.0.1.5 - added support to have displayed more flash avatars for same contact at one time - added message when flash.ocx isn't registered - -* 0.0.1.6 - fixed a crash when xml file doesn't exist - used standard protocol service to get avatar path - made thread safe - -* 0.0.1.7 - default protocol is ICQ for contact with unknown protocol - added support for own flash avatars (requires small change in tabsrmm and icq plugins) - fixed creating more avatars for one contact - fixed crash with invalid xml file - support for flashavatar background color per contact (set in message window) - -* 0.0.1.8 - changed project settings to decrease library size - -* 0.0.1.9 - using STLPort - removed ATL dependency - fixed iterator corruption when deleting flash avatar - fixed avatar smileys - -* 0.0.1.10 - added tZers support - using hash_multimap - -* 0.0.1.11 - added bad flash version check - disabled tZers support - using multimap instead of hash_multimap again - MS_FAVATAR_RESIZE function supports changing flash position - hopefully fixed crash when flash.ocx is not registered - added MS_FAVATAR_SETBKCOLOR service to allow setting flash background color - -* 0.0.1.12 - fixed disappeared flash avatar when resizing - added MS_FAVATAR_SETPOS service to set avatar position - -* 0.0.1.13 - code cleanup - not displaying ICQ flash avatar for unknown protocol - definitely removed tZers support - added reserved memory space to FLASHAVATAR structure, so we could extend it in the future - added flash default width and height macros to m_flash.h - added own downloading routine, so it respects Miranda's NetLib settings - added flash avatar caching - flash avatar downloading/loading routine moved to own thread - fixed invalid XML parsing - KNOWN PROBLEM: some icq5 self-made flash avatars (from Devil factory) can't be loaded from cache and in thread, so it uses default way for them - fixed thread handle leak - strings are translatable - -* 0.0.1.14 - added support for folders plugin - really fixed the thread handle leak - some code cleanup \ No newline at end of file diff --git a/plugins/!Deprecated/FlashAvatars/m_flash.h b/plugins/!Deprecated/FlashAvatars/m_flash.h deleted file mode 100644 index 96a8407103..0000000000 --- a/plugins/!Deprecated/FlashAvatars/m_flash.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Miranda FlashAvatars Plugin -Plugin support header file -Copyright (C) 2006 Big Muscle - -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. -*/ - -// Service functions - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used - */ -#define MS_FAVATAR_DESTROY "FlashAvatar/Destroy" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used - */ -#define MS_FAVATAR_MAKE "FlashAvatar/Make" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM LPRECT - */ -#define MS_FAVATAR_RESIZE "FlashAvatar/Resize" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM LPRECT - */ -#define MS_FAVATAR_SETPOS "FlashAvatar/SetPos" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used - */ -#define MS_FAVATAR_GETINFO "FlashAvatar/GetInfo" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM BSTR - */ -#define MS_FAVATAR_SETEMOFACE "FlashAvatar/SetEmoFace" - -/** - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM COLORREF - */ -#define MS_FAVATAR_SETBKCOLOR "FlashAvatar/SetBkColor" - -// Avatar emotion faces -#define AV_SMILE "smile" -#define AV_SAD "sad" -#define AV_LAUGH "laugh" -#define AV_MAD "mad" -#define AV_CRY "cry" -#define AV_OFFLINE "offline" -#define AV_BUSY "busy" -#define AV_LOVE "love" -#define AV_NORMAL "stam" - -// Avatar default size -#define FAVATAR_WIDTH 52 -#define FAVATAR_HEIGHT 64 - -// FLASHAVATAR structure -typedef struct { - MCONTACT hContact; // contact who flash avatar belongs to - HWND hWindow; // handle of flash avatar object - HWND hParentWindow; // handle of flash avatar's parent object - TCHAR* cUrl; // url of .swf file - int id; // unique number of plugin which wants to use avatar service - char* cProto; // contact's protocol - char reserved[16]; -} FLASHAVATAR; diff --git a/plugins/!Deprecated/FlashAvatars/m_flash.inc b/plugins/!Deprecated/FlashAvatars/m_flash.inc deleted file mode 100644 index c6c7cc1816..0000000000 --- a/plugins/!Deprecated/FlashAvatars/m_flash.inc +++ /dev/null @@ -1,92 +0,0 @@ -{ -Miranda FlashAvatars Plugin -Plugin support header file -Copyright (C) 2006 Big Muscle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -{$IFNDEF M_FLASH} -{$DEFINE M_FLASH} -// Service functions - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used -} - MS_FAVATAR_DESTROY = 'FlashAvatar/Destroy'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used -} - MS_FAVATAR_MAKE = 'FlashAvatar/Make'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM LPRECT -} - MS_FAVATAR_RESIZE = 'FlashAvatar/Resize'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM LPRECT -} - MS_FAVATAR_SETPOS = 'FlashAvatar/SetPos'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM not used -} - MS_FAVATAR_GETINFO = 'FlashAvatar/GetInfo'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM BSTR -} - MS_FAVATAR_SETEMOFACE = 'FlashAvatar/SetEmoFace'; - -{ - WPARAM FLASHAVATAR* (hContact, hParentWindow) - LPARAM COLORREF -} - MS_FAVATAR_SETBKCOLOR = 'FlashAvatar/SetBkColor'; - -// Avatar emotion faces - AV_SMILE = 'smile'; - AV_SAD = 'sad'; - AV_LAUGH = 'laugh'; - AV_MAD = 'mad'; - AV_CRY = 'cry'; - AV_OFFLINE = 'offline'; - AV_BUSY = 'busy'; - AV_LOVE = 'love'; - AV_NORMAL = 'stam'; - -// Avatar default size - FAVATAR_WIDTH = 52; - FAVATAR_HEIGHT = 64; - -type - TFLASHAVATAR = record - hContact :TMCONTACT; // contact who flash avatar belongs to - hWindow :HWND; // handle of flash avatar object - hParentWindow:HWND; // handle of flash avatar's parent object - cUrl :TChar; // url of .swf file - id :int; // unique number of plugin which wants to use avatar service - cProto :PAnsiChar; // contacts protocol - end; - -{$ENDIF} diff --git a/plugins/!Deprecated/FlashAvatars/res/FlashAvatars.rc b/plugins/!Deprecated/FlashAvatars/res/FlashAvatars.rc deleted file mode 100644 index 2282ceecf7..0000000000 --- a/plugins/!Deprecated/FlashAvatars/res/FlashAvatars.rc +++ /dev/null @@ -1,65 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Czech resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CSY) -#ifdef _WIN32 -LANGUAGE LANG_CZECH, SUBLANG_DEFAULT -#pragma code_page(1250) -#endif //_WIN32 - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,14,251 - PRODUCTVERSION 1,0,14,251 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x0L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040504b0" - BEGIN - VALUE "CompanyName", "Big Muscle" - VALUE "FileDescription", "FlashAvatars" - VALUE "FileVersion", "1, 0, 14, 251" - VALUE "InternalName", "FlashAvatars" - VALUE "LegalCopyright", "Copyright (C) 2006-2009" - VALUE "OriginalFilename", "FlashAvatars" - VALUE "ProductName", "FlashAvatars" - VALUE "ProductVersion", "1, 0, 14, 251" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x405, 1200 - END -END - -#endif // Czech resources -///////////////////////////////////////////////////////////////////////////// - diff --git a/plugins/!Deprecated/FlashAvatars/res/Version.rc b/plugins/!Deprecated/FlashAvatars/res/Version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/FlashAvatars/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/!Deprecated/FlashAvatars/src/TigerHash.cpp b/plugins/!Deprecated/FlashAvatars/src/TigerHash.cpp deleted file mode 100644 index 094ba444ed..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/TigerHash.cpp +++ /dev/null @@ -1,760 +0,0 @@ -/* - * Copyright (C) 2001-2006 Jacek Sieka, arnetheduck on gmail point com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include "stdafx.h" - -#ifdef _WIN32 -#if defined(_M_X64) -#define TIGER_ARCH64 -#endif -#if !(defined(_M_IX86) || defined(_M_X64)) -#define TIGER_BIG_ENDIAN -#endif -#else // _WIN32 -#if defined(__x86_64__) || defined(__alpha) -#define TIGER_ARCH64 -#endif -#if !(defined(__i386__) || defined(__x86_64__) || defined(__alpha)) -#define TIGER_BIG_ENDIAN -#endif -#endif // _WIN32 - -#define PASSES 3 - -#define t1 (table) -#define t2 (table+256) -#define t3 (table+256*2) -#define t4 (table+256*3) - -#define save_abc \ - aa = a; \ - bb = b; \ - cc = c; - -#ifdef TIGER_ARCH64 -#define round(a,b,c,x,mul) \ - c ^= x; \ - a -= t1[((c)>>(0*8))&0xFF] ^ t2[((c)>>(2*8))&0xFF] ^ \ - t3[((c)>>(4*8))&0xFF] ^ t4[((c)>>(6*8))&0xFF] ; \ - b += t4[((c)>>(1*8))&0xFF] ^ t3[((c)>>(3*8))&0xFF] ^ \ - t2[((c)>>(5*8))&0xFF] ^ t1[((c)>>(7*8))&0xFF] ; \ - b *= mul; -#else -#define round(a,b,c,x,mul) \ - c ^= x; \ - a -= t1[(uint8_t)(c)] ^ \ - t2[(uint8_t)(((uint32_t)(c))>>(2*8))] ^ \ - t3[(uint8_t)(((uint64_t)(c))>>(4*8))] ^ \ - t4[(uint8_t)(((uint32_t)(((uint64_t)(c))>>(4*8)))>>(2*8))] ; \ - b += t4[(uint8_t)(((uint32_t)(c))>>(1*8))] ^ \ - t3[(uint8_t)(((uint32_t)(c))>>(3*8))] ^ \ - t2[(uint8_t)(((uint32_t)(((uint64_t)(c))>>(4*8)))>>(1*8))] ^ \ - t1[(uint8_t)(((uint32_t)(((uint64_t)(c))>>(4*8)))>>(3*8))]; \ - b *= mul; -#endif - -#define pass(a,b,c,mul) \ - round(a,b,c,x0,mul) \ - round(b,c,a,x1,mul) \ - round(c,a,b,x2,mul) \ - round(a,b,c,x3,mul) \ - round(b,c,a,x4,mul) \ - round(c,a,b,x5,mul) \ - round(a,b,c,x6,mul) \ - round(b,c,a,x7,mul) - -#define key_schedule \ - x0 -= x7 ^ _ULL(0xA5A5A5A5A5A5A5A5); \ - x1 ^= x0; \ - x2 += x1; \ - x3 -= x2 ^ ((~x1)<<19); \ - x4 ^= x3; \ - x5 += x4; \ - x6 -= x5 ^ ((~x4)>>23); \ - x7 ^= x6; \ - x0 += x7; \ - x1 -= x0 ^ ((~x7)<<19); \ - x2 ^= x1; \ - x3 += x2; \ - x4 -= x3 ^ ((~x2)>>23); \ - x5 ^= x4; \ - x6 += x5; \ - x7 -= x6 ^ _ULL(0x0123456789ABCDEF); - -#define feedforward \ - a ^= aa; \ - b -= bb; \ - c += cc; - -#ifdef TIGER_ARCH64 -#define compress \ - save_abc \ - pass(a,b,c,5) \ - key_schedule \ - pass(c,a,b,7) \ - key_schedule \ - pass(b,c,a,9) \ - for(pass_no=3; pass_no 0) { - size_t n = min(length, BLOCK_SIZE-tmppos); - memcpy(tmp + tmppos, str, n); - str += n; - pos += n; - length -= n; - - if ((tmppos + n) == BLOCK_SIZE) { -#ifdef TIGER_BIG_ENDIAN - for(j=0; j=BLOCK_SIZE) { -#ifdef TIGER_BIG_ENDIAN - for(j=0; j (BLOCK_SIZE - sizeof(uint64_t))) { - memset(tmp + tmppos, 0, BLOCK_SIZE - tmppos); -#ifdef TIGER_BIG_ENDIAN - for(j=0; j 3) { - word = (uint8_t)(hash[i] & (0xFF >> index)); - index = (index + 5) % 8; - word <<= index; - if ((i + 1) < HASH_SIZE) - word |= hash[i + 1] >> (8 - index); - - i++; - } else { - word = (uint8_t)(hash[i] >> (8 - (index + 5))) & 0x1F; - index = (index + 5) % 8; - if (index == 0) - i++; - } - - //dcassert(word < 32); - dst[j] = base32Alphabet[word]; - } - dst[39] = NULL; - return dst; - } - - /** Calculates the Tiger hash of the data. */ - void update(const void* data, size_t len); - /** Call once all data has been processed. */ - uint8_t* finalize(); - -private: - enum { BLOCK_SIZE = 512/8 }; - /** 512 bit blocks for the compress function */ - uint8_t tmp[512/8]; - /** State / final hash value */ - uint64_t res[3]; - /** Total number of bytes compressed */ - uint64_t pos; - /** S boxes */ - static uint64_t table[]; - - void tigerCompress(const uint64_t* data, uint64_t state[3]); -}; - -#endif // !defined(TIGER_HASH_H) - -/** - * @file - * $Id: TigerHash.h,v 1.10 2006/10/13 20:04:32 bigmuscle Exp $ - */ diff --git a/plugins/!Deprecated/FlashAvatars/src/Version.h b/plugins/!Deprecated/FlashAvatars/src/Version.h deleted file mode 100644 index 7ab5bbae86..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/Version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 1 -#define __BUILD_NUM 14 - -#include - -#define __PLUGIN_NAME "Flash avatars" -#define __FILENAME "FlashAvatars.dll" -#define __DESCRIPTION "Loads and displays Flash avatars." -#define __AUTHOR "Big Muscle" -#define __AUTHOREMAIL "" -#define __AUTHORWEB "http://miranda-ng.org/p/FlashAvatars/" -#define __COPYRIGHT "© 2000-2009 Miranda-IM project" diff --git a/plugins/!Deprecated/FlashAvatars/src/cflash.cpp b/plugins/!Deprecated/FlashAvatars/src/cflash.cpp deleted file mode 100644 index 134b896758..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/cflash.cpp +++ /dev/null @@ -1,641 +0,0 @@ -#include "stdafx.h" - -#import "Flash.tlb" no_namespace exclude("IServiceProvider") - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {72765A6F-B017-42F1-B30F-5E0941273A3F} - {0x72765a6f, 0xb017, 0x42f1, {0xb3, 0xf, 0x5e, 0x9, 0x41, 0x27, 0x3a, 0x3f}} -}; - - -/* a strcmp() that likes NULL */ -int __fastcall strcmpnull(const char *str1, const char *str2) { - if (str1 && str2) - return strcmp(str1, str2); - - if (!str1 && !str2) - return 0; - - return 1; -} - - -struct flash_avatar_item : public MZeroedObject -{ - MCONTACT hContact; - FLASHAVATAR hFA; - IShockwaveFlash* pFlash; - - char* getProto() { return (hFA.cProto) ? hFA.cProto : GetContactProto(hFA.hContact); } - - flash_avatar_item(MCONTACT contact, FLASHAVATAR& fa, IShockwaveFlash *flash) { hContact = contact; hFA = fa; pFlash = flash; } -}; - -static int CompareFlashItems(const flash_avatar_item* p1, const flash_avatar_item* p2) { - if (p1->hContact < p2->hContact) - return -1; - - if (p1->hContact > p2->hContact) - return 1; - - int cProto = strcmpnull(p1->hFA.cProto, p2->hFA.cProto); - if (cProto) - return cProto; - - return (p1->hFA.id > p2->hFA.id) ? -1 : (p1->hFA.id == p2->hFA.id) ? 0 : 1; -}; - -HINSTANCE g_hInst = 0; - - -int hLangpack; -CLIST_INTERFACE *pcli; - -HANDLE hNetlibUser; - -static char pluginName[64]; - -static CriticalSection cs; - -static HANDLE hAvatarsFolder = NULL; - -static LIST FlashList(5, CompareFlashItems); - -typedef HRESULT (WINAPI *LPAtlAxAttachControl)(IUnknown* pControl, HWND hWnd, IUnknown** ppUnkContainer); -LPAtlAxAttachControl MyAtlAxAttachControl; - - -#define getFace() \ - char* face;\ - switch (status) {\ - case ID_STATUS_OFFLINE:\ - face = AV_OFFLINE;\ - break;\ - case ID_STATUS_ONLINE:\ - case ID_STATUS_INVISIBLE:\ - face = AV_NORMAL;\ - break;\ - default:\ - face = AV_BUSY;\ - break;\ - } - -static bool DownloadFlashFile(char *url, const TCHAR* save_file, int recurse_count /*=0*/) -{ - if (!url || recurse_count > 5) - return false; - - NETLIBHTTPREQUEST req = {0}; - req.cbSize = sizeof(req); - req.requestType = REQUEST_GET; - req.szUrl = url; - req.flags = 0;//NLHRF_HTTP11; - - NETLIBHTTPREQUEST *resp = (NETLIBHTTPREQUEST *)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlibUser, (LPARAM)&req); - if(resp) { - if(resp->resultCode == 200) { - HANDLE hSaveFile = CreateFile(save_file, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); - if(hSaveFile != INVALID_HANDLE_VALUE) { - unsigned long bytes_written = 0; - if(WriteFile(hSaveFile, resp->pData, resp->dataLength, &bytes_written, NULL)) { - CloseHandle(hSaveFile); - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp); - resp = 0; - return true; - } - CloseHandle(hSaveFile); - } - } else if(resp->resultCode >= 300 && resp->resultCode < 400) { - // get new location - bool ret = false; - for(int i = 0; i < resp->headersCount; i++) { - if(strcmpnull(resp->headers[i].szName, "Location") == 0) { - ret = DownloadFlashFile(resp->headers[i].szValue, save_file, recurse_count + 1); - break; - } - } - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp); - resp = 0; - return ret; - } - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp); - resp = 0; - } - - return false; -} -/* -static wchar_t *u2w(const char *utfs) { - if(utfs) { - int size = MultiByteToWideChar(CP_UTF8, 0, utfs, -1, 0, 0); - wchar_t *buff = new wchar_t[size]; - MultiByteToWideChar(CP_UTF8, 0, utfs, -1, buff, size); - return buff; - } else - return 0; -} -*/ - -static void __cdecl loadFlash_Thread(void *p) { - debug("Avatar thread executed...\n"); - SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE); - - flash_avatar_item* fai = (flash_avatar_item*)p; - IShockwaveFlash* flash = fai->pFlash; - - if ( _tcschr(fai->hFA.cUrl, '?') == NULL) { - // make hash of url - debug("Making TTH hash from URL...\n"); - TigerHash th; - th.update(fai->hFA.cUrl, _tcslen(fai->hFA.cUrl)); - th.finalize(); - - // create local path name - TCHAR name[MAX_PATH], path[MAX_PATH]; - TCHAR tth[((TigerHash::HASH_SIZE * 8) / 5) + 2]; - FOLDERSGETDATA fgd = {0}; - - fgd.cbSize = sizeof(FOLDERSGETDATA); - fgd.nMaxPathSize = MAX_PATH; - fgd.szPathT = path; - fgd.flags = FF_TCHAR; - if (!hAvatarsFolder || CallService(MS_FOLDERS_GET_PATH, (WPARAM)hAvatarsFolder, (LPARAM)&fgd)) { - if(ServiceExists(MS_UTILS_REPLACEVARS)) - mir_sntprintf(path, MAX_PATH, _T("%s\\%s"), VARST(_T("%miranda_avatarcache%")), _T("Flash")); - else - PathToAbsoluteT( _T("Flash"), path); - } - else { - if(_tcslen(path) && path[_tcslen(path)-1]=='\\') - path[_tcslen(path)-1] = 0; - } - - CreateDirectory(path, NULL); // create directory if it doesn't exist - mir_sntprintf(name, MAX_PATH, _T("%s\\%s.swf"), path, th.toBase32(tth)); - - // download remote file if it doesn't exist - if (GetFileAttributes(name) == 0xFFFFFFFF) { - debug("Downloading flash file...\n"); - DownloadFlashFile( _T2A(fai->hFA.cUrl), name, 0); - } - - // load and play local flash movie - debug("Loading flash movie...\n"); - flash->LoadMovie(0, _bstr_t(name).copy()); - } - Sleep(100); - flash->Play(); - - // change flash frame according user's status - int status; - if (fai->hFA.hContact) - status = db_get_w(fai->hFA.hContact, fai->getProto(), "Status", ID_STATUS_OFFLINE); - else - status = CallProtoService(fai->getProto(), PS_GETSTATUS, 0, 0); - - getFace(); - flash->SetVariable(L"face.emotion", _bstr_t(face).copy()); - flash->Release(); -} - -static void ShowBalloon(TCHAR *title, TCHAR *msg, int icon) -{ - MIRANDASYSTRAYNOTIFY msn = {0}; - msn.cbSize = sizeof(MIRANDASYSTRAYNOTIFY); - msn.dwInfoFlags = icon | NIIF_INTERN_UNICODE; - msn.tszInfo = TranslateTS(msg); - msn.tszInfoTitle = TranslateTS(title); - msn.uTimeout = 5000; - pcli->pfnCListTrayNotify(&msn); -} - -static void prepareFlash(char* pProto, const TCHAR* pUrl, FLASHAVATAR& fa, IShockwaveFlash* flash) -{ - debug("Preparing flash...\n"); - if(flash == NULL) { - // Flash component is not registered in the system - ShowBalloon(LPGENT("Flash.ocx not registered!"), LPGENT("You don't have installed Shockwave Flash interface in your system."), NIIF_ERROR); - - DestroyWindow(fa.hWindow); - fa.hWindow = 0; - return; - } - - if(flash->FlashVersion() == 0x80000) { - // Flash Version 8 has a bug which causes random crashes :( - ShowBalloon(LPGENT("Bugged Flash detected!"), LPGENT("You have installed Flash 8.\r\nThis version of Flash contains a bug which can cause random crashes.\r\nIt is recommended to upgrade or downgrade your Flash library"), NIIF_WARNING); - } - - // attach flash object to window - debug("Attaching flash to its window...\n"); - MyAtlAxAttachControl(flash, fa.hWindow, 0); - - // store avatar info - debug("Storing avatar info...\n"); - fa.cProto = pProto; - fa.cUrl = mir_tstrdup(pUrl); - - // create flash record - flash_avatar_item *flash_item = new flash_avatar_item(fa.hContact, fa, flash); - { - Lock l(cs); - FlashList.insert(flash_item); - } - - // avatar contains parameter, load it from remote place - if ( _tcschr(fa.cUrl, '?')) { - debug("Flash with parameters, loading...\n"); - flash->LoadMovie(0, fa.cUrl); - } - _bstr_t - // refresh avatar's parent window - // InvalidateRect(fa.hParentWindow, NULL, FALSE); - - // create thread to download/load flash avatar - debug("Creating avatar thread...\n"); - flash->AddRef(); - mir_forkthread(&loadFlash_Thread, (void*)flash_item); - //loadFlash(new FlashPair(make_pair(fa, flash))); -} - -static INT_PTR destroyAvatar(WPARAM wParam, LPARAM) -{ - flash_avatar_item key(((FLASHAVATAR*)wParam)->hContact, *(FLASHAVATAR*)wParam, NULL); - - Lock l(cs); - - flash_avatar_item *item = FlashList.find(&key); - if (item) { - if (item->pFlash) - item->pFlash->Release(); - if (item->hFA.hWindow) - DestroyWindow(item->hFA.hWindow); - mir_free(item->hFA.cUrl); - FlashList.remove(item); - delete item; - } - return 0; -} - -static INT_PTR makeAvatar(WPARAM wParam, LPARAM) -{ - debug("Searching for flash avatar...\n"); - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - - PROTO_AVATAR_INFORMATIONT AI = {0}; - AI.cbSize = sizeof(AI); - AI.hContact = hFA->hContact; - AI.format = PA_FORMAT_UNKNOWN; - - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - bool avatarOK = false; - if(hFA->hContact) - avatarOK = (int)CallProtoService(key.getProto(), PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS; - else { - avatarOK = (int)CallProtoService(key.getProto(), PS_GETMYAVATART, (WPARAM)AI.filename, (LPARAM)255) == 0; - if(avatarOK) { - TCHAR* ext = _tcsrchr(AI.filename, _T('.')); - if(ext && (_tcsicmp(ext, _T(".xml")) == 0)) - AI.format = PA_FORMAT_XML; - } - } - - if (!avatarOK) return 0; - debug("Avatar found...\n"); - - TCHAR url[MAX_PATH]; - switch(AI.format) { - case PA_FORMAT_SWF: - _tcsncpy(url, AI.filename, SIZEOF(url)); - break; - case PA_FORMAT_XML: { - int src = _topen(AI.filename, _O_BINARY | _O_RDONLY); - if(src != -1) { - char pBuf[2048]; - char* urlBuf; - _read(src, pBuf, sizeof(pBuf)); - _close(src); - - urlBuf = strstr(pBuf, ""); - if(urlBuf) - _tcsncpy(url, _A2T(strtok(urlBuf + 5, "\r\n <")), SIZEOF(url)); - else - return 0; - } else { - return 0; - } - break; - } - default: - destroyAvatar(wParam, 0); - return 0; - } - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item) { - debug("Flash already exists...\n"); - hFA->hWindow = item->hFA.hWindow; - ShowWindow(hFA->hWindow, SW_SHOW); - - if ( _tcsicmp(item->hFA.cUrl, url) != 0) { - debug("Refreshing flash...\n"); - IShockwaveFlash* flash = item->pFlash; - mir_free(item->hFA.cUrl); - FlashList.remove(item); - delete item; - - prepareFlash(key.getProto(), url, *hFA, flash); - } - } - else { - debug("Creating new flash...\n"); - RECT rc; - GetWindowRect(hFA->hParentWindow, &rc); - hFA->hWindow = CreateWindowEx(WS_EX_TOPMOST, _T("AtlAxWin"), _T(""), WS_VISIBLE | WS_CHILD, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hFA->hParentWindow, (HMENU) 0, g_hInst, NULL); - - IShockwaveFlash* flash = NULL; - debug("Creating flash instance...\n"); - CoCreateInstance(__uuidof(ShockwaveFlash),0,CLSCTX_ALL, __uuidof(IShockwaveFlash), (void **)&flash); - debug("Initialized.\n"); - - prepareFlash(key.getProto(), url, *hFA, flash); - } - return 0; -} - -static INT_PTR resizeAvatar(WPARAM wParam, LPARAM lParam) -{ - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - RECT rc = *((LPRECT)lParam); - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item) - SetWindowPos(item->hFA.hWindow, HWND_TOP, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SWP_SHOWWINDOW); - - return 0; -} - -static INT_PTR setPos(WPARAM wParam, LPARAM lParam) -{ - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - RECT rc = *((LPRECT)lParam); - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item) - SetWindowPos(item->hFA.hWindow, HWND_TOP, rc.left, rc.top, rc.right, rc.bottom, SWP_SHOWWINDOW); - - return 0; -} - -static INT_PTR getInfo(WPARAM wParam, LPARAM) -{ - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item) { - //IShockwaveFlash* flash = item->pFlash; - hFA->hWindow = item->hFA.hWindow; - hFA->cUrl = item->hFA.cUrl; - hFA->cProto = item->hFA.cProto; - } - return 0; -} - -static INT_PTR setEmoFace(WPARAM wParam, LPARAM lParam) -{ - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item && item->pFlash) { - IShockwaveFlash* flash = item->pFlash; - flash->SetVariable(L"face.emotion", (BSTR)lParam); - } - return 0; -} - -static INT_PTR setBkColor(WPARAM wParam, LPARAM lParam) -{ - FLASHAVATAR* hFA = (FLASHAVATAR*)wParam; - COLORREF clr = (COLORREF)lParam; - flash_avatar_item key(hFA->hContact, *hFA, NULL); - - Lock l(cs); - flash_avatar_item *item = FlashList.find(&key); - if (item && item->pFlash) { - IShockwaveFlash* flash = item->pFlash; - - char buf[10]; - mir_snprintf(buf, sizeof(buf), "%02X%02X%02X", LOBYTE(LOWORD(clr)), HIBYTE(LOWORD(clr)), LOBYTE(HIWORD(clr))); - flash->put_BGColor(_bstr_t(buf)); - } - return 0; -} - -static int ownStatusChanged(WPARAM wParam, LPARAM lParam) -{ - WORD status = (WORD)wParam; - const char* proto = (char*)lParam; - - Lock l(cs); - for(int i = 0; i < FlashList.getCount(); i++) { - flash_avatar_item *item = FlashList[i]; - if(item->hContact == NULL && (!proto || (strcmpnull(item->hFA.cProto, proto) == 0))) { - IShockwaveFlash* flash = item->pFlash; - if (flash) { - getFace(); - flash->SetVariable(L"face.emotion", _bstr_t(face).copy()); - } - } else if (item->hContact) - break; // the list is sorted by hContact - } - return 0; -} - -static int statusChanged(WPARAM wParam, LPARAM lParam) -{ - WORD status = HIWORD(lParam); - - Lock l(cs); - for(int i = 0; i < FlashList.getCount(); i++) { - flash_avatar_item *item = FlashList[i]; - if (item->hContact == wParam) { - IShockwaveFlash* flash = item->pFlash; - if (flash) { - getFace(); - flash->SetVariable(L"face.emotion", _bstr_t(face).copy()); - } - } else if (item->hContact > wParam) - break; // the list is sorted by hContact - } - return 0; -} - -static int eventAdded(WPARAM wParam, LPARAM lParam) -{ - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.cbBlob = db_event_getBlobSize((HANDLE)lParam); - if (dbei.cbBlob == 0xFFFFFFFF) - return 0; - - dbei.pBlob = new BYTE[dbei.cbBlob]; - db_event_get((HANDLE)lParam, &dbei); - - if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & DBEF_READ)) { - Lock l(cs); - if(FlashList.getCount() > 0) { - //size_t aLen = strlen((char *)dbei.pBlob)+1; - char* face = NULL; - - if ( (strstr((char*)dbei.pBlob, (char*)":-)") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":)") != NULL) || - (strstr((char*)dbei.pBlob, (char*)";)") != NULL) || - (strstr((char*)dbei.pBlob, (char*)";-)") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*THUMBS UP*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"O:-)") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":P") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-P") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*Drink*") != NULL)) { face = AV_SMILE; } - else - if ( (strstr((char*)dbei.pBlob, (char*)":-(") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-$") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-!") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-X") != NULL)) { face = AV_SAD; } - else - if ( (strstr((char*)dbei.pBlob, (char*)"*JOKINGLY*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-D") != NULL)) { face = AV_LAUGH; } - else - if ( (strstr((char*)dbei.pBlob, (char*)":'(") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":'-(") != NULL)) { face = AV_CRY; } - else - if ( (strstr((char*)dbei.pBlob, (char*)">:o") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-@") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*STOP*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"]:->") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"@=") != NULL)) { face = AV_MAD; } - else - if ( (strstr((char*)dbei.pBlob, (char*)":-*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)":-[") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*KISSED*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*KISSING*") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"@}->--") != NULL) || - (strstr((char*)dbei.pBlob, (char*)"*IN LOVE*") != NULL)) { face = AV_LOVE; } - else { - face = AV_NORMAL; - } - - MCONTACT hContact = (dbei.flags & DBEF_SENT) ? 0 : wParam; - for(int i=0; ihContact == hContact && !strcmpnull(dbei.szModule, item->getProto())) { - IShockwaveFlash* flash = item->pFlash; - flash->SetVariable(L"face.emotion", _bstr_t(face).copy()); - //break; - } else if (item->hContact > hContact) - break; // the list is sorted - } - } - } - - delete[] dbei.pBlob; - return 0; -} - -typedef BOOL (__stdcall *pfnAtlAxWinInit)( void ); - -static int systemModulesLoaded(WPARAM /*wParam*/, LPARAM /*lParam*/) -{ - HMODULE hAtl = LoadLibrary(_T("atl")); - pfnAtlAxWinInit init = (pfnAtlAxWinInit)GetProcAddress(hAtl, "AtlAxWinInit"); - if (init) - init(); - MyAtlAxAttachControl = (LPAtlAxAttachControl)GetProcAddress(hAtl, "AtlAxAttachControl"); - - CreateServiceFunction(MS_FAVATAR_DESTROY, destroyAvatar); - CreateServiceFunction(MS_FAVATAR_MAKE, makeAvatar); - CreateServiceFunction(MS_FAVATAR_RESIZE, resizeAvatar); - CreateServiceFunction(MS_FAVATAR_SETPOS, setPos); - CreateServiceFunction(MS_FAVATAR_GETINFO, getInfo); - CreateServiceFunction(MS_FAVATAR_SETEMOFACE, setEmoFace); - CreateServiceFunction(MS_FAVATAR_SETBKCOLOR, setBkColor); - - HookEvent(ME_DB_EVENT_ADDED, eventAdded); - HookEvent("Miranda/StatusChange/ContactStatusChanged", statusChanged); // NewStatusNotify - HookEvent(ME_CLIST_STATUSMODECHANGE, ownStatusChanged); - - NETLIBUSER nl_user = {0}; - nl_user.cbSize = sizeof(nl_user); - nl_user.szSettingsModule = "FlashAvatars"; - nl_user.flags = NUF_OUTGOING | NUF_HTTPCONNS; - nl_user.szDescriptiveName = Translate("Flash avatars"); - - hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nl_user); - - TCHAR path[MAX_PATH]; - mir_sntprintf(path, MAX_PATH, _T("%s\\%s\\"), VARST(_T("%miranda_avatarcache%")), _T("Flash")); - hAvatarsFolder = FoldersRegisterCustomPathT(LPGEN("Avatars"), LPGEN("Flash avatars"), path); - return 0; -} - - -extern "C" __declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" int __declspec(dllexport) Load(void) -{ - mir_getLP(&pluginInfo); - mir_getCLI(); - - HookEvent(ME_SYSTEM_MODULESLOADED, systemModulesLoaded); - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - // Shutdown cleanup - { - Lock l(cs); - for (int i = FlashList.getCount()-1; i >= 0; i--) - { - flash_avatar_item *item = FlashList[i]; - if (item->pFlash) - item->pFlash->Release(); - if (item->hFA.hWindow) - DestroyWindow(item->hFA.hWindow); - mir_free(item->hFA.cUrl); - delete item; - } - FlashList.destroy(); - } - - if (hNetlibUser) - CallService(MS_NETLIB_CLOSEHANDLE, (WPARAM)hNetlibUser, 0); - - return 0; -} - -extern "C" BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD /*dwReason*/, LPVOID /*reserved*/) -{ - g_hInst = hInstDLL; - return TRUE; -} diff --git a/plugins/!Deprecated/FlashAvatars/src/criticalsection.h b/plugins/!Deprecated/FlashAvatars/src/criticalsection.h deleted file mode 100644 index 7c9bcdaa9a..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/criticalsection.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2001-2006 Jacek Sieka, arnetheduck on gmail point com - * - * 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. - */ - -#if !defined(CRITICAL_SECTION_H) -#define CRITICAL_SECTION_H - -#pragma once - -class CriticalSection -{ -public: - void enter() throw() { - EnterCriticalSection(&cs); - } - void leave() throw() { - LeaveCriticalSection(&cs); - } - CriticalSection() throw() { - InitializeCriticalSection(&cs); - } - ~CriticalSection() throw() { - DeleteCriticalSection(&cs); - } -private: - CRITICAL_SECTION cs; - - CriticalSection(const CriticalSection&); - CriticalSection& operator=(const CriticalSection&); -}; - -template -class LockBase { -public: - LockBase(T& aCs) throw() : cs(aCs) { cs.enter(); } - ~LockBase() throw() { cs.leave(); } -private: - LockBase& operator=(const LockBase&); - T& cs; -}; -typedef LockBase Lock; - -/* -template -class RWLock -{ -public: - RWLock() throw() : cs(), readers(0) { } - ~RWLock() throw() { } - - void enterRead() throw() { - cs.enter(); - InterlockedIncrement(&readers); - cs.leave(); - } - void leaveRead() throw() { - InterlockedDecrement(&readers); - } - void enterWrite() throw() { - cs.enter(); - while(readers > 0) { - ::Sleep(1); - } - } - void leaveWrite() { - cs.leave(); - } -private: - T cs; - volatile long readers; -}; - -template -class RLock { -public: - RLock(RWLock& aRwl) throw() : rwl(aRwl) { rwl.enterRead(); } - ~RLock() throw() { rwl.leaveRead(); } -private: - RLock& operator=(const RLock&); - RWLock& rwl; -}; - -template -class WLock { -public: - WLock(RWLock& aRwl) throw() : rwl(aRwl) { rwl.enterWrite(); } - ~WLock() throw() { rwl.leaveWrite(); } -private: - WLock& operator=(const WLock&); - RWLock& rwl; -}; -*/ -#endif // !defined(CRITICAL_SECTION_H) - -/** - * @file - * $Id: CriticalSection.h,v 1.20 2006/03/05 10:17:03 bigmuscle Exp $ - */ diff --git a/plugins/!Deprecated/FlashAvatars/src/flash.tlb b/plugins/!Deprecated/FlashAvatars/src/flash.tlb deleted file mode 100644 index 489608c08b..0000000000 Binary files a/plugins/!Deprecated/FlashAvatars/src/flash.tlb and /dev/null differ diff --git a/plugins/!Deprecated/FlashAvatars/src/resource.h b/plugins/!Deprecated/FlashAvatars/src/resource.h deleted file mode 100644 index cbedd28229..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/resource.h +++ /dev/null @@ -1,15 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by FlashAvatars.rc -// - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/FlashAvatars/src/stdafx.cpp b/plugins/!Deprecated/FlashAvatars/src/stdafx.cpp deleted file mode 100644 index a70d8726c6..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/stdafx.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// cflash.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - - diff --git a/plugins/!Deprecated/FlashAvatars/src/stdafx.h b/plugins/!Deprecated/FlashAvatars/src/stdafx.h deleted file mode 100644 index f571759135..0000000000 --- a/plugins/!Deprecated/FlashAvatars/src/stdafx.h +++ /dev/null @@ -1,78 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently - -#define _CRT_SECURE_NO_WARNINGS - -#pragma once -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#define BZ_NO_STDIO - -#ifdef _WIN32 -# define _WIN32_WINNT 0x0500 -# define _WIN32_IE 0x0501 -#endif - -#ifdef _DEBUG -# define _STLP_DEBUG 1 -#endif - -#ifndef _WIN64 - #define _USE_32BIT_TIME_T -#endif - -#define _STLP_DONT_USE_SHORT_STRING_OPTIM 1 // Uses small string buffer, so it saves memory for a lot of strings -#define _STLP_USE_PTR_SPECIALIZATIONS 1 // Reduces some code bloat -#define _STLP_USE_TEMPLATE_EXPRESSION 1 // Speeds up string concatenation -#define _STLP_NO_ANACHRONISMS 1 - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "CriticalSection.h" -#include "TigerHash.h" -#include "Version.h" -#include "resource.h" - -#ifdef _DEBUG - -inline void _cdecl debugTrace(const char* format, ...) -{ - va_list args; - va_start(args, format); - - char buf[512]; - - mir_vsnprintf(buf, sizeof(buf), format, args); - OutputDebugStringA(buf); - va_end(args); -} - -# define debug debugTrace -#define assert(exp) \ -do { if (!(exp)) { \ - debug("Assertion hit in %s(%d): " #exp "\n", __FILE__, __LINE__); \ - if(1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #exp)) \ -_CrtDbgBreak(); } } while(false) - -#else -# define debug -# define assert -#endif - - diff --git a/plugins/!Deprecated/LangMan/docs/Info_Src.txt b/plugins/!Deprecated/LangMan/docs/Info_Src.txt deleted file mode 100644 index af92c5afb8..0000000000 --- a/plugins/!Deprecated/LangMan/docs/Info_Src.txt +++ /dev/null @@ -1,30 +0,0 @@ - -Language Pack Manager 1.0.2.2 for Miranda IM 0.6+ ------------------------------------------------------------------------- - Source Code - -Reminder: -'Language Pack Manager' is released under the terms of the -GNU General Public License. -See 'LangMan-License.txt' for more details. -'Language Pack Manager' is copyright 2005-2007 by H. Herkenrath. - -Please notify me of any changes that improve -'Language Pack Manager' or add new features. -If you have any questions on the code, feel free -to contact me at my email address. - - H. Herkenrath (hrathh at users.sourceforge.net) - - -Notes ------------------------------------------------------------------------- -The following files need to be changed to bump the version number: - -Info_Src.txt (1 place) -version.h (4 places) -m_langman.h (1 place) -m_langman.inc (1 place) -docs\LangMan-Readme.txt (3 places) -docs\LangMan-Translation.txt (2 places) -docs\LangMan-Developer.txt (1 place) diff --git a/plugins/!Deprecated/LangMan/docs/LangMan-Developer.txt b/plugins/!Deprecated/LangMan/docs/LangMan-Developer.txt deleted file mode 100644 index 6ce0c8dabb..0000000000 --- a/plugins/!Deprecated/LangMan/docs/LangMan-Developer.txt +++ /dev/null @@ -1,46 +0,0 @@ - -Language Pack Manager 1.0.2.2 for Miranda IM 0.6+ ------------------------------------------------------------------------- - Developer Information - - Contents: ------------------------------- - | Translation, Services (API), Debug Symbols, - | Coding Language, Rebase Info - -Translation ------------------ - Translation strings can be found in 'LangMan-Translation.txt'. - If you are a translator please refer to 'LangMan-Translation.txt' - for more information about how your langpack file info needs to be formated - to be viewable in a nice way. - -Services (API) ------------------ - For more information about which service functions are provided by - 'Language Pack Manager' and about how they can be used by your plugin please - refer to 'm_langman.h'. - If you would like to use Delphi/Pascal please refer to 'm_langman.inc'. - -Debug Symbols ------------------ - Debug symbols are also available for debugging purposes. - Copy the PDB-files in the SDK-zip into the same directory as the - corresponding DLL-files. - -Coding Language ------------------ - 'Language Pack Manager' was written using Microsoft Visual C++ 6.0 SP6 - and the Microsoft Platform SDK shipped along with it. - -Rebase Info ------------------ - 'Language Pack Manager' has set its base address to: - 0x24100000 - - Please avoid using this base address for your plugins because - it will slow down the startup of Miranda IM a little bit. - - Using Microsoft Visual C++, the base address can be configured at: - 'Project' -> 'Settings' -> 'Linker' -> 'Output' -> 'Base Address' - -H. Herkenrath (hrathh at users.sourceforge.net) diff --git a/plugins/!Deprecated/LangMan/docs/LangMan-License.txt b/plugins/!Deprecated/LangMan/docs/LangMan-License.txt deleted file mode 100644 index a726a52df1..0000000000 --- a/plugins/!Deprecated/LangMan/docs/LangMan-License.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/plugins/!Deprecated/LangMan/docs/LangMan-Readme.txt b/plugins/!Deprecated/LangMan/docs/LangMan-Readme.txt deleted file mode 100644 index 61bc8adc71..0000000000 --- a/plugins/!Deprecated/LangMan/docs/LangMan-Readme.txt +++ /dev/null @@ -1,146 +0,0 @@ - -Language Pack Manager 1.0.2.2 ------------------------------------------------------------------------- - Plugin for Miranda IM 0.6 and + - - Plugin Info: ---------------------------- - | Version: 1.0.2.2 - | Filename: langman.dll - | Author: H. Herkenrath (hrathh at users.sourceforge.net) - | Description: Helps you manage Language Packs of different languages. - - Contents: ------------------------------- - | Features, Requirements, Usage, Installation, - | Bugs and Wishes, Version History, - | Translation, License and Copyright - -Features ----------------------- - + Allows to switch installed Language Packs easily - + Displays all information about the Language Packs in one place - + Shows which Language Pack includes support for what plugins - + Right-click on a language pack entry to be able to uninstall it - + Auto-Updates for all installed Language Packs - + Wizard helping you to download and install your native language - + Unicode support - + Automatic installation of all files, just unzip into Plugins directory - + Supported plugins: Database Editor, Country Flags - -Requirements ----------------------- - -> Miranda IM 0.6+: - Miranda IM is needed in version 0.6 or greater. - -Usage ----------------------- - The Language Packs can be managed here: - 'Options' -> 'Customize' -> 'Language' - - When you do a right-click on a specific language pack, you are able to - uninstall that file if it is no longer needed. - -Installation ----------------------- - Find 'miranda32.exe' on your computer. - - Just copy all the contents of the zip-file as they are into the 'Plugins' - subdirectory in the Miranda IM folder. - 'Language Pack Manager' will detect the files and move them into the appropriate - directories on it's first run. - - You can also do all the installation by hand, if you want to: - - Main Plugin: Copy the file 'langman.dll' into the 'Plugins' subdirectory - in the Miranda IM folder. - - The Unicode version of the plugin will only work on Windows NT/2000/XP, - Windows Server 2000, Windows Vista or later with an installed - Unicode version of Miranda IM. - To use it on Windows 95/98/Me, please download the ANSI version of the plugin. - - Documentation: The txt-files should be moved along with the SDK-zip into the - 'Docs' directory in the Miranda IM folder. - - That's it! - -Bugs and Wishes ----------------------- - Feel free to mail me your wishes about 'Language Pack Manager' and tell - me all the bugs you may find. - My email address is: hrathh at users.sourceforge.net - -Version History ----------------------- - 1.0.2.2 - try to fix radio buttons on Win9x - - try to fix anything else - - fixed langpack download - - fixed selected flag icon - 1.0.2.1 - added flag icons using flags.dll - - only search for updates if a langpack is present - - better displays incompatible locales - - added v0.8 support - - minor improvements - 1.0.2.0 - fixed langpack removal in context menu - - fixed automatic installaton - - updated to use new miranda headers - - auto-cleanup of langpack info - - support for WinXP style radio buttons in list - - moved options to 'Customize' section - - shows langpack filenames in expert mode - - auto-updates for language packs - - download wizard to install your native language - - other improvements - 1.0.1.1 - minor fixes and adjustments - 1.0.1.0 - minor fixes - - right-click on a language pack entry to uninstall a file - - enlarged not-included list a bit - - del key is shortcut for context menu item 'remove' - 1.0.0.0 - Initial release - -Translation ----------------------- - Translation strings for language pack maintainers can be found - in 'LangMan-Translation.txt' of the SDK package. - -License and Copyright ----------------------- - 'Language Pack Manager' is released under the terms of the - GNU General Public License. - See 'LangMan-License.txt' for more details. - - Copyright (C) 2005-2007 by H. Herkenrath. All rights reserved. - - The included unzip code for ZIP-files is - Copyright (C) 1995-1998 Jean-Loup Gailly and Mark Adler. - It is based on a modification by - Copyright (C) 1998 Gilles Vollant, Lucian Wischik. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -H. Herkenrath (hrathh at users.sourceforge.net) diff --git a/plugins/!Deprecated/LangMan/docs/License_Appendix.txt b/plugins/!Deprecated/LangMan/docs/License_Appendix.txt deleted file mode 100644 index 9ad641dfa0..0000000000 --- a/plugins/!Deprecated/LangMan/docs/License_Appendix.txt +++ /dev/null @@ -1,64 +0,0 @@ - -Excecpt of GNU General Public License (Appendix): - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/plugins/!Deprecated/LangMan/langman_10.vcxproj b/plugins/!Deprecated/LangMan/langman_10.vcxproj deleted file mode 100644 index 74a6331daa..0000000000 --- a/plugins/!Deprecated/LangMan/langman_10.vcxproj +++ /dev/null @@ -1,218 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F2ABCBFB-FEB8-49DF-B166-C2FA5148ACE1} - LangMan - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - Use - common.h - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - Use - common.h - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - Level3 - Fast - false - false - Use - common.h - true - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - Level3 - Fast - false - false - Use - common.h - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/langman_10.vcxproj.filters b/plugins/!Deprecated/LangMan/langman_10.vcxproj.filters deleted file mode 100644 index 2355f86131..0000000000 --- a/plugins/!Deprecated/LangMan/langman_10.vcxproj.filters +++ /dev/null @@ -1,61 +0,0 @@ - - - - - {3713035e-f4de-4b1b-8c15-b86c77bd853c} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {a70dee03-4c9e-4cc9-ba2d-8bd243a18bf6} - h;hpp;hxx;hm;inl - - - {835877bf-050d-4034-b3fb-78e456d60765} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/langman_12.vcxproj b/plugins/!Deprecated/LangMan/langman_12.vcxproj deleted file mode 100644 index 3d8e903ae5..0000000000 --- a/plugins/!Deprecated/LangMan/langman_12.vcxproj +++ /dev/null @@ -1,221 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F2ABCBFB-FEB8-49DF-B166-C2FA5148ACE1} - LangMan - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - Use - common.h - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - false - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - Use - common.h - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - Level3 - Fast - false - false - Use - common.h - true - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin12\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - Level3 - Fast - false - false - Use - common.h - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;UxTheme.lib;%(AdditionalDependencies) - true - 0x24100000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin12\lib - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/langman_12.vcxproj.filters b/plugins/!Deprecated/LangMan/langman_12.vcxproj.filters deleted file mode 100644 index 2355f86131..0000000000 --- a/plugins/!Deprecated/LangMan/langman_12.vcxproj.filters +++ /dev/null @@ -1,61 +0,0 @@ - - - - - {3713035e-f4de-4b1b-8c15-b86c77bd853c} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {a70dee03-4c9e-4cc9-ba2d-8bd243a18bf6} - h;hpp;hxx;hm;inl - - - {835877bf-050d-4034-b3fb-78e456d60765} - ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/res/reload.ico b/plugins/!Deprecated/LangMan/res/reload.ico deleted file mode 100644 index 1a9ce67016..0000000000 Binary files a/plugins/!Deprecated/LangMan/res/reload.ico and /dev/null differ diff --git a/plugins/!Deprecated/LangMan/res/resource.rc b/plugins/!Deprecated/LangMan/res/resource.rc deleted file mode 100644 index 034f77e1d9..0000000000 --- a/plugins/!Deprecated/LangMan/res/resource.rc +++ /dev/null @@ -1,142 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_OPT_LANG DIALOGEX 0, 0, 301, 232 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "",IDC_LANGLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_GROUP | WS_TABSTOP,2,43,299,61 - GROUPBOX "",IDC_LANGINFOFRAME,2,108,298,95,WS_GROUP - RTEXT "Author(s):",IDC_LANGAUTHORSLABEL,5,118,76,9,SS_NOPREFIX - EDITTEXT IDC_LANGAUTHORS,86,118,208,18,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL - RTEXT "E-mail:",IDC_LANGEMAILLABEL,5,139,76,8,SS_NOPREFIX - CONTROL "",IDC_LANGEMAIL,"Hyperlink",WS_TABSTOP,86,139,208,10 - RTEXT "Last modified using:",IDC_LANGMODUSINGLABEL,9,152,72,9,SS_NOPREFIX - EDITTEXT IDC_LANGMODUSING,86,152,196,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - RTEXT "Date:",IDC_LANGDATELABEL,5,165,76,9,SS_NOPREFIX - EDITTEXT IDC_LANGDATE,86,165,66,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - RTEXT "Version:",IDC_LANGVERSIONLABEL,161,165,39,9,SS_NOPREFIX | NOT WS_VISIBLE - EDITTEXT IDC_LANGVERSION,205,165,77,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | NOT WS_BORDER - RTEXT "Locale:",IDC_LANGLOCALELABEL,5,177,76,9,SS_NOPREFIX - EDITTEXT IDC_LANGLOCALE,86,177,196,12,ES_READONLY | NOT WS_BORDER - CONTROL "Download more Language Packs",IDC_MORELANG,"Hyperlink",WS_GROUP | WS_TABSTOP | 0x1,2,207,299,10 - CTEXT "Please restart Miranda NG for your changes to take full effect.",IDC_RESTART,5,218,296,9,SS_NOPREFIX | NOT WS_VISIBLE - LTEXT "Static",IDC_LANGROOTFOLDER,7,10,277,25 - GROUPBOX "Langpack root folder",IDC_STATIC,2,0,299,39 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_OPT_LANG, DIALOG - BEGIN - VERTGUIDE, 2 - VERTGUIDE, 81 - VERTGUIDE, 86 - VERTGUIDE, 282 - VERTGUIDE, 294 - BOTTOMMARGIN, 227 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Russian (Russia) 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_RELOAD ICON "reload.ico" -#endif // Russian (Russia) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (United Kingdom) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include \r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (United Kingdom) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/LangMan/res/version.rc b/plugins/!Deprecated/LangMan/res/version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/LangMan/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/!Deprecated/LangMan/src/common.h b/plugins/!Deprecated/LangMan/src/common.h deleted file mode 100644 index 2afafaff9d..0000000000 --- a/plugins/!Deprecated/LangMan/src/common.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#define _CRT_SECURE_NO_WARNINGS - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "langpack.h" -#include "options.h" -#include "resource.h" -#include "version.h" - diff --git a/plugins/!Deprecated/LangMan/src/langpack.cpp b/plugins/!Deprecated/LangMan/src/langpack.cpp deleted file mode 100644 index e292c16c74..0000000000 --- a/plugins/!Deprecated/LangMan/src/langpack.cpp +++ /dev/null @@ -1,393 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -/************************* Load ***************************************/ - -static void TrimString(char *str) -{ - int len, start; - len = lstrlenA(str); - while (str[0]!='\0' && (unsigned char)str[len-1] <= ' ') str[--len] = 0; - for (start = 0; str[start] && (unsigned char)str[start] <= ' '; ++start); - MoveMemory(str, str+start, len-start+1); -} - -static BOOL IsEmpty(const char *str) -{ - int i; - for(i = 0;str[i]!='\0';i++) - if (str[i]!=' ' && str[i]!='\r' && str[i]!='\n') - return FALSE; - return TRUE; -} - -static void CleanupLanguage(char *szLanguage) -{ - char *p; - /* remove any appended ' (default)' */ - p = strstr(szLanguage, " (default)"); - if (p!=NULL) *p = '\0'; -} - -static void CleanupAuthors(char *szAuthors) -{ - char *p, *p2; - /* remove trailing dot (if any) */ - p = &szAuthors[lstrlenA(szAuthors)-1]; - if (*p == '.') *p = '\0'; - /* remove any extra info in parentheses, which is ok - * but makes the list very long for some packs */ - for (;;) { - p = strchr(szAuthors, '('); - p2 = strchr(szAuthors, ')'); - if (p == NULL || p2 == NULL) { - p = strchr(szAuthors, '['); - p2 = strchr(szAuthors, ']'); - if (p == NULL || p2 == NULL) break; - } - if (*(p-1) == ' ') --p; - MoveMemory(p, p2+1, lstrlenA(p2+1)+1); - } -} - -static void CleanupEmail(char *szAuthorEmail) -{ - char c, *p, *pAt; - /* replace ' dot ' with '.' (may be removed) */ - p = strstr(szAuthorEmail, " dot "); - if (p!=NULL) { - *p = '.'; - MoveMemory(p+1, p+5, lstrlenA(p+5)+1); - } - /* also allow ' at ' instead of '@' for obfuscation */ - p = strstr(szAuthorEmail, " at "); - if (p!=NULL) { - *p = '@'; - MoveMemory(p+1, p+4, lstrlenA(p+4)+1); - } - /* is valid? */ - pAt = strchr(szAuthorEmail, '@'); - if (pAt == NULL) { - szAuthorEmail[0] = '\0'; - return; - } - /* strip-off extra text except exactly one email address - * this is needed as a click on the email addres brings up the mail client */ - for(c = ' ';;c = ',') { - p = strchr(pAt, c); - if (p!=NULL) *p = '\0'; - p = strrchr(szAuthorEmail, c); - if (p!=NULL) MoveMemory(szAuthorEmail, p+1, lstrlenA(p+1)+1); - if (c == ',') break; - } - p = strstr(szAuthorEmail, "__"); - if (p!=NULL) MoveMemory(szAuthorEmail, p+2, lstrlenA(p+2)+1); - /* lower case */ - CharLowerA(szAuthorEmail); - /* 'none' specified */ - if (!lstrcmpiA(szAuthorEmail, "none")) szAuthorEmail[0] = '\0'; -} - -static void CleanupLastModifiedUsing(char *szLastModifiedUsing, int nSize) -{ - char *p; - /* remove 'Unicode', as it doesn't matter */ - p = strstr(szLastModifiedUsing, " Unicode"); - if (p!=NULL) MoveMemory(p, p+8, lstrlenA(p+8)+1); - /* use 'Miranda IM' instead of 'Miranda' */ - p = strstr(szLastModifiedUsing, "Miranda"); - if (p!=NULL && strncmp(p+7, " IM", 3)) { - MoveMemory(p+10, p+7, lstrlenA(p+7)+1); - CopyMemory(p+7, " IM", 3); - } - /* use 'Plugin' instead of 'plugin' */ - p = strstr(szLastModifiedUsing, " plugin"); - if (p!=NULL) CopyMemory(p, " Plugin", 7); - /* remove 'v' prefix */ - p = strstr(szLastModifiedUsing, " v0."); - if (p!=NULL) MoveMemory(p+1, p+2, lstrlenA(p+2)+1); - /* default if empty */ - if (!szLastModifiedUsing[0]) { - DWORD v = CallService(MS_SYSTEM_GETVERSION, 0, 0); - mir_snprintf(szLastModifiedUsing, nSize, "%d.%d.%d.%d", ((v >> 24) & 0xFF), ((v >> 16) & 0xFF), ((v >> 8) & 0xFF), (v & 0xFF)); - } -} - -// pack struct should be initialized to zero before call -// pack->szFileName needs to be filled in before call -static BOOL LoadPackData(LANGPACK_INFO *pack, BOOL useRootFolder, const char *pszFileVersionHeader) -{ - FILE *fp; - TCHAR szFileName[MAX_PATH]; - char line[4096], *pszColon, *buf; - char szLanguageA[64]; /* same size as pack->szLanguage */ - /* - Miranda Language Pack Version 1 - Language: (optional) - Locale: 0809 - Authors: Miranda NG Development Team (multiple tags allowed) - Author-email: project-info at miranda-ng.org (" at " instead of "@" allowed) - Last-Modified-Using: Miranda IM 0.7 - Plugins-included: (multiple tags allowed) - X-FLName: name as used on the file listing (non-standard extension) - X-Version: 1.2.3.4 (non-standard extension) - see 'LangMan-Translation.txt' for some header quidelines - */ - if ( !GetPackPath( szFileName, SIZEOF(szFileName), useRootFolder, pack->szFileName)) - return FALSE; - - fp = _tfopen(szFileName, _T("rt")); - if (fp == NULL) - return FALSE; - - fgets(line, sizeof(line), fp); - TrimString(line); - buf = line; - - if (strlen(line) >= 3 && line[0] == '\xef' && line[1] == '\xbb' && line[2] == '\xbf') { - pack->codepage = CP_UTF8; - buf += 3; - } - - if ( lstrcmpA(buf, pszFileVersionHeader )) { - fclose(fp); - return FALSE; - } - pack->flags = LPF_NOLOCALE; - szLanguageA[0] = '\0'; - while( !feof( fp )) { - if ( fgets(line, sizeof(line), fp) == NULL) break; - TrimString(line); - if ( IsEmpty(line) || line[0] == ';' || line[0] == '\0') continue; - if ( line[0] == '[' ) break; - pszColon = strchr(line, ':'); - if ( pszColon == NULL ) continue; - *pszColon = '\0'; - TrimString(pszColon+1); - if ( !lstrcmpA(line, "Language") && !pack->szLanguage[0] ) - lstrcpynA(szLanguageA, pszColon+1, sizeof(szLanguageA)); /* buffer safe */ - else if ( !lstrcmpA(line, "Last-Modified-Using") && !pack->szLastModifiedUsing[0] ) - lstrcpynA(pack->szLastModifiedUsing, pszColon+1, sizeof(pack->szLastModifiedUsing)); /* buffer safe */ - else if ( !lstrcmpA(line, "Authors")) { - buf = pack->szAuthors+lstrlenA(pack->szAuthors); /* allow multiple tags */ - if ((sizeof(pack->szAuthors)-lstrlenA(pack->szAuthors))>0) /* buffer safe */ - mir_snprintf(buf, sizeof(pack->szAuthors)-lstrlenA(pack->szAuthors), (pack->szAuthors[0] == '\0')?"%s":" %s", pszColon+1); - } else if ( !lstrcmpA(line, "Author-email") && !pack->szAuthorEmail[0]) - lstrcpynA(pack->szAuthorEmail, pszColon+1, sizeof(pack->szAuthorEmail)); /* buffer safe */ - else if ( !lstrcmpA(line, "Locale") && (pack->flags & LPF_NOLOCALE)) { - pack->Locale = MAKELCID((USHORT)strtol(pszColon+1, NULL, 16), SORT_DEFAULT); - if (pack->Locale) pack->flags &= ~LPF_NOLOCALE; - } - else if ( !lstrcmpA(line, "Plugins-included")) { - buf = pack->szPluginsIncluded + lstrlenA(pack->szPluginsIncluded); /* allow multiple tags */ - if (( sizeof(pack->szPluginsIncluded)-lstrlenA(pack->szPluginsIncluded)) > 0 ) /* buffer safe */ - mir_snprintf(buf, sizeof(pack->szPluginsIncluded)-lstrlenA(pack->szPluginsIncluded), (pack->szPluginsIncluded[0] == '\0')?"%s":", %s", CharLowerA(pszColon+1)); - } - else if ( !lstrcmpA(line, "X-Version") && !pack->szVersion[0] ) - lstrcpynA(pack->szVersion, pszColon+1, sizeof(pack->szVersion)); /* buffer safe */ - else if ( !lstrcmpA(line, "X-FLName") && !pack->szFLName[0] ) - lstrcpynA(pack->szFLName, pszColon+1, sizeof(pack->szFLName)); /* buffer safe */ - } - CleanupLanguage(szLanguageA); - CleanupAuthors(pack->szAuthors); - CleanupEmail(pack->szAuthorEmail); - CleanupLastModifiedUsing(pack->szLastModifiedUsing, sizeof(pack->szLastModifiedUsing)); - /* codepage */ - if (!(pack->flags&LPF_NOLOCALE)) - if (GetLocaleInfoA(pack->Locale, LOCALE_IDEFAULTANSICODEPAGE, line, 6)) - pack->codepage = (WORD)atoi(line); /* CP_ACP on error */ - /* language */ - - MultiByteToWideChar(pack->codepage, 0, szLanguageA, -1, pack->szLanguage, SIZEOF(pack->szLanguage)); - - /* ensure the pack always has a language name */ - if (!pack->szLanguage[0] && !GetLocaleInfo(pack->Locale, LOCALE_SENGLANGUAGE, pack->szLanguage, SIZEOF(pack->szLanguage))) { - TCHAR *p; - lstrcpyn(pack->szLanguage, pack->szFileName, SIZEOF(pack->szLanguage)); /* buffer safe */ - p = _tcsrchr(pack->szLanguage, _T('.')); - if (p!=NULL) *p = '\0'; - } - /* ensure the pack always has a filelisting name */ - if (!pack->szFLName[0]) - lstrcatA(lstrcpyA(pack->szFLName, szLanguageA), " Language Pack"); /* buffer safe */ - fclose(fp); - return TRUE; -} - -/************************* Enum ***************************************/ - -BOOL GetPackPath(TCHAR *pszPath, int nSize, BOOL useRootFolder, const TCHAR *pszFile) -{ - TCHAR *p; - /* main path */ - if (!GetModuleFileName(NULL, pszPath, nSize)) return FALSE; - p = _tcsrchr(pszPath, _T('\\')); - if (p!=NULL) *(p+1) = _T('\0'); - /* subdirectory */ - if (!useRootFolder) { - if (nSize<(lstrlen(pszPath)+10)) return FALSE; - lstrcat(pszPath, _T("Languages\\")); - } - /* file name */ - if (pszFile!=NULL) { - if (nSize<(lstrlen(pszFile)+11)) return FALSE; - lstrcat(pszPath, pszFile); - } - return TRUE; -} - -// callback is allowed to be NULL -// returns TRUE if any pack exists except default -BOOL EnumPacks(ENUM_PACKS_CALLBACK callback, const TCHAR *pszFilePattern, const char *pszFileVersionHeader, WPARAM wParam, LPARAM lParam) -{ - BOOL fPackFound = FALSE; - BOOL res = FALSE; - LANGPACK_INFO pack; - WIN32_FIND_DATA wfd; - HANDLE hFind; - - mir_ptr langpack(db_get_tsa(NULL, "LangMan", "Langpack")); - - /* langpacks in root folder */ - if (GetPackPath(pack.szFileName, SIZEOF(pack.szFileName), TRUE, pszFilePattern)) { - hFind = FindFirstFile(pack.szFileName, &wfd); - if (hFind!=INVALID_HANDLE_VALUE) { - do { - if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue; - if ((lstrlen(wfd.cFileName)<4) || wfd.cFileName[lstrlen(wfd.cFileName)-4]!=_T('.')) continue; - /* get data */ - ZeroMemory(&pack, sizeof(pack)); - lstrcpy(pack.szFileName, CharLower(wfd.cFileName)); /* buffer safe */ - if (LoadPackData(&pack, TRUE, pszFileVersionHeader)) { - pack.ftFileDate = wfd.ftLastWriteTime; - /* enabled? */ - if (!langpack) { - if (!fPackFound) pack.flags |= LPF_ENABLED; - fPackFound = TRUE; - } - /* callback */ - if (callback!=NULL) res = callback(&pack, wParam, lParam); - if (!res) { FindClose(hFind); return FALSE; } - } - } while(FindNextFile(hFind, &wfd)); - FindClose(hFind); - } - } - - /* langpacks in languages folder */ - if (GetPackPath(pack.szFileName, SIZEOF(pack.szFileName), FALSE, pszFilePattern)) { - hFind = FindFirstFile(pack.szFileName, &wfd); - if (hFind!=INVALID_HANDLE_VALUE) { - do { - if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue; - if (lstrlen(wfd.cFileName)<4 || wfd.cFileName[lstrlen(wfd.cFileName)-4]!=_T('.')) continue; - /* get data */ - ZeroMemory(&pack, sizeof(pack)); - lstrcpy(pack.szFileName, CharLower(wfd.cFileName)); /* buffer safe */ - if (LoadPackData(&pack, FALSE, pszFileVersionHeader)) { - pack.ftFileDate = wfd.ftLastWriteTime; - /* enabled? */ - if (langpack) { - if (!_tcscmp(pack.szFileName, langpack)) { - if (!fPackFound) pack.flags |= LPF_ENABLED; - fPackFound = TRUE; - } - } - /* callback */ - if (callback!=NULL) res = callback(&pack, wParam, lParam); - if (!res) { FindClose(hFind); return FALSE; } - } - } while(FindNextFile(hFind, &wfd)); - FindClose(hFind); - } - } - - /* default: English (GB) */ - if (callback!=NULL) { - ZeroMemory(&pack, sizeof(pack)); - pack.Locale = LOCALE_USER_DEFAULT; /* miranda uses default locale in this case */ - lstrcpy(pack.szLanguage, _T("English (default)")); /* buffer safe */ - lstrcpyA(pack.szAuthors, "Miranda NG Development Team"); /* buffer safe */ - lstrcpyA(pack.szAuthorEmail, "project-info at miranda-ng.org"); /* buffer safe */ - CleanupEmail(pack.szAuthorEmail); /* correct " at " */ - CleanupLastModifiedUsing(pack.szLastModifiedUsing, sizeof(pack.szLastModifiedUsing)); - /* file date */ - if (GetModuleFileName(NULL, pack.szFileName, SIZEOF(pack.szFileName))) { - HANDLE hFile; - hFile = CreateFile(pack.szFileName, 0, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); - if (hFile!=INVALID_HANDLE_VALUE) { - GetFileTime(hFile, NULL, NULL, &pack.ftFileDate); - CloseHandle(hFile); - } - } - pack.flags = LPF_NOLOCALE|LPF_DEFAULT; - pack.Locale = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT); - if (!fPackFound) pack.flags |= LPF_ENABLED; - /* callback */ - if (!callback(&pack, wParam, lParam)) return FALSE; - } - - return fPackFound; -} - -void MovePacks(const TCHAR *pszFilePattern) -{ - TCHAR szFrom[MAX_PATH], szDest[MAX_PATH], szDir[MAX_PATH], *pszFile; - BOOL fDirCreated = FALSE; - HANDLE hFind; - WIN32_FIND_DATA wfd; - - /* main path */ - if (!GetModuleFileName(NULL, szDir, SIZEOF(szDir))) return; - pszFile = _tcsrchr(szDir, _T('\\')); - if (pszFile != NULL) *pszFile = _T('\0'); - - if (!GetPackPath(szDest, SIZEOF(szDest), FALSE, _T(""))) return; - - /* move wrongly placed packs from 'root' to 'Language' */ - mir_sntprintf(szFrom, SIZEOF(szFrom), _T("%s\\%s"), szDir, pszFilePattern); - hFind = FindFirstFile(szFrom, &wfd); - if (hFind != INVALID_HANDLE_VALUE) { - do { - if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue; - if (lstrlen(wfd.cFileName)<4 || wfd.cFileName[lstrlen(wfd.cFileName) - 4] != _T('.')) continue; - /* set first lp ad default */ - mir_ptr langpack(db_get_tsa(NULL, "LangMan", "Langpack")); - if (!langpack) - db_set_ws(NULL, "LangMan", "Langpack", wfd.cFileName); - /* ensure dir exists */ - if (!fDirCreated) - fDirCreated = CreateDirectory(szDest, NULL); - /* move file */ - if (GetPackPath(szDest, SIZEOF(szDest), FALSE, wfd.cFileName)) - { - mir_sntprintf(szFrom, SIZEOF(szFrom), _T("%s\\%s"), szDir, wfd.cFileName); - if (!MoveFile(szFrom, szDest) && GetLastError() == ERROR_ALREADY_EXISTS) { - DeleteFile(szDest); - MoveFile(szFrom, szDest); - } - } - } while (FindNextFile(hFind, &wfd)); - FindClose(hFind); - } -} \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/src/langpack.h b/plugins/!Deprecated/LangMan/src/langpack.h deleted file mode 100644 index 01280c757e..0000000000 --- a/plugins/!Deprecated/LangMan/src/langpack.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#define LPF_ENABLED 0x01 // pack is enabled -#define LPF_NOLOCALE 0x02 // pack has no valid locale -#define LPF_DEFAULT 0x04 // pack is the english default (no langpack) - -/* Langpack Info */ -typedef struct { - TCHAR szLanguage[64]; - LCID Locale; - WORD codepage; - char szAuthors[1024]; - char szAuthorEmail[128]; - char szLastModifiedUsing[64]; - char szPluginsIncluded[4080]; - char szVersion[21]; - char szFLName[128]; - FILETIME ftFileDate; - TCHAR szFileName[MAX_PATH]; /* just the file name itself */ - BYTE flags; /* see LPIF_* flags */ -} LANGPACK_INFO; - -BOOL GetPackPath(TCHAR *pszPath, int nSize, BOOL useRootFolder, const TCHAR *pszFile); - -void MovePacks(const TCHAR *pszFilePattern); - -/* Enum */ -typedef BOOL (*ENUM_PACKS_CALLBACK)(LANGPACK_INFO *pack, WPARAM wParam, LPARAM lParam); -BOOL EnumPacks(ENUM_PACKS_CALLBACK callback, const TCHAR *pszFilePattern, const char *pszFileVersionHeader, WPARAM wParam, LPARAM lParam); diff --git a/plugins/!Deprecated/LangMan/src/main.cpp b/plugins/!Deprecated/LangMan/src/main.cpp deleted file mode 100644 index 7e471e4849..0000000000 --- a/plugins/!Deprecated/LangMan/src/main.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -int hLangpack; -HINSTANCE hInst; - -static PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {D4BDD1EB-56F1-4A87-A187-67246EE919A2} - {0xd4bdd1eb, 0x56f1, 0x4a87, {0xa1, 0x87, 0x67, 0x24, 0x6e, 0xe9, 0x19, 0xa2}}, -}; - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, void*) -{ - hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD) -{ - return &pluginInfo; -} - -BOOL IsRunAsAdmin() -{ - BOOL fIsRunAsAdmin = FALSE; - DWORD dwError = ERROR_SUCCESS; - PSID pAdministratorsGroup = NULL; - - // Allocate and initialize a SID of the administrators group. - SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; - if (!AllocateAndInitializeSid( - &NtAuthority, - 2, - SECURITY_BUILTIN_DOMAIN_RID, - DOMAIN_ALIAS_RID_ADMINS, - 0, 0, 0, 0, 0, 0, - &pAdministratorsGroup)) - { - dwError = GetLastError(); - goto Cleanup; - } - - // Determine whether the SID of administrators group is enabled in - // the primary access token of the process. - if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin)) - { - dwError = GetLastError(); - goto Cleanup; - } - -Cleanup: - // Centralized cleanup for all allocated resources. - if (pAdministratorsGroup) - { - FreeSid(pAdministratorsGroup); - pAdministratorsGroup = NULL; - } - - // Throw the error if something failed in the function. - if (ERROR_SUCCESS != dwError) - { - throw dwError; - } - - return fIsRunAsAdmin; -} - -extern "C" __declspec(dllexport) int Load(void) -{ - mir_getLP( &pluginInfo ); - - //if (!IsRunAsAdmin()) - MovePacks(_T("langpack_*.txt")); - - /*INITCOMMONCONTROLSEX icc; - icc.dwSize = sizeof(icc); - icc.dwICC = ICC_TREEVIEW_CLASSES|ICC_USEREX_CLASSES; - InitCommonControlsEx(&icc);*/ - - /* menu item */ - CLISTMENUITEM mi = { sizeof(mi) }; - mi.position = 2000089999; - mi.icolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_RELOAD)); - mi.pszName = LPGEN("Reload langpack"); - mi.pszService = MS_LANGPACK_RELOAD; - Menu_AddMainMenuItem(&mi); - - /* reset langpack */ - mir_ptr langpack(db_get_tsa(NULL, "LangMan", "Langpack")); - if (langpack) - { - TCHAR szPath[MAX_PATH]; - GetPackPath(szPath, SIZEOF(szPath), FALSE, langpack); - - DWORD dwAttrib = GetFileAttributes(szPath); - if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) - CallService(MS_LANGPACK_RELOAD, 0, (LPARAM)szPath); - } - - InitOptions(); - - return 0; -} - -extern "C" __declspec(dllexport) int Unload(void) -{ - UninitOptions(); - - /* move default langpack to root */ - mir_ptr langpack(db_get_tsa(NULL, "LangMan", "Langpack")); - if (langpack) - { - TCHAR szFrom[MAX_PATH], szDest[MAX_PATH]; - GetPackPath(szFrom, SIZEOF(szFrom), FALSE, langpack); - - DWORD dwAttrib = GetFileAttributes(szFrom); - if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) - { - GetPackPath(szDest, SIZEOF(szDest), TRUE, langpack); - if (!MoveFile(szFrom, szDest) && GetLastError() == ERROR_ALREADY_EXISTS) { - DeleteFile(szDest); - MoveFile(szFrom, szDest); - } - } - } - - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/src/options.cpp b/plugins/!Deprecated/LangMan/src/options.cpp deleted file mode 100644 index 6abdf153c5..0000000000 --- a/plugins/!Deprecated/LangMan/src/options.cpp +++ /dev/null @@ -1,588 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -typedef PLUGININFOEX* (__cdecl *pfnMirandaPluginInfo)(DWORD); - -extern HINSTANCE hInst; -static HANDLE hHookOptInit; - -/************************* Utils **************************************/ - -#define BOX(str) BOX2("%s (err:%i)", str, GetLastError()) -#define BOX2(fmt, p1, p2) { char str[256]; mir_snprintf(str, SIZEOF(str), fmt, p1, p2); MessageBoxA(NULL, str, "dbg", 0); } - -// ImageList_Destroy() the return value -// refresh on WM_THEMECHANGED -static HIMAGELIST CreateRadioImages(COLORREF clrBk, COLORREF clrText) -{ - /* draw bitmap */ - HDC hdcScreen = GetDC(NULL); - if (hdcScreen == NULL) - return NULL; - - HIMAGELIST himl = NULL; - HDC hdc = CreateCompatibleDC(NULL); /* compatible to screen */ - if (hdc != NULL) { - SIZE size = { GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON) }; - RECT rc; - SetRect(&rc, 0, 0, 2 * size.cx, size.cy); - HBITMAP hbm = CreateCompatibleBitmap(hdcScreen, rc.right, rc.bottom); - if (hbm != NULL) { - HBITMAP hbmPrev = (HBITMAP)SelectObject(hdc, hbm); - if (hbmPrev != NULL) { /* error on select? */ - HTHEME hTheme = OpenThemeData(NULL, L"Button"); - SetRect(&rc, 0, 0, size.cx, size.cy); - /* unchecked */ - if (!DrawThemeBackground(hTheme, hdc, BP_RADIOBUTTON, RBS_UNCHECKEDNORMAL, &rc, NULL)) { - /* checked */ - OffsetRect(&rc, size.cx, 0); - if (!DrawThemeBackground(hTheme, hdc, BP_RADIOBUTTON, RBS_CHECKEDNORMAL, &rc, NULL)) - himl = ImageList_Create(size.cx, size.cy, ILC_COLOR32 | ILC_MASK, 3, 0); - } - CloseThemeData(hTheme); - - /* the classic way */ - if (himl == NULL) { - RECT rcRadio; - HBRUSH hbrBk = CreateSolidBrush(clrBk); - if (hbrBk != NULL) { - FillRect(hdc, &rc, hbrBk); - DeleteObject(hbrBk); - HDC hdcMono = CreateCompatibleDC(hdc); - if (hdcMono != NULL) { - HBITMAP hbmMono = CreateBitmap(rc.right, rc.bottom, 1, 1, NULL); - if (hbmMono != NULL) { - HBITMAP hbmPrevMono = (HBITMAP)SelectObject(hdcMono, hbmMono); - if (hbmPrevMono != NULL) { /* error on select? */ - /* draws a black-and-white mask (see docs) - * we need to colorize it using BitBlt with text and background color */ - COLORREF clrPrevText = SetTextColor(hdc, clrText); - COLORREF clrPrevBk = SetBkColor(hdc, clrBk); - /* check mark is slightly smaller than icon size */ - SetRect(&rcRadio, 0, 0, GetSystemMetrics(SM_CXMENUCHECK), GetSystemMetrics(SM_CYMENUCHECK)); - if (rcRadio.right > size.cx) rcRadio.right = size.cx; - if (rcRadio.bottom > size.cy) rcRadio.bottom = size.cy; - SetRect(&rc, ((size.cx - rcRadio.right) / 2) + 1, ((size.cy - rcRadio.bottom) / 2) + 1, rcRadio.right + 1, rcRadio.bottom + 1); - /* unchecked */ - if (BitBlt(hdcMono, 0, 0, rcRadio.right, rcRadio.bottom, NULL, 0, 0, WHITENESS)) { /* white back */ - if (DrawFrameControl(hdcMono, &rcRadio, DFC_BUTTON, DFCS_BUTTONRADIO | DFCS_FLAT)) { - if (BitBlt(hdc, rc.left, rc.top, rcRadio.right, rcRadio.bottom, hdcMono, 0, 0, SRCCOPY | NOMIRRORBITMAP)) { - /* checked */ - OffsetRect(&rc, size.cx, 0); - if (BitBlt(hdcMono, 0, 0, rcRadio.right, rcRadio.bottom, NULL, 0, 0, WHITENESS)) {/* white back */ - if (DrawFrameControl(hdcMono, &rcRadio, DFC_BUTTON, DFCS_BUTTONRADIO | DFCS_FLAT | DFCS_CHECKED)) { - if (BitBlt(hdc, rc.left, rc.top, rcRadio.right, rcRadio.bottom, hdcMono, 0, 0, SRCCOPY | NOMIRRORBITMAP)) - himl = ImageList_Create(size.cx, size.cy, ILC_COLOR | ILC_MASK, 3, 0); - } - else BOX("second DrawFrameControl() failed"); - } - else BOX("second BitBlt() failed"); - } - else BOX("intermediate BitBlt() failed"); - } - else BOX("DrawFrameControl() failed"); - } - else BOX("first BitBlt() failed"); - /* restore */ - SetBkColor(hdc, clrPrevBk); - SetTextColor(hdc, clrPrevText); - SelectObject(hdcMono, hbmPrevMono); - } - else BOX("hbmPrevMono == NULL"); - DeleteObject(hbmMono); - } - else BOX("hbmMono == NULL"); - DeleteDC(hdcMono); - } - else BOX("hdcMono == NULL"); - } - } - SelectObject(hdc, hbmPrev); - /* create imagelist */ - if (himl != NULL) { - if (himl == NULL) BOX("img list create failed"); - if (himl != NULL) if (ImageList_AddMasked(himl, hbm, clrBk) == -1) BOX("add failed"); - } - else BOX("Win9x: drawing code not reached"); - } - DeleteObject(hbm); - } - DeleteDC(hdc); - } - ReleaseDC(NULL, hdcScreen); - return himl; -} - -static void CleanupPluginName(char *szShortName) -{ - char *p; - /* strip-off anything in brackets */ - for(p = szShortName;*p!='\0';++p) - if (*p == '(' || *p == '[') { - *p = '\0'; - break; - } - /* remove trailing space */ - int len = lstrlenA(szShortName); - while(szShortName[0]!='\0' && szShortName[len-1] == ' ') - szShortName[--len] = 0; -} - -static void DisplayPackInfo(HWND hwndDlg, const LANGPACK_INFO *pack) -{ - /* locale string */ - if (!(pack->flags & LPF_NOLOCALE)) { - TCHAR szLocaleName[128]; - szLocaleName[0] = _T('\0'); - /* can't use LOCALE_SNAME as it is not present on pre WinVista */ - if (!GetLocaleInfo(pack->Locale, LOCALE_SISO639LANGNAME, szLocaleName, SIZEOF(szLocaleName))) { /* Win98/NT4+ */ - if (!GetLocaleInfo(pack->Locale, LOCALE_SLANGUAGE, szLocaleName, SIZEOF(szLocaleName))) /* not unique! */ - szLocaleName[0] = _T('\0'); - } - else { - if (GetLocaleInfo(pack->Locale, LOCALE_SISO3166CTRYNAME, &szLocaleName[3], SIZEOF(szLocaleName) - 3)) /* Win98/NT4+ */ - szLocaleName[2] = _T('-'); - } - /* add some note if its incompatible */ - if (szLocaleName[0]) { - if (!IsValidLocale(pack->Locale, LCID_INSTALLED)) { - TCHAR *pszIncompat; - pszIncompat = TranslateT("(incompatible)"); - szLocaleName[SIZEOF(szLocaleName) - lstrlen(pszIncompat) - 1] = 0; - lstrcat(lstrcat(szLocaleName, _T(" ")), pszIncompat); /* buffer safe */ - } - SetDlgItemText(hwndDlg, IDC_LANGLOCALE, szLocaleName); - } - else SetDlgItemText(hwndDlg, IDC_LANGLOCALE, TranslateT("Unknown")); - } - else SetDlgItemText(hwndDlg, IDC_LANGLOCALE, TranslateT("Current")); - - /* file date */ - SYSTEMTIME stFileDate; - TCHAR szDate[128]; - szDate[0] = _T('\0'); - if (FileTimeToSystemTime(&pack->ftFileDate, &stFileDate)) - GetDateFormat((LCID)CallService(MS_LANGPACK_GETLOCALE, 0, 0), DATE_SHORTDATE, &stFileDate, NULL, szDate, SIZEOF(szDate)); - SetDlgItemText(hwndDlg, IDC_LANGDATE, szDate); - - /* version */ - SetDlgItemTextA(hwndDlg, IDC_LANGVERSION, pack->szVersion); - if (pack->szVersion[0] && pack->szFLName[0]) { - if (!IsWindowVisible(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL))) { - ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL), SW_SHOW); - ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSION), SW_SHOW); - } - } - else { - ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSION), SW_HIDE); - } - - /* general */ - SetDlgItemTextA(hwndDlg, IDC_LANGMODUSING, pack->szLastModifiedUsing); - SetDlgItemTextA(hwndDlg, IDC_LANGAUTHORS, pack->szAuthors); - SetDlgItemTextA(hwndDlg, IDC_LANGEMAIL, pack->szAuthorEmail); - SetDlgItemText(hwndDlg, IDC_LANGINFOFRAME, TranslateTS(pack->szLanguage)); -} - -/************************* Insert/Delete ******************************/ - -#define M_RELOADLIST (WM_APP+1) -#define M_SHOWFILECOL (WM_APP+2) - -static void DeletePackFile(HWND hwndDlg, HWND hwndList, int iItem, LANGPACK_INFO *pack) -{ - SHFILEOPSTRUCT sfo = { 0 }; - sfo.hwnd = hwndDlg; - sfo.wFunc = FO_DELETE; - sfo.fFlags = FOF_SIMPLEPROGRESS|FOF_SILENT; /* silent = no progress */ - - /* double zero terminated */ - TCHAR szFileName[MAX_PATH]; - if (GetPackPath(szFileName, SIZEOF(szFileName) - 1, pack->flags & LPF_ENABLED, pack->szFileName)) { - szFileName[lstrlen(szFileName)+1] = _T('\0'); - sfo.pFrom = szFileName; - /* ask to delete file */ - if (!SHFileOperation(&sfo) && !sfo.fAnyOperationsAborted) { - LVITEM lvi; - lvi.iItem = iItem; - lvi.iSubItem = 0; - lvi.mask = LVIF_STATE; - lvi.stateMask = LVIS_STATEIMAGEMASK|LVIS_SELECTED|LVIS_FOCUSED; - if (ListView_GetItem(hwndList, &lvi)) { - ListView_DeleteItem(hwndList, iItem); - /* enable/select next item at same position */ - int nCount = ListView_GetItemCount(hwndList); - lvi.iItem = (iItem < nCount) ? iItem : iItem - 1; - ListView_SetItemState(hwndList, lvi.iItem, lvi.state, lvi.stateMask); - if (nCount == 1) - SendMessage(hwndDlg, M_SHOWFILECOL, 0, FALSE); - } - } - } -} - -static BOOL InsertPackItemEnumProc(LANGPACK_INFO *pack, WPARAM wParam, LPARAM lParam) -{ - LANGPACK_INFO *pack2 = (LANGPACK_INFO*)mir_alloc(sizeof(LANGPACK_INFO)); - if (pack2 == NULL) return FALSE; - CopyMemory(pack2, pack, sizeof(LANGPACK_INFO)); - - /* country flag icon */ - LVITEM lvi; - lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE; - if ((HIMAGELIST)lParam != NULL) { - HICON hIcon; - if (pack->flags & LPF_DEFAULT) - hIcon = (HICON)CallService(MS_FLAGS_CREATEMERGEDFLAGICON, CTRY_UNITED_STATES, CTRY_UNITED_KINGDOM); - else { - int countryId = 0xFFFF; /* Unknown */ - TCHAR szBuf[6]; - /* get country id from locale */ - if (!(pack->flags & LPF_NOLOCALE)) - if (GetLocaleInfo(pack->Locale, LOCALE_ICOUNTRY, szBuf, SIZEOF(szBuf))) - countryId = _ttoi(szBuf); - hIcon = (HICON)CallService(MS_FLAGS_LOADFLAGICON, countryId, 0); - } - lvi.iImage = (hIcon == NULL) ? -1 : ImageList_AddIcon((HIMAGELIST)lParam, hIcon); - lvi.mask |= LVIF_IMAGE; - } - /* insert */ - lvi.iItem = lvi.iSubItem = 0; - lvi.stateMask = LVIS_STATEIMAGEMASK | LVIS_SELECTED; - lvi.state = INDEXTOSTATEIMAGEMASK((pack->flags & LPF_ENABLED)?2:1); - if (pack->flags & LPF_ENABLED) - lvi.state |= LVIS_SELECTED | LVIS_FOCUSED; - lvi.pszText = TranslateTS(pack->szLanguage); - lvi.lParam = (LPARAM)pack2; - ListView_InsertItem((HWND)wParam, &lvi); - - return TRUE; -} - -static int CALLBACK CompareListItem(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) -{ - int cmp = CompareString((LCID)lParamSort, 0, ((LANGPACK_INFO*)lParam1)->szLanguage, -1, ((LANGPACK_INFO*)lParam2)->szLanguage, -1); - if (cmp != 0) - cmp -= 2; - return cmp; -} - -/************************* Options Page *******************************/ - -static HWND hwndLangOpt; - -static INT_PTR CALLBACK LangOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hwndList = GetDlgItem(hwndDlg, IDC_LANGLIST); - LVITEM lvi; - - switch(msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - hwndLangOpt = hwndDlg; - ListView_SetExtendedListViewStyle(hwndList, LVS_EX_FULLROWSELECT|LVS_EX_LABELTIP); - ListView_SetImageList(hwndList, CreateRadioImages(ListView_GetBkColor(hwndList), ListView_GetTextColor(hwndList)), LVSIL_STATE); /* auto-destroyed */ - { - LVCOLUMN lvc; - lvc.mask = LVCF_TEXT; - lvc.pszText = TranslateT("Installed Languages"); - ListView_InsertColumn(hwndList, 0, &lvc); - } - if ( ServiceExists(MS_FLAGS_LOADFLAGICON)) - ListView_SetImageList(hwndList, ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR24, 8, 8), LVSIL_SMALL); - - TCHAR szPath[MAX_PATH]; - GetPackPath(szPath, SIZEOF(szPath), FALSE, _T("")); - SetDlgItemText(hwndDlg, IDC_SKINROOTFOLDER, szPath); - - SendMessage(hwndDlg, M_RELOADLIST, 0, 0); - SendMessage(hwndDlg, M_SHOWFILECOL, 0, 1); - return TRUE; - - case M_RELOADLIST: - /* init list */ - ListView_DeleteAllItems(hwndList); - ListView_DeleteColumn(hwndList, 1); /* if present */ - { - HIMAGELIST himl = ListView_GetImageList(hwndList, LVSIL_SMALL); - ImageList_RemoveAll(himl); - /* enum all packs */ - EnumPacks(InsertPackItemEnumProc, _T("langpack_*.txt"), "Miranda Language Pack Version 1", (WPARAM)hwndList, (LPARAM)himl); - /* make it use current langpack locale for sort */ - ListView_SortItems(hwndList, CompareListItem, CallService(MS_LANGPACK_GETLOCALE, 0, 0)); - //CheckDlgButton(hwndDlg, IDC_ENABLEAUTOUPDATES, db_get_b(NULL, "LangMan", "EnableAutoUpdates", SETTING_ENABLEAUTOUPDATES_DEFAULT) != 0); - /* show selection */ - int iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); - if (iItem != -1) - ListView_EnsureVisible(hwndList, iItem, FALSE); - } - return TRUE; - - case M_SHOWFILECOL: - if ((BOOL)lParam && ListView_GetItemCount(hwndList) > 1) { - /* add column */ - LVCOLUMN lvc; - ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE_USEHEADER); - lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; - lvc.pszText = TranslateT("File"); - lvc.cx = 160; - ListView_InsertColumn(hwndList, lvc.iSubItem = 1, &lvc); - ListView_SetColumnWidth(hwndList, 0, ListView_GetColumnWidth(hwndList, 0) - lvc.cx); - - /* add text */ - lvi.mask = LVIF_PARAM; - lvi.iSubItem = 0; - for (lvi.iItem = 0; ListView_GetItem(hwndList, &lvi); ++lvi.iItem) { - LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam; - ListView_SetItemText(hwndList, lvi.iItem, 1, (pack->flags&LPF_DEFAULT) ? TranslateT("built-in") : pack->szFileName); - } - } - else { - ListView_DeleteColumn(hwndList, 1); - ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE_USEHEADER); - } - return TRUE; - - case WM_DESTROY: - ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_LANGLIST)); - return TRUE; - - case WM_THEMECHANGED: - case WM_SETTINGCHANGE: - { - HIMAGELIST himl = ListView_SetImageList(hwndList, CreateRadioImages(ListView_GetBkColor(hwndList), ListView_GetTextColor(hwndList)), LVSIL_STATE); /* auto-destroyed */ - if (himl != NULL) - ImageList_Destroy(himl); - } - break; - - case WM_CTLCOLORLISTBOX: /* mimic readonly edit */ - return (BOOL)SendMessage(hwndDlg, WM_CTLCOLORSTATIC, wParam, lParam); - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_LANGEMAIL: - { - char buf[512]; - lstrcpyA(buf, "mailto:"); - if (GetWindowTextA(GetDlgItem(hwndDlg, LOWORD(wParam)), &buf[7], sizeof(buf)-7)) - CallService(MS_UTILS_OPENURL, FALSE, (LPARAM)buf); - return TRUE; - } - - case IDC_MORELANG: - CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)"http://miranda-ng.org/"); - return TRUE; - } - break; - - case WM_CONTEXTMENU: - if (GetDlgCtrlID((HWND)wParam) == IDC_LANGLIST) { - /* get item */ - LVHITTESTINFO hti; - POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam)); - if (hti.pt.x == -1 && hti.pt.y == -1) { - /* keyboard invoked */ - hti.iItem = ListView_GetNextItem((HWND)wParam, -1, LVNI_SELECTED); - if (hti.iItem != -1) - break; - - RECT rc; - if (!ListView_GetItemRect((HWND)wParam, hti.iItem, &rc, LVIR_SELECTBOUNDS)) - break; - - hti.pt.x = rc.left + (rc.right - rc.left) / 2; - hti.pt.y = rc.top + (rc.bottom - rc.top) / 2; - ClientToScreen((HWND)wParam, &hti.pt); - } - else { - ScreenToClient((HWND)wParam, &hti.pt); - if (ListView_HitTest((HWND)wParam, &hti) == -1 || !(hti.flags&LVHT_ONITEM)) - break; - POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam)); - } - - /* param */ - lvi.iItem = hti.iItem; - lvi.iSubItem = 0; - lvi.mask = LVIF_PARAM; - if (!ListView_GetItem((HWND)wParam, &lvi)) - break; - - /* context menu */ - LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam; - if (!(pack->flags & LPF_DEFAULT)) { - HMENU hContextMenu = CreatePopupMenu(); - if (hContextMenu != NULL) { - AppendMenu(hContextMenu, MF_STRING, 2, TranslateT("&Remove...")); - if (TrackPopupMenuEx(hContextMenu, TPM_RETURNCMD | TPM_NONOTIFY | TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_HORPOSANIMATION | TPM_VERPOSANIMATION, hti.pt.x, hti.pt.y, (HWND)wParam, NULL)) - DeletePackFile(hwndDlg, (HWND)wParam, hti.iItem, pack); - DestroyMenu(hContextMenu); - } - } - return TRUE; - } - break; - - case WM_NOTIFYFORMAT: - SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, NFR_UNICODE); - return TRUE; - - case WM_NOTIFY: - NMHDR *nmhdr = (NMHDR*)lParam; - switch (nmhdr->idFrom) { - case IDC_LANGLIST: - switch (nmhdr->code) { - case LVN_DELETEITEM: - lvi.iItem = ((NMLISTVIEW*)lParam)->iItem; /* nmlv->lParam is invalid */ - lvi.iSubItem = 0; - lvi.mask = LVIF_PARAM; - if (ListView_GetItem(nmhdr->hwndFrom, &lvi)) - mir_free((LANGPACK_INFO*)lvi.lParam); - break; - - case LVN_ITEMCHANGED: - { - NMLISTVIEW *nmlv = (NMLISTVIEW*)lParam; - if (!(nmlv->uChanged&LVIF_STATE)) - break; - - /* display info and check radio item */ - if (nmlv->uNewState&LVIS_SELECTED && !(nmlv->uOldState&LVIS_SELECTED)) { - ListView_SetItemState(nmhdr->hwndFrom, nmlv->iItem, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK); - DisplayPackInfo(hwndDlg, (LANGPACK_INFO*)nmlv->lParam); - } - /* disable all other radio items */ - else if (nmlv->uNewState&INDEXTOSTATEIMAGEMASK(2)) { - for (int iItem = ListView_GetItemCount(nmhdr->hwndFrom) - 1; iItem != -1; --iItem) - if (iItem != nmlv->iItem) - ListView_SetItemState(nmhdr->hwndFrom, iItem, INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK); - - /* enable apply */ - if (nmlv->uOldState) { - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - ShowWindow(GetDlgItem(hwndDlg, IDC_RESTART), SW_SHOW); - } - } - } - break; - - case LVN_KEYDOWN: - { - int iItem = ListView_GetNextItem(nmhdr->hwndFrom, -1, LVNI_SELECTED); - switch (((NMLVKEYDOWN*)lParam)->wVKey) { - case VK_SPACE: - ListView_SetItemState(nmhdr->hwndFrom, iItem, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK); - break; - - case VK_DELETE: - lvi.iItem = iItem; - lvi.iSubItem = 0; - lvi.mask = LVIF_PARAM; - if (ListView_GetItem(nmhdr->hwndFrom, &lvi)) { - LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam; - if (!(pack->flags&LPF_DEFAULT)) - DeletePackFile(hwndDlg, nmhdr->hwndFrom, iItem, pack); - } - break; - } - } - break; - - case NM_CLICK: - LVHITTESTINFO hti; - lParam = GetMessagePos(); - POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam)); - ScreenToClient(nmhdr->hwndFrom, &hti.pt); - if (ListView_HitTest(nmhdr->hwndFrom, &hti) != -1) - if (hti.flags&(LVHT_ONITEMSTATEICON | LVHT_ONITEMICON)) /* one of them */ - ListView_SetItemState(nmhdr->hwndFrom, hti.iItem, LVIS_SELECTED, LVIS_SELECTED); - } - break; - - case 0: - switch (nmhdr->code) { - case PSN_APPLY: - lvi.mask = LVIF_STATE | LVIF_PARAM; - lvi.stateMask = LVIS_STATEIMAGEMASK; - lvi.iSubItem = 0; - for (lvi.iItem = 0; ListView_GetItem(hwndList, &lvi); ++lvi.iItem) { - LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam; - if (lvi.state&INDEXTOSTATEIMAGEMASK(2) && !(pack->flags & LPF_ENABLED)) { - if(!(pack->flags & LPF_DEFAULT)) - db_set_ws(NULL, "LangMan", "Langpack", pack->szFileName); - else - db_unset(NULL, "LangMan", "Langpack"); - TCHAR szPath[MAX_PATH]; - GetPackPath(szPath, SIZEOF(szPath), FALSE, pack->szFileName); - CallService(MS_LANGPACK_RELOAD, 0, (LPARAM)szPath); - pack->flags |= LPF_ENABLED; - CloseWindow(GetParent(hwndDlg)); - DestroyWindow(GetParent(hwndDlg)); - } - else pack->flags &= ~LPF_ENABLED; - } - return TRUE; - } - } - break; - } - return FALSE; -} - -void ReloadLangOptList(void) -{ - if (hwndLangOpt != NULL) { - SendMessage(hwndLangOpt, M_RELOADLIST, 0, 0); - SendMessage(hwndLangOpt, M_SHOWFILECOL, 0, 1); - } -} - -static int LangOptInit(WPARAM wParam, LPARAM) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.hInstance = hInst; - odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR; - odp.position = 1200000090; - odp.ptszTitle = LPGENT("Languages"); - odp.ptszGroup = LPGENT("Customize"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_LANG); - odp.pfnDlgProc = LangOptDlgProc; - Options_AddPage(wParam, &odp); - return 0; -} - -/************************* Misc ***************************************/ - -void InitOptions(void) -{ - hwndLangOpt = NULL; - hHookOptInit = HookEvent(ME_OPT_INITIALISE, LangOptInit); - //CorrectPacks(_T("langpack_*.txt"), FALSE); -} - -void UninitOptions(void) -{ - UnhookEvent(hHookOptInit); -} \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/src/options.h b/plugins/!Deprecated/LangMan/src/options.h deleted file mode 100644 index 2b9e93b334..0000000000 --- a/plugins/!Deprecated/LangMan/src/options.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - -'Language Pack Manager'-Plugin for Miranda IM - -Copyright (C) 2005-2007 H. Herkenrath - -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 (LangMan-License.txt); if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* Options Page */ -void ReloadLangOptList(void); - -/* Misc */ -void InitOptions(void); -void UninitOptions(void); diff --git a/plugins/!Deprecated/LangMan/src/resource.h b/plugins/!Deprecated/LangMan/src/resource.h deleted file mode 100644 index 30e82b3fc0..0000000000 --- a/plugins/!Deprecated/LangMan/src/resource.h +++ /dev/null @@ -1,52 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by d:\Projects\CPlusPlus\MirandaNG\plugins\LangMan\res\resource.rc -// -#define IDD_OPT_LANG 101 -#define IDD_UPDATENOTIFY 102 -#define IDD_DOWNLOADLANG 103 -#define IDI_ICON1 104 -#define IDI_RELOAD 104 -#define IDC_LANGLIST 1001 -#define IDC_LANGINFOFRAME 1002 -#define IDC_LANGAUTHORSLABEL 1003 -#define IDC_LANGAUTHORS 1004 -#define IDC_LANGEMAILLABEL 1005 -#define IDC_LANGEMAIL 1006 -#define IDC_LANGMODUSINGLABEL 1007 -#define IDC_LANGMODUSING 1008 -#define IDC_LANGDATELABEL 1009 -#define IDC_LANGDATE 1010 -#define IDC_LANGVERSIONLABEL 1011 -#define IDC_LANGVERSION 1012 -#define IDC_LANGLOCALELABEL 1013 -#define IDC_LANGLOCALE 1014 -#define IDC_LANGNOTINCLUDEDLABEL 1015 -#define IDC_LANGNOTINCLUDED 1016 -#define IDC_MORELANG 1017 -#define IDC_RESTART 1018 -#define IDC_ENABLEAUTOUPDATES 1019 -#define IDC_DOWNLOADLANG 1020 -#define IDC_LANGCOMBO 1021 -#define IDC_LANGAUTHORS2 1021 -#define IDC_DOWNLOADALL 1022 -#define IDC_LOADING 1023 -#define IDC_LANGUAGELABEL 1024 -#define IDC_LANGUAGE 1025 -#define IDC_CURRENTVERSION 1026 -#define IDC_NEWVERSION 1027 -#define IDC_NEWVERSIONLABEL 1028 -#define IDC_SKINROOTFOLDER 1439 -#define IDC_LANGROOTFOLDER 1439 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 105 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1029 -#define _APS_NEXT_SYMED_VALUE 2001 -#endif -#endif diff --git a/plugins/!Deprecated/LangMan/src/stdafx.cpp b/plugins/!Deprecated/LangMan/src/stdafx.cpp deleted file mode 100644 index c5fe5abaad..0000000000 --- a/plugins/!Deprecated/LangMan/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "common.h" \ No newline at end of file diff --git a/plugins/!Deprecated/LangMan/src/version.h b/plugins/!Deprecated/LangMan/src/version.h deleted file mode 100644 index c95c154578..0000000000 --- a/plugins/!Deprecated/LangMan/src/version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 11 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 1 - -#include - -#define __PLUGIN_NAME "Language pack manager" -#define __FILENAME "LangMan.dll" -#define __DESCRIPTION "Helps you manage language packs of different languages." -#define __AUTHOR "H. Herkenrath" -#define __AUTHOREMAIL "" -#define __AUTHORWEB "http://miranda-ng.org/p/LangMan/" -#define __COPYRIGHT "© 2005-2007 H. Herkenrath, 2014 Miranda NG project" diff --git a/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj b/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj deleted file mode 100644 index 838c7382dc..0000000000 --- a/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj +++ /dev/null @@ -1,239 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {7DC23E4E-2448-4811-AABD-F5D069F6E74A} - Win32Proj - MagneticWindows - MagneticWindows - - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - true - - - true - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - false - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - true - - - false - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - true - - - - Use - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - false - false - - - - - MagneticWindowsCore.h - EnableFastChecks - MultiThreadedDebugDLL - - - Windows - true - $(ProfileDir)..\..\bin10\lib - comctl32.lib;%(AdditionalDependencies) - - - false - $(IntDir)$(TargetName).lib - - - _DEBUG;%(PreprocessorDefinitions) - - - ..\..\include\msapi - - - - - Use - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - false - false - - - - - MagneticWindowsCore.h - MultiThreadedDebugDLL - EnableFastChecks - - - Windows - true - $(ProfileDir)..\..\bin10\lib - comctl32.lib;%(AdditionalDependencies) - - - false - $(IntDir)$(TargetName).lib - - - _DEBUG;%(PreprocessorDefinitions) - - - ..\..\include\msapi - - - - - Level3 - Use - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MagneticWindowsCore.h - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Size - true - - - Windows - true - true - true - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin10\lib - false - $(IntDir)$(TargetName).lib - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - Level3 - Use - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MagneticWindowsCore.h - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Size - true - - - Windows - true - true - true - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin10\lib - false - $(IntDir)$(TargetName).lib - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj.filters b/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj.filters deleted file mode 100644 index b0bb67e7b7..0000000000 --- a/plugins/!Deprecated/MagneticWindows/MagneticWindows_10.vcxproj.filters +++ /dev/null @@ -1,59 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source 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/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj b/plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj deleted file mode 100644 index 9fe4213e6c..0000000000 --- a/plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj +++ /dev/null @@ -1,242 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {7DC23E4E-2448-4811-AABD-F5D069F6E74A} - Win32Proj - MagneticWindows - MagneticWindows - - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - false - true - Unicode - v120_xp - - - DynamicLibrary - false - true - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - true - - - true - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - false - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - true - - - false - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - true - - - - Use - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - false - false - - - - - MagneticWindowsCore.h - EnableFastChecks - MultiThreadedDebugDLL - - - Windows - true - $(ProfileDir)..\..\bin12\lib - comctl32.lib;%(AdditionalDependencies) - - - false - $(IntDir)$(TargetName).lib - false - - - _DEBUG;%(PreprocessorDefinitions) - - - ..\..\include\msapi - - - - - Use - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - false - false - - - - - MagneticWindowsCore.h - MultiThreadedDebugDLL - EnableFastChecks - - - Windows - true - $(ProfileDir)..\..\bin12\lib - comctl32.lib;%(AdditionalDependencies) - - - false - $(IntDir)$(TargetName).lib - - - _DEBUG;%(PreprocessorDefinitions) - - - ..\..\include\msapi - - - - - Level3 - Use - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MagneticWindowsCore.h - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Size - true - - - Windows - true - true - true - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin12\lib - false - $(IntDir)$(TargetName).lib - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - Level3 - Use - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - MagneticWindowsCore.h - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Size - true - - - Windows - true - true - true - comctl32.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin12\lib - false - $(IntDir)$(TargetName).lib - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj.filters b/plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj.filters deleted file mode 100644 index b0bb67e7b7..0000000000 --- a/plugins/!Deprecated/MagneticWindows/MagneticWindows_12.vcxproj.filters +++ /dev/null @@ -1,59 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source 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/!Deprecated/MagneticWindows/res/Options.rc b/plugins/!Deprecated/MagneticWindows/res/Options.rc deleted file mode 100644 index 08972ec3cb..0000000000 --- a/plugins/!Deprecated/MagneticWindows/res/Options.rc +++ /dev/null @@ -1,113 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Deutsch (Deutschland) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Deutsch (Deutschland) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Englisch (USA) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_OPT_MAGNETICWINDOWS DIALOGEX 0, 0, 275, 80 -STYLE DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg" -BEGIN - GROUPBOX "Magnetic Windows",IDC_MAINFRAME,8,8,258,64,WS_GROUP - CONTROL "",IDC_SLIDER_SNAPWIDTH,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,108,24,96,12 - CONTROL "Snap windows",IDC_CHK_SNAP,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,18,24,84,12 - LTEXT "15 pix",IDC_TXT_SNAPWIDTH,216,24,42,12,SS_CENTERIMAGE - CONTROL "For Scriver users: automatically hold down the CTRL key while moving/sizing. (Make sure you use Scriver!)", - IDC_CHK_SCRIVERWORKAROUND,"Button",BS_AUTOCHECKBOX | - BS_MULTILINE | WS_TABSTOP,18,44,239,20,WS_EX_TRANSPARENT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_OPT_MAGNETICWINDOWS, DIALOG - BEGIN - RIGHTMARGIN, 273 - BOTTOMMARGIN, 79 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Englisch (USA) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/MagneticWindows/res/Version.rc b/plugins/!Deprecated/MagneticWindows/res/Version.rc deleted file mode 100644 index f4dbfc80e2..0000000000 --- a/plugins/!Deprecated/MagneticWindows/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/!Deprecated/MagneticWindows/src/MagneticWindows.cpp b/plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp deleted file mode 100644 index bcf38c3036..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "MagneticWindowsCore.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// -// Magnetic Windows -// -// Autor: Michael Kunz -// EMail: Michael.Kunz@s2005.tu-chemnitz.de -// -// -// thanks to: pescuma -// -/////////////////////////////////////////////////////////////////////////////////////////////////// - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Variables -/////////////////////////////////////////////////////////////////////////////////////////////////// - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {08C01613-24C8-486F-BDAE-2C3DDCAF9347} - {0x8c01613, 0x24c8, 0x486f, { 0xbd, 0xae, 0x2c, 0x3d, 0xdc, 0xaf, 0x93, 0x47 }} -}; - -HINSTANCE hInst; -int hLangpack; - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Plugin Functions -/////////////////////////////////////////////////////////////////////////////////////////////////// - - -//For other Plugins to start snapping for other Windows -INT_PTR SnapPluginWindowStart(WPARAM wParam, LPARAM) -{ - if (!WindowOpen((HWND)wParam)) return 1; - return 0; -} - -//For other Plugins to stop snapping for other Windows -INT_PTR SnapPluginWindowStop(WPARAM wParam, LPARAM) -{ - if (!WindowClose((HWND)wParam)) return 1; - return 0; -} - -int PluginMessageWindowEvent(WPARAM, LPARAM lParam) -{ - MessageWindowEventData *Data = (MessageWindowEventData*) lParam; - - switch (Data->uType) { - case MSG_WINDOW_EVT_OPEN: - { - HWND hWnd = Data->hwndWindow; - HWND hWndParent = GetParent(hWnd); - while ((hWndParent != 0) && (hWndParent != GetDesktopWindow()) && (IsWindowVisible(hWndParent))) { - hWnd = hWndParent; - hWndParent = GetParent(hWnd); - } - - WindowOpen(hWnd); - } - break; - - case MSG_WINDOW_EVT_CLOSING: - WindowClose(Data->hwndWindow); - break; - } - - return 0; -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Main Functions -/////////////////////////////////////////////////////////////////////////////////////////////////// - -int SnapPluginStart(WPARAM, LPARAM) -{ - LoadOptions(); - - HookEvent(ME_MSG_WINDOWEVENT, PluginMessageWindowEvent); - - WindowOpen((HWND)CallService(MS_CLUI_GETHWND,0,0)); - return 0; -} - -int SnapPluginShutDown(WPARAM, LPARAM) -{ - WindowCloseAll(); - return 0; -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Exportet Functions -/////////////////////////////////////////////////////////////////////////////////////////////////// - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) -{ - return &pluginInfo; -} - -extern "C" int __declspec(dllexport) Load() -{ - mir_getLP(&pluginInfo); - - HookEvent(ME_SYSTEM_MODULESLOADED, SnapPluginStart); - HookEvent(ME_SYSTEM_PRESHUTDOWN, SnapPluginShutDown); - HookEvent(ME_OPT_INITIALISE, InitOptions); - - CreateServiceFunction(MS_MW_ADDWINDOW, SnapPluginWindowStart); - CreateServiceFunction(MS_MW_REMWINDOW, SnapPluginWindowStop); - CreateServiceFunction(MS_MW_SNAPTOLIST, SnapToList); - - WindowStart(); - return 0; -} - -extern "C" int __declspec(dllexport) Unload() -{ - return 0; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// DLL MAIN -/////////////////////////////////////////////////////////////////////////////////////////////////// - - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInst = hinstDLL; - return TRUE; -} diff --git a/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.cpp b/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.cpp deleted file mode 100644 index f81c29cb92..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.cpp +++ /dev/null @@ -1,355 +0,0 @@ -#include "MagneticWindowsCore.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Variables -/////////////////////////////////////////////////////////////////////////////////////////////////// - -struct TWindowData -{ - HWND hWnd; - RECT Rect; -}; - -static LIST arWindows(10, HandleKeySortT); - -TWorkingVariables Globals = { - 0, 0, - false, false -}; - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Functions -/////////////////////////////////////////////////////////////////////////////////////////////////// - -int Abs(int a) { - return (a<0) ? -a : a; -} - -void DockWindowRect(HWND hWnd, bool Sizing, RECT& GivenRect, int SizingEdge, int MouseX = 0, int MouseY = 0) -{ - POINT p; - int XPos, YPos; - int tmpXPos, tmpYPos; - int tmpMouseX, tmpMouseY; - - int diffX = Options.SnapWidth, diffY = Options.SnapWidth; - - RECT tmpRect = GivenRect; - RECT frmRect = GivenRect; - - bool FoundX = false, FoundY = false; - - if (!Sizing) { - GetCursorPos(&p); - if (Globals.SnappedX) { - tmpMouseX = p.x - tmpRect.left; - OffsetRect(&tmpRect, tmpMouseX - MouseX, 0); - OffsetRect(&GivenRect, tmpMouseX - MouseX, 0); - } - else MouseX = p.x - tmpRect.left; - - if (Globals.SnappedY) { - tmpMouseY = p.y - tmpRect.top; - OffsetRect(&tmpRect, 0, tmpMouseY - MouseY); - OffsetRect(&GivenRect, 0, tmpMouseY - MouseY); - } - else MouseY = p.y - tmpRect.top; - } - - int W = tmpRect.right - tmpRect.left; - int H = tmpRect.bottom - tmpRect.top; - - if (!Sizing) { - for (int i=0; i < arWindows.getCount(); i++) { - TWindowData *p = arWindows[i]; - if (p->hWnd == hWnd) - continue; - - if ((tmpRect.left >= (p->Rect.left - Options.SnapWidth)) && - (tmpRect.left <= (p->Rect.left + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) & - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpRect.left - p->Rect.left) < diffX)) - { - GivenRect.left = p->Rect.left; - GivenRect.right = GivenRect.left + W; - - diffX = Abs(tmpRect.left - p->Rect.left); - - FoundX = true; - } - else if (i != 0 && - (tmpRect.left >= (p->Rect.right - Options.SnapWidth)) && - (tmpRect.left <= (p->Rect.right + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) && - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpRect.left - p->Rect.right) < diffX)) - { - GivenRect.left = p->Rect.right; - GivenRect.right = GivenRect.left + W; - - diffX = Abs(tmpRect.left - p->Rect.right); - - FoundX = true; - } - else if (i != 0 && - (tmpRect.right >= (p->Rect.left - Options.SnapWidth)) && - (tmpRect.right <= (p->Rect.left + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) && - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpRect.right - p->Rect.left) < diffX)) - { - GivenRect.right = p->Rect.left; - GivenRect.left = GivenRect.right - W; - - diffX = Abs(tmpRect.right - p->Rect.left); - - FoundX = true; - } - else if ((tmpRect.right >= (p->Rect.right - Options.SnapWidth)) && - (tmpRect.right <= (p->Rect.right + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) && - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpRect.right - p->Rect.right) < diffX)) - { - GivenRect.right = p->Rect.right; - GivenRect.left = GivenRect.right - W; - - diffX = Abs(tmpRect.right - p->Rect.right); - - FoundX = true; - } - - if ((tmpRect.top >= (p->Rect.top - Options.SnapWidth)) && - (tmpRect.top <= (p->Rect.top + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpRect.top - p->Rect.top) < diffY)) - { - GivenRect.top = p->Rect.top; - GivenRect.bottom = GivenRect.top + H; - - diffY = Abs(tmpRect.top - p->Rect.top); - - FoundY = true; - } - else if (i != 0 && - (tmpRect.top >= (p->Rect.bottom - Options.SnapWidth)) && - (tmpRect.top <= (p->Rect.bottom + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpRect.top - p->Rect.bottom) < diffY)) - { - GivenRect.top = p->Rect.bottom; - GivenRect.bottom = GivenRect.top + H; - - diffY = Abs(tmpRect.top - p->Rect.bottom); - - FoundY = true; - } - else if (i != 0 && - (tmpRect.bottom >= (p->Rect.top - Options.SnapWidth)) && - (tmpRect.bottom <= (p->Rect.top + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpRect.bottom - p->Rect.top) < diffY)) - { - GivenRect.bottom = p->Rect.top; - GivenRect.top = GivenRect.bottom - H; - - diffY = Abs(tmpRect.bottom - p->Rect.top); - - FoundY = true; - } - else if ((tmpRect.bottom >= (p->Rect.bottom - Options.SnapWidth)) && - (tmpRect.bottom <= (p->Rect.bottom + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpRect.bottom - p->Rect.bottom) < diffY)) - { - GivenRect.bottom = p->Rect.bottom; - GivenRect.top = GivenRect.bottom - H; - - diffY = Abs(tmpRect.bottom - p->Rect.bottom); - - FoundY = true; - } - } - - Globals.SnappedX = FoundX; - Globals.SnappedY = FoundY; - } - else //Sizing - { - if (SizingEdge == WMSZ_LEFT || SizingEdge == WMSZ_TOPLEFT || SizingEdge == WMSZ_BOTTOMLEFT) - XPos = GivenRect.left; - else - XPos = GivenRect.right; - - if (SizingEdge == WMSZ_TOP || SizingEdge == WMSZ_TOPLEFT || SizingEdge == WMSZ_TOPRIGHT) - YPos = GivenRect.top; - else - YPos = GivenRect.bottom; - - tmpXPos = XPos; - tmpYPos = YPos; - - for (int i=0; i < arWindows.getCount(); i++) { - TWindowData *p = arWindows[i]; - if (p->hWnd == hWnd) - continue; - - if ((tmpXPos >= (p->Rect.left - Options.SnapWidth)) && - (tmpXPos <= (p->Rect.left + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) && - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpXPos - p->Rect.left) < diffX)) - { - XPos = p->Rect.left; - diffX = Abs(tmpXPos - p->Rect.left); - } - else if ((tmpXPos >= (p->Rect.right - Options.SnapWidth)) && - (tmpXPos <= (p->Rect.right + Options.SnapWidth)) && - ((tmpRect.top - Options.SnapWidth) < p->Rect.bottom) && - ((tmpRect.bottom + Options.SnapWidth) > p->Rect.top) && - (Abs(tmpXPos - p->Rect.right) < diffX)) - { - XPos = p->Rect.right; - diffX = Abs(tmpXPos - p->Rect.right); - } - - if ((tmpYPos >= (p->Rect.top - Options.SnapWidth)) && - (tmpYPos <= (p->Rect.top + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpYPos - p->Rect.top) < diffY)) - { - YPos = p->Rect.top; - diffY = Abs(tmpYPos - p->Rect.top); - } - else if ((tmpYPos >= (p->Rect.bottom - Options.SnapWidth)) && - (tmpYPos <= (p->Rect.bottom + Options.SnapWidth)) && - ((tmpRect.left - Options.SnapWidth) < p->Rect.right) && - ((tmpRect.right + Options.SnapWidth) > p->Rect.left) && - (Abs(tmpYPos - p->Rect.bottom) < diffY)) - { - YPos = p->Rect.bottom; - diffY = Abs(tmpYPos - p->Rect.bottom); - } - } - - if (SizingEdge == WMSZ_LEFT || SizingEdge == WMSZ_TOPLEFT || SizingEdge == WMSZ_BOTTOMLEFT) - GivenRect.left = XPos; - else - GivenRect.right = XPos; - - if (SizingEdge == WMSZ_TOP || SizingEdge == WMSZ_TOPLEFT || SizingEdge == WMSZ_TOPRIGHT) - GivenRect.top = YPos; - else - GivenRect.bottom = YPos; - } -} - -void GetFrmRects(HWND ForWindow) -{ - SystemParametersInfo(SPI_GETWORKAREA, 0, &arWindows[0]->Rect, 0); - - for (int i=1; i < arWindows.getCount(); i++) { - TWindowData *p = arWindows[i]; - if (p->hWnd != ForWindow && IsWindowVisible(p->hWnd)) - GetWindowRect(p->hWnd, &p->Rect); - } -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Subclass Window Proc -/////////////////////////////////////////////////////////////////////////////////////////////////// - -LRESULT CALLBACK WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) -{ - RECT r; - POINT p; - - if (Options.DoSnap) { - switch (Msg) { - case WM_ENTERSIZEMOVE: - if (Options.ScriverWorkAround) - keybd_event(VK_CONTROL, 0, 0, 0); - - GetWindowRect(hWnd, &r); - GetCursorPos(&p); - Globals.MouseX = p.x - r.left; - Globals.MouseY = p.y - r.top; - GetFrmRects(hWnd); - break; - - case WM_EXITSIZEMOVE: - if (Options.ScriverWorkAround) - keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); - break; - - case WM_SIZING: - case WM_MOVING: - r = *((PRECT)lParam); - if (Msg == WM_SIZING) - DockWindowRect(hWnd, true, r, wParam); - else - DockWindowRect(hWnd, false, r, wParam, Globals.MouseX, Globals.MouseY); - - (*(PRECT)lParam) = r; - - if (Msg == WM_SIZING) - return 1; - - break; - } - } - - return mir_callNextSubclass(hWnd, WindowProc, Msg, wParam, lParam); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// exportet Functions -/////////////////////////////////////////////////////////////////////////////////////////////////// - -void WindowStart() -{ - TWindowData *p = (TWindowData*)mir_calloc(sizeof(TWindowData)); - arWindows.insert(p); -} - -bool WindowOpen(HWND hWnd) -{ - if (hWnd == 0) - return false; - - TWindowData *p = (TWindowData*)mir_alloc(sizeof(TWindowData)); - p->hWnd = hWnd; - GetWindowRect(hWnd, &p->Rect); - arWindows.insert(p); - - mir_subclassWindow(hWnd, WindowProc); - return true; -} - -bool WindowClose(HWND hWnd) -{ - if (hWnd == 0) - return false; - - mir_unsubclassWindow(hWnd, WindowProc); - int idx = arWindows.indexOf((TWindowData*)&hWnd); - if (idx != -1) { - TWindowData *p = arWindows[idx]; - arWindows.remove(idx); - mir_free(p); - } - return true; -} - -void WindowCloseAll() -{ - for (int i=0; i < arWindows.getCount(); i++) - mir_free(arWindows[i]); - arWindows.destroy(); -} diff --git a/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.h b/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.h deleted file mode 100644 index aaff256590..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/MagneticWindowsCore.h +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "SnapToListService.h" -#include "Options.h" - -#include "resource.h" -#include "Version.h" - -typedef - struct { - int MouseX, MouseY; - bool SnappedX, SnappedY; - } TWorkingVariables; - - - -#define MODULE_NAME "MagneticWindows" -extern HINSTANCE hInst; - -void WindowStart(); -bool WindowOpen(HWND); -bool WindowClose(HWND); -void WindowCloseAll(); diff --git a/plugins/!Deprecated/MagneticWindows/src/Options.cpp b/plugins/!Deprecated/MagneticWindows/src/Options.cpp deleted file mode 100644 index 6729e33861..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/Options.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "MagneticWindowsCore.h" - -TOptions Options = { - true, - cDefaultSnapWidth, - false -}; - -INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - TCHAR str[64]; - - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - - CheckDlgButton(hwndDlg, IDC_CHK_SNAP, Options.DoSnap?BST_CHECKED:BST_UNCHECKED); - SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_SETRANGE, FALSE, MAKELONG(1,32)); - SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_SETPOS, TRUE, Options.SnapWidth); - - mir_sntprintf(str, SIZEOF(str),TranslateT("%d pix"), Options.SnapWidth); - SetDlgItemText(hwndDlg, IDC_TXT_SNAPWIDTH, str); - - EnableWindow(GetDlgItem(hwndDlg, IDC_SLIDER_SNAPWIDTH), Options.DoSnap); - EnableWindow(GetDlgItem(hwndDlg, IDC_TXT_SNAPWIDTH), Options.DoSnap); - - CheckDlgButton(hwndDlg, IDC_CHK_SCRIVERWORKAROUND, Options.ScriverWorkAround?BST_CHECKED:BST_UNCHECKED); - break; - - case WM_HSCROLL: - mir_sntprintf(str, SIZEOF(str), TranslateT("%d pix"), SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_GETPOS, 0, 0)); - SetDlgItemText(hwndDlg, IDC_TXT_SNAPWIDTH, str); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_COMMAND: - switch( LOWORD(wParam)) { - case IDC_CHK_SNAP: - if (HIWORD(wParam) == BN_CLICKED) { - EnableWindow(GetDlgItem(hwndDlg, IDC_SLIDER_SNAPWIDTH), IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP)); - EnableWindow(GetDlgItem(hwndDlg, IDC_TXT_SNAPWIDTH), IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP)); - - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case IDC_CHK_SCRIVERWORKAROUND: - if (HIWORD(wParam) == BN_CLICKED) - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } - break; - - case WM_NOTIFY: //Here we have pressed either the OK or the APPLY button. - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_RESET: - LoadOptions(); - break; - - case PSN_APPLY: - Options.DoSnap = (IsDlgButtonChecked(hwndDlg, IDC_CHK_SNAP) == TRUE); - Options.SnapWidth = SendDlgItemMessage(hwndDlg, IDC_SLIDER_SNAPWIDTH, TBM_GETPOS, 0, 0); - Options.ScriverWorkAround = (IsDlgButtonChecked(hwndDlg, IDC_CHK_SCRIVERWORKAROUND) == TRUE); - - db_set_b(NULL, MODULE_NAME, "DoSnap", Options.DoSnap); - db_set_b(NULL, MODULE_NAME, "SnapWidth", Options.SnapWidth); - db_set_b(NULL, MODULE_NAME, "ScriverWorkAround", Options.ScriverWorkAround); - break; - } - } - break; - } - return 0; -} - -int InitOptions(WPARAM wParam, LPARAM) -{ - OPTIONSDIALOGPAGE Opt = { sizeof(Opt) }; - Opt.pfnDlgProc = OptionsDlgProc; - Opt.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MAGNETICWINDOWS); - Opt.hInstance = hInst; - Opt.pszGroup = LPGEN("Customize"); - Opt.pszTitle = LPGEN("Magnetic Windows"); - Opt.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &Opt); - return 0; -} - -void LoadOptions() -{ - Options.DoSnap = db_get_b(NULL, MODULE_NAME, "DoSnap", 1) != 0; - Options.SnapWidth = db_get_b(NULL, MODULE_NAME, "SnapWidth", cDefaultSnapWidth); - Options.ScriverWorkAround = db_get_b(NULL, MODULE_NAME, "ScriverWorkAround", 0) != 0; -} diff --git a/plugins/!Deprecated/MagneticWindows/src/Options.h b/plugins/!Deprecated/MagneticWindows/src/Options.h deleted file mode 100644 index 1e9affa629..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/Options.h +++ /dev/null @@ -1,16 +0,0 @@ - -#define cDefaultSnapWidth 12 - -typedef - struct TOptions { - bool DoSnap; - int SnapWidth; - bool ScriverWorkAround; -} TOptions; - -extern TOptions Options; - -INT_PTR CALLBACK OptionsDlgProc(HWND, UINT, WPARAM, LPARAM); - -int InitOptions(WPARAM, LPARAM); -void LoadOptions(); \ No newline at end of file diff --git a/plugins/!Deprecated/MagneticWindows/src/SnapToListService.cpp b/plugins/!Deprecated/MagneticWindows/src/SnapToListService.cpp deleted file mode 100644 index 586fa594b1..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/SnapToListService.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "MagneticWindowsCore.h" - -INT_PTR SnapToList(WPARAM wParam, LPARAM Align) -{ - HWND hWnd, hWndList; - RECT WndRect, ListRect; - RECT AlignRect; - RECT ResultRect; - - hWnd = (HWND)wParam; - - hWndList = (HWND)CallService(MS_CLUI_GETHWND,0,0); - GetWindowRect(hWnd, &WndRect); - GetWindowRect(hWndList, &ListRect); - - AlignRect = ListRect; - if ((!(MS_MW_STL_List_Left & Align)) && (MS_MW_STL_List_Right & Align)) { - AlignRect.left = AlignRect.right; - } else - if ((MS_MW_STL_List_Left & Align) && (!(MS_MW_STL_List_Right & Align))) { - AlignRect.right = AlignRect.left; - } - - if ((!(MS_MW_STL_List_Top & Align)) && (MS_MW_STL_List_Bottom & Align)) { - AlignRect.top = AlignRect.bottom; - } else - if ((MS_MW_STL_List_Top & Align) && (!(MS_MW_STL_List_Bottom & Align))) { - AlignRect.bottom = AlignRect.top; - } - - ResultRect = WndRect; - if ((MS_MW_STL_Wnd_Left & Align) && (MS_MW_STL_Wnd_Right & Align)) { - ResultRect.left = AlignRect.left; - ResultRect.right = AlignRect.right; - } else - if ((!(MS_MW_STL_Wnd_Left & Align)) && (MS_MW_STL_Wnd_Right & Align)) { - ResultRect.left = AlignRect.right - (WndRect.right - WndRect.left); - ResultRect.right = AlignRect.right; - } else - if ((MS_MW_STL_Wnd_Left & Align) && (!(MS_MW_STL_Wnd_Right & Align))) { - ResultRect.left = AlignRect.left; - ResultRect.right = AlignRect.left + (WndRect.right - WndRect.left); - } - - if ((MS_MW_STL_Wnd_Top & Align) && (MS_MW_STL_Wnd_Bottom & Align)) { - ResultRect.top = AlignRect.top; - ResultRect.bottom = AlignRect.bottom; - } else - if ((!(MS_MW_STL_Wnd_Top & Align)) && (MS_MW_STL_Wnd_Bottom & Align)) { - ResultRect.top = AlignRect.bottom - (WndRect.bottom - WndRect.top); - ResultRect.bottom = AlignRect.bottom; - } else - if ((MS_MW_STL_Wnd_Top & Align) && (!(MS_MW_STL_Wnd_Bottom & Align))) { - ResultRect.top = AlignRect.top; - ResultRect.bottom = AlignRect.top + (WndRect.bottom - WndRect.top); - } - - MoveWindow(hWnd, ResultRect.left, ResultRect.top, ResultRect.right-ResultRect.left, ResultRect.bottom-ResultRect.top, true); - - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/MagneticWindows/src/SnapToListService.h b/plugins/!Deprecated/MagneticWindows/src/SnapToListService.h deleted file mode 100644 index 3a421c454d..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/SnapToListService.h +++ /dev/null @@ -1,2 +0,0 @@ - -INT_PTR SnapToList(WPARAM, LPARAM); diff --git a/plugins/!Deprecated/MagneticWindows/src/Version.h b/plugins/!Deprecated/MagneticWindows/src/Version.h deleted file mode 100644 index e6bf08d90d..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/Version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 3 -#define __BUILD_NUM 2 - -#include - -#define __PLUGIN_NAME "Magnetic Windows" -#define __FILENAME "MagneticWindows.dll" -#define __DESCRIPTION "Makes the main contactlist and the chat windows snapping to the desktop border and to each other." -#define __AUTHOR "Michael Kunz" -#define __AUTHOREMAIL "Michael.Kunz@s2005.TU-Cemnitz.de" -#define __AUTHORWEB "http://miranda-ng.org/p/MagneticWindows/" -#define __COPYRIGHT "© 2006 Michael Kunz" diff --git a/plugins/!Deprecated/MagneticWindows/src/resource.h b/plugins/!Deprecated/MagneticWindows/src/resource.h deleted file mode 100644 index a651a69a50..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/resource.h +++ /dev/null @@ -1,25 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by Options.rc -// - -#define IDD_OPT_MAGNETICWINDOWS 101 - - -#define IDC_MAINFRAME 1001 -#define IDC_SLIDER_SNAPWIDTH 1002 -#define IDC_CHK_SNAP 1003 -#define IDC_TXT_SNAPWIDTH 1004 -#define IDC_CHK_SCRIVERWORKAROUND 1005 - - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1006 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/MagneticWindows/src/stdafx.cpp b/plugins/!Deprecated/MagneticWindows/src/stdafx.cpp deleted file mode 100644 index 9a123605f3..0000000000 --- a/plugins/!Deprecated/MagneticWindows/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "MagneticWindowsCore.h" \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj b/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj deleted file mode 100644 index ab09894a44..0000000000 --- a/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj +++ /dev/null @@ -1,218 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - MetaContacts - {0007BE9F-DD4D-4E9B-B1C8-C5049538F862} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Use - metacontacts.h - Level3 - EditAndContinue - Disabled - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - Windows - 0x22010000 - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - metacontacts.h - Level3 - false - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;%(AdditionalDependencies) - true - 0x22010000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - Disabled - Level3 - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Use - metacontacts.h - false - - - $(IntDir)$(TargetName).lib - true - Windows - false - comctl32.lib;%(AdditionalDependencies) - 0x22010000 - $(ProfileDir)..\..\bin10\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Full - OnlyExplicitInline - Size - false - Level3 - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Use - metacontacts.h - true - false - false - true - - - $(IntDir)$(TargetName).lib - true - true - true - Windows - false - comctl32.lib;%(AdditionalDependencies) - 0x22010000 - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj.filters b/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj.filters deleted file mode 100644 index 68ef7fcc59..0000000000 --- a/plugins/!Deprecated/MetaContacts/MetaContacts_10.vcxproj.filters +++ /dev/null @@ -1,68 +0,0 @@ - - - - - {4a8bb46c-4423-42fc-9576-78cd8badfcff} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {a442bb73-5e8b-4eb0-b6c0-0534f3ca4b87} - h;hpp;hxx;hm;inl - - - {b4847f2a-7aa8-4577-a5a1-f7adf03537ec} - 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 - - - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj b/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj deleted file mode 100644 index 91a9fe5dca..0000000000 --- a/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj +++ /dev/null @@ -1,221 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - MetaContacts - {0007BE9F-DD4D-4E9B-B1C8-C5049538F862} - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Use - metacontacts.h - Level3 - EditAndContinue - Disabled - false - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;%(AdditionalDependencies) - true - false - $(IntDir)$(TargetName).lib - Windows - 0x22010000 - $(ProfileDir)..\..\bin12\lib - false - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - false - true - Fast - Use - metacontacts.h - Level3 - false - false - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - comctl32.lib;%(AdditionalDependencies) - true - 0x22010000 - false - $(IntDir)$(TargetName).lib - true - true - Windows - $(ProfileDir)..\..\bin12\lib - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - Disabled - Level3 - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Use - metacontacts.h - false - - - $(IntDir)$(TargetName).lib - true - Windows - false - comctl32.lib;%(AdditionalDependencies) - 0x22010000 - $(ProfileDir)..\..\bin12\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Full - OnlyExplicitInline - Size - false - Level3 - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Use - metacontacts.h - true - false - false - true - - - $(IntDir)$(TargetName).lib - true - true - true - Windows - false - comctl32.lib;%(AdditionalDependencies) - 0x22010000 - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj.filters b/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj.filters deleted file mode 100644 index 68ef7fcc59..0000000000 --- a/plugins/!Deprecated/MetaContacts/MetaContacts_12.vcxproj.filters +++ /dev/null @@ -1,68 +0,0 @@ - - - - - {4a8bb46c-4423-42fc-9576-78cd8badfcff} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {a442bb73-5e8b-4eb0-b6c0-0534f3ca4b87} - h;hpp;hxx;hm;inl - - - {b4847f2a-7aa8-4577-a5a1-f7adf03537ec} - 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 - - - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj b/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj deleted file mode 100644 index b4d76b9124..0000000000 --- a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {793B6174-89B0-4682-A957-A32BE7F61502} - Proto_MetaContacts - - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj.filters b/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj.filters deleted file mode 100644 index af73080618..0000000000 --- a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_10.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj b/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj deleted file mode 100644 index e2b2d3752a..0000000000 --- a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {793B6174-89B0-4682-A957-A32BE7F61502} - Proto_MetaContacts - - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - false - Unicode - v120_xp - - - DynamicLibrary - false - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj.filters b/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj.filters deleted file mode 100644 index af73080618..0000000000 --- a/plugins/!Deprecated/MetaContacts/proto_metacontacts/Proto_MetaContacts_12.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Away.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Away.ico deleted file mode 100644 index ec58bf2369..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Away.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/DND.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/DND.ico deleted file mode 100644 index 0f3c019483..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/DND.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/FFC.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/FFC.ico deleted file mode 100644 index dbe9292758..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/FFC.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Invisible.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Invisible.ico deleted file mode 100644 index e32aa49672..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Invisible.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Lunch.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Lunch.ico deleted file mode 100644 index 347b03474d..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Lunch.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/NA.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/NA.ico deleted file mode 100644 index e5e28a5b78..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/NA.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Occupied.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Occupied.ico deleted file mode 100644 index 585d356f01..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Occupied.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Offline.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Offline.ico deleted file mode 100644 index 64a5750fbc..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Offline.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Online.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Online.ico deleted file mode 100644 index 2e1fdcdf78..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Online.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Phone.ico b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Phone.ico deleted file mode 100644 index 899a340ec9..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Phone.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Proto_MetaContacts.rc b/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Proto_MetaContacts.rc deleted file mode 100644 index 26065a3aec..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/res/Proto_MetaContacts.rc and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/proto_metacontacts/src/resource.h b/plugins/!Deprecated/MetaContacts/proto_metacontacts/src/resource.h deleted file mode 100644 index 6a73a87039..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/proto_metacontacts/src/resource.h and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/MetaContacts.rc b/plugins/!Deprecated/MetaContacts/res/MetaContacts.rc deleted file mode 100644 index 836d0c8f05..0000000000 --- a/plugins/!Deprecated/MetaContacts/res/MetaContacts.rc +++ /dev/null @@ -1,263 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral (Default) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUD) -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_METASELECT, DIALOG - BEGIN - LEFTMARGIN, 3 - RIGHTMARGIN, 252 - TOPMARGIN, 4 - BOTTOMMARGIN, 252 - END - - IDD_METAEDIT, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 378 - TOPMARGIN, 4 - BOTTOMMARGIN, 255 - END - - IDD_OPTIONS, DIALOG - BEGIN - VERTGUIDE, 4 - VERTGUIDE, 9 - VERTGUIDE, 137 - VERTGUIDE, 173 - HORZGUIDE, 74 - END - - IDD_COPYPROGRESS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 179 - TOPMARGIN, 7 - BOTTOMMARGIN, 83 - END - - IDD_DELPROGRESS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 179 - TOPMARGIN, 7 - BOTTOMMARGIN, 83 - END - - IDD_PRIORITIES, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 259 - TOPMARGIN, 7 - BOTTOMMARGIN, 150 - END - - IDD_HISTORY, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 280 - TOPMARGIN, 7 - BOTTOMMARGIN, 102 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_METASELECT DIALOGEX 0, 0, 256, 259 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Add to Existing MetaContact" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CTEXT "Please select a MetaContact:",IDC_STATIC,27,11,201,14 - DEFPUSHBUTTON "&OK",IDOK,73,238,48,14 - PUSHBUTTON "&Cancel",IDCANCEL,133,238,48,14 - LISTBOX IDC_METALIST,44,28,168,168,LBS_NOINTEGRALHEIGHT | WS_VSCROLL - CONTROL "Sort Alphabetically",IDC_CHK_SRT,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,78,210,124,13 -END - -IDD_METAEDIT DIALOGEX 0, 0, 383, 260 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_STATICEDGE -CAPTION "Editing" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "&OK",IDOK,106,241,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,166,241,50,14 - LTEXT "Name:",IDC_STATIC,108,26,42,8 - GROUPBOX "Information",IDC_STATIC,5,4,373,45 - GROUPBOX "Contacts",IDC_FRAME,5,54,373,180 - PUSHBUTTON "&Apply",IDC_VALIDATE,226,241,50,14 - DEFPUSHBUTTON "&Remove",IDC_BTN_REM,53,181,50,14 - PUSHBUTTON "&Set as Default",IDC_BTN_SETDEFAULT,107,181,50,14 - PUSHBUTTON "Move &Up",IDC_BTN_UP,224,181,50,14 - PUSHBUTTON "Move &Down",IDC_BTN_DOWN,279,181,50,14 - EDITTEXT IDC_ED_NAME,158,23,135,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - CONTROL "List1",IDC_LST_CONTACTS,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,53,79,276,89,WS_EX_CLIENTEDGE - GROUPBOX "",IDC_STATIC,35,66,313,138 - CONTROL "Force use of default for sending (even if offline)",IDC_CHK_FORCEDEFAULT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,110,215,209,10 - PUSHBUTTON "Send &Offline",IDC_BTN_SETOFFLINE,161,181,50,14 -END - -IDD_OPTIONS DIALOGEX 0, 0, 298, 178 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - CONTROL "Set default contact on receipt of message",IDC_CHK_SETDEFAULTRECV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,9,290,10 - CONTROL "Always send to default contact if not offline",IDC_CHK_ALWAYSUSEDEFAULT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,31,290,10 - GROUPBOX "Options",IDC_STATIC,0,0,297,178 - CONTROL "Suppress status notification for subcontacts",IDC_CHK_SUPPRESSSTATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,42,290,10 - GROUPBOX "Context Menu",IDC_STATIC,4,79,289,58 - CONTROL "Use contact's unique ID",IDC_RAD_UID,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,100,112,10 - CONTROL "Use contact's display name",IDC_RAD_DID,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,114,112,10 - GROUPBOX "Contact Labels",IDC_STATIC,9,87,120,45,WS_GROUP - GROUPBOX "Function",IDC_STATIC,133,87,155,45,WS_GROUP - CONTROL "Set default and open message window",IDC_RAD_MSG,"Button",BS_AUTORADIOBUTTON | WS_GROUP,137,98,148,10 - CONTROL "Show subcontact context menu",IDC_RAD_MENU,"Button",BS_AUTORADIOBUTTON | WS_GROUP,137,108,148,10 - CONTROL "Show user information",IDC_RAD_INFO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,137,118,148,10 - GROUPBOX "Contact List",IDC_STATIC,4,139,289,33,WS_GROUP - CONTROL "Display subcontact nickname",IDC_RAD_NICK,"Button",BS_AUTORADIOBUTTON | WS_GROUP,9,149,144,10 - CONTROL "Display subcontact display name",IDC_RAD_NAME,"Button",BS_AUTORADIOBUTTON | WS_GROUP,9,160,144,10 - CONTROL "Use subcontact message windows",IDC_CHK_SUBWINDOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,64,155,10 - CONTROL "Copy subcontact data",IDC_CHK_COPYDATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,64,133,10 - CONTROL "Lock name to first contact",IDC_CHK_LOCKHANDLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,173,155,115,10 - CONTROL "but only for the current conversation",IDC_CHK_TEMPDEFAULT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,20,260,10 -END - -IDD_COPYPROGRESS DIALOG 0, 0, 186, 90 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION -CAPTION "History Copy" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "Progress1",IDC_PROG,"msctls_progress32",0x0,28,49,130,13 - CTEXT "Please wait while the contact's history is copied.",IDC_STATIC,3,27,182,8 -END - -IDD_DELPROGRESS DIALOG 0, 0, 186, 90 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION -CAPTION "History Remove" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "Progress1",IDC_PROG,"msctls_progress32",0x0,28,49,130,13 - CTEXT "Please wait while the contact's history is removed.",IDC_STATIC,3,27,182,8 -END - -IDD_PRIORITIES DIALOGEX 0, 0, 266, 157 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Subcontact Priorities",IDC_STATIC,7,7,252,143 - EDITTEXT IDC_ED_PRIORITY,157,78,40,14,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_SP_PRIORITY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,195,78,11,14 - RTEXT "Rank:",IDC_STATIC,42,81,49,8 - RTEXT "Status:",IDC_STATIC,30,57,61,8 - COMBOBOX IDC_CMB_STATUS,98,53,112,87,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - RTEXT "Protocol:",IDC_STATIC,30,31,61,8 - COMBOBOX IDC_CMB_PROTOCOL,98,28,112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Reset All",IDC_BTN_RESET,87,119,91,14 - CONTROL "Default",IDC_CHK_DEFAULT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,81,58,10 - CTEXT "(Lower ranks are preferred)",IDC_STATIC,51,99,162,8 -END - -IDD_HISTORY DIALOGEX 0, 0, 287, 109 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "Copy subcontact history to MetaContact when creating or adding",IDC_CHK_COPYHISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,23,258,10 - RTEXT "Number of days to copy (0=all):",IDC_STATIC,13,37,125,8 - EDITTEXT IDC_ED_DAYS,158,35,31,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Keep MetaContact history synchronized with subcontacts",IDC_CHK_METAHISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,60,258,10 - CONTROL "Keep subcontact history synchronized with MetaContact",IDC_CHK_SUBHISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,78,258,10 - GROUPBOX "History (** beware - change at your own risk **)",IDC_STATIC,7,7,273,95,WS_GROUP -END - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_MCMENU ICON "mcmenu.ico" -IDI_MCMENUOFF ICON "mcmenuof.ico" -IDI_MCEDIT ICON "meta_edit.ico" -IDI_MCREMOVE ICON "meta_remove2.ico" -IDI_MCCONVERT ICON "meta_convert.ico" -IDI_MCADD ICON "meta_add.ico" -IDI_MCSETDEFAULT ICON "meta_set_as_default.ico" -#endif // Neutral (Default) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/MetaContacts/res/mcmenu.ico b/plugins/!Deprecated/MetaContacts/res/mcmenu.ico deleted file mode 100644 index 2e1fdcdf78..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/mcmenu.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/mcmenuof.ico b/plugins/!Deprecated/MetaContacts/res/mcmenuof.ico deleted file mode 100644 index 779fe3db15..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/mcmenuof.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/meta_add.ico b/plugins/!Deprecated/MetaContacts/res/meta_add.ico deleted file mode 100644 index 814383341c..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/meta_add.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/meta_convert.ico b/plugins/!Deprecated/MetaContacts/res/meta_convert.ico deleted file mode 100644 index 51417bdb8c..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/meta_convert.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/meta_edit.ico b/plugins/!Deprecated/MetaContacts/res/meta_edit.ico deleted file mode 100644 index 9696507f31..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/meta_edit.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/meta_remove2.ico b/plugins/!Deprecated/MetaContacts/res/meta_remove2.ico deleted file mode 100644 index c05c19eb8f..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/meta_remove2.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/meta_set_as_default.ico b/plugins/!Deprecated/MetaContacts/res/meta_set_as_default.ico deleted file mode 100644 index e880efd0d1..0000000000 Binary files a/plugins/!Deprecated/MetaContacts/res/meta_set_as_default.ico and /dev/null differ diff --git a/plugins/!Deprecated/MetaContacts/res/version.rc b/plugins/!Deprecated/MetaContacts/res/version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/MetaContacts/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/!Deprecated/MetaContacts/src/addto.cpp b/plugins/!Deprecated/MetaContacts/src/addto.cpp deleted file mode 100644 index a97461eb4a..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/addto.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 addto.c -* -* Functions for the 'Add To' Dialog. -* Contains all the functions and all the structures -* needed to display and control the 'Add To' Dialog. -*/ -#include "metacontacts.h" - -//! Holds information about a contact. -typedef struct { - char *name; //!< Name of the contact - char *proto; //!< Protocol under which the contact has been registered - HANDLE hUser; //!< Identifier of the contact in the DB. -}USERINFO; - -//! Holds information for the callback function. -typedef struct { - USERINFO uInfo; //!< Information about the contact to add -}ADDTO_INFO; - -/** Adds all the metacontacts desired in the listview. -* -* Adds all the metacontacts present in the database in the list, -* -* @param list : \c HANDLE to the list which will contain the columns. -* @param nb_contacts : Number of loaded contacts. -* @param contacts : A list of the contacts' identifiers -* -* @param id : Reference to a list of the MetaContacts IDs loaded in the listview. -* Since this list is resized, its address must be passed. -* -* @return An integer specifying the number of rows added in the list. -*/ -int FillList(HWND list, BOOL sort) -{ - int i=0; - - // The DB is searched through, to get all the metacontacts - for (MCONTACT hMetaUser = db_find_first(); hMetaUser; hMetaUser = db_find_next(hMetaUser)) { - // if it's not a MetaContact, go to the next - if ( db_get_dw(hMetaUser, META_PROTO, META_ID, (DWORD)-1) == (DWORD)-1) - continue; - - // get contact display name from clist - TCHAR *swzContactDisplayName = pcli->pfnGetContactDisplayName(hMetaUser, GCDNF_TCHAR); - // don't insert huge strings that we have to compare with later - if (_tcslen(swzContactDisplayName) > 1023) - swzContactDisplayName[1024] = 0; - - int pos = -1; - if (sort) { - for (pos = 0; pos < i; pos++) { - TCHAR buff[1024]; - SendMessage(list, LB_GETTEXT, pos, (LPARAM)buff); - if ( _tcscmp(buff, swzContactDisplayName) > 0) { - break; - } - } - } - - int index = SendMessage(list, LB_INSERTSTRING, (WPARAM)pos, (LPARAM)swzContactDisplayName); - SendMessage(list, LB_SETITEMDATA, index, (LPARAM)hMetaUser); - - i++; - } - return i; -} - -/** Build or update the list. -* -* @param list : \c HANDLE to the list which will contain the columns -* @param id : Reference to a list that will contain all the MetaContacts IDs loaded in the listview -* otherwise the list is only refilled \n (Warning : this value must be -* set to \c TRUE only once per Dialog display, otherwise all columns will be doubled) -* -* @returns An integer specifying the number of rows inserted or \c -1 if there was a problem -*/ - -int BuildList(HWND list, BOOL sort) -{ - SendMessage(list, LB_RESETCONTENT, 0, 0); - return FillList(list, sort); -} - -/** Callback function for the 'Add To' Dialog. -* -* All the UI is controlled here, from display to functionnalities. -* -* @param hwndDlg : \c HANDLE to the 'Add To' \c Dialog. -* @param uMsg : Specifies the message received by this dialog. -* @param wParam : Specifies additional message-specific information. -* @param lParam : Specifies additional message-specific information. -* -* @return \c TRUE if the dialog processed the message, \c FALSE if it did not. -*/ - -#define szConvMsg LPGEN("Either there is no MetaContact in the database (in this case you should first convert a contact into one)\n\ -or there is none that can host this contact.\n\ -Another solution could be to convert this contact into a new MetaContact.\n\nConvert this contact into a new MetaContact?") - -INT_PTR CALLBACK Meta_SelectDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - - if ( db_get_dw(lParam, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) { - MessageBox(hwndDlg, - TranslateT("This contact is a MetaContact.\nYou can't add a MetaContact to another MetaContact.\n\nPlease choose another."), - TranslateT("MetaContact Conflict"),MB_ICONERROR); - DestroyWindow(hwndDlg); - return TRUE; - } - - if ( db_get_dw(lParam, META_PROTO, META_LINK, (DWORD)-1) != (DWORD)-1) { - MessageBox(hwndDlg, - TranslateT("This contact is already associated to a MetaContact.\nYou cannot add a contact to multiple MetaContacts."), - TranslateT("Multiple MetaContacts"),MB_ICONERROR); - DestroyWindow(hwndDlg); - return TRUE; - } - - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); // user data is contact handle - - SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_ADD)); - - // Initialize the graphical part - CheckDlgButton(hwndDlg, IDC_ONLYAVAIL, BST_CHECKED); // Initially checked; display all metacontacts is only an option - // Besides, we can check if there is at least one metacontact to add the contact to. - if ( BuildList(GetDlgItem(hwndDlg, IDC_METALIST), FALSE) <= 0) { - if ( MessageBox(hwndDlg, TranslateT(szConvMsg), TranslateT("No suitable MetaContact found"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1) == IDYES) - Meta_Convert((WPARAM)lParam,0); - DestroyWindow(hwndDlg); - return TRUE; - } - else { - // get contact display name from clist - TCHAR *ptszCDN = pcli->pfnGetContactDisplayName(lParam, GCDNF_TCHAR); - if (!ptszCDN) - ptszCDN = TranslateT("a contact"); - - // ... and set it to the Window title. - TCHAR buf[256]; - mir_sntprintf(buf, SIZEOF(buf), TranslateT("Adding %s..."), ptszCDN); - SetWindowText(hwndDlg, buf); - } - ShowWindow(hwndDlg,SW_SHOWNORMAL); - return TRUE; - - case WM_COMMAND: - if (HIWORD(wParam)!=BN_CLICKED) - break; // Only clicks of buttons are relevant, let other COMMANDs through - - switch(LOWORD(wParam)) { - case IDOK: - { - int item = SendMessage(GetDlgItem(hwndDlg, IDC_METALIST),LB_GETCURSEL, 0, 0); // Get the index of the selected metacontact - if (item == -1) - return IDOK == MessageBox(hwndDlg, TranslateT("Please select a MetaContact"), TranslateT("No MetaContact selected"), MB_ICONHAND); - - MCONTACT hContact = (MCONTACT)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - MCONTACT hMeta = (MCONTACT)SendMessage(GetDlgItem(hwndDlg, IDC_METALIST), LB_GETITEMDATA, (WPARAM)item, 0); - if (!Meta_Assign(hContact, hMeta, FALSE)) - MessageBox(hwndDlg, TranslateT("Assignment to the MetaContact failed."), TranslateT("Assignment failure"),MB_ICONERROR); - } - case IDCANCEL: - DestroyWindow(hwndDlg); - break; - - case IDC_CHK_SRT: - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE) ^ LBS_SORT); - if (BuildList(GetDlgItem(hwndDlg,IDC_METALIST), IsDlgButtonChecked(hwndDlg, IDC_CHK_SRT) ? TRUE : FALSE) <= 0) { - if (MessageBox(hwndDlg, TranslateT(szConvMsg), TranslateT("No suitable MetaContact found"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1) == IDYES) - Meta_Convert((WPARAM)lParam, 0); - DestroyWindow(hwndDlg); - return TRUE; - } - break; - } - break; - - case WM_DESTROY: - // Free all allocated memory and return the focus to the CList - HWND clist = GetParent(hwndDlg); - Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - EndDialog(hwndDlg,TRUE); - SetFocus(clist); - return TRUE; - } - return FALSE; // All other Message are not handled -} diff --git a/plugins/!Deprecated/MetaContacts/src/edit.cpp b/plugins/!Deprecated/MetaContacts/src/edit.cpp deleted file mode 100644 index 7a1a2cc303..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/edit.cpp +++ /dev/null @@ -1,465 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 edit.c -* -* Functions for the 'Edit' Dialog. -* Contains all the functions and all the structures -* needed to display and control the 'Edit' Dialog. -*/ - -#include "metacontacts.h" - -//! Holds the differents changes that have to made -typedef struct tag_CHANGES { - MCONTACT hMeta; //!< \c HANDLE of the MetaContact that is edited. - MCONTACT hDefaultContact; //!< \c HANDLE of the new default contact - MCONTACT hOfflineContact; - int num_deleted, //!< \c DWORD number of deleted contacts - num_contacts; //!< \c DWORD number of contacts - MCONTACT hDeletedContacts[MAX_CONTACTS]; //!< \c HANDLEs of the subcontacts to be removed from this metacontact - MCONTACT hContact[MAX_CONTACTS]; //!< \c HANDLEs of the subcontacts, in the order they should be in - int force_default; -} CHANGES; - -CHANGES changes; //!< \c global CHANGES structure - -/** Fills the list of contacts -* -* @param chg : Structure holding all the change info (See CHANGES). -*/ - -void FillContactList(HWND hWndDlg, CHANGES *chg) -{ - HWND hList = GetDlgItem(hWndDlg, IDC_LST_CONTACTS); - TCHAR buff[256]; - - SendMessage(hList, LVM_DELETEALLITEMS, 0, 0); - - LVITEM LvItem = { 0 }; - LvItem.mask = LVIF_TEXT; // Text Style - LvItem.cchTextMax = 256; // Max size of test - - for (int i = 0; i < chg->num_contacts; i++) { - LvItem.iItem = i; - - TCHAR *ptszCDN = pcli->pfnGetContactDisplayName(chg->hContact[i], GCDNF_TCHAR); - if (ptszCDN == NULL) - ptszCDN = TranslateT("(Unknown Contact)"); - - LvItem.iSubItem = 0; // clist display name - LvItem.pszText = ptszCDN; - ListView_InsertItem(hList, &LvItem); - - LvItem.iSubItem = 1; // id - char *szProto = GetContactProto(chg->hContact[i]); - if (szProto) { - char *szField = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0); - - DBVARIANT dbv; - if ( !db_get(chg->hContact[i], szProto, szField, &dbv)) { - switch(dbv.type) { - case DBVT_ASCIIZ: - _tcsncpy(buff, _A2T(dbv.pszVal), SIZEOF(buff)); - break; - case DBVT_WCHAR: - _tcsncpy(buff, dbv.ptszVal, SIZEOF(buff)); - break; - case DBVT_BYTE: - _itot(dbv.bVal, buff, 10); - break; - case DBVT_WORD: - _itot(dbv.wVal, buff, 10); - break; - case DBVT_DWORD: - _itot(dbv.dVal, buff, 10); - break; - default: - buff[0] = 0; - } - db_free(&dbv); - } - else buff[0] = 0; - - LvItem.pszText = buff; - SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems - - LvItem.iSubItem = 2; // protocol - _tcsncpy(buff, _A2T(szProto), SIZEOF(buff)); - ListView_SetItem(hList, &LvItem); - } - else { - LvItem.pszText = _T("Unknown"); - ListView_SetItem(hList, &LvItem); - - LvItem.iSubItem = 2; // protocol - ListView_SetItem(hList, &LvItem); - } - LvItem.iSubItem = 3; // Default (Yes/No) - LvItem.pszText = (chg->hContact[i] == chg->hDefaultContact ? TranslateT("Yes") : TranslateT("No")); - ListView_SetItem(hList, &LvItem); - - LvItem.iSubItem = 4; // Offline (Yes/No) - LvItem.pszText = (chg->hContact[i] == chg->hOfflineContact ? TranslateT("Yes") : TranslateT("No")); - ListView_SetItem(hList, &LvItem); - } -} - -void SetListSelection(HWND hList, int sel) -{ - ListView_SetItemState(hList, sel, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); -} - -/** Scans the \c CHANGES and call the appropriate function for each change. -* -* @param chg : Structure holding all the change info (See CHANGES). -*/ - -void ApplyChanges(CHANGES *chg) -{ - int i; - - // remove removed contacts - for (i = 0; i < chg->num_deleted; i++) { - Meta_Delete((WPARAM)chg->hDeletedContacts[i], 0); - if (chg->hDeletedContacts[i] == chg->hDefaultContact) - chg->hDefaultContact = 0; - if (chg->hDeletedContacts[i] == chg->hOfflineContact) - chg->hOfflineContact = 0; - } - - // set contact positions - for (i = 0; i < chg->num_contacts; i++) { - if (Meta_GetContactNumber(chg->hContact[i]) != i) - Meta_SwapContacts(chg->hMeta, Meta_GetContactNumber(chg->hContact[i]), i); - } - - NotifyEventHooks(hSubcontactsChanged, (WPARAM)chg->hMeta, (LPARAM)chg->hDefaultContact); - - // set default - if (chg->hDefaultContact) - db_set_dw(chg->hMeta, META_PROTO, "Default", Meta_GetContactNumber(chg->hDefaultContact)); - else - db_set_dw(chg->hMeta, META_PROTO, "Default", 0); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)chg->hMeta, (LPARAM)chg->hDefaultContact); - - // set offline - if (chg->hOfflineContact) - db_set_dw(chg->hMeta, META_PROTO, "OfflineSend", Meta_GetContactNumber(chg->hOfflineContact)); - else - db_set_dw(chg->hMeta, META_PROTO, "OfflineSend", (DWORD)-1); - - // fix nick - MCONTACT most_online = Meta_GetMostOnline(chg->hMeta); - Meta_CopyContactNick(chg->hMeta, most_online); - - // fix status - Meta_FixStatus(chg->hMeta); - - // fix avatar - most_online = Meta_GetMostOnlineSupporting(chg->hMeta, PFLAGNUM_4, PF4_AVATARS); - if (most_online) { - PROTO_AVATAR_INFORMATIONT AI; - - AI.cbSize = sizeof(AI); - AI.hContact = chg->hMeta; - AI.format = PA_FORMAT_UNKNOWN; - _tcscpy(AI.filename, _T("X")); - - if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS) - db_set_ts(chg->hMeta, "ContactPhoto", "File",AI.filename); - } - - if (MetaAPI_GetForceState((WPARAM)chg->hMeta, 0) != chg->force_default) - MetaAPI_ForceDefault((WPARAM)chg->hMeta, 0); -} - -LRESULT ProcessCustomDraw (LPARAM lParam) -{ - LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam; - switch(lplvcd->nmcd.dwDrawStage) { - case CDDS_PREPAINT : //Before the paint cycle begins - //request notifications for individual listview items - return CDRF_NOTIFYITEMDRAW; - - case CDDS_ITEMPREPAINT: //Before an item is drawn - if (changes.hContact[(int)lplvcd->nmcd.dwItemSpec] == changes.hDefaultContact) { - lplvcd->clrText = RGB(255, 0, 0); - } - return CDRF_NEWFONT; - } - - return 0; -} - -/** Callback function for the 'Edit' Dialog. -* -* All the UI is controlled here, from display to functionnalities. -* -* @param hwndDlg : \c HANDLE to the 'Edit' \c Dialog. -* @param uMsg : Specifies the message received by this dialog. -* @param wParam : Specifies additional message-specific information. -* @param lParam : Specifies additional message-specific information (handle of MetaContact to edit) -* -* @return \c TRUE if the dialog processed the message, \c FALSE if it did not. -*/ - -#define WMU_SETTITLE (WM_USER + 1) - -INT_PTR CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hwnd; - int sel, i; - - switch(msg) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_EDIT)); - { - // Disable the 'Apply' button. - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),FALSE); - - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - ListView_SetExtendedListViewStyle(hwnd, LVS_EX_FULLROWSELECT); - - // Create list columns - LVCOLUMN LvCol = { 0 }; - LvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; - - LvCol.pszText = TranslateT("Contact"); - LvCol.cx = 100; - ListView_InsertColumn(hwnd, 0, &LvCol); - - LvCol.pszText = TranslateT("ID"); - LvCol.cx = 130; - ListView_InsertColumn(hwnd, 1, &LvCol); - - LvCol.pszText = TranslateT("Protocol"); - LvCol.cx = 100; - ListView_InsertColumn(hwnd, 2, &LvCol); - - LvCol.pszText = TranslateT("Default"); - LvCol.cx = 60; - ListView_InsertColumn(hwnd, 3, &LvCol); - - LvCol.pszText = TranslateT("Send Offline"); - LvCol.cx = 85; - ListView_InsertColumn(hwnd, 4, &LvCol); - - // disable buttons until a selection is made in the list - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), FALSE); - - int nb_contacts = db_get_dw(lParam, META_PROTO, "NumContacts", 0); - int default_contact_number = db_get_dw(lParam, META_PROTO, "Default", (DWORD)-1); - int offline_contact_number = db_get_dw(lParam, META_PROTO, "OfflineSend", (DWORD)-1); - - changes.hMeta = lParam; - changes.num_contacts = nb_contacts; - changes.num_deleted = 0; - changes.hDefaultContact = Meta_GetContactHandle(lParam, default_contact_number); - changes.hOfflineContact = Meta_GetContactHandle(lParam, offline_contact_number); - for (i = 0; i < nb_contacts; i++) - changes.hContact[i] = Meta_GetContactHandle(lParam, i); - changes.force_default = MetaAPI_GetForceState((WPARAM)lParam, 0); - - SendMessage(hwndDlg, WMU_SETTITLE, 0, lParam); - - CheckDlgButton(hwndDlg, IDC_CHK_FORCEDEFAULT, changes.force_default); - - FillContactList(hwndDlg, &changes); - } - return TRUE; - - case WMU_SETTITLE: - { - TCHAR *ptszCDN = pcli->pfnGetContactDisplayName(lParam, GCDNF_TCHAR); - if (ptszCDN == NULL) - ptszCDN = TranslateT("(Unknown Contact)"); - - SetWindowText(GetDlgItem(hwndDlg, IDC_ED_NAME), ptszCDN); - } - return TRUE; - - case WM_NOTIFY: // the message that is being sent always - switch(LOWORD(wParam)) { // hit control - case IDC_LST_CONTACTS: // did we hit our ListView contorl? - if (((LPNMHDR)lParam)->code == NM_CLICK) { - sel = ListView_GetNextItem(GetDlgItem(hwndDlg, IDC_LST_CONTACTS), -1, LVNI_FOCUSED|LVNI_SELECTED); // return item selected - - // enable buttons - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), sel != -1); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), sel != -1 && changes.hContact[sel] != changes.hDefaultContact); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), sel != -1 && changes.hContact[sel] != changes.hOfflineContact); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), sel > 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel != -1 && sel < changes.num_contacts - 1)); - } - } - break; - - case WM_COMMAND: - switch(HIWORD(wParam)) { - case BN_CLICKED: // A button ('Remove', 'OK', 'Cancel' or 'Apply', normally) has been clicked - switch(LOWORD(wParam)) { - case IDC_VALIDATE: // Apply changes, if there is still one contact attached to the metacontact. - if (changes.num_contacts == 0) { // Otherwise, delete the metacontact. - if (IDYES == MessageBox(hwndDlg, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1)) { - Meta_Delete((WPARAM)changes.hMeta, 0); - DestroyWindow(hwndDlg); - } - return TRUE; - } - ApplyChanges(&changes); - - // Disable the 'Apply' button. - EnableWindow(GetDlgItem(hwndDlg, IDC_VALIDATE), FALSE); - break; - - case IDOK: - if ( IsWindowEnabled(GetDlgItem(hwndDlg, IDC_VALIDATE))) { // If there are changes that could be made, - if (changes.num_contacts == 0) { // do the work that would have be done if the 'Apply' button was clicked. - if (IDYES == MessageBox(hwndDlg, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1)) { - Meta_Delete((WPARAM)changes.hMeta,0); - DestroyWindow(hwndDlg); - } - return TRUE; - } - ApplyChanges(&changes); - } - EndDialog(hwndDlg, IDOK); - return TRUE; - - case IDCANCEL: // Simply close the dialog - EndDialog(hwndDlg, IDCANCEL); - return TRUE; - - case IDC_BTN_SETDEFAULT: - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - InvalidateRect(hwnd, 0, TRUE); - changes.hDefaultContact = changes.hContact[sel]; - SendMessage(hwndDlg, WMU_SETTITLE, 0, (LPARAM)changes.hContact[sel]); - - FillContactList(hwndDlg, &changes); - SetListSelection(hwnd, sel); - EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETDEFAULT),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - - case IDC_BTN_SETOFFLINE: - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - InvalidateRect(hwnd, 0, TRUE); - changes.hOfflineContact = changes.hContact[sel]; - - FillContactList(hwndDlg, &changes); - SetListSelection(hwnd, sel); - EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETOFFLINE),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - - case IDC_BTN_REM: - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - changes.num_contacts--; - changes.hDeletedContacts[changes.num_deleted++] = changes.hContact[sel]; - if (changes.hDefaultContact == changes.hContact[sel]) { - if (changes.num_contacts > 0) { - changes.hDefaultContact = changes.hContact[0]; - SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT), pcli->pfnGetContactDisplayName(changes.hDefaultContact, GCDNF_TCHAR)); - } - else { - changes.hDefaultContact = 0; - SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT), _T("None")); - } - } - - for (i = sel; i < changes.num_contacts; i++) - changes.hContact[i] = changes.hContact[i + 1]; - FillContactList(hwndDlg, &changes); - - // disable buttons - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), FALSE); - - // Enable the 'Apply' button. - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - - case IDC_BTN_UP: - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - { - MCONTACT temp = changes.hContact[sel]; - changes.hContact[sel] = changes.hContact[sel - 1]; - changes.hContact[sel-1] = temp; - } - FillContactList(hwndDlg, &changes); - sel--; - SetListSelection(hwnd, sel); - - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), (sel > 0)); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel < changes.num_contacts - 1)); - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - - case IDC_BTN_DOWN: - hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS); - sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - { - MCONTACT temp = changes.hContact[sel]; - changes.hContact[sel] = changes.hContact[sel + 1]; - changes.hContact[sel + 1] = temp; - } - FillContactList(hwndDlg, &changes); - sel++; - SetListSelection(hwnd, sel); - - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), (sel > 0)); - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel < changes.num_contacts - 1)); - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - - case IDC_CHK_FORCEDEFAULT: - changes.force_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_FORCEDEFAULT); - EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE); - return TRUE; - } - } - break; - - case WM_CLOSE: - DestroyWindow(hwndDlg); - return TRUE; - - case WM_DESTROY: - Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - EndDialog(hwndDlg, IDCANCEL); - break; - } - - return FALSE; -} diff --git a/plugins/!Deprecated/MetaContacts/src/icons.cpp b/plugins/!Deprecated/MetaContacts/src/icons.cpp deleted file mode 100644 index 508fe50425..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/icons.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "metacontacts.h" - -static IconItem iconList[] = { - { LPGEN("Toggle Off"), "off", IDI_MCMENUOFF }, - { LPGEN("Toggle On"), "on", IDI_MCMENU }, - { LPGEN("Convert to MetaContact"), "convert", IDI_MCCONVERT }, - { LPGEN("Add to Existing"), "add", IDI_MCADD }, - { LPGEN("Edit"), "edit", IDI_MCEDIT }, - { LPGEN("Set to Default"), "default", IDI_MCSETDEFAULT }, - { LPGEN("Remove"), "remove", IDI_MCREMOVE }, -}; - -HANDLE GetIconHandle(IconIndex i) -{ - return iconList[i].hIcolib; -} - -HICON LoadIconEx(IconIndex i) -{ - return Skin_GetIcon(iconList[i].szName); -} - -void InitIcons(void) -{ - Icon_Register(hInstance, META_PROTO, iconList, SIZEOF(iconList), "mc"); -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_api.cpp b/plugins/!Deprecated/MetaContacts/src/meta_api.cpp deleted file mode 100644 index 600249cefb..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_api.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. -Copyright © 2004 Scott Ellis (www.scottellis.com.au mail@scottellis.com.au) - -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 meta_api.c -* -* API functions needed to handle MetaContacts. -* Centralizes functions called by other plugins. -*/ - -#include "metacontacts.h" - -//get the handle for a contact's parent metacontact -//wParam=(HANDLE)hSubContact -//lParam=0 -//returns a handle to the parent metacontact, or null if this contact is not a subcontact -INT_PTR MetaAPI_GetMeta(WPARAM wParam, LPARAM lParam) { - return (INT_PTR)(HANDLE)db_get_dw(wParam, META_PROTO, "Handle", 0); -} - -//gets the handle for the default contact -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns a handle to the default contact, or null on failure -INT_PTR MetaAPI_GetDefault(WPARAM wParam, LPARAM lParam) { - DWORD default_contact_number = db_get_dw(wParam, META_PROTO, "Default", -1); - if (default_contact_number != -1) { - return (INT_PTR)Meta_GetContactHandle(wParam, default_contact_number); - } - return 0; -} - -//gets the contact number for the default contact -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns a DWORD contact number, or -1 on failure -INT_PTR MetaAPI_GetDefaultNum(WPARAM wParam, LPARAM lParam) { - return db_get_dw(wParam, META_PROTO, "Default", -1); -} - -//gets the handle for the 'most online' contact -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns a handle to the 'most online' contact -INT_PTR MetaAPI_GetMostOnline(WPARAM wParam, LPARAM lParam) { - return (INT_PTR)Meta_GetMostOnline(wParam); -} - -//gets the number of subcontacts for a metacontact -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns a DWORD representing the number of subcontacts for the given metacontact -INT_PTR MetaAPI_GetNumContacts(WPARAM wParam, LPARAM lParam) { - DWORD num_contacts = db_get_dw(wParam, META_PROTO, "NumContacts", -1); - return num_contacts; -} - -//gets the handle of a subcontact, using the subcontact's number -//wParam=(HANDLE)hMetaContact -//lParam=(DWORD)contact number -//returns a handle to the specified subcontact -INT_PTR MetaAPI_GetContact(WPARAM wParam, LPARAM lParam) { - return (INT_PTR)Meta_GetContactHandle(wParam, (DWORD)lParam); -} - -//sets the default contact, using the subcontact's contact number -//wParam=(HANDLE)hMetaContact -//lParam=(DWORD)contact number -//returns 0 on success -INT_PTR MetaAPI_SetDefaultContactNum(WPARAM wParam, LPARAM lParam) { - DWORD num_contacts = db_get_dw(wParam, META_PROTO, "NumContacts", -1); - if (num_contacts == -1) - return 1; - if ((DWORD)lParam >= num_contacts || (DWORD)lParam < 0) - return 1; - if (db_set_dw(wParam, META_PROTO, "Default", (DWORD)lParam)) - return 1; - - NotifyEventHooks(hEventDefaultChanged, wParam, (LPARAM)Meta_GetContactHandle(wParam, (int)lParam)); - return 0; -} - -//sets the default contact, using the subcontact's handle -//wParam=(HANDLE)hMetaContact -//lParam=(HANDLE)hSubcontact -//returns 0 on success -INT_PTR MetaAPI_SetDefaultContact(WPARAM wParam, LPARAM lParam) { - MCONTACT hMeta = (MCONTACT)db_get_dw(lParam, META_PROTO, "Handle", 0); - DWORD contact_number = Meta_GetContactNumber(lParam); - if (contact_number == -1 || !hMeta || hMeta != wParam) - return 1; - if (db_set_dw(hMeta, META_PROTO, "Default", contact_number)) - return 1; - - NotifyEventHooks(hEventDefaultChanged, wParam, lParam); - return 0; -} - -//forces the metacontact to send using a specific subcontact, using the subcontact's contact number -//wParam=(HANDLE)hMetaContact -//lParam=(DWORD)contact number -//returns 0 on success -INT_PTR MetaAPI_ForceSendContactNum(WPARAM wParam, LPARAM lParam) { - MCONTACT hContact = Meta_GetContactHandle(wParam, (int)lParam); - MCONTACT hMeta = (MCONTACT)db_get_dw(hContact, META_PROTO, "Handle", 0); - if (!hContact || !hMeta || hMeta != wParam || db_get_b(hMeta, META_PROTO, "ForceDefault", 0)) - return 1; - - db_set_dw(hMeta, META_PROTO, "ForceSend", (DWORD)hContact); - - NotifyEventHooks(hEventForceSend, wParam, (LPARAM)hContact); - return 0; -} - -//forces the metacontact to send using a specific subcontact, using the subcontact's handle -//wParam=(HANDLE)hMetaContact -//lParam=(HANDLE)hSubcontact -//returns 0 on success (will fail if 'force default' is in effect) -INT_PTR MetaAPI_ForceSendContact(WPARAM wParam, LPARAM lParam) { - MCONTACT hContact = lParam; - MCONTACT hMeta = (MCONTACT)db_get_dw(hContact, META_PROTO, "Handle", 0); - if (!hContact || !hMeta || hMeta != wParam || db_get_b(hMeta, META_PROTO, "ForceDefault", 0)) - return 1; - - db_set_dw(hMeta, META_PROTO, "ForceSend", (DWORD)hContact); - - NotifyEventHooks(hEventForceSend, wParam, lParam); - return 0; -} - -//'unforces' the metacontact to send using a specific subcontact -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns 0 on success (will fail if 'force default' is in effect) -INT_PTR MetaAPI_UnforceSendContact(WPARAM wParam, LPARAM lParam) { - if (db_get_b(wParam, META_PROTO, "ForceDefault", 0)) - return 1; - - db_set_dw(wParam, META_PROTO, "ForceSend", 0); - - NotifyEventHooks(hEventUnforceSend, wParam, lParam); - return 0; -} - - -//'forces' or 'unforces' (i.e. toggles) the metacontact to send using it's default contact -// overrides 'force send' above, and will even force use of offline contacts -// will send ME_MC_FORCESEND event -//wParam=(HANDLE)hMetaContact -//lParam=0 -//returns 1(true) or 0(false) representing new state of 'force default' -INT_PTR MetaAPI_ForceDefault(WPARAM wParam, LPARAM lParam) { - // forward to menu function - Meta_ForceDefault(wParam, lParam); - return db_get_b(wParam, META_PROTO, "ForceDefault", 0); -} - -// method to get state of 'force' for a metacontact -// wParam=(HANDLE)hMetaContact -// lParam= (DWORD)&contact_number or NULL -// if lparam supplied, the contact_number of the contatct 'in force' will be copied to the address it points to, -// or if none is in force, the value (DWORD)-1 will be copied -// (v0.8.0.8+ returns 1 if 'force default' is true with *lParam == default contact number, else returns 0 with *lParam as above) -INT_PTR MetaAPI_GetForceState(WPARAM wParam, LPARAM lParam) { - MCONTACT hMeta = wParam; - if ( !hMeta) return 0; - - if (db_get_b(hMeta, META_PROTO, "ForceDefault", 0)) { - if (lParam) *(DWORD *)lParam = db_get_dw(wParam, META_PROTO, "Default", -1); - return 1; - } - - MCONTACT hContact = (MCONTACT)db_get_dw(hMeta, META_PROTO, "ForceSend", 0); - if ( !hContact) { - if (lParam) *(DWORD *)lParam = -1; - } else { - if (lParam) *(DWORD *)lParam = (DWORD)Meta_GetContactNumber(hContact); - } - - return 0; -} - -// method to get protocol name - used to be sure you're dealing with a "real" metacontacts plugin :) -// wParam=lParam=0 -INT_PTR MetaAPI_GetProtoName(WPARAM wParam, LPARAM lParam) { - return (INT_PTR)META_PROTO; -} - -// added 0.9.5.0 (22/3/05) -// wParam=(HANDLE)hContact -// lParam=0 -// convert a given contact into a metacontact -INT_PTR MetaAPI_ConvertToMeta(WPARAM wParam, LPARAM lParam) { - return Meta_Convert(wParam, lParam); -} - -// added 0.9.5.0 (22/3/05) -// wParam=(HANDLE)hContact -// lParam=(HANDLE)hMeta -// add an existing contact to a metacontact -INT_PTR MetaAPI_AddToMeta(WPARAM wParam, LPARAM lParam) { - return Meta_Assign(wParam, lParam, FALSE); -} - -// added 0.9.5.0 (22/3/05) -// wParam=0 -// lParam=(HANDLE)hContact -// remove a contact from a metacontact -INT_PTR MetaAPI_RemoveFromMeta(WPARAM wParam, LPARAM lParam) { - // notice we switch args - to keep the API function consistent with the others - return Meta_Delete((WPARAM)lParam, (LPARAM)wParam); -} - -// added 0.9.13.2 (6/10/05) -// wParam=(BOOL)disable -// lParam=0 -// enable/disable the 'hidden group hack' - for clists that support subcontact hiding using 'IsSubcontact' setting -// should be called once in your 'onmodulesloaded' event handler - -BOOL meta_group_hack_disabled = FALSE; // this global flag is used in utils 'SetGroup' function - -INT_PTR MetaAPI_DisableHiddenGroup(WPARAM wParam, LPARAM lParam) { - meta_group_hack_disabled = (BOOL)wParam; - return 0; -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_main.cpp b/plugins/!Deprecated/MetaContacts/src/meta_main.cpp deleted file mode 100644 index 6f245ff501..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_main.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 meta_main.c -* -* Functions used by Miranda to launch the plugin. -* Centralizes functions needed by Miranda to get -* information about the plugin and to initialize it -* and to dispose of it properly. -*/ - -/*! \mainpage MetaContacts plugin - * \image html ulp.gif - * \section desc Description - * This library is a plugin for Miranda IM.\n - * It allows the user to group several contacts from different - * protocols (such as AIM or ICQ) into one unique metacontact.\n - * - * \section principle How does it work ? - * Only one protocol will be used at a time (the default protocol).\n - * This protocol is referenced in the proper field of the MetaContact - * section in the Database. - * - * \subsection send Emission of messages - * The plugin will search through the Database to get the default protocol - * (i.e. the protocol used to communicate with),\n and then call the Send function - * provided by this protocol. - * - * \subsection recv Reception of messages - * When a contact is converted to a metacontact, or when it is added to an existing - * metacontact, it gets a pseudo protocol \n (named "MetaContacts") in the protocol chain.\n - * Usually, when a message is received, all the protocols in the chain get this message, - * the real protocol (for example ICQ) at the end.\n But here, the message will be intercepted - * by the MetaContact protocol, which will inhibit the further reception.\n The message will - * then be redirected to the MetaContact, that will display it normally. - * - * \subsection handling Handling MetaContacts - * There are four functionnality for handling MetaContacts : - * \li Convert a contact to a MetaContact. - * \li Add a contact to an existing MetaContact. - * \li Edit a MetaContact. - * \li Delete a MetaContact. - * - * They all are accessible via the context-menu displayed when a right click has occured, - * but not at the same time : The 2 first will appear when the menu concerns a simple contact.\n - * whereas the 2 last are only accessible from a MetaContact.\n - * Those functions are self-explanatory, and a MessageBox is shown before any modification, so, for - * further information, take a look at the Dialogs shown when they are called.\n - * - * \section cvats Caveats - * Several functionnalities have not yet been developped : - * \li Assigning contacts by Drag'n'Drop - * \li Updating dynamically the status of the MetaContact - * \li Merging history of all the contacts attached to MetaContact - * \li Handling Files and URLs as well as Messages - * \li and some other little functionnalities... - * - * Some of those functionnalities will not be developped due to the architecture - * of Miranda (the 2 first, for example) - * - * \section mail Contact - * For any comment, suggestion or question, send a mail to shaalj@free.fr.\n - * This code is provided as-is, and I cannot be held responsible for any harm - * done to your database by this plugin.\n - * Test it first on a fake database before using it normally. - */ - -#include "metacontacts.h" - -BOOL os_unicode_enabled = FALSE; -int hLangpack; -CLIST_INTERFACE *pcli = NULL; - -//! Information gathered by Miranda, displayed in the plugin pane of the Option Dialog -PLUGININFOEX pluginInfo={ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {4C4A27CF-5E64-4242-A332-B98B08243E89} - {0x4c4a27cf, 0x5e64, 0x4242, {0xa3, 0x32, 0xb9, 0x8b, 0x8, 0x24, 0x3e, 0x89}} -}; - -HINSTANCE hInstance; //!< Global reference to the application - -/** Called by Miranda to get the information associated to this plugin. -* It only returns the PLUGININFO structure, without any test on the version -* @param mirandaVersion The version of the application calling this function -*/ -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_PROTOCOL, MIID_LAST}; - -/** DLL entry point -* Required to store the instance handle -*/ -BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) -{ - hInstance = hinstDLL; - return TRUE; -} - -/** Prepare the plugin to stop -* Called by Miranda when it will exit or when the plugin gets deselected -*/ -extern "C" __declspec(dllexport) int Unload(void) -{ - // see also meta_services.c, Meta_PreShutdown - Meta_CloseHandles(); - //MessageBox(0, "Unload complete", "MC", MB_OK); - return 0; -} - -/** Initializes the services provided and the link to those needed -* Called when the plugin is loaded into Miranda -*/ -extern "C" __declspec(dllexport) int Load(void) -{ - mir_getLP(&pluginInfo); - mir_getCLI(); - - db_set_resident(META_PROTO, "Status"); - db_set_resident(META_PROTO, "IdleTS"); - db_set_resident(META_PROTO, "ContactCountCheck"); - db_set_resident(META_PROTO, "Handle"); - db_set_resident(META_PROTO, "WindowOpen"); - - //set all contacts to 'offline', and initialize subcontact counter for db consistency check - for (MCONTACT hContact = db_find_first(META_PROTO); hContact; hContact = db_find_next(hContact, META_PROTO)) { - db_set_w(hContact, META_PROTO, "Status", ID_STATUS_OFFLINE); - db_set_dw(hContact, META_PROTO, "IdleTS", 0); - db_set_b(hContact, META_PROTO, "ContactCountCheck", 0); - - // restore any saved defaults that might have remained if miranda was closed or crashed while a convo was happening - if (db_get_dw(hContact, META_PROTO, "SavedDefault", (DWORD)-1) != (DWORD)-1) { - db_set_dw(hContact, META_PROTO, "Default", db_get_dw(hContact, META_PROTO, "SavedDefault", 0)); - db_set_dw(hContact, META_PROTO, "SavedDefault", (DWORD)-1); - } - } - - Meta_ReadOptions(&options); - - // sets subcontact handles to metacontacts, and metacontact handles to subcontacts - // (since these handles are not necessarily the same from run to run of miranda) - - // also verifies that subcontacts: have metacontacts, and that contact numbers are reasonable, - // that metacontacts: have the correct number of subcontacts, and have reasonable defaults - if (Meta_SetHandles()) { - // error - db corruption - if ( !db_get_b(0, META_PROTO, "DisabledMessageShown", 0)) { - MessageBox(0, TranslateT("Error - Database corruption.\nPlugin disabled."), TranslateT("MetaContacts"), MB_OK | MB_ICONERROR); - db_set_b(0, META_PROTO, "DisabledMessageShown", 1); - } - //Meta_HideMetaContacts(TRUE); - return 1; - } - - db_unset(0, META_PROTO, "DisabledMessageShown"); - - PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; - pd.szName = META_FILTER; - pd.type = PROTOTYPE_FILTER; - CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); - - pd.szName = META_PROTO; - pd.type = PROTOTYPE_VIRTUAL; - CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); - - // further db setup done in modules loaded (nick [protocol string required] & clist display name) - - Meta_InitServices(); - - // moved to 'modules loaded' event handler (in meta_services.c) because we need to - // check protocol for jabber hack, and the proto modules must be loaded - //Meta_HideLinkedContactsAndSetHandles(); - - if ( ServiceExists(MS_MSG_GETWINDOWAPI)) - message_window_api_enabled = TRUE; - - // for clist_meta_mw - write hidden group name to DB - db_set_s(0, META_PROTO, "HiddenGroupName", META_HIDDEN_GROUP); - return 0; -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_menu.cpp b/plugins/!Deprecated/MetaContacts/src/meta_menu.cpp deleted file mode 100644 index 0031b461ed..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_menu.cpp +++ /dev/null @@ -1,431 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 meta_menu.c -* -* Functions needed to handle MetaContacts. -* Centralizes functions called when the user chooses -* an option integrated in the context-menu of the \c CList. -*/ - -#include "metacontacts.h" - -/** Convert the contact chosen into a MetaContact. -* -* Create a new MetaContact, remove the selected contact from the \c CList -* and attach it to the MetaContact. -* -* @param wParam : \c HANDLE to the contact that has been chosen. -* @param lParam : Allways set to 0. -*/ - -INT_PTR Meta_Convert(WPARAM wParam, LPARAM lParam) -{ - DBVARIANT dbv; - char *group = 0; - - // Get some information about the selected contact. - if ( !db_get_utf(wParam, "CList", "Group", &dbv)) { - group = _strdup(dbv.pszVal); - db_free(&dbv); - } - - // Create a new metacontact - MCONTACT hMetaContact = (MCONTACT)CallService(MS_DB_CONTACT_ADD,0,0); - if (hMetaContact) { - db_set_dw(hMetaContact, META_PROTO, META_ID,nextMetaID); - db_set_dw(hMetaContact, META_PROTO, "NumContacts",0); - db_set_dw(NULL, META_PROTO, "NextMetaID", ++nextMetaID); - - // Add the MetaContact protocol to the new meta contact - CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hMetaContact, (LPARAM)META_PROTO); - - if (group) - db_set_utf(hMetaContact, "CList", "Group", group); - - // Assign the contact to the MetaContact just created (and make default). - if ( !Meta_Assign(wParam, hMetaContact, TRUE)) { - MessageBox(0, TranslateT("There was a problem in assigning the contact to the MetaContact"), TranslateT("Error"), MB_ICONEXCLAMATION); - CallService(MS_DB_CONTACT_DELETE, (WPARAM)hMetaContact, 0); - return 0; - } - - // hide the contact if clist groups disabled (shouldn't create one anyway since menus disabled) - if ( !Meta_IsEnabled()) - db_set_b(hMetaContact, "CList", "Hidden", 1); - } - - free(group); - return (INT_PTR)hMetaContact; -} - -/** Display the 'Add to' Dialog -* -* Present a dialog in which the user can choose to which MetaContact this -* contact will be added -* -* @param wParam : \c HANDLE to the contact that has been chosen. -* @param lParam : Allways set to 0. -*/ - -INT_PTR Meta_AddTo(WPARAM wParam, LPARAM lParam) -{ - HWND clui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_METASELECT), clui, &Meta_SelectDialogProc, (LPARAM)wParam); - return 0; -} - -/** Display the 'Edit' Dialog -* -* Present a dialog in which the user can edit some properties of the MetaContact. -* -* @param wParam : \c HANDLE to the MetaContact to be edited. -* @param lParam : Allways set to 0. -*/ -INT_PTR Meta_Edit(WPARAM wParam,LPARAM lParam) -{ - HWND clui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_METAEDIT), clui, Meta_EditDialogProc, (LPARAM)wParam); - return 0; -} - -void Meta_RemoveContactNumber(MCONTACT hMeta, int number) -{ - int num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", 0); - int default_contact = db_get_dw(hMeta, META_PROTO, "Default", -1); - if (number < 0 && number >= num_contacts) - return; - - // get the handle - MCONTACT hContact = Meta_GetContactHandle(hMeta, number); - - // make sure this contact thinks it's part of this metacontact - if ((MCONTACT)db_get_dw(hContact, META_PROTO, "Handle", 0) == hMeta) { - // remove link to meta contact - db_unset(hContact, META_PROTO, "IsSubcontact"); - db_unset(hContact, META_PROTO, META_LINK); - db_unset(hContact, META_PROTO, "Handle"); - db_unset(hContact, META_PROTO, "ContactNumber"); - // unhide - must be done after removing link (see meta_services.c:Meta_ChangeStatus) - Meta_RestoreGroup(hContact); - db_unset(hContact, META_PROTO, "OldCListGroup"); - - // stop ignoring, if we were - if (options.suppress_status) - CallService(MS_IGNORE_UNIGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - } - - // each contact from 'number' upwards will be moved down one - // and the last one will be deleted - for (int i = number + 1; i < num_contacts; i++) - Meta_SwapContacts(hMeta, i, i-1); - - // remove the last one - char buffer[512], idStr[20]; - _itoa(num_contacts-1, idStr, 10); - strcpy(buffer, "Protocol"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "Status"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "Handle"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "StatusString"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "Login"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "Nick"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - strcpy(buffer, "CListName"); strcat(buffer, idStr); - db_unset(hMeta, META_PROTO, buffer); - - // if the default contact was equal to or greater than 'number', decrement it (and deal with ends) - if (default_contact >= number) { - default_contact--; - if (default_contact < 0) - default_contact = 0; - - db_set_dw(hMeta, META_PROTO, "Default", (DWORD)default_contact); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)Meta_GetContactHandle(hMeta, default_contact)); - } - num_contacts--; - db_set_dw(hMeta, META_PROTO, "NumContacts", (DWORD)num_contacts); - - // fix nick - hContact = Meta_GetMostOnline(hMeta); - Meta_CopyContactNick(hMeta, hContact); - - // fix status - Meta_FixStatus(hMeta); - - // fix avatar - hContact = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS); - if (hContact) { - PROTO_AVATAR_INFORMATIONT AI = { sizeof(AI) }; - AI.hContact = hMeta; - AI.format = PA_FORMAT_UNKNOWN; - _tcscpy(AI.filename, _T("X")); - - if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS) - db_set_ts(hMeta, "ContactPhoto", "File",AI.filename); - } -} - -/** Delete a MetaContact from the database -* -* Delete a MetaContact and remove all the information -* concerning this MetaContact in the contact linked to it. -* -* @param wParam : \c HANDLE to the MetaContact to be deleted, or to the subcontact to be removed from the MetaContact -* @param lParam : \c BOOL flag indicating whether to ask 'are you sure' when deleting a MetaContact -*/ - -INT_PTR Meta_Delete(WPARAM wParam,LPARAM lParam) -{ - DWORD metaID; - - // The wParam is a metacontact - if ((metaID = db_get_dw(wParam, META_PROTO, META_ID, (DWORD)-1)) != (DWORD)-1) { - if ( !lParam) { // check from recursion - see second half of this function - if ( MessageBox((HWND)CallService(MS_CLUI_GETHWND,0,0), - TranslateT("This will remove the MetaContact permanently.\n\nProceed Anyway?"), - TranslateT("Are you sure?"),MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) != IDYES) - return 0; - } - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - // This contact is assigned to the MetaContact that will be deleted, clear the "MetaContacts" information - if ( db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1) == metaID) { - db_unset(hContact, META_PROTO, "IsSubcontact"); - db_unset(hContact, META_PROTO, META_LINK); - db_unset(hContact, META_PROTO, "Handle"); - db_unset(hContact, META_PROTO, "ContactNumber"); - - // unhide - must be done after removing link (see meta_services.c:Meta_ChangeStatus) - Meta_RestoreGroup(hContact); - db_unset(hContact, META_PROTO, "OldCListGroup"); - - // stop ignoring, if we were - if (options.suppress_status) - CallService(MS_IGNORE_UNIGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - } - } - - NotifyEventHooks(hSubcontactsChanged, (WPARAM)wParam, 0); - CallService(MS_DB_CONTACT_DELETE,wParam,0); - } - else { - MCONTACT hMeta = (MCONTACT)db_get_dw(wParam, META_PROTO, "Handle", 0); - DWORD num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", -1); - - if (num_contacts == 1) { - if (IDYES == MessageBox(0, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1)) - Meta_Delete((WPARAM)hMeta,(LPARAM)1); - - return 0; - } - - Meta_RemoveContactNumber(hMeta, db_get_dw(wParam, META_PROTO, "ContactNumber", -1)); - } - return 0; -} - -/** Set contact as MetaContact default -* -* Set the given contact to be the default one for the metacontact to which it is linked. -* -* @param wParam : \c HANDLE to the MetaContact to be set as default -* @param lParam : \c HWND to the clist window - (This means the function has been called via the contact menu). -*/ -INT_PTR Meta_Default(WPARAM wParam,LPARAM lParam) -{ - MCONTACT hMeta; - - // the wParam is a subcontact - if ((hMeta = (MCONTACT)db_get_dw(wParam, META_PROTO, "Handle",0)) != 0) { - db_set_dw(hMeta, META_PROTO, "Default", (DWORD)Meta_GetContactNumber(wParam)); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)wParam); - } - return 0; -} - -/** Set/unset (i.e. toggle) contact to force use of default contact -* -* Set the given contact to be the default one for the metacontact to which it is linked. -* -* @param wParam : \c HANDLE to the MetaContact to be set as default -* @param lParam : \c HWND to the clist window - (This means the function has been called via the contact menu). -*/ - -INT_PTR Meta_ForceDefault(WPARAM wParam,LPARAM lParam) -{ - // the wParam is a MetaContact - if (db_get_dw(wParam, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) { - BOOL current = db_get_b(wParam, META_PROTO, "ForceDefault", 0); - current = !current; - db_set_b(wParam, META_PROTO, "ForceDefault", (BYTE)current); - - db_set_dw(wParam, META_PROTO, "ForceSend", 0); - - if (current) - NotifyEventHooks(hEventForceSend, wParam, (LPARAM)Meta_GetContactHandle(wParam, db_get_dw(wParam, META_PROTO, "Default", -1))); - else - NotifyEventHooks(hEventUnforceSend, wParam, 0); - } - return 0; -} - -HGENMENU hMenuContact[MAX_CONTACTS]; - -/** Called when the context-menu of a contact is about to be displayed -* -* This will test which of the 4 menu item should be displayed, depending -* on which contact triggered the event -* -* @param wParam : \c HANDLE to the contact that triggered the event -* @param lParam : Always set to 0; -*/ - -int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam) -{ - DBVARIANT dbv; - char buf[512], idStr[512]; - WORD status; - CLISTMENUITEM mi = { sizeof(mi) }; - - if (db_get_dw(wParam, META_PROTO, META_ID,-1) != (DWORD)-1) { - // save the mouse pos in case they open a subcontact menu - GetCursorPos(&menuMousePoint); - - // This is a MetaContact, show the edit, force default, and the delete menu, and hide the others - Menu_ShowItem(hMenuEdit, true); - Menu_ShowItem(hMenuAdd, false); - Menu_ShowItem(hMenuConvert, false); - Menu_ShowItem(hMenuDefault, false); - Menu_ShowItem(hMenuDelete, false); - - mi.flags = CMIM_NAME | CMIF_TCHAR; - mi.ptszName = (TCHAR*)TranslateT("Remove from MetaContact"); - Menu_ModifyItem(hMenuDelete, &mi); - - //show subcontact menu items - int num_contacts = db_get_dw(wParam, META_PROTO, "NumContacts", 0); - for (int i = 0; i < MAX_CONTACTS; i++) { - if (i >= num_contacts) { - Menu_ShowItem(hMenuContact[i], false); - continue; - } - - MCONTACT hContact = Meta_GetContactHandle(wParam, i); - char *szProto = GetContactProto(hContact); - if ( !szProto) - status = ID_STATUS_OFFLINE; - else - status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE); - - if (options.menu_contact_label == DNT_UID) { - strcpy(buf, "Login"); - strcat(buf, _itoa(i, idStr, 10)); - - db_get(wParam, META_PROTO, buf, &dbv); - switch(dbv.type) { - case DBVT_ASCIIZ: - mir_snprintf(buf,512,"%s",dbv.pszVal); - break; - case DBVT_BYTE: - mir_snprintf(buf,512,"%d",dbv.bVal); - break; - case DBVT_WORD: - mir_snprintf(buf,512,"%d",dbv.wVal); - break; - case DBVT_DWORD: - mir_snprintf(buf,512,"%d",dbv.dVal); - break; - default: - buf[0] = 0; - } - db_free(&dbv); - mi.pszName = buf; - mi.flags = 0; - } - else { - mi.ptszName = pcli->pfnGetContactDisplayName(hContact, GCDNF_TCHAR); - mi.flags = CMIF_TCHAR; - } - - mi.flags |= CMIM_FLAGS | CMIM_NAME | CMIM_ICON; - - int iconIndex = CallService(MS_CLIST_GETCONTACTICON, hContact, 0); - mi.hIcon = ImageList_GetIcon((HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST, 0, 0), iconIndex, 0); - - Menu_ModifyItem(hMenuContact[i], &mi); - DestroyIcon(mi.hIcon); - } - - // show hide nudge menu item - #define MS_NUDGE_SHOWMENU "NudgeShowMenu" - // wParam = char *szProto - // lParam = BOOL show - char serviceFunc[256]; - mir_snprintf(serviceFunc, 256, "%s%s", GetContactProto( Meta_GetMostOnline(wParam)), PS_SEND_NUDGE); - CallService(MS_NUDGE_SHOWMENU, (WPARAM)META_PROTO, (LPARAM)ServiceExists(serviceFunc)); - } - else { // This is a simple contact - if ( !Meta_IsEnabled()) { - // groups disabled - all meta menu options hidden - Menu_ShowItem(hMenuDefault, false); - Menu_ShowItem(hMenuDelete, false); - Menu_ShowItem(hMenuAdd, false); - Menu_ShowItem(hMenuConvert, false); - Menu_ShowItem(hMenuEdit, false); - } - else if (db_get_dw(wParam, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) { - // The contact is affected to a metacontact. - Menu_ShowItem(hMenuDefault, true); - - mi.flags = CMIM_NAME | CMIF_TCHAR; - mi.ptszName = (TCHAR*)TranslateT("Remove from MetaContact"); - Menu_ModifyItem(hMenuDelete, &mi); - - Menu_ShowItem(hMenuAdd, false); - Menu_ShowItem(hMenuConvert, false); - Menu_ShowItem(hMenuEdit, false); - } - else { - // The contact is neutral - Menu_ShowItem(hMenuAdd, true); - Menu_ShowItem(hMenuConvert, true); - Menu_ShowItem(hMenuEdit, false); - Menu_ShowItem(hMenuDelete, false); - Menu_ShowItem(hMenuDefault, false); - } - - for (int i = 0; i < MAX_CONTACTS; i++) - Menu_ShowItem(hMenuContact[i], false); - } - return 0; -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_options.cpp b/plugins/!Deprecated/MetaContacts/src/meta_options.cpp deleted file mode 100644 index a2e63ef375..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_options.cpp +++ /dev/null @@ -1,609 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 meta_menu.c -* -* Functions needed to handle MetaContacts. -* Centralizes functions called when the user chooses -* an option integrated in the context-menu of the \c CList. -*/ - -#include "metacontacts.h" - -MetaOptions options; -MetaOptions options_changes; - -INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hw; - TCHAR buff[40]; - - switch ( msg ) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - options_changes = options; - - CheckDlgButton(hwndDlg, IDC_CHK_SETDEFAULTRECV, options_changes.set_default_on_recv ? TRUE : FALSE); - hw = GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT); - EnableWindow(hw, options_changes.set_default_on_recv); - CheckDlgButton(hwndDlg, IDC_CHK_TEMPDEFAULT, options_changes.temp_default ? TRUE : FALSE); - - CheckDlgButton(hwndDlg, IDC_CHK_ALWAYSUSEDEFAULT, options_changes.always_use_default ? TRUE : FALSE); - CheckDlgButton(hwndDlg, IDC_CHK_SUPPRESSSTATUS, options_changes.suppress_status ? TRUE : FALSE); - - CheckDlgButton(hwndDlg, IDC_RAD_UID, options_changes.menu_contact_label == DNT_UID); - CheckDlgButton(hwndDlg, IDC_RAD_DID, options_changes.menu_contact_label == DNT_DID); - - CheckDlgButton(hwndDlg, IDC_RAD_MSG, options_changes.menu_function == FT_MSG); - CheckDlgButton(hwndDlg, IDC_RAD_MENU, options_changes.menu_function == FT_MENU); - CheckDlgButton(hwndDlg, IDC_RAD_INFO, options_changes.menu_function == FT_INFO); - - CheckDlgButton(hwndDlg, IDC_RAD_NICK, options_changes.clist_contact_name == CNNT_NICK); - CheckDlgButton(hwndDlg, IDC_RAD_NAME, options_changes.clist_contact_name == CNNT_DISPLAYNAME); - CheckDlgButton(hwndDlg, IDC_CHK_LOCKHANDLE, options_changes.lockHandle ? TRUE : FALSE); - CheckDlgButton(hwndDlg, IDC_CHK_SUBWINDOW, options_changes.subcontact_windows ? TRUE : FALSE); - - CheckDlgButton(hwndDlg, IDC_CHK_METAHISTORY, options_changes.metahistory ? TRUE : FALSE); - CheckDlgButton(hwndDlg, IDC_CHK_SUBHISTORY, options_changes.subhistory ? TRUE : FALSE); - CheckDlgButton(hwndDlg, IDC_CHK_COPYDATA, options_changes.copydata ? TRUE : FALSE); - - if ( !options_changes.subcontact_windows) { - hw = GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY); - EnableWindow(hw, FALSE); - } else { - hw = GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY); - EnableWindow(hw, FALSE); - } - - CheckDlgButton(hwndDlg, IDC_CHK_COPYHISTORY, options_changes.copy_subcontact_history ? TRUE : FALSE); - hw = GetDlgItem(hwndDlg, IDC_ED_DAYS); - _itot(options_changes.days_history, buff, 10); - SetWindowText(hw, buff); - return TRUE; - - case WM_COMMAND: - if ( HIWORD( wParam ) == BN_CLICKED ) { - switch( LOWORD( wParam )) { - case IDC_CHK_SETDEFAULTRECV: - options_changes.set_default_on_recv = IsDlgButtonChecked(hwndDlg, IDC_CHK_SETDEFAULTRECV); - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT), options_changes.set_default_on_recv); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_TEMPDEFAULT: - options_changes.temp_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_TEMPDEFAULT); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_ALWAYSUSEDEFAULT: - options_changes.always_use_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_ALWAYSUSEDEFAULT); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_SUPPRESSSTATUS: - options_changes.suppress_status = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUPPRESSSTATUS); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_COPYHISTORY: - options_changes.copy_subcontact_history = IsDlgButtonChecked(hwndDlg, IDC_CHK_COPYHISTORY); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_METAHISTORY: - options_changes.metahistory = IsDlgButtonChecked(hwndDlg, IDC_CHK_METAHISTORY); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_SUBHISTORY: - options_changes.subhistory = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUBHISTORY); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_COPYDATA: - options_changes.copydata = IsDlgButtonChecked(hwndDlg, IDC_CHK_COPYDATA); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_UID: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_UID)) { - options_changes.menu_contact_label = DNT_UID; - CheckDlgButton(hwndDlg, IDC_RAD_DID, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_DID: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_DID)) { - options_changes.menu_contact_label = DNT_DID; - CheckDlgButton(hwndDlg, IDC_RAD_UID, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_MSG: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_MSG)) { - options_changes.menu_function = FT_MSG; - CheckDlgButton(hwndDlg, IDC_RAD_MENU, FALSE); - CheckDlgButton(hwndDlg, IDC_RAD_INFO, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_MENU: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_MENU)) { - options_changes.menu_function = FT_MENU; - CheckDlgButton(hwndDlg, IDC_RAD_MSG, FALSE); - CheckDlgButton(hwndDlg, IDC_RAD_INFO, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_INFO: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_INFO)) { - options_changes.menu_function = FT_INFO; - CheckDlgButton(hwndDlg, IDC_RAD_MSG, FALSE); - CheckDlgButton(hwndDlg, IDC_RAD_MENU, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_NICK: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_NICK)) { - options_changes.clist_contact_name = CNNT_NICK; - CheckDlgButton(hwndDlg, IDC_RAD_NAME, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_NAME: - if (IsDlgButtonChecked(hwndDlg, IDC_RAD_NAME)) { - options_changes.clist_contact_name = CNNT_DISPLAYNAME; - CheckDlgButton(hwndDlg, IDC_RAD_NICK, FALSE); - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_CHK_SUBWINDOW: - options_changes.subcontact_windows = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUBWINDOW); - - if (options_changes.subcontact_windows) { - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY), TRUE); - CheckDlgButton(hwndDlg, IDC_CHK_SUBHISTORY, TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY), FALSE); - options_changes.subhistory = TRUE; - } else { - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY), TRUE); - CheckDlgButton(hwndDlg, IDC_CHK_METAHISTORY, TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY), FALSE); - options_changes.metahistory = TRUE; - } - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case IDC_CHK_LOCKHANDLE: - options_changes.lockHandle = IsDlgButtonChecked(hwndDlg, IDC_CHK_LOCKHANDLE); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } - } - else if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) { - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->code == PSN_APPLY ) { - hw = GetDlgItem(hwndDlg, IDC_ED_DAYS); - GetWindowText(hw, buff, SIZEOF(buff)); - if (buff[0] != 0) - options_changes.days_history = _ttoi(buff); - - options = options_changes; - Meta_WriteOptions(&options); - - Meta_SuppressStatus(options.suppress_status); - Meta_SetAllNicks(); - return TRUE; - } - break; - } - - return FALSE; -} - -int Meta_WriteOptions(MetaOptions *opt) -{ - db_set_b(NULL, META_PROTO, "SetDefaultOnRecv", (BYTE)(opt->set_default_on_recv ? 1 : 0)); - db_set_b(NULL, META_PROTO, "TempDefault", (BYTE)(opt->temp_default ? 1 : 0)); - db_set_b(NULL, META_PROTO, "AlwaysUseDefault", (BYTE)(opt->always_use_default ? 1 : 0)); - db_set_b(NULL, META_PROTO, "SuppressStatus", (BYTE)(opt->suppress_status ? 1 : 0)); - db_set_w(NULL, META_PROTO, "MenuContactLabel", (WORD)opt->menu_contact_label); - db_set_w(NULL, META_PROTO, "MenuContactFunction", (WORD)opt->menu_function); - db_set_w(NULL, META_PROTO, "CListContactName", (WORD)opt->clist_contact_name); - db_set_b(NULL, META_PROTO, "CopyHistory", (BYTE)(opt->copy_subcontact_history ? 1 : 0)); - db_set_dw(NULL, META_PROTO, "DaysHistory", (DWORD)(opt->days_history)); - db_set_dw(NULL, META_PROTO, "SetStatusFromOfflineDelay", (DWORD)(opt->set_status_from_offline_delay)); - db_set_b(NULL, META_PROTO, "SubcontactWindows", (BYTE)(opt->subcontact_windows ? 1 : 0)); - db_set_b(NULL, META_PROTO, "CopyData", (BYTE)(opt->copydata ? 1 : 0)); - db_set_b(NULL, META_PROTO, "LockHandle", (BYTE)(opt->lockHandle ? 1 : 0)); - db_set_b(NULL, META_PROTO, "MetaMessageIcon", (BYTE)(opt->flash_meta_message_icon ? 1 : 0)); - db_set_b(NULL, META_PROTO, "CopyUserInfo", (BYTE)(opt->copy_userinfo ? 1 : 0)); - - if ( !opt->subcontact_windows) - db_set_b(NULL, META_PROTO, "MetaHistory", 1); - else - db_set_b(NULL, META_PROTO, "MetaHistory", (BYTE)(opt->metahistory ? 1 : 0)); - - if (opt->subcontact_windows) - db_set_b(NULL, META_PROTO, "SubcontactHistory", 1); - else - db_set_b(NULL, META_PROTO, "SubcontactHistory", (BYTE)(opt->subhistory ? 1 : 0)); - return 0; - - db_set_b(NULL, META_PROTO, "UseProtoRecv", (BYTE)(opt->use_proto_recv ? 1 : 0)); -} - -int Meta_ReadOptions(MetaOptions *opt) -{ - opt->set_default_on_recv = (db_get_b(NULL, META_PROTO, "SetDefaultOnRecv", 1) == 1 ? TRUE : FALSE); - opt->temp_default = (db_get_b(NULL, META_PROTO, "TempDefault", 1) == 1 ? TRUE : FALSE); - opt->always_use_default = (db_get_b(NULL, META_PROTO, "AlwaysUseDefault", 1) == 1 ? TRUE : FALSE); - opt->suppress_status = (db_get_b(NULL, META_PROTO, "SuppressStatus", 1) == 1 ? TRUE : FALSE); - opt->menu_contact_label = (int)db_get_w(NULL, META_PROTO, "MenuContactLabel", DNT_UID); - opt->menu_function = (int)db_get_w(NULL, META_PROTO, "MenuContactFunction", FT_MENU); - opt->clist_contact_name = (int)db_get_w(NULL, META_PROTO, "CListContactName", CNNT_NICK); - opt->copy_subcontact_history = (db_get_b(NULL, META_PROTO, "CopyHistory", 1) == 1 ? TRUE : FALSE); - opt->days_history = (int)db_get_dw(NULL, META_PROTO, "DaysHistory", 0); - opt->set_status_from_offline_delay = (int)db_get_dw(NULL, META_PROTO, "SetStatusFromOfflineDelay", DEFAULT_SET_STATUS_SLEEP_TIME); - opt->subcontact_windows = (db_get_b(NULL, META_PROTO, "SubcontactWindows", 0) == 1 ? TRUE : FALSE); - opt->copydata = (db_get_b(NULL, META_PROTO, "CopyData", 1) == 1 ? TRUE : FALSE); - opt->lockHandle = (db_get_b(NULL, META_PROTO, "LockHandle", 0) == 1 ? TRUE : FALSE); - opt->flash_meta_message_icon = (db_get_b(NULL, META_PROTO, "MetaMessageIcon", 1) == 1 ? TRUE : FALSE); - opt->copy_userinfo = (db_get_b(NULL, META_PROTO, "CopyUserInfo", 1) == 1 ? TRUE : FALSE); - - if ( !opt->subcontact_windows) - opt->metahistory = TRUE; - else - opt->metahistory = (db_get_b(NULL, META_PROTO, "MetaHistory", 1) == 1 ? TRUE : FALSE); - - if (opt->subcontact_windows) - opt->subhistory = TRUE; - else - opt->subhistory = (db_get_b(NULL, META_PROTO, "SubcontactHistory", 1) == 1 ? TRUE : FALSE); - - opt->use_proto_recv = (db_get_b(NULL, META_PROTO, "UseProtoRecv", 1) == 1 ? TRUE : FALSE); - return 0; -} - -/* -#define ID_STATUS_OFFLINE 40071 ->8 -#define ID_STATUS_ONLINE 40072 ->0 -#define ID_STATUS_AWAY 40073 ->4 -#define ID_STATUS_DND 40074 ->7 -#define ID_STATUS_NA 40075 ->6 -#define ID_STATUS_OCCUPIED 40076 ->5 -#define ID_STATUS_FREECHAT 40077 ->1 -#define ID_STATUS_INVISIBLE 40078 ->0 -#define ID_STATUS_ONTHEPHONE 40079 ->2 -#define ID_STATUS_OUTTOLUNCH 40080 ->3 -*/ - -int GetDefaultPrio(int status) -{ - switch( status ) { - case ID_STATUS_OFFLINE: return 8; - case ID_STATUS_AWAY: return 4; - case ID_STATUS_DND: return 7; - case ID_STATUS_NA: return 6; - case ID_STATUS_OCCUPIED: return 5; - case ID_STATUS_FREECHAT: return 1; - case ID_STATUS_ONTHEPHONE: return 2; - case ID_STATUS_OUTTOLUNCH: return 3; - } - - return 0; -} - -typedef struct { - int prio[10]; // priority for each status - BOOL def[10]; // use default for this one? -} ProtoStatusPrio; - -ProtoStatusPrio *priorities = 0; - -int GetRealPriority(char *proto, int status) -{ - char szSetting[256]; - if ( !proto) { - mir_snprintf(szSetting, 256, "DefaultPrio_%d", status); - return db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(status)); - } - - mir_snprintf(szSetting, 256, "ProtoPrio_%s%d", proto, status); - int prio = db_get_w(0, META_PROTO, szSetting, 0xFFFF); - if (prio == 0xFFFF) { - mir_snprintf(szSetting, 256, "DefaultPrio_%d", status); - return db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(status)); - } - return prio; -} - -void ReadPriorities() -{ - char szSetting[256]; - int num_protocols, i, j; - PROTOACCOUNT **pppDesc; - ProtoEnumAccounts(&num_protocols, &pppDesc); - - ProtoStatusPrio *current = priorities = (ProtoStatusPrio *)malloc((num_protocols + 1) * sizeof(ProtoStatusPrio)); - for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) { - mir_snprintf(szSetting, 256, "DefaultPrio_%d", i); - current->def[i - ID_STATUS_OFFLINE] = TRUE; - current->prio[i - ID_STATUS_OFFLINE] = db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(i)); - } - - for (i = 0; i < num_protocols; i++) { - current = priorities + (i + 1); - for (j = ID_STATUS_OFFLINE; j <= ID_STATUS_OUTTOLUNCH; j++) { - mir_snprintf(szSetting, 256, "ProtoPrio_%s%d", pppDesc[i]->szModuleName, j); - current->prio[j - ID_STATUS_OFFLINE] = db_get_w(0, META_PROTO, szSetting, 0xFFFF); - current->def[j - ID_STATUS_OFFLINE] = (current->prio[j - ID_STATUS_OFFLINE] == 0xFFFF); - } - } -} - -void WritePriorities() -{ - char szSetting[256]; - ProtoStatusPrio *current = priorities; - int i, j; - - int num_protocols; - PROTOACCOUNT **pppDesc; - ProtoEnumAccounts(&num_protocols, &pppDesc); - - for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) { - mir_snprintf(szSetting, 256, "DefaultPrio_%d", i); - if (current->prio[i - ID_STATUS_OFFLINE] != GetDefaultPrio(i)) - db_set_w(0, META_PROTO, szSetting, (WORD)current->prio[i - ID_STATUS_OFFLINE]); - else - db_unset(0, META_PROTO, szSetting); - } - for (i = 0; i < num_protocols; i++) { - current = priorities + (i + 1); - for (j = ID_STATUS_OFFLINE; j <= ID_STATUS_OUTTOLUNCH; j++) { - mir_snprintf(szSetting, 256, "ProtoPrio_%s%d", pppDesc[i]->szModuleName, j); - if ( !current->def[j - ID_STATUS_OFFLINE]) - db_set_w(0, META_PROTO, szSetting, (WORD)current->prio[j - ID_STATUS_OFFLINE]); - else - db_unset(0, META_PROTO, szSetting); - } - } -} - -int GetIsDefault(int proto_index, int status) -{ - return (priorities + (proto_index + 1))->def[status - ID_STATUS_OFFLINE]; -} - -BOOL GetPriority(int proto_index, int status) -{ - if (proto_index == -1) - return priorities->prio[status - ID_STATUS_OFFLINE]; - - ProtoStatusPrio *current = priorities + (proto_index + 1); - if (current->def[status - ID_STATUS_OFFLINE]) - current = priorities; - - return current->prio[status - ID_STATUS_OFFLINE]; -} - -void SetPriority(int proto_index, int status, BOOL def, int prio) -{ - if (prio < 0) prio = 0; - if (prio > 500) prio = 500; - if (proto_index == -1) - priorities->prio[status - ID_STATUS_OFFLINE] = prio; - else { - ProtoStatusPrio *current = priorities + (proto_index + 1); - current->def[status - ID_STATUS_OFFLINE] = def; - if ( !def) - current->prio[status - ID_STATUS_OFFLINE] = prio; - } -} - -void ResetPriorities() -{ - int i, j, num_protocols; - PROTOACCOUNT **pppDesc; - ProtoEnumAccounts(&num_protocols, &pppDesc); - - ProtoStatusPrio *current = priorities; - for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) { - current->def[i - ID_STATUS_OFFLINE] = TRUE; - current->prio[i - ID_STATUS_OFFLINE] = GetDefaultPrio(i); - } - - for (i = 0; i < num_protocols; i++) { - current = priorities + (i + 1); - for (j = ID_STATUS_OFFLINE; j <= ID_STATUS_OUTTOLUNCH; j++) { - current->def[j - ID_STATUS_OFFLINE] = TRUE; - } - } -} - -#define WMU_FILLSTATUSCMB (WM_USER + 0x100) -#define WMU_FILLPRIODATA (WM_USER + 0x101) - -INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hw; - int sel; - - switch ( msg ) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - SendMessage(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), UDM_SETRANGE, 0, (LPARAM)MAKELONG(500, 0)); - ReadPriorities(); - { - int num_protocols; - PROTOACCOUNT **pppDesc; - ProtoEnumAccounts(&num_protocols, &pppDesc); - - hw = GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL); - int index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)TranslateT("")); - SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, -1); - for (int i = 0; i < num_protocols; i++) { - if (strcmp(pppDesc[i]->szModuleName, META_PROTO) != 0) { - index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)pppDesc[i]->tszAccountName); - SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i); - } - } - - SendMessage(hw, CB_SETCURSEL, 0, 0); - SendMessage(hwndDlg, WMU_FILLSTATUSCMB, 0, 0); - SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0); - } - return FALSE; - - case WMU_FILLPRIODATA: - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0); - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0); - SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE); - if (index == -1) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), TRUE); - CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), FALSE); - } - else { - if (GetIsDefault(index, status)) { - CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), FALSE); - } - else { - CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), TRUE); - } - - EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), TRUE); - } - } - } - return TRUE; - - case WMU_FILLSTATUSCMB: - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0); - HWND hw = GetDlgItem(hwndDlg, IDC_CMB_STATUS); - SendMessage(hw, CB_RESETCONTENT, 0, 0); - if (index == -1) { - for (int i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) { - index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)pcli->pfnGetStatusModeDescription(i, 0)); - SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i); - } - } - else { - int num_protocols; - PROTOACCOUNT **pppDesc; - ProtoEnumAccounts(&num_protocols, &pppDesc); - - int caps = CallProtoService(pppDesc[index]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0); - - for (int i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) { - if (caps & Proto_Status2Flag(i)) { - index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)pcli->pfnGetStatusModeDescription(i, 0)); - SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i); - } - } - } - SendMessage(hw, CB_SETCURSEL, 0, 0); - SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0); - } - return TRUE; - - case WM_COMMAND: - if ( HIWORD( wParam ) == BN_CLICKED ) { - switch( LOWORD( wParam )) { - case IDC_CHK_DEFAULT: - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0); - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0); - if (sel != -1) { - BOOL checked = IsDlgButtonChecked(hwndDlg, IDC_CHK_DEFAULT); - int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0); - if (checked) { - SetPriority(index, status, TRUE, 0); - SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE); - } - else SetPriority(index, status, FALSE, GetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, 0, FALSE)); - - EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), !checked); - EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), !checked); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - break; - - case IDC_BTN_RESET: - ResetPriorities(); - SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_SETCURSEL, 0, 0); - SendMessage(hwndDlg, WMU_FILLSTATUSCMB, 0, 0); - SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } - } - - if ( HIWORD( wParam ) == EN_CHANGE && LOWORD(wParam) == IDC_ED_PRIORITY && ( HWND )lParam == GetFocus()) { - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0); - sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0); - if (sel != -1) { - int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0); - int prio = GetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, 0, FALSE); - SetPriority(index, status, FALSE, prio); - if (prio != GetPriority(index, status)) - SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE); - SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - } - if ( HIWORD( wParam ) == CBN_SELCHANGE) { - switch( LOWORD( wParam )) { - case IDC_CMB_STATUS: - SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0); - break; - case IDC_CMB_PROTOCOL: - SendMessage(hwndDlg, WMU_FILLSTATUSCMB, 0, 0); - break; - } - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->code == PSN_APPLY ) { - WritePriorities(); - return TRUE; - } - break; - case WM_DESTROY: - free(priorities); - priorities = 0; - break; - } - - return FALSE; -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_services.cpp b/plugins/!Deprecated/MetaContacts/src/meta_services.cpp deleted file mode 100644 index 63578c17aa..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_services.cpp +++ /dev/null @@ -1,1453 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 meta_services.c -* -* Functions specific to the protocol part of the plugin. -* Centralizes all the functions called by Miranda to make -* the plugin work as a protocol. -*/ - -#include "metacontacts.h" - -#define PREF_METANODB 0x2000 //!< Flag to indicate message should not be added to db by filter when sending - -char *pendingACK = 0; //!< Name of the protocol in which an ACK is about to come. - -int previousMode, //!< Previous status of the MetaContacts Protocol - mcStatus; //!< Current status of the MetaContacts Protocol - -HGENMENU - hMenuConvert, //!< \c HANDLE to the convert menu item. - hMenuAdd, //!< \c HANDLE to the add to menu item. - hMenuEdit, //!< \c HANDLE to the edit menu item. - hMenuDelete, //!< \c HANDLE to the delete menu item. - hMenuDefault, //!< \c HANDLE to the delete menu item. - hMenuForceDefault, //!< \c HANDLE to the delete menu item. - hMenuOnOff; //!< \c HANDLE to the enable/disable menu item. - -HANDLE - hEventDefaultChanged, //!< \c HANDLE to the 'default changed' event - hEventForceSend, //!< \c HANDLE to the 'force send' event - hEventUnforceSend, //!< \c HANDLE to the 'unforce send' event - hSubcontactsChanged, //!< \c HANDLE to the 'contacts changed' event - hEventNudge; - - -DWORD nextMetaID; //!< Global variable specifying the ID value the next MetaContact will have. - -BOOL message_window_api_enabled = FALSE; //!< Global variable specifying whether the message window api ver 0.0.0.1+ is available - -// stuff for mw_clist extra icon -HANDLE hExtraImage[MAX_PROTOCOLS * 2]; // online and offline icons -char proto_names[MAX_PROTOCOLS * 128]; -HANDLE hProtoIcons[MAX_PROTOCOLS * 2]; // online and offline icons - -UINT_PTR setStatusTimerId = 0; -BOOL firstSetOnline = TRUE; // see Meta_SetStatus function - -/** Get the capabilities of the "MetaContacts" protocol. -* -* @param wParam : equals to one of the following values :\n - PFLAGNUM_1 | PFLAGNUM_2 | PFLAGNUM_3 | PFLAGNUM_4 | PFLAG_UNIQUEIDTEXT | PFLAG_MAXLENOFMESSAGE | PFLAG_UNIQUEIDSETTING . -* @param lParam : Allways set to 0. -* -* @return Depending on the \c WPARAM. -*/ -INT_PTR Meta_GetCaps(WPARAM wParam,LPARAM lParam) -{ - switch (wParam) { - case PFLAGNUM_1: - return PF1_IM | PF1_CHAT | PF1_FILESEND | PF1_MODEMSGRECV | PF1_NUMERICUSERID; - - case PFLAGNUM_2: - return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT | PF2_OUTTOLUNCH | PF2_ONTHEPHONE; - - case PFLAGNUM_3: - return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT | PF2_OUTTOLUNCH | PF2_ONTHEPHONE; - - case PFLAGNUM_4: - return PF4_SUPPORTTYPING | PF4_AVATARS | PF4_IMSENDUTF; - - case PFLAGNUM_5: - return PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT | PF2_OUTTOLUNCH | PF2_ONTHEPHONE; - - case PFLAG_UNIQUEIDTEXT: - return (INT_PTR) Translate("Meta ID"); - - case PFLAG_MAXLENOFMESSAGE: - return 2000; - - case PFLAG_UNIQUEIDSETTING: - return (INT_PTR)META_ID; - } - return 0; -} - -/** Copy the name of the protocole into lParam -* @param wParam : max size of the name -* @param lParam : reference to a char *, which will hold the name -*/ - -INT_PTR Meta_GetName(WPARAM wParam,LPARAM lParam) -{ - char *name = (char *)Translate(META_PROTO); - size_t size = min(strlen(name),wParam-1); // copy only the first size bytes. - if (strncpy((char *)lParam,name,size)==NULL) - return 1; - ((char *)lParam)[size]='\0'; - return 0; -} - -/** Loads the icon corresponding to the status -* Called by the CList when the status changes. -* @param wParam : one of the following values : \n - PLI_PROTOCOL | PLI_ONLINE | PLI_OFFLINE -* @return an \c HICON in which the icon has been loaded. -*/ - -INT_PTR Meta_LoadIcon(WPARAM wParam,LPARAM lParam) -{ - UINT id; - switch (wParam & 0xFFFF) { - case PLI_PROTOCOL: - id = IDI_MCMENU; - break; - case PLI_ONLINE: - id = IDI_MCMENU; - break; - case PLI_OFFLINE: - id = IDI_MCMENU; - break; - default: - return 0; - } - - return (INT_PTR) LoadImage(hInstance, MAKEINTRESOURCE(id), IMAGE_ICON, - GetSystemMetrics(wParam & PLIF_SMALL ? SM_CXSMICON : SM_CXICON), - GetSystemMetrics(wParam & PLIF_SMALL ? SM_CYSMICON : SM_CYICON), 0); -} - -void CALLBACK SetStatusThread(HWND hWnd, UINT msg, UINT_PTR id, DWORD dw) -{ - previousMode = mcStatus; - - mcStatus = (int)ID_STATUS_ONLINE; - ProtoBroadcastAck(META_PROTO, NULL,ACKTYPE_STATUS,ACKRESULT_SUCCESS, (HANDLE)previousMode, mcStatus); - - KillTimer(0, setStatusTimerId); -} - -/** Changes the status and notifies everybody -* @param wParam : The new mode -* @param lParam : Allways set to 0. -*/ - -INT_PTR Meta_SetStatus(WPARAM wParam,LPARAM lParam) -{ - // firstSetOnline starts out true - used to delay metacontact's 'onlineness' to prevent double status notifications on startup - if (mcStatus == ID_STATUS_OFFLINE && firstSetOnline) { - // causes crash on exit if miranda is closed in under options.set_status_from_offline milliseconds! - //CloseHandle( CreateThread( NULL, 0, SetStatusThread, (void *)wParam, 0, 0 )); - setStatusTimerId = SetTimer(0, 0, options.set_status_from_offline_delay, SetStatusThread); - firstSetOnline = FALSE; - } - else { - previousMode = mcStatus; - mcStatus = (int)wParam; - ProtoBroadcastAck(META_PROTO, NULL,ACKTYPE_STATUS,ACKRESULT_SUCCESS, (HANDLE)previousMode, mcStatus); - } - return 0; -} - -/** Returns the current status -*/ -INT_PTR Meta_GetStatus(WPARAM wParam,LPARAM lParam) -{ - return mcStatus; -} - -////////////////////////////////////////////////////////// -/// Copied from MSN plugin - sent acks need to be from different thread :( -////////////////////////////////////////////////////////// - -struct TFakeAckParams -{ - HANDLE hEvent; - MCONTACT hContact; - LONG id; - char msg[512]; -}; - -static DWORD CALLBACK sttFakeAckFail( LPVOID param ) -{ - TFakeAckParams *tParam = ( TFakeAckParams* )param; - WaitForSingleObject( tParam->hEvent, INFINITE ); - - Sleep( 100 ); - ProtoBroadcastAck(META_PROTO, tParam->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, (HANDLE)tParam->id, (WPARAM)tParam->msg ); - - CloseHandle( tParam->hEvent ); - mir_free(tParam); - return 0; -} - -/** Filter messages sent by subcontacts -* -* When groups are disabled, add an event to the DB for the metacontact to maintain history -* -* @param wParam : index of the protocol in the protocol chain. -* @param lParam : \c CCSDATA structure holding all the information about the message. -* -* @return 0 on success, 1 otherwise. -*/ - -INT_PTR MetaFilter_SendMessage(WPARAM wParam,LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - MCONTACT hMeta; - - if ((hMeta = (MCONTACT)db_get_dw(ccs->hContact, META_PROTO, "Handle", 0)) == 0) - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); // Can't find the MetaID of the metacontact linked to - - // if subcontact sending, add db event to keep metacontact history correct - if (options.metahistory && !(ccs->wParam & PREF_METANODB)) { - - // reject "file As Message" messages - if (strlen((char *)ccs->lParam) > 5 && strncmp((char *)ccs->lParam, "<%fAM", 5) == 0) - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); // continue processing - - // reject "data As Message" messages - if (strlen((char *)ccs->lParam) > 5 && strncmp((char *)ccs->lParam, "<%dAM", 5) == 0) - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); // continue processing - - // reject "OTR" messages - if (strlen((char *)ccs->lParam) > 5 && strncmp((char *)ccs->lParam, "?OTR", 4) == 0) - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); // continue processing - - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.szModule = META_PROTO; - dbei.flags = DBEF_SENT; - dbei.timestamp = time(NULL); - dbei.eventType = EVENTTYPE_MESSAGE; - if (ccs->wParam & PREF_RTL) dbei.flags |= DBEF_RTL; - if (ccs->wParam & PREF_UTF) dbei.flags |= DBEF_UTF; - dbei.cbBlob = (DWORD)strlen((char *)ccs->lParam) + 1; - if ( ccs->wParam & PREF_UNICODE ) - dbei.cbBlob *= ( sizeof( wchar_t )+1 ); - dbei.pBlob = (PBYTE)ccs->lParam; - db_event_add(hMeta, &dbei); - } - - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); -} - -INT_PTR Meta_SendNudge(WPARAM wParam,LPARAM lParam) -{ - MCONTACT hSubContact = Meta_GetMostOnline(wParam); - return ProtoCallService(GetContactProto(hSubContact), PS_SEND_NUDGE, (WPARAM)hSubContact, lParam); -} - -///////////////////////////////////////////////////////////////// - -/** Send a message to the protocol specific network. -* -* Call the function specific to the protocol that belongs -* to the contact chosen to send the message. -* -* @param wParam : index of the protocol in the protocol chain. -* @param lParam : \c CCSDATA structure holding all the information abour rhe message. -* -* @return 0 on success, 1 otherwise. -*/ -INT_PTR Meta_SendMessage(WPARAM wParam,LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - char *proto = 0; - DWORD default_contact_number; - - if ((default_contact_number = db_get_dw(ccs->hContact, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) { - // This is a simple contact, let through the stack of protocols - // (this should normally not happen, since linked contacts do not appear on the list.) - return CallService(MS_PROTO_CHAINSEND, wParam, lParam); - } - - MCONTACT most_online = Meta_GetMostOnline(ccs->hContact); - - if ( !most_online) { - DWORD dwThreadId; - HANDLE hEvent; - TFakeAckParams *tfap; - - // send failure to notify user of reason - hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - - tfap = (TFakeAckParams *)mir_alloc(sizeof(TFakeAckParams)); - tfap->hContact = ccs->hContact; - tfap->hEvent = hEvent; - tfap->id = 10; - strcpy(tfap->msg, Translate("No online contacts found.")); - - CloseHandle( CreateThread( NULL, 0, sttFakeAckFail, tfap, 0, &dwThreadId )); - SetEvent( hEvent ); - - return 10; - } - - Meta_CopyContactNick(ccs->hContact, most_online); - - ccs->hContact = most_online; - proto = GetContactProto(most_online); - Meta_SetNick(proto); // (no matter what was there before) - - // don't bypass filters etc - if (options.subhistory && !(ccs->wParam & PREF_METANODB)) { - // add sent event to subcontact - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.szModule = GetContactProto(ccs->hContact); - if (dbei.szModule) { - dbei.flags = DBEF_SENT; - dbei.timestamp = time(NULL); - dbei.eventType = EVENTTYPE_MESSAGE; - if (ccs->wParam & PREF_RTL) dbei.flags |= DBEF_RTL; - if (ccs->wParam & PREF_UTF) dbei.flags |= DBEF_UTF; - dbei.cbBlob = (DWORD)strlen((char *)ccs->lParam) + 1; - if ( ccs->wParam & PREF_UNICODE ) - dbei.cbBlob *= ( sizeof( wchar_t )+1 ); - dbei.pBlob = (PBYTE)ccs->lParam; - db_event_add(ccs->hContact, &dbei); - } - } - - // prevent send filter from adding another copy of this send event to the db - ccs->wParam |= PREF_METANODB; - - return CallContactService(ccs->hContact, PSS_MESSAGE, ccs->wParam, ccs->lParam); -} - -/** Transmit a message received by a contact. -* -* Forward the message received by a contact linked to a MetaContact -* to that MetaContact and inhibit the further reception of this message -* by the standard protocol of the contact. -* -* @param wParam : index of the protocol in the protocol chain. -* @param lParam : \c CCSDATA structure holding all the information about the message. -* -* @return 0 on success, 1 otherwise. -*/ - -INT_PTR MetaFilter_RecvMessage(WPARAM wParam,LPARAM lParam) -{ - DBEVENTINFO dbei; - CCSDATA *ccs = (CCSDATA*)lParam; - PROTORECVEVENT *pre = (PROTORECVEVENT *) ccs->lParam; - MCONTACT hMeta; - - // Can't find the MetaID of the metacontact linked to this contact, let through the protocol chain - if ((hMeta = (MCONTACT)db_get_dw(ccs->hContact, META_PROTO, "Handle", 0)) == 0) - return CallService(MS_PROTO_CHAINRECV, wParam, (LPARAM)ccs); - - if (options.set_default_on_recv) { - if (options.temp_default && db_get_dw(hMeta, META_PROTO, "SavedDefault", (DWORD)-1) == (DWORD)-1) - db_set_dw(hMeta, META_PROTO, "SavedDefault", db_get_dw(hMeta, META_PROTO, "Default", 0)); - db_set_dw(hMeta, META_PROTO, "Default", db_get_dw(ccs->hContact, META_PROTO, "ContactNumber", 0)); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)ccs->hContact); // nick set in event handler - } - - // if meta disabled (now message api) or window open (message api), or using subcontact windows, - // let through but add db event for metacontact history - if ( !Meta_IsEnabled() || db_get_b(ccs->hContact, META_PROTO, "WindowOpen", 0) == 1 || options.subcontact_windows) { - - // add a clist event, so that e.g. there is an icon flashing - // (only add it when message api available, 'cause then we can remove the event when the message window is opened) - if (message_window_api_enabled - && db_get_b(ccs->hContact, META_PROTO, "WindowOpen", 0) == 0 - && db_get_b(hMeta, META_PROTO, "WindowOpen", 0) == 0 - && options.flash_meta_message_icon) - { - TCHAR toolTip[256]; - - CLISTEVENT cle = { sizeof(cle) }; - cle.hContact = hMeta; - cle.flags = CLEF_TCHAR; - cle.hDbEvent = (HANDLE)ccs->hContact; // use subcontact handle as key - then we can remove all events if the subcontact window is opened - cle.hIcon = LoadSkinnedIcon(SKINICON_EVENT_MESSAGE); - cle.pszService = "MetaContacts/CListMessageEvent"; - mir_sntprintf(toolTip, SIZEOF(toolTip), TranslateT("Message from %s"), pcli->pfnGetContactDisplayName(hMeta, GCDNF_TCHAR)); - cle.ptszTooltip = toolTip; - CallService(MS_CLIST_ADDEVENT, 0, (LPARAM)&cle); - } - - if (options.metahistory) { - BOOL added = FALSE; - - // should be able to do this, but some protos mess with the memory - if (options.use_proto_recv) { - // use the subcontact's protocol 'recv' service to add the meta's history (AIMOSCAR removes HTML here!) if possible - char *proto = GetContactProto(ccs->hContact); - if (proto) { - MCONTACT hSub = ccs->hContact; - DWORD flags = pre->flags; - ccs->hContact = hMeta; - pre->flags |= (db_get_b(hMeta, META_PROTO, "WindowOpen", 0) ? 0 : PREF_CREATEREAD); - if (ProtoServiceExists(proto, PSR_MESSAGE) && !ProtoCallService(proto, PSR_MESSAGE, 0, (LPARAM)ccs)) - added = TRUE; - ccs->hContact = hSub; - pre->flags = flags; - } - } - - if ( !added) { - // otherwise add raw db event - ZeroMemory(&dbei, sizeof(dbei)); - dbei.cbSize = sizeof(dbei); - dbei.szModule = META_PROTO; - dbei.timestamp = pre->timestamp; - dbei.flags = (db_get_b(hMeta, META_PROTO, "WindowOpen", 0) ? 0 : DBEF_READ); - if (pre->flags & PREF_RTL) dbei.flags |= DBEF_RTL; - if (pre->flags & PREF_UTF) dbei.flags |= DBEF_UTF; - dbei.eventType = EVENTTYPE_MESSAGE; - dbei.cbBlob = (DWORD)strlen(pre->szMessage) + 1; - if ( pre->flags & PREF_UNICODE ) { - dbei.cbBlob *= ( sizeof( wchar_t )+1 ); - } - dbei.pBlob = (PBYTE) pre->szMessage; - db_event_add(hMeta, &dbei); - } - } - - return CallService(MS_PROTO_CHAINRECV, wParam, (LPARAM)ccs); - } - - MCONTACT hSub = ccs->hContact; - ccs->hContact = hMeta; // Forward to the associated MetaContact. - CallService(MS_PROTO_CHAINRECV, 0, (LPARAM)ccs); - ccs->hContact = hSub; - - if (options.subhistory && !(ccs->wParam & PREF_METANODB)) { - // allow event pass through and thereby be added to subcontact history - pre->flags |= (db_get_b(ccs->hContact, META_PROTO, "WindowOpen", 0) ? 0 : PREF_CREATEREAD); - return CallService(MS_PROTO_CHAINRECV, wParam, (LPARAM)ccs); // pass through as normal - } - - return 1; // Stop further processing. -} - -/** Receive a message for a MetaContact -* -* @return 0 -*/ -INT_PTR Meta_RecvMessage(WPARAM wParam, LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - PROTORECVEVENT *pre = (PROTORECVEVENT *) ccs->lParam; - - // contact is not a meta proto contact - just leave it - char *proto = GetContactProto(ccs->hContact); - if ( !proto || strcmp(proto, META_PROTO)) - return 0; - - if (options.use_proto_recv) { - // use the subcontact's protocol to add the db if possible (AIMOSCAR removes HTML here!) - MCONTACT most_online = Meta_GetMostOnline(ccs->hContact); - if (char *subProto = GetContactProto(most_online)) - if ( ProtoCallService(subProto, PSR_MESSAGE, wParam, lParam) != CALLSERVICE_NOTFOUND) - return 0; - } - - // otherwise, add event to db directly - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.szModule = META_PROTO; - dbei.timestamp = pre->timestamp; - dbei.flags = (pre->flags & PREF_CREATEREAD ? DBEF_READ : 0); - if (pre->flags & PREF_RTL) dbei.flags |= DBEF_RTL; - if (pre->flags & PREF_UTF) dbei.flags |= DBEF_UTF; - dbei.eventType = EVENTTYPE_MESSAGE; - dbei.cbBlob = (DWORD)strlen(pre->szMessage) + 1; - if ( pre->flags & PREF_UNICODE ) - dbei.cbBlob *= ( sizeof( wchar_t )+1 ); - dbei.pBlob = (PBYTE) pre->szMessage; - db_event_add(ccs->hContact, &dbei); - return 0; -} - - -/** Called when an ACK is received. -* -* Retransmit the ACK sent by a simple contact so that it -* looks like it was the MetaContact that sends the ACK. -* -* @param wParam : Allways set to 0. -* @param lParam : Reference to a ACKDATA that contains -information about the ACK. -* @return 0 on success, 1 otherwise. -*/ -int Meta_HandleACK(WPARAM wParam, LPARAM lParam) -{ - ACKDATA *ack = (ACKDATA*) lParam; - MCONTACT hUser; - - if (ack->hContact == 0 || (hUser = (MCONTACT)db_get_dw(ack->hContact, META_PROTO, "Handle",0)) == 0) - return 0; // Can't find the MetaID, let through the protocol chain - - - if ( !strcmp(ack->szModule, META_PROTO)) { - return 0; // don't rebroadcast our own acks - } - - // if it's for something we don't support, ignore - if (ack->type != ACKTYPE_MESSAGE && ack->type != ACKTYPE_CHAT && ack->type != ACKTYPE_FILE && ack->type != ACKTYPE_AWAYMSG - && ack->type != ACKTYPE_AVATAR && ack->type != ACKTYPE_GETINFO) - - { - return 0; - } - - // change the hContact in the avatar info struct, if it's the avatar we're using - else drop it - if (ack->type == ACKTYPE_AVATAR) { - if (ack->result == ACKRESULT_SUCCESS || ack->result == ACKRESULT_FAILED || ack->result == ACKRESULT_STATUS) { - DBVARIANT dbv; - - // change avatar if the most online supporting avatars changes, or if we don't have one - MCONTACT most_online = Meta_GetMostOnlineSupporting(hUser, PFLAGNUM_4, PF4_AVATARS); - //if (AI.hContact == 0 || AI.hContact != most_online) { - if (ack->hContact == 0 || ack->hContact != most_online) { - return 0; - } - - //if ( !db_get(AI.hContact, "ContactPhoto", "File", &dbv)) { - if ( !db_get(ack->hContact, "ContactPhoto", "File", &dbv)) { - db_set_ts(hUser, "ContactPhoto", "File", dbv.ptszVal); - db_free(&dbv); - } - - if (ack->hProcess) { - PROTO_AVATAR_INFORMATIONT AI; - memcpy(&AI, (PROTO_AVATAR_INFORMATIONT *)ack->hProcess, sizeof(PROTO_AVATAR_INFORMATIONT)); - if (AI.hContact) - AI.hContact = hUser; - - return ProtoBroadcastAck(META_PROTO, hUser,ack->type,ack->result, (HANDLE)&AI, ack->lParam); - } else - return ProtoBroadcastAck(META_PROTO, hUser,ack->type,ack->result, 0, ack->lParam); - } - } - - return ProtoBroadcastAck(META_PROTO, hUser,ack->type,ack->result,ack->hProcess,ack->lParam); -} - -// hiding contacts on "CList/UseGroups" setting changed can cause a crash - do it in a seperate thread during idle time -static DWORD sttHideContacts( BOOL param ) -{ - Meta_HideMetaContacts((int)param); - return 0; -} - -/** Call whenever a contact changes one of its settings (for example, the status) -** -* @param wParam \c HANDLE to the contact that has change of its setting. -* @param lParam Reference to a structure that contains the setting that has changed (not used) -*/ -int Meta_SettingChanged(WPARAM wParam, LPARAM lParam) -{ - DBCONTACTWRITESETTING *dcws = (DBCONTACTWRITESETTING *)lParam; - char buffer[512], szId[40]; - int contact_number; - MCONTACT hMeta, most_online; - - // hide metacontacts when groups disabled - if (wParam == 0 - && ((strcmp(dcws->szModule, "CList") == 0 && strcmp(dcws->szSetting, "UseGroups") == 0) - || (strcmp(dcws->szModule, META_PROTO) == 0 && strcmp(dcws->szSetting, "Enabled") == 0))) - { - sttHideContacts(!Meta_IsEnabled()); - return 0; - } - - if (wParam == 0 - && strcmp(dcws->szModule, "Import") == 0 && strcmp(dcws->szSetting, "Completed") == 0) - { - // import process has just been run...call startup routines... - Meta_SetHandles(); - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - int meta_id; - if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1)) != (DWORD)-1) - Meta_CopyData(hContact); - } - - Meta_HideLinkedContacts(); - Meta_SuppressStatus(options.suppress_status); - } - - // from here on, we're just interested in contact settings - if (wParam == 0) return 0; - - if ((hMeta=(MCONTACT)db_get_dw(wParam, META_PROTO, "Handle",0))!=0 && CallService(MS_DB_CONTACT_IS, (WPARAM)hMeta, 0)) // just to be safe - { - // This contact is attached to a MetaContact. - - contact_number = Meta_GetContactNumber(wParam); - if (contact_number == -1) return 0; // exit - db corruption - - if ( !meta_group_hack_disabled && !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "Group") && - Meta_IsEnabled() && db_get_b(wParam, META_PROTO, "Hidden", 0) == 0 && !Miranda_Terminated()) { - if ((dcws->value.type == DBVT_ASCIIZ || dcws->value.type == DBVT_UTF8) && !Meta_IsHiddenGroup(dcws->value.pszVal)) { - // subcontact group reassigned - copy to saved group - db_set(wParam, META_PROTO, "OldCListGroup", &dcws->value); - db_set_s(wParam, "CList", "Group", META_HIDDEN_GROUP); - } else if (dcws->value.type == DBVT_DELETED) { - db_unset(wParam, META_PROTO, "OldCListGroup"); - db_set_s(wParam, "CList", "Group", META_HIDDEN_GROUP); - } - } - else if ( !strcmp(dcws->szSetting, "IP")) { - if (dcws->value.type == DBVT_DWORD) - db_set_dw(hMeta, META_PROTO, "IP", dcws->value.dVal); - else - db_unset(hMeta, META_PROTO, "IP"); - } - else if ( !strcmp(dcws->szSetting, "RealIP")) { - if (dcws->value.type == DBVT_DWORD) - db_set_dw(hMeta, META_PROTO, "RealIP", dcws->value.dVal); - else - db_unset(hMeta, META_PROTO, "RealIP"); - - } - else if ( !strcmp(dcws->szSetting, "ListeningTo")) { - switch(dcws->value.type) { - case DBVT_ASCIIZ: - db_set_s(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal); - break; - case DBVT_UTF8: - db_set_utf(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal); - break; - case DBVT_WCHAR: - db_set_ws(hMeta, META_PROTO, "ListeningTo", dcws->value.pwszVal); - break; - case DBVT_DELETED: - db_unset(hMeta, META_PROTO, "ListeningTo"); - break; - } - } - else if ( !strcmp(dcws->szSetting, "Nick") && !dcws->value.type == DBVT_DELETED) { - // subcontact nick has changed - update metacontact - strcpy(buffer, "Nick"); - strcat(buffer, _itoa(contact_number, szId, 10)); - db_set(hMeta, META_PROTO, buffer, &dcws->value); - - DBVARIANT dbv; - if (Mydb_get(wParam, "CList", "MyHandle", &dbv)) { - strcpy(buffer, "CListName"); - strcat(buffer, _itoa(contact_number, szId, 10)); - db_set(hMeta, META_PROTO, buffer, &dcws->value); - } - else db_free(&dbv); - - // copy nick to metacontact, if it's the most online - MCONTACT most_online = Meta_GetMostOnline(hMeta); - Meta_CopyContactNick(hMeta, most_online); - - return 0; - } - else if ( !strcmp(dcws->szSetting, "IdleTS")) { - if (dcws->value.type == DBVT_DWORD) - db_set_dw(hMeta, META_PROTO, "IdleTS", dcws->value.dVal); - else if (dcws->value.type == DBVT_DELETED) - db_set_dw(hMeta, META_PROTO, "IdleTS", 0); - } - else if ( !strcmp(dcws->szSetting, "LogonTS")) { - if (dcws->value.type == DBVT_DWORD) - db_set_dw(hMeta, META_PROTO, "LogonTS", dcws->value.dVal); - else if (dcws->value.type == DBVT_DELETED) - db_set_dw(hMeta, META_PROTO, "LogonTS", 0); - } - else if ( !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "MyHandle")) { - if (dcws->value.type == DBVT_DELETED) { - char *proto = GetContactProto(wParam); - strcpy(buffer, "CListName"); - strcat(buffer, _itoa(contact_number, szId, 10)); - - DBVARIANT dbv; - if (proto && !Mydb_get(wParam, proto, "Nick", &dbv)) { - db_set(hMeta, META_PROTO, buffer, &dbv); - db_free(&dbv); - } else { - db_unset(hMeta, META_PROTO, buffer); - } - } else { - // subcontact clist displayname has changed - update metacontact - strcpy(buffer, "CListName"); - strcat(buffer, _itoa(contact_number, szId, 10)); - - db_set(hMeta, META_PROTO, buffer, &dcws->value); - } - - // copy nick to metacontact, if it's the most online - MCONTACT most_online = Meta_GetMostOnline(hMeta); - Meta_CopyContactNick(hMeta, most_online); - - return 0; - } - else if ( !strcmp(dcws->szSetting, "Status") && !dcws->value.type == DBVT_DELETED) { - // subcontact changing status - - // update subcontact status setting - strcpy(buffer, "Status"); - strcat(buffer, _itoa(contact_number, szId, 10)); - db_set_w(hMeta, META_PROTO, buffer, dcws->value.wVal); - - strcpy(buffer, "StatusString"); - strcat(buffer, _itoa(contact_number, szId, 10)); - db_set_ts(hMeta, META_PROTO, buffer, pcli->pfnGetStatusModeDescription(dcws->value.wVal, 0)); - - // if the contact was forced, unforce it (which updates status) - if ((HANDLE)db_get_dw(hMeta, META_PROTO, "ForceSend", 0) == (HANDLE)wParam) - MetaAPI_UnforceSendContact((WPARAM)hMeta, 0); - else { - // set status to that of most online contact - most_online = Meta_GetMostOnline(hMeta); - Meta_CopyContactNick(hMeta, most_online); - - Meta_FixStatus(hMeta); - Meta_CopyData(hMeta); - } - - // most online contact with avatar support might have changed - update avatar - most_online = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS); - if (most_online) { - PROTO_AVATAR_INFORMATIONT AI; - - AI.cbSize = sizeof(AI); - AI.hContact = hMeta; - AI.format = PA_FORMAT_UNKNOWN; - _tcscpy(AI.filename, _T("X")); - - if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS) - db_set_ts(hMeta, "ContactPhoto", "File",AI.filename); - } - } - else if (strcmp(dcws->szSetting, "XStatusId") == 0 || strcmp(dcws->szSetting, "XStatusMsg") == 0 || strcmp(dcws->szSetting, "XStatusName") == 0 || strcmp(dcws->szSetting, "StatusMsg") == 0) { - Meta_CopyData(hMeta); - } - else if (strcmp(dcws->szSetting, "MirVer") == 0) { - Meta_CopyData(hMeta); - } - else if ( !meta_group_hack_disabled && !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "Hidden")) { - if ((dcws->value.type == DBVT_DELETED || db_get_b(wParam, "CList", "Hidden", 0) == 0) - && db_get_b(wParam, META_PROTO, "Hidden", 0) == 1) - { - // a subcontact we hid (e.g. jabber) has been unhidden - hide it again :( - db_set_b(wParam, "CList", "Hidden", 1); - } - } - } - - return 0; -} - -int Meta_ContactDeleted(WPARAM wParam, LPARAM lParam) -{ - // is a subcontact - update meta contact - MCONTACT hMeta = (MCONTACT)db_get_dw(wParam, META_PROTO, "Handle", 0); - if (hMeta) { - Meta_RemoveContactNumber(hMeta, db_get_dw(wParam, META_PROTO, "ContactNumber", -1)); - NotifyEventHooks(hSubcontactsChanged, (WPARAM)hMeta, 0); - return 0; - } - - // not a subcontact - is it a metacontact? - int num_contacts = db_get_dw(wParam, META_PROTO, "NumContacts", 0); - if (num_contacts) - NotifyEventHooks(hSubcontactsChanged, (WPARAM)wParam, 0); - - // remove & restore all subcontacts - for (int i = 0; i < num_contacts; i++) { - MCONTACT hContact = Meta_GetContactHandle(wParam, i); - if (hContact && (HANDLE)db_get_dw(hContact, META_PROTO, "Handle", 0) == (HANDLE)wParam) { - if (db_get_b(hContact, META_PROTO, "IsSubcontact", 0) == 1) - db_unset(hContact, META_PROTO, "IsSubcontact"); - db_unset(hContact, META_PROTO, META_LINK); - db_unset(hContact, META_PROTO, "Handle"); - db_unset(hContact, META_PROTO, "ContactNumber"); - Meta_RestoreGroup(hContact); - db_unset(hContact, META_PROTO, "OldCListGroup"); - - // stop ignoring, if we were - if (options.suppress_status) - CallService(MS_IGNORE_UNIGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - } - } - return 0; -} - -/** Call when we want to send a user is typing message -* -* @param wParam \c HANDLE to the contact that we are typing to -* @param lParam either PROTOTYPE_SELFTYPING_ON or PROTOTYPE_SELFTYPING_OFF -*/ -INT_PTR Meta_UserIsTyping(WPARAM wParam, LPARAM lParam) -{ - // This is a simple contact, let through the stack of protocols - if (db_get_dw(wParam, META_PROTO, META_ID,(DWORD)-1) == (DWORD)-1) - return 0; - - // forward to sending protocol, if supported - - MCONTACT most_online = Meta_GetMostOnline(wParam); - Meta_CopyContactNick(wParam, most_online); - if ( !most_online) - return 0; - - char *proto = GetContactProto(most_online); - if (proto) - if ( ProtoServiceExists(proto, PSS_USERISTYPING)) - ProtoCallService(proto, PSS_USERISTYPING, (WPARAM)most_online, (LPARAM)lParam); - - return 0; -} - -/** Call when we want to receive a user is typing message -* -* @param wParam \c HANDLE to the contact that is typing or not -* @param lParam either PROTOTYPE_SELFTYPING_ON or PROTOTYPE_SELFTYPING_OFF -*/ -int Meta_ContactIsTyping(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hMeta; - if ((hMeta = (MCONTACT)db_get_dw(wParam, META_PROTO, "Handle",0)) != 0 && Meta_IsEnabled()) { - // This contact is attached to a MetaContact. - if ( !options.subcontact_windows) { // we don't want clicking on the clist notification icon to open the metacontact message window - // try to remove any clist events we added for subcontact - CallServiceSync(MS_CLIST_REMOVEEVENT, wParam, (LPARAM) 1); - CallService(MS_PROTO_CONTACTISTYPING, (WPARAM)hMeta, lParam); - // stop processing of event - return 1; - } - } - - return 0; -} - -/** Called when user info is about to be shown -* -* Returns 1 to stop event processing and opens page for metacontact default contact (returning 1 to stop it doesn't work!) -* -*/ - -int Meta_UserInfo(WPARAM wParam, LPARAM lParam) -{ - DWORD default_contact_number = db_get_dw(lParam, META_PROTO, "Default", (DWORD)-1); - - if (default_contact_number == -1) // not a meta contact - return 0; - - CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)Meta_GetContactHandle(lParam, default_contact_number), 0); - return 1; -} - -// handle message window api ver 0.0.0.1+ events - record window open/close status for subcontacts, so we know whether to -// let received messages through and add db history to metacontact, or vice versa -int Meta_MessageWindowEvent(WPARAM wParam, LPARAM lParam) { - MessageWindowEventData *mwed = (MessageWindowEventData *)lParam; - MCONTACT hMeta = 0; - - message_window_api_enabled = TRUE; - - if ((hMeta = (MCONTACT)db_get_dw(mwed->hContact, META_PROTO, "Handle", 0)) != 0 - || db_get_dw(mwed->hContact, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) - { - // contact is subcontact of metacontact, or an actual metacontact - record whether window is open or closed - if (mwed->uType == MSG_WINDOW_EVT_OPEN || mwed->uType == MSG_WINDOW_EVT_OPENING) { - db_set_b(mwed->hContact, META_PROTO, "WindowOpen", 1); - - if (hMeta) { // subcontact window opened - remove clist events we added for metacontact - while(!CallService(MS_CLIST_REMOVEEVENT, (WPARAM)hMeta, (LPARAM)mwed->hContact)); - } - } else if (mwed->uType == MSG_WINDOW_EVT_CLOSE || mwed->uType == MSG_WINDOW_EVT_CLOSING) { - db_set_b(mwed->hContact, META_PROTO, "WindowOpen", 0); - if ( !hMeta) { // hMeta is 0 for metacontact (sorry) - DWORD saved_def; - - MetaAPI_UnforceSendContact((WPARAM)mwed->hContact, 0); - - // restore saved default contact - if (options.set_default_on_recv) { - saved_def = db_get_dw(mwed->hContact, META_PROTO, "SavedDefault", -1); - if (options.temp_default && saved_def != (DWORD)-1) { - db_set_dw(mwed->hContact, META_PROTO, "Default", saved_def); - db_set_dw(mwed->hContact, META_PROTO, "SavedDefault", (DWORD)-1); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)mwed->hContact, (LPARAM)Meta_GetContactHandle(hMeta, saved_def)); // nick set in event handler - } - } - } - } - } - - return 0; -} - -int Meta_ClistDoubleClicked(WPARAM wParam, LPARAM lParam) -{ - if (db_get_dw(wParam, META_PROTO, "Default",(WORD)-1) == (WORD)-1) - return 0; - - // -1 indicates no specific capability but respect 'ForceDefault' - MCONTACT most_online = Meta_GetMostOnlineSupporting(wParam, PFLAGNUM_1, -1); - if ( !most_online) - return 0; - - if (options.subcontact_windows) { - if (lParam) // contact from incoming message in lParam via (at this point) clist message event - CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)lParam, 0); - else // simulate double click on most_online contact and stop event processing - CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0); - return 1; - } - - char *proto = GetContactProto(most_online); - if (proto == NULL) - return 0; - - char buffer[512]; - strcpy(buffer, proto); - strcat(buffer, PS_GETCAPS); - - // get the contacts messaging capabilities - int caps = CallService(buffer, (WPARAM)PFLAGNUM_1, 0); - if ((caps & PF1_IMSEND) || (caps & PF1_CHAT) || (proto && strcmp(proto, "IRC") == 0)) - // let event process normally - return 0; - - // simulate double click on most_online contact and stop event processing - CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0); - return 1; -} - -INT_PTR Meta_ClistMessageEventClicked(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = ((CLISTEVENT *)lParam)->hContact; - return Meta_ClistDoubleClicked(hContact, (LPARAM)((CLISTEVENT *)lParam)->hDbEvent); -} - -int NudgeRecieved(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -/** Called when all the plugin are loaded into Miranda. -* -* Initializes the 4 menus present in the context-menu -* and the initial value of nextMetaID -*/ -int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - char buffer[512], buffer2[512], buffer3[512]; - int i; - - if (ServiceExists(MS_MSG_GETWINDOWAPI)) - message_window_api_enabled = TRUE; - - // disable group hack for older nicer versions without the fix - if (ServiceExists(MS_CLUI_GETVERSION)) { - char *version = (char *)CallService(MS_CLUI_GETVERSION, 0, 0); - if (version && strlen(version) >= strlen("CList Nicer+") && strncmp(version, "CList Nicer+", strlen("CList Nicer+")) == 0) - meta_group_hack_disabled = TRUE; - } - - HookEvent(ME_CLIST_PREBUILDCONTACTMENU, Meta_ModifyMenu); - HookEvent(ME_CLIST_DOUBLECLICKED, Meta_ClistDoubleClicked ); - - InitIcons(); - - //////////////////////////////////////////////////////////////////////////// - CLISTMENUITEM mi = { sizeof(mi) }; - - // main menu item - mi.icolibItem = GetIconHandle(I_MENUOFF); - mi.pszName = LPGEN("Toggle MetaContacts Off"); - mi.pszService = "MetaContacts/OnOff"; - mi.position = 500010000; - hMenuOnOff = Menu_AddMainMenuItem(&mi); - - // contact menu items - mi.icolibItem = GetIconHandle(I_CONVERT); - mi.position = -200010; - mi.pszName = LPGEN("Convert to MetaContact"); - mi.pszService = "MetaContacts/Convert"; - hMenuConvert = Menu_AddContactMenuItem(&mi); - - mi.icolibItem = GetIconHandle(I_ADD); - mi.position = -200009; - mi.pszName = LPGEN("Add to existing MetaContact..."); - mi.pszService = "MetaContacts/AddTo"; - hMenuAdd = Menu_AddContactMenuItem(&mi); - - mi.icolibItem = GetIconHandle(I_EDIT); - mi.position = -200010; - mi.pszName = LPGEN("Edit MetaContact..."); - mi.pszService = "MetaContacts/Edit"; - hMenuEdit = Menu_AddContactMenuItem(&mi); - - mi.icolibItem = GetIconHandle(I_SETDEFAULT); - mi.position = -200009; - mi.pszName = LPGEN("Set as MetaContact default"); - mi.pszService = "MetaContacts/Default"; - hMenuDefault = Menu_AddContactMenuItem(&mi); - - mi.icolibItem = GetIconHandle(I_REMOVE); - mi.position = -200008; - mi.pszName = LPGEN("Delete MetaContact"); - mi.pszService = "MetaContacts/Delete"; - hMenuDelete = Menu_AddContactMenuItem(&mi); - - mi.flags |= CMIF_HIDDEN; - mi.pszContactOwner = META_PROTO; - - mi.position = -99000; - for (i = 0; i < MAX_CONTACTS; i++) { - mi.position--; - strcpy(buffer3, (char *)Translate("Context")); - strcat(buffer3, _itoa(i, buffer2, 10)); - mi.pszName = buffer3; - - strcpy(buffer, "MetaContacts/MenuFunc"); - strcat(buffer, _itoa(i, buffer2, 10)); - mi.pszService= buffer; - - hMenuContact[i] = Menu_AddContactMenuItem(&mi); - } - - nextMetaID = db_get_dw(NULL, META_PROTO, "NextMetaID",0); - - // loop and copy data from subcontacts - if (options.copydata) { - int meta_id; - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) - if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) - Meta_CopyData(hContact); - } - - Meta_HideLinkedContacts(); - - if ( !Meta_IsEnabled()) { - // modify main menu item - mi.flags = CMIM_NAME | CMIM_ICON; - mi.icolibItem = GetIconHandle(I_MENU); - mi.pszName = LPGEN("Toggle MetaContacts On"); - Menu_ModifyItem(hMenuOnOff, &mi); - - Meta_HideMetaContacts(TRUE); - } - else Meta_SuppressStatus(options.suppress_status); - - // hook srmm window close/open events - message api ver 0.0.0.1+ - if (HookEvent(ME_MSG_WINDOWEVENT, Meta_MessageWindowEvent)) - message_window_api_enabled = TRUE; - - // hook protocol nudge events to forward to subcontacts - int numberOfProtocols; - PROTOACCOUNT ** ppProtocolDescriptors; - ProtoEnumAccounts(&numberOfProtocols, &ppProtocolDescriptors); - - for (int i = 0; i < numberOfProtocols ; i++) - if ( strcmp(ppProtocolDescriptors[i]->szModuleName, META_PROTO)) { - char str[MAXMODULELABELLENGTH + 10]; - mir_snprintf(str, SIZEOF(str), "%s/Nudge", ppProtocolDescriptors[i]->szModuleName); - HookEvent(str, NudgeRecieved); - } - - return 0; -} - -static VOID CALLBACK sttMenuThread( PVOID param ) -{ - HMENU hMenu = (HMENU)CallService(MS_CLIST_MENUBUILDCONTACT, (WPARAM)param, 0); - - TPMPARAMS tpmp = { 0 }; - tpmp.cbSize = sizeof(tpmp); - BOOL menuRet = TrackPopupMenuEx(hMenu, TPM_RETURNCMD, menuMousePoint.x, menuMousePoint.y, (HWND)CallService(MS_CLUI_GETHWND, 0, 0), &tpmp); - - CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(LOWORD(menuRet), MPCF_CONTACTMENU), (LPARAM)param); - - DestroyMenu(hMenu); -} - -INT_PTR Meta_ContactMenuFunc(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = Meta_GetContactHandle(wParam, (int)lParam); - - if (options.menu_function == FT_MSG) { - // open message window if protocol supports message sending or chat, else simulate double click - - int caps; - char *proto; - char buffer[512]; - - proto = GetContactProto(hContact); - - if (proto) { - strcpy(buffer, proto); - strcat(buffer, PS_GETCAPS); - - caps = CallService(buffer, (WPARAM)PFLAGNUM_1, 0); - - if ((caps & PF1_IMSEND) || (caps & PF1_CHAT) || (proto && strcmp(proto, "IRC") == 0)) { - // set default contact for sending/status and open message window - db_set_dw(wParam, META_PROTO, "Default", (DWORD)(int)lParam); - NotifyEventHooks(hEventDefaultChanged, wParam, (LPARAM)hContact); - CallService(MS_MSG_SENDMESSAGE, wParam, 0); - } else - // protocol does not support messaging - simulate double click - CallService(MS_CLIST_CONTACTDOUBLECLICKED, hContact, 0); - } else - // protocol does not support messaging - simulate double click - CallService(MS_CLIST_CONTACTDOUBLECLICKED, hContact, 0); - - } else if (options.menu_function == FT_MENU) { - // show contact's context menu - CallFunctionAsync(sttMenuThread, (void*)hContact); - } else if (options.menu_function == FT_INFO) { - // show user info for subcontact - CallService(MS_USERINFO_SHOWDIALOG, hContact, 0); - } - - return 0; -} - -//////////////////// -// file transfer support - mostly not required, since subcontacts do the receiving -//////////////////// - -INT_PTR Meta_FileSend(WPARAM wParam, LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - char *proto = 0; - DWORD default_contact_number; - - if ((default_contact_number = db_get_dw(ccs->hContact, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) - { - // This is a simple contact - // (this should normally not happen, since linked contacts do not appear on the list.) - //PUShowMessage("meta has no default", SM_NOTIFY); - return 0; - } - else - { - MCONTACT most_online = Meta_GetMostOnlineSupporting(ccs->hContact, PFLAGNUM_1, PF1_FILESEND); - if ( !most_online) { - //PUShowMessage("no most online for ft", SM_NOTIFY); - return 0; - } - - proto = GetContactProto(most_online); - if (proto) - return (int)(CallContactService(most_online, PSS_FILE, ccs->wParam, ccs->lParam)); - } - return 0; // fail -} - -INT_PTR Meta_GetAwayMsg(WPARAM wParam, LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - char *proto = 0; - DWORD default_contact_number; - - if ((default_contact_number = db_get_dw(ccs->hContact, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) - { - // This is a simple contact - // (this should normally not happen, since linked contacts do not appear on the list.) - return 0; - } - else - { - MCONTACT most_online = Meta_GetMostOnlineSupporting(ccs->hContact, PFLAGNUM_1, PF1_MODEMSGRECV); - if ( !most_online) - return 0; - - proto = GetContactProto(most_online); - if ( !proto) return 0; - - //Meta_CopyContactNick(ccs->hContact, most_online, proto); - - ccs->hContact = most_online; - //Meta_SetNick(proto); - - return (int)(CallContactService(ccs->hContact, PSS_GETAWAYMSG, ccs->wParam, ccs->lParam)); - } - return 0; // fail -} - -INT_PTR Meta_GetAvatarInfo(WPARAM wParam, LPARAM lParam) { - PROTO_AVATAR_INFORMATIONT *AI = (PROTO_AVATAR_INFORMATIONT *) lParam; - DWORD default_contact_number; - - if ((default_contact_number = db_get_dw(AI->hContact, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) - { - // This is a simple contact - // (this should normally not happen, since linked contacts do not appear on the list.) - return 0; - } - else - { - MCONTACT hMeta = AI->hContact; - MCONTACT hSub = Meta_GetMostOnlineSupporting(AI->hContact, PFLAGNUM_4, PF4_AVATARS); - if ( !hSub) - return GAIR_NOAVATAR; - - char *proto = GetContactProto(hSub); - if ( !proto) return GAIR_NOAVATAR; - - AI->hContact = hSub; - - INT_PTR result = ProtoCallService(proto, PS_GETAVATARINFOT, wParam, lParam); - AI->hContact = hMeta; - if (result != CALLSERVICE_NOTFOUND) - return result; - } - return GAIR_NOAVATAR; // fail -} - -INT_PTR Meta_GetInfo(WPARAM wParam, LPARAM lParam) -{ - CCSDATA *ccs = (CCSDATA*)lParam; - DWORD default_contact_number; - - // This is a simple contact - // (this should normally not happen, since linked contacts do not appear on the list.) - if ((default_contact_number = db_get_dw(ccs->hContact, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) - return 0; - - MCONTACT most_online = Meta_GetMostOnlineSupporting(ccs->hContact, PFLAGNUM_4, PF4_AVATARS); - if ( !most_online) - return 0; - - char *proto = GetContactProto(most_online); - if ( !proto) return 0; - - PROTO_AVATAR_INFORMATIONT AI; - AI.cbSize = sizeof(AI); - AI.hContact = ccs->hContact; - AI.format = PA_FORMAT_UNKNOWN; - _tcscpy(AI.filename, _T("X")); - if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS) - db_set_ts(ccs->hContact, "ContactPhoto", "File",AI.filename); - - most_online = Meta_GetMostOnline(ccs->hContact); - Meta_CopyContactNick(ccs->hContact, most_online); - - if ( !most_online) - return 0; - - ccs->hContact = most_online; - if ( !ProtoServiceExists(proto, PSS_GETINFO)) - return 0; // fail - - return CallContactService(ccs->hContact, PSS_GETINFO, ccs->wParam, ccs->lParam); -} - -int Meta_OptInit(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.position = -790000000; - odp.hInstance = hInstance; - odp.flags = ODPF_BOLDGROUPS; - - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); - odp.pszTitle = LPGEN("MetaContacts"); - odp.pszGroup = LPGEN("Contacts"); - odp.pszTab = LPGEN("General"); - odp.pfnDlgProc = DlgProcOpts; - Options_AddPage(wParam, &odp); - - odp.pszTemplate = MAKEINTRESOURCEA(IDD_PRIORITIES); - odp.pszTab = LPGEN("Priorities"); - odp.pfnDlgProc = DlgProcOptsPriorities; - Options_AddPage(wParam, &odp); - - odp.pszTemplate = MAKEINTRESOURCEA(IDD_HISTORY); - odp.pszTab = LPGEN("History"); - odp.pfnDlgProc = DlgProcOpts; - Options_AddPage(wParam, &odp); - return 0; -} - -int Meta_CallMostOnline(WPARAM wParam, LPARAM lParam) -{ - MCONTACT most_online_im = Meta_GetMostOnline(wParam); - - // fix nick - Meta_CopyContactNick(wParam, most_online_im); - - // fix status - Meta_FixStatus(wParam); - - // copy all other data - Meta_CopyData((MCONTACT) wParam); - return 0; -} - -INT_PTR Meta_OnOff(WPARAM wParam, LPARAM lParam) -{ - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_NAME | CMIM_ICON; - // just write to db - the rest is handled in the Meta_SettingChanged function - if (db_get_b(0, META_PROTO, "Enabled", 1)) { - db_set_b(0, META_PROTO, "Enabled", 0); - // modify main mi item - mi.icolibItem = GetIconHandle(I_MENU); - mi.pszName = LPGEN("Toggle MetaContacts On"); - } else { - db_set_b(0, META_PROTO, "Enabled", 1); - // modify main mi item - mi.icolibItem = GetIconHandle(I_MENUOFF); - mi.pszName = LPGEN("Toggle MetaContacts Off"); - } - Menu_ModifyItem(hMenuOnOff, &mi); - return 0; -} - - -int Meta_PreShutdown(WPARAM wParam, LPARAM lParam) { - Meta_SetStatus((WPARAM)ID_STATUS_OFFLINE, 0); - Meta_UnhideLinkedContacts(); - Meta_SuppressStatus(FALSE); - //MessageBox(0, "Status is OFFLINE", "MC", MB_OK); - //MessageBox(0, "Preshutdown complete", "MC", MB_OK); - - if (setStatusTimerId) KillTimer(0, setStatusTimerId); - - return 0; -} - -INT_PTR MenuFunc(WPARAM wParam, LPARAM lParam, LPARAM param) -{ - return Meta_ContactMenuFunc(wParam, param); -} - -/** Initializes all services provided by the plugin -* -* Creates every function and hooks the event desired. -*/ - -void Meta_InitServices() -{ - previousMode = mcStatus = ID_STATUS_OFFLINE; - - CreateServiceFunction("MetaContacts/Convert", Meta_Convert); - CreateServiceFunction("MetaContacts/AddTo", Meta_AddTo); - CreateServiceFunction("MetaContacts/Edit", Meta_Edit); - CreateServiceFunction("MetaContacts/Delete", Meta_Delete); - CreateServiceFunction("MetaContacts/Default", Meta_Default); - CreateServiceFunction("MetaContacts/ForceDefault", Meta_ForceDefault); - - // hidden contact menu items...ho hum - for (int i=0; i < MAX_CONTACTS; i++) { - char szServiceName[100]; - mir_snprintf(szServiceName, SIZEOF(szServiceName), "MetaContacts/MenuFunc%d", i); - CreateServiceFunctionParam(szServiceName, MenuFunc, i); - } - - CreateProtoServiceFunction(META_PROTO, PS_GETCAPS, Meta_GetCaps); - CreateProtoServiceFunction(META_PROTO, PS_GETNAME, Meta_GetName); - CreateProtoServiceFunction(META_PROTO, PS_LOADICON, Meta_LoadIcon); - - CreateProtoServiceFunction(META_PROTO, PS_SETSTATUS, Meta_SetStatus); - - CreateProtoServiceFunction(META_PROTO, PS_GETSTATUS, Meta_GetStatus); - CreateProtoServiceFunction(META_PROTO, PSS_MESSAGE, Meta_SendMessage); - - CreateProtoServiceFunction(META_PROTO, PSS_USERISTYPING, Meta_UserIsTyping ); - - CreateProtoServiceFunction(META_PROTO, PSR_MESSAGE, Meta_RecvMessage); - - // file recv is done by subcontacts - CreateProtoServiceFunction(META_PROTO, PSS_FILE, Meta_FileSend); - - CreateProtoServiceFunction(META_PROTO, PSS_GETAWAYMSG, Meta_GetAwayMsg); - - CreateProtoServiceFunction(META_PROTO, PS_GETAVATARINFOT, Meta_GetAvatarInfo); - - CreateProtoServiceFunction(META_PROTO, PSS_GETINFO, Meta_GetInfo); - - CreateProtoServiceFunction(META_FILTER, PSR_MESSAGE, MetaFilter_RecvMessage); - CreateProtoServiceFunction(META_FILTER, PSS_MESSAGE, MetaFilter_SendMessage); - - // API services and events - CreateServiceFunction(MS_MC_GETMETACONTACT, MetaAPI_GetMeta); - CreateServiceFunction(MS_MC_GETDEFAULTCONTACT, MetaAPI_GetDefault); - CreateServiceFunction(MS_MC_GETDEFAULTCONTACTNUM, MetaAPI_GetDefaultNum); - CreateServiceFunction(MS_MC_GETMOSTONLINECONTACT, MetaAPI_GetMostOnline); - CreateServiceFunction(MS_MC_GETNUMCONTACTS, MetaAPI_GetNumContacts); - CreateServiceFunction(MS_MC_GETSUBCONTACT, MetaAPI_GetContact); - CreateServiceFunction(MS_MC_SETDEFAULTCONTACTNUM, MetaAPI_SetDefaultContactNum); - CreateServiceFunction(MS_MC_SETDEFAULTCONTACT, MetaAPI_SetDefaultContact); - CreateServiceFunction(MS_MC_FORCESENDCONTACTNUM, MetaAPI_ForceSendContactNum); - CreateServiceFunction(MS_MC_FORCESENDCONTACT, MetaAPI_ForceSendContact); - CreateServiceFunction(MS_MC_UNFORCESENDCONTACT, MetaAPI_UnforceSendContact); - CreateServiceFunction(MS_MC_GETPROTOCOLNAME, MetaAPI_GetProtoName); - CreateServiceFunction(MS_MC_GETFORCESTATE, MetaAPI_GetForceState); - - CreateServiceFunction(MS_MC_CONVERTTOMETA, MetaAPI_ConvertToMeta); - CreateServiceFunction(MS_MC_ADDTOMETA, MetaAPI_AddToMeta); - CreateServiceFunction(MS_MC_REMOVEFROMMETA, MetaAPI_RemoveFromMeta); - - CreateServiceFunction(MS_MC_DISABLEHIDDENGROUP, MetaAPI_DisableHiddenGroup); - - CreateServiceFunction("MetaContacts/OnOff", Meta_OnOff); - CreateServiceFunction("MetaContacts/CListMessageEvent", Meta_ClistMessageEventClicked); - - CreateProtoServiceFunction(META_PROTO, PS_SEND_NUDGE, Meta_SendNudge); - - // create our hookable events - hEventDefaultChanged = CreateHookableEvent(ME_MC_DEFAULTTCHANGED); - hEventForceSend = CreateHookableEvent(ME_MC_FORCESEND); - hEventUnforceSend = CreateHookableEvent(ME_MC_UNFORCESEND); - hSubcontactsChanged = CreateHookableEvent(ME_MC_SUBCONTACTSCHANGED); - - // hook other module events we need - HookEvent(ME_PROTO_ACK, Meta_HandleACK); - HookEvent(ME_PROTO_CONTACTISTYPING, Meta_ContactIsTyping); - HookEvent(ME_DB_CONTACT_DELETED, Meta_ContactDeleted); - HookEvent(ME_DB_CONTACT_SETTINGCHANGED, Meta_SettingChanged); - HookEvent(ME_OPT_INITIALISE, Meta_OptInit); - HookEvent(ME_SYSTEM_MODULESLOADED, Meta_ModulesLoaded); - HookEvent(ME_SYSTEM_PRESHUTDOWN, Meta_PreShutdown); - - // hook our own events, used to call Meta_GetMostOnline which sets nick for metacontact - HookEvent(ME_MC_DEFAULTTCHANGED, Meta_CallMostOnline); - HookEvent(ME_MC_FORCESEND, Meta_CallMostOnline); - HookEvent(ME_MC_UNFORCESEND, Meta_CallMostOnline); - - // redirect nudge events - hEventNudge = CreateHookableEvent(META_PROTO "/Nudge"); -} - -//! Unregister all hooks and services from Miranda -void Meta_CloseHandles() -{ - // destroy our hookable events - DestroyHookableEvent(hEventDefaultChanged); - DestroyHookableEvent(hEventForceSend); - DestroyHookableEvent(hEventUnforceSend); - DestroyHookableEvent(hSubcontactsChanged); - DestroyHookableEvent(hEventNudge); -} diff --git a/plugins/!Deprecated/MetaContacts/src/meta_utils.cpp b/plugins/!Deprecated/MetaContacts/src/meta_utils.cpp deleted file mode 100644 index 6789e21352..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/meta_utils.cpp +++ /dev/null @@ -1,1431 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 meta_utils.c -* -* Diverses functions useful in different places. -*/ - -#include "metacontacts.h" - -HANDLE invisiGroup; -POINT menuMousePoint; - -INT_PTR Mydb_get(MCONTACT hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv) -{ - memset(dbv, 0, sizeof(DBVARIANT)); - return db_get_s(hContact, szModule, szSetting, dbv, 0); -} - -int Meta_EqualDBV(DBVARIANT *dbv, DBVARIANT *id) { - DWORD res = 1; - int i; - if (dbv->type == id->type) - { // If the id parameter and the value returned by the db_get - // are the same, this is the correct HANDLE, return it. - switch(dbv->type) - { - case DBVT_DELETED: - return 1; - case DBVT_BYTE: - if (dbv->bVal == id->bVal) - return 1; - case DBVT_WORD: - if (dbv->wVal == id->wVal) - return 1; - case DBVT_DWORD: - if (dbv->dVal == id->dVal) - return 1; - break; - case DBVT_ASCIIZ: - case DBVT_UTF8: - if ( !strcmp(dbv->pszVal,id->pszVal)) - return 1; - case DBVT_WCHAR: - if ( !wcscmp(dbv->pwszVal,id->pwszVal)) - return 1; - case DBVT_BLOB: - if (dbv->cpbVal == id->cpbVal) - { - for (i=dbv->cpbVal;res && i<=0;i--) - res = (dbv->pbVal[i] == id->pbVal[i]); - if (res) - { - return 1; - } - } - break; - } // end switch - } // end if (dbv.type == id.type) - - return 0; -} - -/** Retrieve a \c HANDLE from a protocol and an identifier -* -* @param protocol : Name of the protocol -* @param id : Unique field identifiying the contact searched -* -* @return a \c HANDLE to the specified contact or \c NULL - if no contact has been found. -*/ -MCONTACT Meta_GetHandle(const char *protocol, DBVARIANT *id) -{ - char *field; - DBVARIANT dbv; - DWORD i,res = 1; - - // Get the field identifying the contact in the database. - if ( !ProtoServiceExists(protocol, PS_GETCAPS)) - return NULL; - - field = (char *)CallProtoService(protocol,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0); - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - // Scan the database and retrieve the field for each contact - if ( !db_get(hContact, protocol, field, &dbv)) { - if (dbv.type == id->type) { - // If the id parameter and the value returned by the db_get - // are the same, this is the correct HANDLE, return it. - switch(dbv.type) { - case DBVT_DELETED: - break; - case DBVT_BYTE: - if (dbv.bVal == id->bVal) - return hContact; - break; - case DBVT_WORD: - if (dbv.wVal == id->wVal) - return hContact; - break; - case DBVT_DWORD: - if (dbv.dVal == id->dVal) - return hContact; - break; - case DBVT_ASCIIZ: - case DBVT_UTF8: - if ( !strcmp(dbv.pszVal,id->pszVal)) { - db_free(&dbv); - return hContact; - } - db_free(&dbv); - break; - - case DBVT_WCHAR: - if ( !wcscmp(dbv.pwszVal,id->pwszVal)) { - db_free(&dbv); - return hContact; - } - db_free(&dbv); - break; - - case DBVT_BLOB: - if (dbv.cpbVal == id->cpbVal) { - for (i=dbv.cpbVal;res && i<=0;i--) - res = (dbv.pbVal[i] == id->pbVal[i]); - if (res) { - db_free(&dbv); - return hContact; - } - } - db_free(&dbv); - break; - } // end switch - } - else db_free(&dbv); - } - } - return NULL; -} - -/** Update the MetaContact login, depending on the protocol desired -* -* The login of the "MetaContacts" protocol will be copied from the login -* of the specified protocol. -* -* @param szProto : The name of the protocol used to get the login that will be -* affected to the "MetaContacts" protocol. -* -* @return O on success, 1 otherwise. -*/ -int Meta_SetNick(char *szProto) -{ - CONTACTINFO ci; - ci.cbSize = sizeof(CONTACTINFO); - ci.dwFlag = CNF_DISPLAY | CNF_TCHAR; - ci.hContact = NULL; - ci.szProto = szProto; - if (CallService(MS_CONTACT_GETCONTACTINFO,0,(LPARAM)&ci)) - return 1; - - switch(ci.type) { - case CNFT_BYTE: - if ( db_set_b(NULL, META_PROTO, "Nick", ci.bVal)) - return 1; - break; - case CNFT_WORD: - if ( db_set_w(NULL, META_PROTO, "Nick", ci.wVal)) - return 1; - break; - case CNFT_DWORD: - if ( db_set_dw(NULL, META_PROTO, "Nick", ci.dVal)) - return 1; - break; - case CNFT_ASCIIZ: - if ( db_set_ts(NULL, META_PROTO, "Nick", ci.pszVal)) - return 1; - mir_free(ci.pszVal); - break; - default: - if ( db_set_s(NULL, META_PROTO, "Nick",(char *)TranslateT("Sender"))) - return 1; - break; - } - return 0; -} - -/** Assign a contact (src) to a metacontact (dest) -* -* @param src \c HANDLE to a contact that should be assigned -* @param dest \c HANDLE to a metacontact that will host the contact -* @param set_as_default \c bool flag to indicate whether the new contact becomes the default -* -* @return TRUE on success, FALSE otherwise -*/ -BOOL Meta_Assign(MCONTACT src, MCONTACT dest, BOOL set_as_default) -{ - DWORD metaID, num_contacts; - char buffer[512], szId[40]; - WORD status; - MCONTACT most_online; - - if ((metaID = db_get_dw(dest, META_PROTO, META_ID,(DWORD)-1))==-1) { - MessageBox(0, TranslateT("Could not get MetaContact ID"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - return FALSE; - } - - if ((num_contacts = db_get_dw(dest, META_PROTO, "NumContacts",(DWORD)-1))==-1) { - MessageBox(0, TranslateT("Could not retreive MetaContact contact count"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - return FALSE; - } - - char *szProto = GetContactProto(src); - if (szProto == NULL) { - MessageBox(0, TranslateT("Could not retreive contact protocol"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - return FALSE; - } - - // Get the login of the subcontact - char *field = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0); - DBVARIANT dbv; - if ( db_get(src,szProto, field, &dbv)) { - MessageBox(0, TranslateT("Could not get unique ID of contact"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - return FALSE; - } - - // Check that is is 'on the list' - if ( db_get_b(src, "CList", "NotOnList", 0) == 1) { - MessageBox(0, TranslateT("Contact is 'Not on List' - please add the contact to your contact list before assigning."), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - db_free(&dbv); - return FALSE; - } - - num_contacts++; - if (num_contacts >= MAX_CONTACTS) { - MessageBox(0, TranslateT("MetaContact is full"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - db_free(&dbv); - return FALSE; - } - - // write the contact's protocol - strcpy(buffer, "Protocol"); - strcat(buffer, _itoa(num_contacts-1, szId, 10)); - - if ( db_set_s(dest, META_PROTO, buffer, szProto)) { - MessageBox(0, TranslateT("Could not write contact protocol to MetaContact"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - db_free(&dbv); - return FALSE; - } - - // write the login - strcpy(buffer, "Login"); - strcat(buffer, szId); - - if ( db_set(dest, META_PROTO, buffer, &dbv)) { - MessageBox(0, TranslateT("Could not write unique ID of contact to MetaContact"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - db_free(&dbv); - return FALSE; - } - - db_free(&dbv); - - // If we can get the nickname of the subcontact... - if ( !db_get(src, szProto, "Nick", &dbv)) { - // write the nickname - strcpy(buffer, "Nick"); - strcat(buffer, szId); - if (db_set(dest, META_PROTO, buffer, &dbv)) { - MessageBox(0, TranslateT("Could not write nickname of contact to MetaContact"), TranslateT("Assignment error"), MB_OK | MB_ICONWARNING); - return FALSE; - } - - db_free(&dbv); - } - - // write the display name - strcpy(buffer, "CListName"); - strcat(buffer, szId); - db_set_ts(dest, META_PROTO, buffer, pcli->pfnGetContactDisplayName(src, GCDNF_TCHAR)); - - // Get the status - if ( !szProto) - status = ID_STATUS_OFFLINE; - else - status = db_get_w(src, szProto, "Status", ID_STATUS_OFFLINE); - - // write the status - strcpy(buffer, "Status"); - strcat(buffer, szId); - db_set_w(dest, META_PROTO, buffer, status); - - // write the handle - strcpy(buffer, "Handle"); - strcat(buffer, szId); - db_set_dw(dest, META_PROTO, buffer, (DWORD)src); - - // write status string - strcpy(buffer, "StatusString"); - strcat(buffer, szId); - - TCHAR *szStatus = pcli->pfnGetStatusModeDescription(status, 0); - db_set_ts(dest, META_PROTO, buffer, szStatus); - - // Write the link in the contact - db_set_dw(src, META_PROTO, META_LINK, metaID); - - // Write the contact number in the contact - db_set_dw(src, META_PROTO, "ContactNumber", num_contacts-1); - - // Write the handle in the contact - db_set_dw(src, META_PROTO, "Handle", (DWORD)dest); - - // update count of contacts - db_set_dw(dest, META_PROTO, "NumContacts", num_contacts); - - if (set_as_default) { - db_set_dw(dest, META_PROTO, "Default", (WORD)(num_contacts - 1)); - NotifyEventHooks(hEventDefaultChanged, (WPARAM)dest, (LPARAM)src); - } - - db_set_b(src, META_PROTO, "IsSubcontact", 1); - // set nick to most online contact that can message - most_online = Meta_GetMostOnline(dest); - Meta_CopyContactNick(dest, most_online); - - // set status to that of most online contact - Meta_FixStatus(dest); - - // if the new contact is the most online contact with avatar support, get avatar info - most_online = Meta_GetMostOnlineSupporting(dest, PFLAGNUM_4, PF4_AVATARS); - if (most_online == src) { - PROTO_AVATAR_INFORMATIONT AI; - AI.cbSize = sizeof(AI); - AI.hContact = dest; - AI.format = PA_FORMAT_UNKNOWN; - _tcscpy(AI.filename, _T("X")); - - if ( CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS) - db_set_ts(dest, "ContactPhoto", "File",AI.filename); - } - - // Hide the contact - Meta_SetGroup(src); - - // copy history - if (options.copy_subcontact_history) - copyHistory(src, dest); - - // Ignore status if the option is on - if (options.suppress_status) - CallService(MS_IGNORE_IGNORE, (WPARAM)src, (WPARAM)IGNOREEVENT_USERONLINE); - - // copy other data - Meta_CopyData(dest); - - NotifyEventHooks(hSubcontactsChanged, (WPARAM)dest, 0); - return TRUE; -} - -/** -* Convenience method - get most online contact supporting messaging -* -*/ -MCONTACT Meta_GetMostOnline(MCONTACT hMeta) { - return Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_1, PF1_IM); -} -/** Get the 'most online' contact for a meta contact (according to above order) which supports the specified -* protocol service, and copies nick from that contact -* -* @param hMeta \c HANDLE to a metacontact -* -* @return \c HANDLE to a contact -*/ - -MCONTACT Meta_GetMostOnlineSupporting(MCONTACT hMeta, int pflagnum, unsigned long capability) { - int most_online_status = ID_STATUS_OFFLINE; - MCONTACT most_online_contact = NULL, hContact; - int i, status, default_contact_number, num_contacts; - unsigned long caps = 0; - char *szProto, *most_online_proto; - - // you can't get more online than having the default contact ONLINE - so check that first - if ((default_contact_number = db_get_dw(hMeta, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1) - { - // This is a simple contact - return NULL to signify error. - // (this should normally not happen, since all meta contacts have a default contact) - return NULL; - } - - // if the default is beyond the end of the list (eek!) return null - if (default_contact_number >= (num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", 0))) - return NULL; - - most_online_contact = Meta_GetContactHandle(hMeta, default_contact_number); - szProto = GetContactProto(most_online_contact); - caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0; - if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM; - // we are forced to do use default for sending - '-1' capability indicates no specific capability, but respect 'Force Default' - if (szProto && db_get_b(hMeta, META_PROTO, "ForceDefault", 0) && capability != 0 && (capability == -1 || (caps & capability) == capability)) // capability is 0 when we're working out status - return most_online_contact; - - // a subcontact is being temporarily 'forced' to do sending - if ((most_online_contact = (MCONTACT)db_get_dw(hMeta, META_PROTO, "ForceSend", 0))) { - caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0; - if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM; - if (szProto && (caps & capability) == capability && capability != 0) // capability is 0 when we're working out status - return most_online_contact; - } - - most_online_contact = Meta_GetContactHandle(hMeta, default_contact_number); - szProto = GetContactProto(most_online_contact); - if (szProto && CallProtoService(szProto, PS_GETSTATUS, 0, 0) >= ID_STATUS_ONLINE) { - caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0; - if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM; - if (szProto && (capability == -1 || (caps & capability) == capability)) { - most_online_status = db_get_w(most_online_contact, szProto, "Status", ID_STATUS_OFFLINE); - - // if our default is not offline, and option to use default is set - return default - // and also if our default is online, return it - if (most_online_status == ID_STATUS_ONLINE || (most_online_status != ID_STATUS_OFFLINE && options.always_use_default)) { - return most_online_contact; - } - } else - most_online_status = ID_STATUS_OFFLINE; - } else - most_online_status = ID_STATUS_OFFLINE; - - most_online_proto = szProto; - // otherwise, check all the subcontacts for the one closest to the ONLINE state which supports the required capability - for (i = 0; i < num_contacts; i++) { - if (i == default_contact_number) // already checked that (i.e. initial value of most_online_contact and most_online_status are those of the default contact) - continue; - - hContact = Meta_GetContactHandle(hMeta, i); - szProto = GetContactProto(hContact); - - if ( !szProto || CallProtoService(szProto, PS_GETSTATUS, 0, 0) < ID_STATUS_ONLINE) // szProto offline or connecting - continue; - - caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0; - if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM; - if (szProto && (capability == -1 || (caps & capability) == capability)) { - - status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE); - - if (status == ID_STATUS_ONLINE) { - most_online_contact = hContact; - most_online_proto = szProto; - return most_online_contact; - } else if (status <= ID_STATUS_OFFLINE) // status below ID_STATUS_OFFLINE is a connecting status - continue; - else { - if (GetRealPriority(szProto, status) < GetRealPriority(most_online_proto, most_online_status)) { - most_online_status = status; - most_online_contact = hContact; - most_online_proto = szProto; - } - } - } - } - - // no online contacts? if we're trying to message, use 'send offline' contact - if (most_online_status == ID_STATUS_OFFLINE && capability == PF1_IM) { - MCONTACT hOffline = Meta_GetContactHandle(hMeta, db_get_dw(hMeta, META_PROTO, "OfflineSend", (DWORD)-1)); - if (hOffline) - most_online_contact = hOffline; - } - - return most_online_contact; -} - -int Meta_GetContactNumber(MCONTACT hContact) { - return db_get_dw(hContact, META_PROTO, "ContactNumber", -1); -} - -BOOL dbv_same(DBVARIANT *dbv1, DBVARIANT *dbv2) { - if (dbv1->type != dbv2->type) return FALSE; - - switch(dbv1->type) { - case DBVT_BYTE: - return dbv1->bVal == dbv2->bVal; - case DBVT_WORD: - return dbv1->wVal == dbv2->wVal; - case DBVT_DWORD: - return dbv1->dVal == dbv2->dVal; - case DBVT_ASCIIZ: - return !strcmp(dbv1->pszVal, dbv2->pszVal); - case DBVT_BLOB: - return (dbv1->cpbVal == dbv2->cpbVal && !memcmp(dbv1->pbVal, dbv2->pbVal, dbv1->cpbVal)); - break; - default: - return FALSE; - } -} - - void copy_settings_array(MCONTACT hMeta, char *module, const char *settings[], int num_settings) { - int num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", (DWORD)-1), - default_contact = db_get_dw(hMeta, META_PROTO, "Default", (DWORD)-1), - most_online = Meta_GetContactNumber(Meta_GetMostOnline(hMeta)); - - MCONTACT hContact; - int i, j; - char *used_mod; - - DBVARIANT dbv1, dbv2; - BOOL free, got_val, bDataWritten; - - BOOL use_default = FALSE; - int source_contact = (use_default ? default_contact : most_online); - - if (source_contact < 0 || source_contact >= num_contacts) return; - - for (i = 0; i < num_settings; i++) { - bDataWritten = FALSE; - for (j = 0; j < num_contacts && !bDataWritten; j++) { - // do source (most online) first - if (j == 0) - hContact = Meta_GetContactHandle(hMeta, source_contact); - else if (j <= source_contact) - hContact = Meta_GetContactHandle(hMeta, j - 1); - else - hContact = Meta_GetContactHandle(hMeta, j); - - if (hContact) { - if ( !module) { - used_mod = GetContactProto(hContact); - if ( !used_mod) - continue; // next contact - } - else used_mod = module; - - if (j == 0 && strcmp(settings[i], "MirVer") == 0) //Always reset MirVer - db_unset(hMeta, (module ? used_mod : META_PROTO), settings[i]); - - got_val = !Mydb_get(hContact, used_mod, settings[i], &dbv2); - if (got_val) { - free = !Mydb_get(hMeta, (module ? used_mod : META_PROTO), settings[i], &dbv1); - - if (strcmp(settings[i], "MirVer") == 0) { - if (db_get_w(hContact, used_mod, "Status", ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE) { - if ( !free || (dbv1.pszVal == NULL || strcmp(dbv1.pszVal, "") == 0 || strlen(dbv1.pszVal) < 2)) { - db_set(hMeta, (module ? used_mod : META_PROTO), settings[i], &dbv2); - bDataWritten = TRUE; //only break if found something to copy - } - } - } - else { - if ( !free || !dbv_same(&dbv1, &dbv2)) { - db_set(hMeta, (module ? used_mod : META_PROTO), settings[i], &dbv2); - if (dbv2.type == DBVT_ASCIIZ || dbv2.type == DBVT_UTF8) { - if (dbv2.pszVal != NULL && strcmp(dbv2.pszVal, "") != 0) - bDataWritten = TRUE; //only break if found something to copy - } else if (dbv2.type == DBVT_WCHAR) { - if (dbv2.pwszVal != 0 && wcscmp(dbv2.pwszVal, L"") != 0) - bDataWritten = TRUE; //only break if found something to copy - } else - bDataWritten = TRUE; //only break if found something to copy - } - else - bDataWritten = TRUE; - - } - db_free(&dbv2); - if (free)db_free(&dbv1); - } - } - } - } -} - -const char *ProtoSettings[25] = - {"BirthDay", "BirthMonth", "BirthYear", "Age", "Cell", "Cellular", "Homepage", "email", "Email", "e-mail", - "FirstName", "MiddleName", "LastName", "Title", "Timezone", "Gender", "MirVer", "ApparentMode", "IdleTS", "LogonTS", "IP", "RealIP", - "Auth", "ListeningTo", "Country"}; -const char *UserInfoSettings[71] = - {"NickName", "FirstName", "MiddleName", "LastName", "Title", "Timezone", "Gender", "DOBd", "DOBm", "DOBy", - "Mye-mail0", "Mye-mail1", "MyPhone0", "MyPhone1", "MyNotes", "PersonalWWW", - "HomePhone", "HomeFax", "HomeMobile", "HomeStreet", "HomeCity", "HomeState", "HomeZip", "HomeCountry", - "WorkPhone", "WorkFax", "WorkMobile", "WorkStreet", "WorkCity", "WorkState", "WorkZip", "WorkCountry", "Company", "Department", "Position", - "Occupation", "Cellular", "Cell", "Phone", "Notes", - - "e-mail", "e-mail0", "e-mail1", "Homepage", "MaritalStatus", - "CompanyCellular", "CompanyCity", "CompanyState", "CompanyStreet", "CompanyCountry", "Companye-mail", - "CompanyHomepage", "CompanyDepartment", "CompanyOccupation", "CompanyPosition", "CompanyZip", - - "OriginCity", "OriginState", "OriginStreet", "OriginCountry", "OriginZip", - "City", "State", "Street", "Country", "Zip", - - "Language1", "Language2", "Language3", "Partner", "Gender"}; -const char *ContactPhotoSettings[5] = - {"File","Backup","Format","ImageHash","RFile"}; -const char *MBirthdaySettings[3] = - { "BirthDay", "BirthMonth", "BirthYear"}; - -// special handling for status message -// copy from first subcontact with any of these values that has the same status as the most online contact -// szProto: -// clist: "StatusMsg" - -void CopyStatusData(MCONTACT hMeta) -{ - int num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", (DWORD)-1), - most_online = Meta_GetContactNumber(Meta_GetMostOnline(hMeta)); - WORD status = db_get_w(hMeta, META_PROTO, "Status", ID_STATUS_OFFLINE); - MCONTACT hContact; - BOOL bDoneStatus = FALSE, bDoneXStatus = FALSE; - - for (int i = 0; i < num_contacts; i++) { - if (i == 0) - hContact = Meta_GetContactHandle(hMeta, most_online); - else if (i <= most_online) - hContact = Meta_GetContactHandle(hMeta, i - 1); - else - hContact = Meta_GetContactHandle(hMeta, i); - - char *szProto = GetContactProto(hContact); - - if (szProto && db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE) == status) { - DBVARIANT dbv; - if ( !bDoneStatus && !Mydb_get(hContact, "CList", "StatusMsg", &dbv)) { - db_set(hMeta, "CList", "StatusMsg", &dbv); - db_free(&dbv); - bDoneStatus = TRUE; - } - if ((!bDoneXStatus) && (!Mydb_get(hContact, szProto, "XStatusId", &dbv)) && dbv.type != DBVT_DELETED) { - db_set_s(hMeta, META_PROTO, "XStatusProto", szProto); - db_set(hMeta, META_PROTO, "XStatusId", &dbv); - - db_free(&dbv); - if ( !Mydb_get(hContact, szProto, "XStatusMsg", &dbv)) { - db_set(hMeta, META_PROTO, "XStatusMsg", &dbv); - db_free(&dbv); - } - if ( !Mydb_get(hContact, szProto, "XStatusName", &dbv)) { - db_set(hMeta, META_PROTO, "XStatusName", &dbv); - db_free(&dbv); - } - bDoneXStatus = TRUE; - } - } - - if (bDoneStatus && bDoneXStatus) - break; - } - - if ( !bDoneStatus) db_unset(hMeta, "CList", "StatusMsg"); - if ( !bDoneXStatus) { - db_unset(hMeta, META_PROTO, "XStatusId"); - db_unset(hMeta, META_PROTO, "XStatusMsg"); - db_unset(hMeta, META_PROTO, "XStatusName"); - } -} - -void Meta_CopyData(MCONTACT hMeta) -{ - if (options.copydata) { - CopyStatusData(hMeta); - - copy_settings_array(hMeta, 0, ProtoSettings, 25); - copy_settings_array(hMeta, "mBirthday", UserInfoSettings, 3); - copy_settings_array(hMeta, "ContactPhoto", ContactPhotoSettings, 5); - - if (options.copy_userinfo) - copy_settings_array(hMeta, "UserInfo", UserInfoSettings, 71); - } -} - - -MCONTACT Meta_GetContactHandle(MCONTACT hMeta, int contact_number) -{ - char buffer[512], buffer2[512]; - int num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", 0); - - if (contact_number >= num_contacts || contact_number < 0) return 0; - - strcpy(buffer, "Handle"); - strcat(buffer, _itoa(contact_number, buffer2, 10)); - return (MCONTACT)db_get_dw(hMeta, META_PROTO, buffer, 0); -} - -int Meta_SetHandles(void) -{ - DWORD meta_id, num_contacts, contact_number; - MCONTACT hContact2, hContact = db_find_first(), hNextContact; - char buffer[512]; - TCHAR nick_buffer[128], buffer2[40]; - BOOL found; - - while ( hContact != NULL ) { - if ((meta_id = db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1))!=(DWORD)-1) { - // is a subcontact - - // get nick for debug messages - _tcscpy(nick_buffer, _T("meta_id: ")); - _tcscat(nick_buffer, _itot(meta_id, buffer2, 10)); - - contact_number = db_get_dw(hContact, META_PROTO, "ContactNumber", (DWORD)-1); - _tcscat(nick_buffer, _T(", contact num: ")); - _tcscat(nick_buffer, _itot(contact_number, buffer2, 10)); - - if (contact_number < 0) { - // problem! - MessageBox(0, TranslateT("Subcontact contact number < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR); - //CallService(MS_DB_CONTACT_DELETE, (WPARMA)hContact, 0); - hNextContact = db_find_next(hContact); - Meta_Delete(hContact, (LPARAM)1); - hContact = hNextContact; - continue; - //return 1; - } - - // ensure the window open flag is not present - db_unset(hContact, META_PROTO, "WindowOpen"); - - // find metacontact - found = FALSE; - hContact2 = db_find_first(); - - while ( hContact2 != NULL ) { - if (db_get_dw(hContact2, META_PROTO, META_ID,(DWORD)-1) == meta_id) { - found = TRUE; - - // set handle - db_set_dw(hContact, META_PROTO, "Handle", (DWORD)hContact2); - - // increment contact counter (cleared in Load function) - db_set_b(hContact2, META_PROTO, "ContactCountCheck", - (unsigned char)(db_get_b(hContact2, META_PROTO, "ContactCountCheck", 0) + 1)); - - num_contacts = db_get_dw(hContact2, META_PROTO, "NumContacts", (DWORD)-1); - if (contact_number >= 0 && contact_number < num_contacts) { - // set metacontact's handle to us - char szId[40]; - strcpy(buffer, "Handle"); - strcat(buffer, _itoa((int)contact_number, szId, 10)); - db_set_dw(hContact2, META_PROTO, buffer, (DWORD)hContact); - } - else { - TCHAR buff[256]; - // problem - contact number is greater than meta's number of contacts - mir_sntprintf(buff, SIZEOF(buff), TranslateT("Subcontact contact number (%d) > meta num contacts (%d) - deleting MetaContact"), contact_number, num_contacts); - MessageBox(0, buff, nick_buffer, MB_OK | MB_ICONERROR); - - hNextContact = db_find_next(hContact); - Meta_Delete(hContact, (LPARAM)1); - hContact = hNextContact; - continue; - } - } - - hContact2 = db_find_next(hContact2); - } - - if ( !found) { - // problem - subcontact's meta not found - MessageBox(0, TranslateT("Subcontact's MetaContact not found - deleting MetaContact data"), nick_buffer, MB_OK | MB_ICONERROR); - - // delete meta data - db_unset(hContact, META_PROTO, "IsSubcontact"); - db_unset(hContact, META_PROTO, META_LINK); - db_unset(hContact, META_PROTO, "Handle"); - db_unset(hContact, META_PROTO, "ContactNumber"); - Meta_RestoreGroup(hContact); - db_unset(hContact, META_PROTO, "OldCListGroup"); - - // stop ignoring, if we were - if (options.suppress_status) - CallService(MS_IGNORE_UNIGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - - } - else { - if ( !db_get_b(hContact, META_PROTO, "IsSubcontact", 0)) - db_set_b(hContact, META_PROTO, "IsSubcontact", 1); - } - } - else db_unset(hContact, META_PROTO, "Handle"); - - if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) { - // is a metacontact - - // get nick for debug messages - _tcscpy(nick_buffer, _T("meta_id: ")); - _tcscat(nick_buffer, _itot(meta_id, buffer2, 10)); - - // ensure the window open flag is not present - db_unset(hContact, META_PROTO, "WindowOpen"); - - // ensure default is reasonable - contact_number = db_get_dw(hContact, META_PROTO, "Default", -1); - num_contacts = db_get_dw(hContact, META_PROTO, "NumContacts", (DWORD)-1); - - if (num_contacts < 0) { - // problem - MessageBox(0, TranslateT("MetaContact number of contacts < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR); - hNextContact = db_find_next(hContact); - Meta_Delete(hContact, (LPARAM)1); - hContact = hNextContact; - continue; - } - - if (contact_number < 0 || contact_number >= num_contacts) { - // problem - MessageBox(0, TranslateT("MetaContact default contact number out of range - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR); - hNextContact = db_find_next(hContact); - Meta_Delete(hContact, (LPARAM)1); - hContact = hNextContact; - continue; - } - } - - hContact = db_find_next(hContact); - } - - // loop through one more time - check contact counts match - hContact = db_find_first(); - while ( hContact != NULL ) { - if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) { - // get nick for debug messages - - num_contacts = db_get_b(hContact, META_PROTO, "ContactCountCheck", -2); - if (num_contacts != (DWORD)db_get_dw(hContact, META_PROTO, "NumContacts", (DWORD)-1)) { - hNextContact = db_find_next(hContact); - - _tcscpy(nick_buffer, TranslateT("Meta ID: ")); - _tcscat(nick_buffer, _itot(meta_id, buffer2, 10)); - MessageBox(0, TranslateT("MetaContact corrupted - the number of subcontacts is incorrect.\nDeleting MetaContact."), nick_buffer, MB_OK | MB_ICONERROR); - - Meta_Delete(hContact, (LPARAM)1); - hContact = hNextContact; - continue; - } - } - hContact = db_find_next(hContact); - } - - return 0; -} - -/** Hide all contacts linked to any meta contact, and set handle links -* -* Additionally, set all sub contacts and metacontacts to offline so that status notifications are always sent -* -* and ensure metafilter in place -*/ - -#define szMsg LPGEN("The 'MetaContacts Hidden Group' has been added to your contact list.\n\ -This is most likely due to server-side contact information. To fix this, so that\n\ -MetaContacts continues to function correctly, you should:\n\ - - disable MetaContacts using the 'Toggle MetaContacts Off' main menu item\n\ - - move all contacts out of this group\n\ - - synchronize your contacts with the server\n\ - - re-enable MetaContacts") - -int Meta_HideLinkedContacts(void) { - DBVARIANT dbv, dbv2; - DWORD meta_id, num_contacts, contact_number; - WORD status; - char buffer[512], buffer2[512]; - char *szProto, *group_name; - int hGroup = 1; - - MCONTACT hContact2, hContact = db_find_first(); - - // ensure the hidden group does not exist (how this occurs i wonder but there have been reports!) - // (sometimes protocol server side groups are to blame - msn and icq) - if ( !meta_group_hack_disabled) do { - group_name = (char *)CallService(MS_CLIST_GROUPGETNAME, (WPARAM)hGroup, 0); - if (group_name && !strcmp(group_name, META_HIDDEN_GROUP)) { - // disabled because it shows a message box - //CallService(MS_CLIST_GROUPDELETE, (WPARAM)hGroup, 0); - MessageBox(0, TranslateT(szMsg), TranslateT("MetaContacts Warning"), MB_ICONWARNING | MB_OK); - break; - } - hGroup++; - } while(group_name); - - while (hContact != NULL) { - if ((meta_id = db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1))!=(DWORD)-1) { - // get contact number - contact_number = db_get_dw(hContact, META_PROTO, "ContactNumber", (DWORD)-1); - - // prepare to update metacontact record of subcontat status - szProto = GetContactProto(hContact); - - // save old group and move to invisible group (i.e. non-existent group) - Meta_SetGroup(hContact); - - // find metacontact - hContact2 = db_find_first(); - - while ( hContact2 != NULL ) { - if (db_get_dw(hContact2, META_PROTO, META_ID,(DWORD)-1) == meta_id) { - num_contacts = db_get_dw(hContact2, META_PROTO, "NumContacts", (DWORD)-1); - if (contact_number >= 0 && contact_number < num_contacts) { - - if ( !szProto) - status = ID_STATUS_OFFLINE; - else - status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE); - - // update metacontact's record of status for this contact - strcpy(buffer, "Status"); - strcat(buffer, _itoa(contact_number, buffer2, 10)); - db_set_w(hContact2, META_PROTO, buffer, status); - - // update metacontact's record of nick for this contact - if (szProto && !db_get(hContact, szProto, "Nick", &dbv)) { - strcpy(buffer, "Nick"); - strcat(buffer, _itoa(contact_number, buffer2, 10)); - db_set(hContact2, META_PROTO, buffer, &dbv); - - strcpy(buffer, "CListName"); - strcat(buffer, _itoa(contact_number, buffer2, 10)); - if (db_get(hContact, "CList", "MyHandle", &dbv2)) { - db_set(hContact2, META_PROTO, buffer, &dbv); - } else { - db_set(hContact2, META_PROTO, buffer, &dbv2); - db_free(&dbv2); - } - - db_free(&dbv); - } else { - if ( !db_get(hContact, "CList", "MyHandle", &dbv)) { - strcpy(buffer, "CListName"); - strcat(buffer, _itoa(contact_number, buffer2, 10)); - db_set(hContact2, META_PROTO, buffer, &dbv); - db_free(&dbv); - } - } - } - } - - hContact2 = db_find_next(hContact2); - } - - if (options.suppress_status) - CallService(MS_IGNORE_IGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - } - - hContact = db_find_next(hContact); - } - - // do metacontacts after handles set properly above - hContact = db_find_first(); - while ( hContact != NULL ) { - if (db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1)!=(DWORD)-1) { - // is a meta contact - MCONTACT hMostOnline = Meta_GetMostOnline(hContact); // set nick - Meta_CopyContactNick(hContact, hMostOnline); - - Meta_FixStatus(hContact); - - } - - hContact = db_find_next(hContact); - } - - return 0; -} - -/** Unhide all contacts linked to any meta contact -* -*/ -int Meta_UnhideLinkedContacts(void) -{ - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - if (db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) { - // has a link - unhide it - // restore old group - Meta_RestoreGroup(hContact); - } - } - - return 0; -} - -int Meta_HideMetaContacts(int hide) -{ - // set status suppression - if (hide) Meta_SuppressStatus(FALSE); - else Meta_SuppressStatus(options.suppress_status); - - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - if (db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1)!=(DWORD)-1) { - // is a meta contact - if (hide) - db_set_b(hContact, "CList", "Hidden", 1); - else - db_unset(hContact, "CList", "Hidden"); - } - else if (db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) { - // when metacontacts are hidden, show subcontacts, and vice versa - if (hide) - Meta_RestoreGroup(hContact); - else - Meta_SetGroup(hContact); - } - } - - return 0; -} - -void Meta_RestoreGroup(MCONTACT hContact) { - - if (meta_group_hack_disabled) return; // clist has called api function to disable group hack - yay! - - // the existence of this service means that clist_meta_mw is active and will do the hiding for us - if (ServiceExists(MS_CLUI_METASUPPORT)) return; - - // show it anyway - users are reporting contacts removed from meta remain 'hidden' - // possible suspect - server side groups cause hidden group hack to fail, users hide contacts via clist->delete->hide option - db_unset(hContact, META_PROTO, "Hidden"); - - if (db_get_b(hContact, META_PROTO, "Hidden", 0) == 1) - { - // if we hid it, unhide it - db_unset(hContact, META_PROTO, "Hidden"); - db_unset(hContact, "CList", "Hidden"); - } else { - DBCONTACTWRITESETTING cws; - - if ( !db_get(hContact, META_PROTO, "OldCListGroup", &cws.value)) { - - if ((cws.value.type == DBVT_ASCIIZ || cws.value.type == DBVT_UTF8) && !strcmp(cws.value.pszVal, META_HIDDEN_GROUP)) { - db_unset(hContact, "CList", "Group"); - } else { - int hGroup = 1; - char *name = 0; - BOOL found = FALSE; - do { - name = (char *)CallService(MS_CLIST_GROUPGETNAME, (WPARAM)hGroup, 0); - if (name && !strcmp(name, cws.value.pszVal)) { - found = TRUE; - break; - } - hGroup++; - } while(name); - - if (found) - db_set(hContact, "CList", "Group", &cws.value); - else { - // put back into metacontact's group - DBVARIANT dbv; - MCONTACT hMeta = (MCONTACT)db_get_dw(hContact, META_PROTO, "Handle", 0); - if (hMeta && !Mydb_get(hMeta, "CList", "Group", &dbv)) { - db_set(hContact, "CList", "Group", &dbv); - db_free(&dbv); - } - else db_unset(hContact, "CList", "Group"); - } - } - db_free(&cws.value); - } - db_unset(hContact, META_PROTO, "OldCListGroup"); - - if ( !db_get(hContact, "CList", "Group", &cws.value)) { - if ((cws.value.type == DBVT_ASCIIZ || cws.value.type == DBVT_UTF8) && !strcmp(cws.value.pszVal, META_HIDDEN_GROUP)) { - db_unset(hContact, "CList", "Group"); - } - db_free(&cws.value); - } - } - - // show it anyway - users are reporting contacts removed from meta remain 'hidden' - // possible suspect - server side groups cause hidden group hack to fail, users hide contacts via clist->delete->hide option - db_unset(hContact, "CList", "Hidden"); -} - -void Meta_SetGroup(MCONTACT hContact) { - char *szProto, *uid; - - if (meta_group_hack_disabled) return; // clist has called api function to disable group hack - yay! - - // the existence of this service means that clist_meta_mw is active and will do the hiding for us - if (ServiceExists(MS_CLUI_METASUPPORT)) return; - - szProto = GetContactProto(hContact); - if (szProto) - uid = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0); - - if (szProto && uid && (INT_PTR)uid != CALLSERVICE_NOTFOUND && !strcmp(JABBER_UNIQUE_ID_SETTING, uid)) { - // if it's a jabber contact, hide it, and record the fact that it was us who did - db_set_b(hContact, META_PROTO, "Hidden", 1); - db_set_b(hContact, "CList", "Hidden", 1); - } - else { - DBVARIANT dbv; - // save old group and move to invisible group (i.e. non-existent group) - if ( !Mydb_get(hContact, "CList", "Group", &dbv)) { - if ((dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) && !strcmp(dbv.pszVal, META_HIDDEN_GROUP)) - ; // it's already in the group (shouldn't be - but maybe a crash) - else - db_set(hContact, META_PROTO, "OldCListGroup", &dbv); - - db_free(&dbv); - } - else db_unset(hContact, META_PROTO, "OldCListGroup"); - - db_set_s(hContact, "CList", "Group", META_HIDDEN_GROUP); - } -} - -int Meta_SuppressStatus(BOOL suppress) -{ - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - if (db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) { - // is a subcontact - if (suppress) - CallService(MS_IGNORE_IGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - else - CallService(MS_IGNORE_UNIGNORE, hContact, (WPARAM)IGNOREEVENT_USERONLINE); - } - } - - return 0; -} - -int Meta_CopyContactNick(MCONTACT hMeta, MCONTACT hContact) { - DBVARIANT dbv, dbv_proto; - char *szProto; - - if (options.lockHandle) { - hContact = Meta_GetContactHandle(hMeta, 0); - } - - if ( !hContact) return 1; - - //szProto = GetContactProto(hContact); - // read szProto direct from db, since we do this on load and other szProto plugins may not be loaded yet - if ( !db_get(hContact, "Protocol", "p", &dbv_proto)) { - - szProto = dbv_proto.pszVal; - if (options.clist_contact_name == CNNT_NICK && szProto) { - if ( !Mydb_get(hContact, szProto, "Nick", &dbv)) { - db_set(hMeta, META_PROTO, "Nick", &dbv); - db_free(&dbv); - //CallService(MS_CLIST_INVALIDATEDISPLAYNAME, (WPARAM)hMeta, 0); - //CallService(MS_CLUI_CONTACTRENAMED, (WPARAM)hMeta, 0); - db_free(&dbv_proto); - return 0; - } - } else if (options.clist_contact_name == CNNT_DISPLAYNAME) { - TCHAR *name = pcli->pfnGetContactDisplayName(hContact, GCDNF_TCHAR); - if (name && _tcscmp(name, TranslateT("(Unknown Contact)")) != 0) { - db_set_ts(hMeta, META_PROTO, "Nick", name); - db_free(&dbv_proto); - return 0; - } - } - db_free(&dbv_proto); - } - return 1; -} - -int Meta_SetAllNicks() -{ - for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { - if (db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1)!=(DWORD)-1) { - MCONTACT most_online = Meta_GetMostOnline(hContact); - Meta_CopyContactNick(hContact, most_online); - Meta_FixStatus(hContact); - Meta_CopyData(hContact); - } - - } - return 0; -} - -int Meta_IsHiddenGroup(const char *group_name) -{ - if (group_name && !strcmp(group_name, META_HIDDEN_GROUP)) - return 1; - - return 0; -} - -int Meta_SwapContacts(MCONTACT hMeta, DWORD contact_number1, DWORD contact_number2) { - DBVARIANT dbv1, dbv2; - - MCONTACT hContact1 = Meta_GetContactHandle(hMeta, contact_number1), - hContact2 = Meta_GetContactHandle(hMeta, contact_number2); - char buff1[512], buff12[512], buff2[512], buff22[512]; - BOOL ok1, ok2; - - // swap the protocol - strcpy(buff1, "Protocol"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "Protocol"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } - - // swap the status - strcpy(buff1, "Status"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "Status"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok1 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } - - // swap the status string - strcpy(buff1, "StatusString"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "StatusString"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } - - // swap the login - strcpy(buff1, "Login"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "Login"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_unset(hMeta, META_PROTO, buff2); - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } - if (ok2) { - db_unset(hMeta, META_PROTO, buff1); - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } - - // swap the nick - strcpy(buff1, "Nick"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "Nick"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } else { - db_unset(hMeta, META_PROTO, buff2); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } else { - db_unset(hMeta, META_PROTO, buff1); - } - - // swap the clist name - strcpy(buff1, "CListName"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "CListName"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } else { - db_unset(hMeta, META_PROTO, buff2); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } else { - db_unset(hMeta, META_PROTO, buff1); - } - - // swap the handle - strcpy(buff1, "Handle"); - strcat(buff1, _itoa(contact_number1, buff12, 10)); - strcpy(buff2, "Handle"); - strcat(buff2, _itoa(contact_number2, buff22, 10)); - ok1 = !Mydb_get(hMeta, META_PROTO, buff1, &dbv1); - ok2 = !Mydb_get(hMeta, META_PROTO, buff2, &dbv2); - if (ok1) { - db_set(hMeta, META_PROTO, buff2, &dbv1); - db_free(&dbv1); - } else { - db_unset(hMeta, META_PROTO, buff2); - } - if (ok2) { - db_set(hMeta, META_PROTO, buff1, &dbv2); - db_free(&dbv2); - } else { - db_unset(hMeta, META_PROTO, buff1); - } - - // finally, inform the contacts of their change in position - db_set_dw(hContact1, META_PROTO, "ContactNumber", (DWORD)contact_number2); - db_set_dw(hContact2, META_PROTO, "ContactNumber", (DWORD)contact_number1); - - return 0; -} - -INT_PTR CALLBACK DlgProcNull(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) { - case WM_INITDIALOG: - { - HWND prog = GetDlgItem(hwndDlg, IDC_PROG); - - TranslateDialogDefault( hwndDlg ); - - SendMessage(prog, PBM_SETPOS, 0, 0); - return TRUE; - } - } - return FALSE; -} - -// function to copy history from one contact to another - courtesy JdGordon (thx) -void copyHistory(MCONTACT hContactFrom, MCONTACT hContactTo) -{ - HANDLE hDbEvent; - DBEVENTINFO dbei; - //char *id; - //DWORD id_length; - //DWORD oldBlobSize; - DWORD time_now = time(0); - DWORD earliest_time = time_now - options.days_history * 24 * 60 * 60; - BYTE *buffer = 0; - HWND progress_dialog, prog; - - if ( !hContactFrom || !hContactTo) return; - - //id = Meta_GetUniqueIdentifier(hContactFrom, &id_length); - //if ( !id) return; - - progress_dialog = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_COPYPROGRESS), 0, DlgProcNull); - ShowWindow(progress_dialog, SW_SHOW); - - prog = GetDlgItem(progress_dialog, IDC_PROG); - - //CallService(MS_DB_SETSAFETYMODE, (WPARAM)FALSE, 0); - for (hDbEvent = db_event_first(hContactFrom); hDbEvent; hDbEvent = db_event_next(hDbEvent)) - { - // get the event - ZeroMemory(&dbei, sizeof(dbei)); - dbei.cbSize = sizeof(dbei); - - if ((dbei.cbBlob = db_event_getBlobSize(hDbEvent)) == -1) - break; - - buffer = (BYTE *)mir_realloc(buffer, dbei.cbBlob);// + id_length); - dbei.pBlob = buffer; - if ( db_event_get(hDbEvent, &dbei)) - break; - - // i.e. optoins.days_history == 0; - if (time_now == earliest_time) earliest_time = dbei.timestamp; - - if (dbei.timestamp < earliest_time) - continue; - - if (dbei.eventType != EVENTTYPE_MESSAGE && dbei.eventType != EVENTTYPE_FILE && dbei.eventType != EVENTTYPE_URL) - continue; - - if (time_now > earliest_time) { // just in case! - SendMessage(prog, PBM_SETPOS, (WPARAM)(int)(100.0 * (dbei.timestamp - earliest_time) / (time_now - earliest_time)), 0); - UpdateWindow(progress_dialog); - } - - dbei.szModule = META_PROTO; - dbei.flags &= ~DBEF_FIRST; - db_event_add(hContactTo, &dbei); - } - - DestroyWindow(progress_dialog); - if (buffer) mir_free(buffer); - //mir_free(id); -} - -void Meta_FixStatus(MCONTACT hMeta) -{ - MCONTACT most_online = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_1, 0); - if (most_online) { - char *szProto = GetContactProto(most_online); - if (szProto) { - WORD status = (WORD)db_get_w(most_online, szProto, "Status", (WORD)ID_STATUS_OFFLINE); - db_set_w(hMeta, META_PROTO, "Status", status); - } - else db_set_w(hMeta, META_PROTO, "Status", (WORD)ID_STATUS_OFFLINE); - } - else db_set_w(hMeta, META_PROTO, "Status", (WORD)ID_STATUS_OFFLINE); -} - -INT_PTR Meta_IsEnabled() { - return db_get_b(0, META_PROTO, "Enabled", 1) && (meta_group_hack_disabled || db_get_b(NULL, "CList", "UseGroups", 1)); -} - - - diff --git a/plugins/!Deprecated/MetaContacts/src/metacontacts.h b/plugins/!Deprecated/MetaContacts/src/metacontacts.h deleted file mode 100644 index 369bdf696c..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/metacontacts.h +++ /dev/null @@ -1,224 +0,0 @@ -/* -MetaContacts Plugin for Miranda IM. - -Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. - -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 metacontacts.h -* -* Header declaring functions that are accessed in multiple files. -*/ - -#define _CRT_SECURE_NO_DEPRECATE - -#define _WIN32_WINNT 0x0400 -#define _WIN32_IE 0x0300 - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "resource.h" -#include "version.h" - -#define META_PROTO "MetaContacts" -#define META_FILTER "MetaContactsFilter" -#define META_ID "MetaID" -#define META_FILTER_ID "MetaFilterID" -#define META_LINK "MetaLink" - -#define META_HIDDEN_GROUP "MetaContacts Hidden Group" -#define MAX_CONTACTS 20 - -// I can't think of a way around this - mental block - -INT_PTR TranslateMenuFunc(MCONTACT hContact, int i); -extern HGENMENU hMenuContact[MAX_CONTACTS]; - -extern HINSTANCE hInstance; -extern PLUGININFOEX pluginInfo; - -// contact menu items -extern HGENMENU hMenuConvert, hMenuAdd, hMenuEdit, hMenuDelete, hMenuDefault, hMenuForceDefault, hMenuOnOff; - -extern DWORD nextMetaID; -extern int mcStatus; - -INT_PTR Meta_Convert(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_AddTo(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_Edit(WPARAM wParam,LPARAM lParam); -void Meta_RemoveContactNumber(MCONTACT hMeta, int number); -INT_PTR Meta_Delete(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_Default(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_ForceDefault(WPARAM wParam,LPARAM lParam); - -INT_PTR Meta_IsEnabled(); - -int Meta_EqualDBV(DBVARIANT *dbv, DBVARIANT *id); -int Meta_ModifyMenu(WPARAM wParam,LPARAM lParam); -BOOL Meta_Assign(MCONTACT src, MCONTACT dest, BOOL set_as_default); -MCONTACT Meta_GetHandle(const char *protocol, DBVARIANT *id); -int Meta_SetNick(char *proto); -MCONTACT Meta_GetMostOnline(MCONTACT hMeta); -MCONTACT Meta_GetMostOnlineSupporting(MCONTACT hMeta, int pflagnum, unsigned long capability); -int Meta_HideLinkedContacts(void); -int Meta_SetHandles(void); -int Meta_UnhideLinkedContacts(void); -int Meta_GetContactNumber(MCONTACT hContact); -MCONTACT Meta_GetContactHandle(MCONTACT hMeta, int contact_number); -void Meta_RestoreGroup(MCONTACT hContact); -void Meta_SetGroup(MCONTACT hContact); -int Meta_HideMetaContacts(int hide); -int Meta_SuppressStatus(int suppress); -int Meta_CopyContactNick(MCONTACT hMeta, MCONTACT hContact); -void Meta_CopyData(MCONTACT hMeta); -int Meta_SetAllNicks(); -int Meta_IsHiddenGroup(const char *group_name); -int Meta_SwapContacts(MCONTACT hMeta, DWORD contact_number1, DWORD contact_number2); -// function to copy history from one contact to another - courtesy JdGordon with mods (thx) -void copyHistory(MCONTACT hContactFrom, MCONTACT hContactTo); -// inverse -//void Meta_RemoveHistory(HANDLE hContactRemoveFrom, HANDLE hContactSource); -void Meta_FixStatus(MCONTACT hMeta); - -char *Meta_GetUniqueIdentifier(MCONTACT hContact, DWORD *pused); - -INT_PTR Meta_GetCaps(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_GetName(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_LoadIcon(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_SetStatus(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_GetStatus(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_SendMessage(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_RecvMessage(WPARAM wParam,LPARAM lParam); -INT_PTR Meta_ContactMenuFunc(WPARAM wParam, LPARAM lParam); - -INT_PTR CALLBACK Meta_SelectDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -INT_PTR CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - -void Meta_InitServices(); -void Meta_CloseHandles(); - -enum MenuDisplayNameType {DNT_UID = 0, DNT_DID = 1}; -enum MenuFunctionType {FT_MSG = 0, FT_MENU = 1, FT_INFO = 2}; -enum CListDisplayNameType {CNNT_NICK = 0, CNNT_DISPLAYNAME = 1}; - -struct MetaOptions -{ - BYTE set_default_on_recv; - BYTE always_use_default; - BYTE suppress_status; - BYTE copy_subcontact_history; - BYTE subcontact_windows; - BYTE metahistory; - BYTE subhistory; - BYTE copydata; - BYTE lockHandle; - BYTE temp_default; - BYTE flash_meta_message_icon; - BYTE copy_userinfo; - BYTE use_proto_recv; - - int menu_contact_label; - int menu_function; - int clist_contact_name; - int days_history; - int set_status_from_offline_delay; -}; - -extern MetaOptions options; - -INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -int Meta_WriteOptions(MetaOptions *opt); -int Meta_ReadOptions(MetaOptions *opt); - -int GetDefaufaultPrio(int status); -int GetRealPriority(char *proto, int status); - -// API function headers -INT_PTR MetaAPI_GetMeta(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetDefault(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetDefaultNum(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetMostOnline(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetNumContacts(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetContact(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_SetDefaultContactNum(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_SetDefaultContact(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_ForceSendContactNum(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_ForceSendContact(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_UnforceSendContact(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_ForceDefault(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetForceState(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_GetProtoName(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_ConvertToMeta(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_AddToMeta(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_RemoveFromMeta(WPARAM wParam, LPARAM lParam); -INT_PTR MetaAPI_DisableHiddenGroup(WPARAM wParam, LPARAM lParam); - -// extended db get/write setting functions, that handle unicode -INT_PTR Mydb_get(MCONTACT hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv); - -// IcoLib support -void InitIcons(void); - -typedef enum {I_MENUOFF, I_MENU, I_CONVERT, I_ADD, I_EDIT, I_SETDEFAULT, I_REMOVE} IconIndex; -HICON LoadIconEx(IconIndex i); -HANDLE GetIconHandle(IconIndex i); - -extern HANDLE hEventDefaultChanged, hEventForceSend, hEventUnforceSend, hSubcontactsChanged; - -extern POINT menuMousePoint; - -extern BOOL message_window_api_enabled; - -#define MAX_PROTOCOLS 20 -extern char proto_names[MAX_PROTOCOLS * 128]; - -// used for the 'jabber' hack - i.e. hide contacts instead of moving them to the hidden group -#define JABBER_UNIQUE_ID_SETTING "jid" - -// delay setting status from offline - to help reduce innapropriate status notification popups -#define DEFAULT_SET_STATUS_SLEEP_TIME 15000 // milliseconds - -// service from clist_meta_mw, existence means we don't need to hide subcontacts (woohoo - thanks FYR) -#define MS_CLUI_METASUPPORT "CLUI/MetaContactSupport" - -extern BOOL meta_group_hack_disabled; - -#ifndef MS_CLUI_GETVERSION -#define MS_CLUI_GETVERSION "CLUI/GetVersion" - -#define szDelMsg LPGEN("You are going to remove all the contacts associated with this MetaContact.\nThis will delete the MetaContact.\n\nProceed Anyway?") - -#endif diff --git a/plugins/!Deprecated/MetaContacts/src/resource.h b/plugins/!Deprecated/MetaContacts/src/resource.h deleted file mode 100644 index 87507e2f35..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/resource.h +++ /dev/null @@ -1,75 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by MetaContacts.rc -// -#define IDC_BTN_REM 3 -#define IDD_METASELECT 101 -#define IDI_MCMENU 103 -#define IDD_METAEDIT 108 -#define IDD_OPTIONS 109 -#define IDD_COPYPROGRESS 110 -#define IDD_DELPROGRESS 111 -#define IDI_MCMENUOFF 116 -#define IDI_MCEDIT 118 -#define IDI_MCREMOVE 119 -#define IDI_MCCONVERT 120 -#define IDI_MCADD 121 -#define IDI_MCSETDEFAULT 122 -#define IDD_PRIORITIES 123 -#define IDD_HISTORY 124 -#define IDC_METALIST 1002 -#define IDC_ONLYAVAIL 1005 -#define IDC_DEFAULT 1008 -#define IDC_NAME 1009 -#define IDC_FRAME 1013 -#define IDC_VALIDATE 1014 -#define IDC_CHK_SETDEFAULTRECV 1016 -#define IDC_CHK_ALWAYSUSEDEFAULT 1017 -#define IDC_CHECK1 1018 -#define IDC_CHK_SUPPRESSSTATUS 1018 -#define IDC_CHK_FORCEDEFAULT 1018 -#define IDC_CHK_SRT 1018 -#define IDC_CHK_DEFAULT 1018 -#define IDC_RAD_UID 1019 -#define IDC_RAD_DID 1020 -#define IDC_RAD_MSG 1021 -#define IDC_RAD_MENU 1022 -#define IDC_RAD_INFO 1023 -#define IDC_RAD_NICK 1024 -#define IDC_RAD_NAME 1025 -#define IDC_LST_CONTACTS 1026 -#define IDC_BTN_SETDEFAULT 1027 -#define IDC_CHK_COPYHISTORY 1027 -#define IDC_BTN_UP 1028 -#define IDC_BTN_DOWN 1029 -#define IDC_ED_NAME 1030 -#define IDC_ED_DEFAULT 1031 -#define IDC_BTN_SETDEFAULT2 1031 -#define IDC_BTN_SETOFFLINE 1031 -#define IDC_ED_DAYS 1033 -#define IDC_PROG 1034 -#define IDC_CHK_SUBWINDOW 1035 -#define IDC_CHK_METAHISTORY 1036 -#define IDC_CHK_SUBHISTORY 1037 -#define IDC_CHK_COPYDATA 1038 -#define IDC_CHK_LOCKHANDLE 1039 -#define IDC_CHK_TEMPDEFAULT 1040 -#define IDC_ED_PRIORITY 1042 -#define IDC_SP_PRIORITY 1043 -#define IDC_CMB_STATUS 1044 -#define IDC_BUTTON2 1048 -#define IDC_BTN_RESET 1048 -#define IDC_CMB_PROTOCOL 1062 - -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 125 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1049 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/MetaContacts/src/stdafx.cpp b/plugins/!Deprecated/MetaContacts/src/stdafx.cpp deleted file mode 100644 index 9571e52d67..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "metacontacts.h" \ No newline at end of file diff --git a/plugins/!Deprecated/MetaContacts/src/version.h b/plugins/!Deprecated/MetaContacts/src/version.h deleted file mode 100644 index 3e17b2a8e4..0000000000 --- a/plugins/!Deprecated/MetaContacts/src/version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 14 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 13 - -#include - -#define __PLUGIN_NAME "MetaContacts" -#define __FILENAME "MetaContacts.dll" -#define __DESCRIPTION "Merges contacts from the same or different protocols into one." -#define __AUTHOR "J. Schaal & S. Ellis" -#define __AUTHOREMAIL "mail@scottellis.com.au" -#define __AUTHORWEB "http://miranda-ng.org/p/MetaContacts/" -#define __COPYRIGHT "© 2005,2006 Scott Ellis" diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/About.dfm b/plugins/!Deprecated/MirandaNGHistoryToDB/About.dfm deleted file mode 100644 index 9aeea290e8..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/About.dfm +++ /dev/null @@ -1,208 +0,0 @@ -object AboutForm: TAboutForm - Left = 200 - Top = 108 - BorderIcons = [biMinimize, biMaximize] - BorderStyle = bsSingle - Caption = 'About' - ClientHeight = 263 - ClientWidth = 346 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - Icon.Data = { - 0000010001001010000001000000680400001600000028000000100000002000 - 0000010020000000000000040000000000000000000000000000000000000000 - 0000000000000000000000000000FF1F2A000000000000000000000000000000 - 00000000000000000000FF1F2A00000000000000000000000000000000000000 - 00000000000000000000FF1F2A00FEEFA900FF1F2A00CDCDCD00CDCDCD00CDCD - CD00CDCDCD00FF1F2A00FEEFA900FF1F2A000000000000000000000000000000 - 000000000000FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A0000000000000000000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FECF4D00FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A0000000000FF1F - 2A00FEEFA900FFE55F00FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A00000000000000 - 000000000000FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A0000000000000000000000 - 000000000000C1BDB600FF1F2A00FEEFA900FF1F2A00C1B7AF00D2BEB900D2BE - B900D2BEB900FF1F2A00FEEFA900FF1F2A00C1BDB60000000000000000000000 - 000000000000BAB7AF00A39A8F00FF1F2A00CAC1B800DFD5CC00FAE2DF00F7DB - D900DFD5CC00CAC1B800FF1F2A00A39A8F00BAB7AF0000000000000000000000 - 000000000000B1AB9F00C9C2B900CFC7BF00D5CCC400DCD3CA00E8DDD500E4D6 - CF00E4D6CF00D5CCC400CFC7BF00C9C2B900B1AB9F0000000000000000000000 - 000000000000B0AB9E00C7C0B600CCC4BB00D3C9C100DAD0C700EBE1DA00E4D9 - D100DDD2CA00DBCDC500DDCAC400DBC4BF00C1ADA40000000000000000000000 - 000000000000AFAA9D00C8C1B700E8E3DB00F5F0E800FDF8F200FBF7F000FCF7 - F100FDF8F200F7F0EA00ECE3DC00CDC3BB00B2AA9E0000000000000000000000 - 000000000000AEA89C00FBF5EF00EEE7DE00E0D8CE00DDD5CC00DDD4CB00DDD4 - CB00DDD5CC00E0D7CE00EDE6DE00FBF6EF00AEA89C0000000000000000000000 - 000000000000AFA99D00E1D8CE00E1D7CE00DFD6CC00DFD5CB00DFD5CB00DFD5 - CB00DFD5CB00DFD6CC00E1D7CE00E1D8CE00AFA99D0000000000000000000000 - 000000000000D9D9D900B6B0A400D6CFC400E6DED500EFE7DD00EEE6DC00EEE6 - DC00EFE7DD00E6DED500D6CFC400B6B0A400D9D9D90000000000000000000000 - 00000000000000000000D9D9D900C4C0B700AEA99C00AEA89C00AEA89C00AEA8 - 9C00AEA89C00AEA99C00C4C0B700D9D9D900000000000000000000000000F7EF - FFFFE007FFFFC003FFFF8001FFFF0000FFFF8001FFFFC003FFFFC003FFFFC003 - FFFFC003FFFFC003FFFFC003FFFFC003FFFFC003FFFFC003FFFFE007FFFF} - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object AboutImage: TImage - Left = 8 - Top = 2 - Width = 328 - Height = 55 - Transparent = True - end - object CloseButton: TButton - Left = 270 - Top = 233 - Width = 70 - Height = 25 - Caption = 'Close' - TabOrder = 0 - OnClick = CloseButtonClick - end - object AboutPageControl: TPageControl - Left = 8 - Top = 63 - Width = 332 - Height = 168 - ActivePage = VersionTabSheet - TabOrder = 1 - object VersionTabSheet: TTabSheet - Caption = #1054' '#1087#1088#1086#1075#1088#1072#1084#1084#1077 - DesignSize = ( - 324 - 140) - object BAbout: TBevel - Left = 3 - Top = 7 - Width = 318 - Height = 130 - Anchors = [akLeft, akTop, akRight, akBottom] - ExplicitWidth = 363 - ExplicitHeight = 187 - end - object LProgramName: TLabel - Left = 16 - Top = 16 - Width = 72 - Height = 13 - Caption = 'HistoryToDB' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object LCopyright: TLabel - Left = 16 - Top = 32 - Width = 124 - Height = 13 - Caption = 'Copyright '#169' 2011-2013 by' - end - object LabelAuthor: TLabel - Left = 143 - Top = 32 - Width = 80 - Height = 13 - Cursor = crHandPoint - Caption = 'Michael Grigorev' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - ParentFont = False - OnClick = LabelAuthorClick - end - object LVersionNum: TLabel - Left = 56 - Top = 48 - Width = 33 - Height = 13 - Caption = '1.0.0.0' - end - object LVersion: TLabel - Left = 16 - Top = 48 - Width = 41 - Height = 13 - Caption = 'Version: ' - end - object LLicense: TLabel - Left = 16 - Top = 64 - Width = 43 - Height = 13 - Caption = 'License: ' - end - object LLicenseType: TLabel - Left = 59 - Top = 64 - Width = 33 - Height = 13 - Caption = 'GPLv3' - end - object LWeb: TLabel - Left = 16 - Top = 80 - Width = 29 - Height = 13 - Caption = 'Web: ' - end - object LabelWebSite: TLabel - Left = 46 - Top = 80 - Width = 82 - Height = 13 - Cursor = crHandPoint - Caption = 'www.im-history.ru' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - ParentFont = False - OnClick = LabelWebSiteClick - end - end - object ThankYouTabSheet: TTabSheet - Caption = #1041#1083#1072#1075#1086#1076#1072#1088#1085#1086#1089#1090#1080 - ImageIndex = 1 - DesignSize = ( - 324 - 140) - object BThankYou: TBevel - Left = 3 - Top = 3 - Width = 318 - Height = 134 - Anchors = [akLeft, akTop, akRight, akBottom] - ExplicitWidth = 311 - ExplicitHeight = 115 - end - object ThankYou: TLabel - Left = 11 - Top = 11 - Width = 305 - Height = 118 - AutoSize = False - Caption = #1057#1087#1072#1089#1080#1073#1086' '#1074#1089#1077#1084'!' - WordWrap = True - end - end - end -end diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/About.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/About.pas deleted file mode 100644 index 7d175adb84..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/About.pas +++ /dev/null @@ -1,146 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -unit About; - -interface - -uses Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, - Buttons, ExtCtrls, ShellAPI, Global, ComCtrls; - -type - TAboutForm = class(TForm) - AboutImage: TImage; - CloseButton: TButton; - AboutPageControl: TPageControl; - VersionTabSheet: TTabSheet; - ThankYouTabSheet: TTabSheet; - BAbout: TBevel; - LProgramName: TLabel; - LCopyright: TLabel; - LabelAuthor: TLabel; - LVersionNum: TLabel; - LVersion: TLabel; - LLicense: TLabel; - LLicenseType: TLabel; - LWeb: TLabel; - LabelWebSite: TLabel; - BThankYou: TBevel; - ThankYou: TLabel; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure CloseButtonClick(Sender: TObject); - procedure LabelAuthorClick(Sender: TObject); - procedure LabelWebSiteClick(Sender: TObject); - procedure MemoThankYouEnter(Sender: TObject); - private - { Private declarations } - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - procedure OnLanguageChanged(var Msg: TMessage); message WM_LANGUAGECHANGED; - procedure LoadLanguageStrings; - public - { Public declarations } - end; - -var - AboutForm: TAboutForm; - -implementation - -{$R *.dfm} -{$R icons.res} - -procedure TAboutForm.CloseButtonClick(Sender: TObject); -begin - Close; -end; - -procedure TAboutForm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - // Ïåðåìåííàÿ äëÿ ðåæèìà àíòè-áîññ - Global_AboutForm_Showing := False; -end; - -procedure TAboutForm.FormCreate(Sender: TObject); -var - AboutBitmap: TBitmap; -begin - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - AboutFormHandle := Handle; - SetWindowLong(Handle, GWL_HWNDPARENT, 0); - SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); - // Ãðóçèì áèòîâûé îáðàçû èç ôàéëà ðåñóðñîâ - AboutBitmap := TBitmap.Create; - try - AboutBitmap.LoadFromResourceName(HInstance, 'About'); - AboutImage.Picture.Assign(AboutBitmap); - finally - AboutBitmap.Free; - end; - LabelAuthor.Cursor := crHandPoint; - LabelWebSite.Cursor := crHandPoint; - // Çàãðóæàåì ÿçûê èíòåðôåéñà - LoadLanguageStrings; -end; - -procedure TAboutForm.FormShow(Sender: TObject); -begin - // Ïåðåìåííàÿ äëÿ ðåæèìà àíòè-áîññ - Global_AboutForm_Showing := True; - // Óêàçûâàåì âåðñèþ â îêíå "Î ïëàãèíå" - LVersionNum.Caption := IntToStr(htdVerMajor) + '.' + IntToStr(htdVerMinor) + '.' + IntToStr(htdVerRelease) + '.' + IntToStr(htdVerBuild) + ' ' + htdPlatform; -end; - -procedure TAboutForm.LabelAuthorClick(Sender: TObject); -begin - ShellExecute(0, 'open', 'mailto:sleuthhound@gmail.com', nil, nil, SW_RESTORE); -end; - -procedure TAboutForm.LabelWebSiteClick(Sender: TObject); -begin - ShellExecute(0, 'open', 'http://www.im-history.ru', nil, nil, SW_RESTORE); -end; - -// Ìåãà-õàê äëÿ çàïðåòà âûäåëåíèÿ â Memo :-D -procedure TAboutForm.MemoThankYouEnter(Sender: TObject); -begin - CloseButton.SetFocus; -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure TAboutForm.OnLanguageChanged(var Msg: TMessage); -begin - LoadLanguageStrings; -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure TAboutForm.LoadLanguageStrings; -begin - Caption := GetLangStr('AboutFormCaption'); - LProgramName.Caption := htdPluginShortName; - CloseButton.Caption := GetLangStr('CloseButton'); - LVersion.Caption := GetLangStr('Version'); - LLicense.Caption := GetLangStr('License'); - VersionTabSheet.Caption := GetLangStr('AboutFormCaption'); - ThankYouTabSheet.Caption := GetLangStr('LThankYou'); - // Ïîçèöèîíèðóåì ëåéáëû - LVersionNum.Left := LVersion.Left + 1 + LVersion.Width; - LLicenseType.Left := LLicense.Left + 1 + LLicense.Width; - // Áëàãîäàðíîñòè - if CoreLanguage = 'Russian' then - ThankYou.Caption := ThankYouText_Rus - else - ThankYou.Caption := ThankYouText_Eng; - // End -end; - -end. - diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/Contacts.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/Contacts.pas deleted file mode 100644 index 6ecb7f7eec..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/Contacts.pas +++ /dev/null @@ -1,207 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -{ ################################################################################ } -{ # # } -{ # History++ plugin for Miranda IM: the free IM client for Microsoft* Windows* # } -{ # # } -{ # Copyright (C) 2006-2009 theMIROn, 2003-2006 Art Fedorov. # } -{ # History+ parts (C) 2001 Christian Kastner # } -{ # # } -{ # 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 # } -{ # # } -{ ################################################################################ } - -unit Contacts; - -interface - -uses - Windows, SysUtils, Forms, Classes, Global; - -function GetContactDisplayName(hContact: THandle; Proto: AnsiString = ''; Contact: Boolean = False): String; -function GetContactProto(hContact: THandle): AnsiString; overload; -function GetContactProto(hContact: THandle; var SubContact: THandle; var SubProtocol: AnsiString): AnsiString; overload; -function GetContactID(hContact: THandle; Proto: AnsiString = ''; Contact: boolean = false): AnsiString; -function TranslateAnsiW(const S: AnsiString): WideString; -function GetMyContactDisplayName(Proto: AnsiString): String; -function GetMyContactID(Proto: AnsiString): String; - -implementation - -uses m_api; - -function GetContactProto(hContact: THandle): AnsiString; -begin - Result := PAnsiChar(CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0)); -end; - -function GetContactProto(hContact: THandle; var SubContact: THandle; var SubProtocol: AnsiString): AnsiString; -begin - Result := PAnsiChar(CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0)); - if MetaContactsEnabled and (Result = MetaContactsProto) then - begin - SubContact := CallService(MS_MC_GETMOSTONLINECONTACT, hContact, 0); - SubProtocol := PAnsiChar(CallService(MS_PROTO_GETCONTACTBASEPROTO, SubContact, 0)); - end - else - begin - SubContact := hContact; - SubProtocol := Result; - end; -end; - -function GetContactDisplayName(hContact: THandle; Proto: AnsiString = ''; Contact: Boolean = False): String; -var - ci: TContactInfo; - RetPWideChar, UW: PChar; -begin - if (hContact = 0) and Contact then - Result := TranslateW('Server') - else - begin - if Proto = '' then - Proto := GetContactProto(hContact); - if Proto = '' then - Result := TranslateW('Unknown Contact') - else - begin - ci.cbSize := SizeOf(ci); - ci.hContact := hContact; - ci.szProto := PAnsiChar(Proto); - ci.dwFlag := CNF_DISPLAY + CNF_UNICODE; - if CallService(MS_CONTACT_GETCONTACTINFO, 0, LPARAM(@ci)) = 0 then - begin - RetPWideChar := ci.retval.szVal.w; - UW := TranslateW('Unknown Contact'); - if WideCompareText(RetPWideChar, UW) = 0 then - Result := AnsiToWideString(GetContactID(hContact, Proto), CP_ACP) - else - Result := RetPWideChar; - end - else - Result := String(GetContactID(hContact, Proto)); - if Result = '' then - Result := TranslateAnsiW(Proto); - end; - end; -end; - -function GetContactID(hContact: THandle; Proto: AnsiString = ''; Contact: Boolean = False): AnsiString; -var - uid: PAnsiChar; - dbv: TDBVARIANT; - tmp: String; -begin - Result := ''; - if not((hContact = 0) and Contact) then - begin - if Proto = '' then - Proto := GetContactProto(hContact); - uid := PAnsiChar(CallProtoService(PAnsiChar(Proto), PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0)); - if (Cardinal(uid) <> CALLSERVICE_NOTFOUND) and (uid <> nil) then - begin - try - if db_get(hContact, PAnsiChar(Proto), uid, @dbv) = 0 then - begin - case dbv._type of - DBVT_BYTE: - Result := AnsiString(intToStr(dbv.bVal)); - DBVT_WORD: - Result := AnsiString(intToStr(dbv.wVal)); - DBVT_DWORD: - Result := AnsiString(intToStr(dbv.dVal)); - DBVT_ASCIIZ: - Result := AnsiString(dbv.szVal.a); - DBVT_UTF8: - begin - tmp := AnsiToWideString(dbv.szVal.a, CP_UTF8); - Result := WideToAnsiString(tmp, hppCodepage); - end; - DBVT_WCHAR: - Result := WideToAnsiString(dbv.szVal.w, hppCodepage); - end; - DBFreeVariant(@dbv); - end; - except - end; - end; - end; -end; - -function TranslateAnsiW(const S: AnsiString): WideString; -begin - Result := AnsiToWideString(Translate(PAnsiChar(S)),hppCodepage); -end; - -function GetMyContactDisplayName(Proto: AnsiString): String; -var - ci: TContactInfo; - RetPWideChar, UW: PChar; -begin - ci.cbSize := SizeOf(ci); - ci.hContact := 0; - ci.szProto := PAnsiChar(Proto); - ci.dwFlag := CNF_DISPLAY + CNF_UNICODE; - if CallService(MS_CONTACT_GETCONTACTINFO, 0, LPARAM(@ci)) = 0 then - begin - RetPWideChar := ci.retval.szVal.w; - UW := TranslateW('Unknown Contact'); - if WideCompareText(RetPWideChar, UW) = 0 then - Result := TranslateW('Unknown Contact') - else - Result := RetPWideChar; - end - else - Result := TranslateW('Unknown Contact'); -end; - -function GetMyContactID(Proto: AnsiString): String; -var - ci: TContactInfo; - RetPWideChar, UW: PChar; - TmpContactID: AnsiString; -begin - ci.cbSize := SizeOf(ci); - ci.hContact := 0; - ci.szProto := PAnsiChar(Proto); - ci.dwFlag := CNF_DISPLAY + CNF_UNICODE; - if CallService(MS_CONTACT_GETCONTACTINFO, 0, LPARAM(@ci)) = 0 then - begin - RetPWideChar := ci.retval.szVal.w; - UW := TranslateW('Unknown Contact'); - if WideCompareText(RetPWideChar, UW) = 0 then - Result := TranslateW('Unknown Contact') - else - begin - TmpContactID := GetContactID(ci.hContact, Proto); - if TmpContactID <> '' then - Result := TmpContactID - else - Result := TranslateW('Unknown Contact'); - end; - end - else - Result := TranslateW('Unknown Contact'); -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/Database.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/Database.pas deleted file mode 100644 index e12d340c23..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/Database.pas +++ /dev/null @@ -1,394 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -{ ################################################################################ } -{ # # } -{ # History++ plugin for Miranda IM: the free IM client for Microsoft* Windows* # } -{ # # } -{ # Copyright (C) 2006-2009 theMIROn, 2003-2006 Art Fedorov. # } -{ # History+ parts (C) 2001 Christian Kastner # } -{ # # } -{ # 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 # } -{ # # } -{ ################################################################################ } - -unit Database; - -interface - -uses m_api, windows, global; - -procedure SetSafetyMode(Safe: Boolean); - -function DBGetContactSettingString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; ErrorValue: PAnsiChar): AnsiString; -function DBGetContactSettingWideString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; ErrorValue: PWideChar): WideString; -function DBWriteContactSettingWideString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; const val: PWideChar): Integer; - -function DBDelete(const Module, Param: AnsiString): Boolean; overload; -function DBDelete(const hContact: THandle; const Module, Param: AnsiString): Boolean; overload; -function DBExists(const Module, Param: AnsiString): Boolean; overload; -function DBExists(const hContact: THandle; const Module, Param: AnsiString): Boolean; overload; - -function GetDBBlob(const Module,Param: AnsiString; var Value: Pointer; var Size: Integer): Boolean; overload; -function GetDBBlob(const hContact: THandle; const Module,Param: AnsiString; var Value: Pointer; var Size: Integer): Boolean; overload; -function GetDBStr(const Module,Param: AnsiString; Default: AnsiString): AnsiString; overload; -function GetDBStr(const hContact: THandle; const Module,Param: AnsiString; Default: AnsiString): AnsiString; overload; -function GetDBWideStr(const Module,Param: AnsiString; Default: WideString): WideString; overload; -function GetDBWideStr(const hContact: THandle; const Module,Param: AnsiString; Default: WideString): WideString; overload; -function GetDBInt(const Module,Param: AnsiString; Default: Integer): Integer; overload; -function GetDBInt(const hContact: THandle; const Module,Param: AnsiString; Default: Integer): Integer; overload; -function GetDBWord(const Module,Param: AnsiString; Default: Word): Word; overload; -function GetDBWord(const hContact: THandle; const Module,Param: AnsiString; Default: Word): Word; overload; -function GetDBDWord(const Module,Param: AnsiString; Default: DWord): DWord; overload; -function GetDBDWord(const hContact: THandle; const Module,Param: AnsiString; Default: DWord): DWord; overload; -function GetDBByte(const Module,Param: AnsiString; Default: Byte): Byte; overload; -function GetDBByte(const hContact: THandle; const Module,Param: AnsiString; Default: Byte): Byte; overload; -function GetDBBool(const Module,Param: AnsiString; Default: Boolean): Boolean; overload; -function GetDBBool(const hContact: THandle; const Module,Param: AnsiString; Default: Boolean): Boolean; overload; -function GetDBDateTime(const hContact: THandle; const Module,Param: AnsiString; Default: TDateTime): TDateTime; overload; -function GetDBDateTime(const Module,Param: AnsiString; Default: TDateTime): TDateTime; overload; - -function WriteDBBlob(const Module,Param: AnsiString; Value: Pointer; Size: Integer): Integer; overload; -function WriteDBBlob(const hContact: THandle; const Module,Param: AnsiString; Value: Pointer; Size: Integer): Integer; overload; -function WriteDBByte(const Module,Param: AnsiString; Value: Byte): Integer; overload; -function WriteDBByte(const hContact: THandle; const Module,Param: AnsiString; Value: Byte): Integer; overload; -function WriteDBWord(const Module,Param: AnsiString; Value: Word): Integer; overload; -function WriteDBWord(const hContact: THandle; const Module,Param: AnsiString; Value: Word): Integer; overload; -function WriteDBDWord(const Module,Param: AnsiString; Value: DWord): Integer; overload; -function WriteDBDWord(const hContact: THandle; const Module,Param: AnsiString; Value: DWord): Integer; overload; -function WriteDBInt(const Module,Param: AnsiString; Value: Integer): Integer; overload; -function WriteDBInt(const hContact: THandle; const Module,Param: AnsiString; Value: Integer): Integer; overload; -function WriteDBStr(const Module,Param: AnsiString; Value: AnsiString): Integer; overload; -function WriteDBStr(const hContact: THandle; const Module,Param: AnsiString; Value: AnsiString): Integer; overload; -function WriteDBWideStr(const Module,Param: AnsiString; Value: WideString): Integer; overload; -function WriteDBWideStr(const hContact: THandle; const Module,Param: AnsiString; Value: WideString): Integer; overload; -function WriteDBBool(const Module,Param: AnsiString; Value: Boolean): Integer; overload; -function WriteDBBool(const hContact: THandle; const Module,Param: AnsiString; Value: Boolean): Integer; overload; -function WriteDBDateTime(const hContact: THandle; const Module,Param: AnsiString; Value: TDateTime): Integer; overload; -function WriteDBDateTime(const Module,Param: AnsiString; Value: TDateTime): Integer; overload; - -implementation - -procedure SetSafetyMode(Safe: Boolean); -begin - CallService(MS_DB_SETSAFETYMODE,WPARAM(Safe),0); -end; - -function DBExists(const Module, Param: AnsiString): Boolean; -begin - Result := DBExists(0,Module,Param); -end; - -function DBExists(const hContact: THandle; const Module, Param: AnsiString): Boolean; -var - dbv: TDBVARIANT; -begin - Result := (db_get(hContact, PAnsiChar(Module), PAnsiChar(Param), @dbv) = 0); - if Result then - DBFreeVariant(@dbv); -end; - -function GetDBBlob(const Module,Param: AnsiString; var Value: Pointer; var Size: Integer): Boolean; -begin - Result := GetDBBlob(0,Module,Param,Value,Size); -end; - -function GetDBBlob(const hContact: THandle; const Module,Param: AnsiString; var Value: Pointer; var Size: Integer): Boolean; -var - dbv: TDBVARIANT; -begin - Result := False; - if db_get(hContact, PAnsiChar(Module), PAnsiChar(Param), @dbv) <> 0 then exit; - Size := dbv.cpbVal; - Value := nil; - if dbv.cpbVal = 0 then exit; - GetMem(Value,dbv.cpbVal); - Move(dbv.pbVal^,PByte(Value)^,dbv.cpbVal); - DBFreeVariant(@dbv); - Result := True; -end; - -function GetDBBool(const Module,Param: AnsiString; Default: Boolean): Boolean; -begin - Result := GetDBBool(0,Module,Param,Default); -end; - -function GetDBBool(const hContact: THandle; const Module,Param: AnsiString; Default: Boolean): Boolean; -begin - Result := Boolean(GetDBByte(hContact,Module,Param,Byte(Default))); -end; - -function GetDBByte(const Module,Param: AnsiString; Default: Byte): Byte; -begin - Result := GetDBByte(0,Module,Param,Default); -end; - -function GetDBByte(const hContact: THandle; const Module,Param: AnsiString; Default: Byte): Byte; -begin - Result := DBGetContactSettingByte(hContact,PAnsiChar(Module),PAnsiChar(Param),Default); -end; - -function GetDBWord(const Module,Param: AnsiString; Default: Word): Word; -begin - Result := GetDBWord(0,Module,Param,Default); -end; - -function GetDBWord(const hContact: THandle; const Module,Param: AnsiString; Default: Word): Word; -begin - Result := DBGetContactSettingWord(hContact,PAnsiChar(Module),PAnsiChar(Param),Default); -end; - -function GetDBDWord(const Module,Param: AnsiString; Default: DWord): DWord; -begin - Result := GetDBDWord(0,Module,Param,Default); -end; - -function GetDBDWord(const hContact: THandle; const Module,Param: AnsiString; Default: DWord): DWord; -begin - Result := DBGetContactSettingDWord(hContact,PAnsiChar(Module),PAnsiChar(Param),Default); -end; - -function GetDBInt(const Module,Param: AnsiString; Default: Integer): Integer; -begin - Result := GetDBInt(0,Module,Param,Default); -end; - -function GetDBInt(const hContact: THandle; const Module,Param: AnsiString; Default: Integer): Integer; -var - dbv:TDBVariant; -begin - dbv._type := DBVT_DWORD; - dbv.dVal:=Default; - if db_get(hContact, PAnsiChar(Module), PAnsiChar(Param), @dbv)<>0 then - Result:=default - else - Result:=dbv.dval; -end; - -function GetDBStr(const Module,Param: AnsiString; Default: AnsiString): AnsiString; -begin - Result := GetDBStr(0,Module,Param,Default); -end; - -function GetDBStr(const hContact: THandle; const Module,Param: AnsiString; Default: AnsiString): AnsiString; -begin - Result := DBGetContactSettingString(hContact,PAnsiChar(Module),PAnsiChar(Param),PAnsiChar(Default)); -end; - -function DBGetContactSettingString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; ErrorValue: PAnsiChar): AnsiString; -var - dbv: TDBVARIANT; - tmp: WideString; -begin - if db_get(hContact, szModule, szSetting, @dbv) <> 0 then - Result := ErrorValue - else begin - case dbv._type of - DBVT_ASCIIZ: - Result := AnsiString(dbv.szVal.a); - DBVT_UTF8: begin - tmp := AnsiToWideString(dbv.szVal.a,CP_UTF8); - Result := WideToAnsiString(tmp,hppCodepage); - end; - DBVT_WCHAR: - Result := WideToAnsiString(dbv.szVal.w,hppCodepage); - end; - // free variant - DBFreeVariant(@dbv); - end; -end; - -function GetDBWideStr(const Module,Param: AnsiString; Default: WideString): WideString; -begin - Result := GetDBWideStr(0,Module,Param,Default); -end; - -function GetDBWideStr(const hContact: THandle; const Module,Param: AnsiString; Default: WideString): WideString; -begin - Result := DBGetContactSettingWideString(hContact,PAnsiChar(Module),PAnsiChar(Param),PWideChar(Default)); -end; - -function DBGetContactSettingWideString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; ErrorValue: PWideChar): WideString; -var - dbv: TDBVARIANT; -begin - if db_get(hContact, szModule, szSetting, @dbv) <> 0 then - Result := ErrorValue - else begin - case dbv._type of - DBVT_ASCIIZ: - Result := AnsiToWideString(dbv.szVal.a,hppCodepage); - DBVT_UTF8: - Result := AnsiToWideString(dbv.szVal.a,CP_UTF8); - DBVT_WCHAR: - Result := WideString(dbv.szVal.w); - end; - // free variant - DBFreeVariant(@dbv); - end; -end; - -function GetDBDateTime(const hContact: THandle; const Module,Param: AnsiString; Default: TDateTime): TDateTime; overload; -var - p: Pointer; - s: Integer; -begin - Result := Default; - if not GetDBBlob(hContact,Module,Param,p,s) then exit; - if s <> SizeOf(TDateTime) then begin - FreeMem(p,s); - exit; - end; - Result := PDateTime(p)^; - FreeMem(p,s); -end; - -function GetDBDateTime(const Module,Param: AnsiString; Default: TDateTime): TDateTime; overload; -begin - Result := GetDBDateTime(0,Module,Param,Default); -end; - -function DBDelete(const Module, Param: AnsiString): Boolean; -begin - Result := DBDelete(0,Module,Param); -end; - -function DBDelete(const hContact: THandle; const Module, Param: AnsiString): Boolean; -begin - Result := (DBDeleteContactSetting(hContact,PAnsiChar(Module),PAnsiChar(Param)) = 0); -end; - -function WriteDBBool(const Module,Param: AnsiString; Value: Boolean): Integer; -begin - Result := WriteDBBool(0,Module,Param,Value); -end; - -function WriteDBBool(const hContact: THandle; const Module,Param: AnsiString; Value: Boolean): Integer; -begin - Result := WriteDBByte(hContact,Module,Param,Byte(Value)); -end; - -function WriteDBByte(const Module,Param: AnsiString; Value: Byte): Integer; -begin - Result := WriteDBByte(0,Module,Param,Value); -end; - -function WriteDBByte(const hContact: THandle; const Module,Param: AnsiString; Value: Byte): Integer; -begin - Result := DBWriteContactSettingByte(hContact,PAnsiChar(Module), PAnsiChar(Param), Value); -end; - -function WriteDBWord(const Module,Param: AnsiString; Value: Word): Integer; -begin - Result := WriteDBWord(0,Module,Param,Value); -end; - -function WriteDBWord(const hContact: THandle; const Module,Param: AnsiString; Value: Word): Integer; -begin - Result := DBWriteContactSettingWord(hContact,PAnsiChar(Module),PAnsiChar(Param),Value); -end; - -function WriteDBDWord(const Module,Param: AnsiString; Value: DWord): Integer; -begin - Result := WriteDBWord(0,Module,Param,Value); -end; - -function WriteDBDWord(const hContact: THandle; const Module,Param: AnsiString; Value: DWord): Integer; -begin - Result := DBWriteContactSettingDWord(hContact,PAnsiChar(Module),PAnsiChar(Param),Value); -end; - -function WriteDBInt(const Module,Param: AnsiString; Value: Integer): Integer; -begin - Result := WriteDBInt(0,Module,Param,Value); -end; - -function WriteDBInt(const hContact: THandle; const Module,Param: AnsiString; Value: Integer): Integer; -begin - Result := db_set_dw(hContact, PAnsiChar(Module), PAnsiChar(Param), Value); -end; - -function WriteDBStr(const Module,Param: AnsiString; Value: AnsiString): Integer; -begin - Result := WriteDBStr(0,Module,Param,Value); -end; - -function WriteDBStr(const hContact: THandle; const Module,Param: AnsiString; Value: AnsiString): Integer; -begin - Result := DBWriteContactSettingString(hContact,PAnsiChar(Module),PAnsiChar(Param),PAnsiChar(Value)); -end; - -function WriteDBWideStr(const Module,Param: AnsiString; Value: WideString): Integer; -begin - Result := WriteDBWideStr(0,Module,Param,Value); -end; - -function WriteDBWideStr(const hContact: THandle; const Module,Param: AnsiString; Value: WideString): Integer; -begin - Result := DBWriteContactSettingWideString(hContact,PAnsiChar(Module),PAnsiChar(Param),PWideChar(Value)); -end; - -function DBWriteContactSettingWideString(hContact: THandle; const szModule: PAnsiChar; const szSetting: PAnsiChar; const val: PWideChar): Integer; -var - cws: TDBCONTACTWRITESETTING; -begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value._type := DBVT_WCHAR; - cws.value.szVal.w := val; - Result := CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); -end; - -function WriteDBBlob(const Module,Param: AnsiString; Value: Pointer; Size: Integer): Integer; -begin - Result := WriteDBBlob(0,Module,Param,Value,Size); -end; - -function WriteDBBlob(const hContact: THandle; const Module,Param: AnsiString; Value: Pointer; Size: Integer): Integer; -var - cws: TDBContactWriteSetting; -begin - ZeroMemory(@cws,SizeOf(cws)); - cws.szModule := PAnsiChar(Module); - cws.szSetting := PAnsiChar(Param); - cws.value._type := DBVT_BLOB; - cws.value.pbVal := Value; - cws.value.cpbVal := Word(Size); - Result := CallService(MS_DB_CONTACT_WRITESETTING,hContact,lParam(@cws)); -end; - -function WriteDBDateTime(const hContact: THandle; const Module,Param: AnsiString; Value: TDateTime): Integer; overload; -var - p: PDateTime; -begin - GetMem(p,SizeOf(TDateTime)); - p^ := Value; - Result := WriteDBBlob(hContact,Module,Param,p,SizeOf(TDateTime)); - FreeMem(p,SizeOf(TDateTime)); -end; - -function WriteDBDateTime(const Module,Param: AnsiString; Value: TDateTime): Integer; overload; -begin - Result := WriteDBDateTime(0,Module,Param,Value); -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/FSMonitor.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/FSMonitor.pas deleted file mode 100644 index b19cde322f..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/FSMonitor.pas +++ /dev/null @@ -1,222 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -unit FSMonitor; - -{$I jedi.inc} - -interface - -type - // Ñòðóêòóðà ñ èíôîðìàöèåé îá èçìåíåíèè â ôàéëîâîé ñèñòåìå (ïåðåäàåòñÿ â callback ïðîöåäóðó) - PInfoCallBack = ^TInfoCallBack; - TInfoCallBack = record - FAction : Integer; // Òèï èçìåíåíèÿ (êîíñòàíòû FILE_ACTION_XXX) - FDrive : String; // Äèñê, íà êîòîðîì áûëî èçìåíåíèå - FOldFileName : String; // Èìÿ ôàéëà äî ïåðåèìåíîâàíèÿ - FNewFileName : String; // Èìÿ ôàéëà ïîñëå ïåðåèìåíîâàíèÿ - end; - - // callback ïðîöåäóðà, âûçûâàåìàÿ ïðè èçìåíåíèè â ôàéëîâîé ñèñòåìå - TWatchFileSystemCallBack = procedure (pInfo: TInfoCallBack); - - { Çàïóñê ìîíèòîðèíãà ôàéëîâîé ñèñòåìû - Ïðàìåòðû: - pName - èìÿ ïàïêè äëÿ ìîíèòîðèíãà - pFilter - êîìáèíàöèÿ êîíñòàíò FILE_NOTIFY_XXX - pSubTree - ìîíèòîðèòü ëè âñå ïîäïàïêè çàäàííîé ïàïêè - pInfoCallBack - àäðåñ callback ïðîöåäóðû, âûçûâàåìîé ïðè èçìåíåíèè â ôàéëîâîé ñèñòåìå } - procedure StartWatch(pName: String; pFilter: Cardinal; pSubTree: Boolean; pInfoCallBack: TWatchFileSystemCallBack); - // Îñòàíîâêà ìîíèòîðèíãà - procedure StopWatch; - -implementation - -uses - Classes, Windows, SysUtils, IniFiles; - -const - FILE_LIST_DIRECTORY = $0001; - -type - PFileNotifyInformation = ^TFileNotifyInformation; - TFileNotifyInformation = record - NextEntryOffset : DWORD; - Action : DWORD; - FileNameLength : DWORD; - FileName : Array[0..0] of WideChar; - end; - - WFSError = class(Exception); - - TWFS = class(TThread) - private - FName : String; - FFilter : Cardinal; - FSubTree : Boolean; - FInfoCallBack : TWatchFileSystemCallBack; - FWatchHandle : THandle; - FWatchBuf : Array[0..4096] of Byte; - FOverLapp : TOverlapped; - FPOverLapp : POverlapped; - FBytesWritte : DWORD; - FCompletionPort : THandle; - FNumBytes : Cardinal; - FOldFileName : String; - function CreateDirHandle(aDir: string): THandle; - procedure WatchEvent; - //procedure HandleEvent; - protected - procedure Execute; override; - public - constructor Create(pName: String; pFilter: Cardinal; pSubTree: Boolean; pInfoCallBack: TWatchFileSystemCallBack); - destructor Destroy; override; - end; - - -var - WFS : TWFS; - -procedure StartWatch(pName: String; pFilter: Cardinal; pSubTree: Boolean; pInfoCallBack: TWatchFileSystemCallBack); -begin - WFS := TWFS.Create(pName, pFilter, pSubTree, pInfoCallBack); -end; - -procedure StopWatch; -begin - if Assigned(WFS) then - begin - PostQueuedCompletionStatus(WFS.FCompletionPort, 0, 0, nil); - WFS.Terminate; - WFS.WaitFor; - WFS.Free; - WFS := nil; - end; -end; - -constructor TWFS.Create(pName: String; pFilter: Cardinal; pSubTree: Boolean; pInfoCallBack: TWatchFileSystemCallBack); -begin - inherited Create(True); - FreeOnTerminate := False; - FName := IncludeTrailingBackslash(pName); - FFilter := pFilter; - FSubTree := pSubTree; - FOldFileName := EmptyStr; - ZeroMemory(@FOverLapp, SizeOf(TOverLapped)); - FPOverLapp := @FOverLapp; - ZeroMemory(@FWatchBuf, SizeOf(FWatchBuf)); - FInfoCallBack := pInfoCallBack; - Resume; -end; - - -destructor TWFS.Destroy; -begin - PostQueuedCompletionStatus(FCompletionPort, 0, 0, nil); - CloseHandle(FWatchHandle); - FWatchHandle := 0; - CloseHandle(FCompletionPort); - FCompletionPort := 0; - inherited Destroy; -end; - -function TWFS.CreateDirHandle(aDir: String): THandle; -begin - Result := CreateFile(PChar(aDir), FILE_LIST_DIRECTORY, FILE_SHARE_READ+FILE_SHARE_DELETE+FILE_SHARE_WRITE, - nil,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS or FILE_FLAG_OVERLAPPED, 0); -end; - -procedure TWFS.Execute; -begin - FWatchHandle := CreateDirHandle(FName); - WatchEvent; -end; - -{procedure TWFS.HandleEvent; -var - FileNotifyInfo : PFileNotifyInformation; - InfoCallBack : TInfoCallBack; - Offset : Longint; -begin - Pointer(FileNotifyInfo) := @FWatchBuf[0]; - repeat - Offset := FileNotifyInfo^.NextEntryOffset; - InfoCallBack.FAction := FileNotifyInfo^.Action; - InfoCallBack.FDrive := FName; - SetString(InfoCallBack.FNewFileName,FileNotifyInfo^.FileName,FileNotifyInfo^.FileNameLength ); - InfoCallBack.FNewFileName := Trim(InfoCallBack.FNewFileName); - case FileNotifyInfo^.Action of - FILE_ACTION_RENAMED_OLD_NAME: FOldFileName := Trim(WideCharToString(@(FileNotifyInfo^.FileName[0]))); - FILE_ACTION_RENAMED_NEW_NAME: InfoCallBack.FOldFileName := FOldFileName; - end; - FInfoCallBack(InfoCallBack); - PChar(FileNotifyInfo) := PChar(FileNotifyInfo)+Offset; - until (Offset=0) or Terminated; -end;} - -procedure TWFS.WatchEvent; -var - {$ifdef DELPHIXE_UP} - CompletionKey: DWORD_PTR; - {$ELSE} - CompletionKey: Cardinal; - {$endif} - // Ïåðåíåñåíî èç HandleEvent - FileNotifyInfo : PFileNotifyInformation; - InfoCallBack : TInfoCallBack; - Offset : Longint; - // End -begin - FCompletionPort := CreateIoCompletionPort(FWatchHandle, 0, Longint(pointer(self)), 0); - ZeroMemory(@FWatchBuf, SizeOf(FWatchBuf)); - if not ReadDirectoryChanges(FWatchHandle, @FWatchBuf, SizeOf(FWatchBuf), FSubTree, - FFilter, @FBytesWritte, @FOverLapp, 0) then - begin - raise WFSError.Create(SysErrorMessage(GetLastError)); - Terminate; - end - else - begin - while not Terminated do - begin - GetQueuedCompletionStatus(FCompletionPort, FNumBytes, CompletionKey, FPOverLapp, INFINITE); - if CompletionKey <> 0 then - begin - //Synchronize(HandleEvent); - { Ò.ê. Synchronize(HandleEvent) íå îòðàáàòûâàåò â - ïëàãèíå ïî íåïîíÿòíîé ïðè÷èíå, òî åãî êîä ïåðåíåñåí ñþäà - Ïîäðîáíåå òóò -> http://forum.qip.ru/showthread.php?t=25200 } - Pointer(FileNotifyInfo) := @FWatchBuf[0]; - repeat - Offset := FileNotifyInfo^.NextEntryOffset; - InfoCallBack.FAction := FileNotifyInfo^.Action; - InfoCallBack.FDrive := FName; - SetString(InfoCallBack.FNewFileName,FileNotifyInfo^.FileName,FileNotifyInfo^.FileNameLength ); - InfoCallBack.FNewFileName := Trim(InfoCallBack.FNewFileName); - case FileNotifyInfo^.Action of - FILE_ACTION_RENAMED_OLD_NAME: FOldFileName := Trim(WideCharToString(@(FileNotifyInfo^.FileName[0]))); - FILE_ACTION_RENAMED_NEW_NAME: InfoCallBack.FOldFileName := FOldFileName; - end; - FInfoCallBack(InfoCallBack); - PChar(FileNotifyInfo) := PChar(FileNotifyInfo)+Offset; - until (Offset=0) or Terminated; - // End synchronize - ZeroMemory(@FWatchBuf, SizeOf(FWatchBuf)); - FBytesWritte := 0; - ReadDirectoryChanges(FWatchHandle, @FWatchBuf, SizeOf(FWatchBuf), FSubTree, FFilter, - @FBytesWritte, @FOverLapp, 0); - end - else - Terminate; - end - end -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/Global.inc b/plugins/!Deprecated/MirandaNGHistoryToDB/Global.inc deleted file mode 100644 index cdbc123caa..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/Global.inc +++ /dev/null @@ -1,2 +0,0 @@ -// Replace Default Miranda History Module -{$DEFINE REPLDEFHISTMOD} diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/Global.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/Global.pas deleted file mode 100644 index 16c1638195..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/Global.pas +++ /dev/null @@ -1,1250 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -unit Global; - -interface - -uses - Windows, SysUtils, IniFiles, Messages, XMLIntf, XMLDoc, - FSMonitor, DCPcrypt2, DCPblockciphers, DCPsha1, DCPdes, DCPmd5, ActiveX, MapStream; - -type - TCopyDataType = (cdtString = 0, cdtImage = 1, cdtRecord = 2); - TCopyDataStruct = packed record - dwData: DWORD; - cbData: DWORD; - lpData: Pointer; - end; - //TByteArr = Array of Byte; - TArrayOfString = Array of String; - -const - htdPluginShortName = 'MirandaNGHistoryToDB'; - htdDescription_RU = 'Õðàíåíèå èñòîðèè ñîîáùåíèé â áàçå äàííûõ.'; - htdDescription_EN = 'Storing the history in the database.'; - htdAuthor_EN = 'Michael Grigorev'; - htdAuthor_RU = 'Michael Grigorev'; - htdAuthorEmail = 'sleuthhound@gmail.com'; - htdCopyright_EN = '(c) 2011-2013 Michael Grigorev'; - htdCopyright_RU = '(c) 2011-2013 Michael Grigorev'; - htdHomePageURL = 'http://www.im-history.ru/'; - htdVerMajor = {MAJOR_VER}2{/MAJOR_VER}; - htdVerMinor = {MINOR_VER}5{/MINOR_VER}; - htdVerRelease = {SUB_VER}0{/SUB_VER}; - htdVerBuild = {BUILD}0{/BUILD}; - htdVersion = htdVerMajor shl 24 + htdVerMinor shl 16 + htdVerRelease shl 8 + htdVerBuild; - {$IFDEF WIN32} - htdPlatform = 'x86'; - {$ELSE} - htdPlatform = 'x64'; - {$ENDIF} - htdDBName = 'MirandaNGHistoryToDB'; - htdIMClientName = 'MirandaNG'; - {htdFLUpdateURL = 'http://addons.miranda-im.org/feed.php?dlfile=0'; - htdFLVersionURL = 'http://addons.miranda-im.org/details.php?action=viewfile&id=0'; - htdFLVersionPrefix= ''+htdPluginShortName+' '; - htdUpdateURL = 'http://www.im-history.ru/get.php?file=MirandaNGHistoryToDB'; - htdVersionURL = 'http://www.im-history.ru/get.php?file=MirandaNGHistoryToDB-Version'; - htdVersionPrefix = htdPluginShortName+' version '; - htdChangelogURL = 'http://www.im-history.ru/changelog/miranda.html';} - - // Generate your own unique id for your plugin. - // Do not use this UUID! - // Use Shift+Ctrl+G or uuidgen.exe to generate the uuuid - MIID_HISTORYTODBDLL:TGUID = '{1F83C057-C59F-483B-B82E-1AE5CA6138EB}'; - - MS_MHTD_SHOWHISTORY: PAnsiChar = 'MirandaNGHistoryToDB/ShowHistory'; - MS_MHTD_GETVERSION: PAnsiChar = 'MirandaNGHistoryToDB/GetVersion'; - MS_MHTD_SHOWCONTACTHISTORY: PAnsiChar = 'MirandaNGHistoryToDB/ShowContactHistory'; - - DefaultDBAddres = 'db01.im-history.ru'; - DefaultDBName = 'imhistory'; - ININame = 'HistoryToDB.ini'; - DefININame = 'DefaultUser.ini'; - MesLogName = 'HistoryToDBMes.sql'; - ErrLogName = 'HistoryToDBErr.log'; - ImportLogName = 'HistoryToDBImport.sql'; - ContactListName = 'ContactList.csv'; - ProtoListName = 'ProtoList.csv'; - DebugLogName = 'HistoryToDBDebug.log'; - MSG_LOG : WideString = 'insert into uin_%s values (null, %s, ''%s'', ''%s'', ''%s'', ''%s'', %s, ''%s'', ''%s'', ''%s'', null);'; - MSG_LOG_ORACLE : WideString = 'insert into uin_%s values (null, %s, ''%s'', ''%s'', ''%s'', ''%s'', %s, %s, ''%s'', ''%s'', null)'; - CHAT_MSG_LOG : WideString = 'insert into uin_chat_%s values (null, %s, ''%s'', ''%s'', ''%s'', ''%s'', %s, %s, %s, ''%s'', ''%s'', null);'; - CHAT_MSG_LOG_ORACLE : WideString = 'insert into uin_chat_%s values (null, %s, %s, ''%s'', ''%s'', ''%s'', %s, %s, %s, ''%s'', ''%s'', null)'; - // Íà÷àëüíàÿ äàòà (01/01/1970) Unix Timestamp äëÿ ôóíêöèé êîíâåðòàöèè - UnixStartDate: TDateTime = 25569.0; - // Êëþ÷ äëÿ øèôðîâàíèÿ ïîñûëîê ïðîãðàììàì HistoryToDBSync è HistoryToDBViewer - EncryptKey = 'jsU6s2msoxghsKsn7'; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - WM_LANGUAGECHANGED = WM_USER + 1; - dirLangs = 'langs\'; - defaultLangFile = 'English.xml'; - ThankYouText_Rus = 'Àííà Íèêèôîðîâà çà àêòèâíîå òåñòèðîâàíèå ïëàãèíà.' + #13#10 + - 'Êèðèëë Óêñóñîâ (UksusoFF) çà àêòèâíîå òåñòèðîâàíèå ïëàãèíà è íîâûå èäåè.' + #13#10 + - 'Èãîðü Ãóðüÿíîâ çà àêòèâíîå òåñòèðîâàíèå ïëàãèíà.' + #13#10 + - 'Âÿ÷åñëàâ Ñ. (HDHMETRO) çà àêòèâíîå òåñòèðîâàíèå ïëàãèíà.' + #13#10 + - 'Providence çà àêòèâíîå òåñòèðîâàíèå ïëàãèíà è íîâûå èäåè.' + #13#10 + - 'Cy6 çà ïîìîùü â ðåàëèçàöèè èìïîðòà èñòîðèè RnQ.'; - ThankYouText_Eng = 'Anna Nikiforova for active testing of plug-in.' + #13#10 + - 'Kirill Uksusov (UksusoFF) for active testing of plug-in and new ideas.' + #13#10 + - 'Igor Guryanov for active testing of plug-in.' + #13#10 + - 'Vyacheslav S. (HDHMETRO) for active testing of plug-in.' + #13#10 + - 'Providence for active testing of plug-in and new ideas.' + #13#10 + - 'Cy6 for help in implementing the import history RnQ.'; - -var - hppCodepage: Cardinal; - hppVersionStr: AnsiString; - MetaContactsEnabled: Boolean; - MetaContactsProto: AnsiString; - WriteErrLog, AniEvents, EnableHistoryEncryption, ShowPluginButton, AddSpecialContact, BlockSpamMsg: Boolean; - EnableDebug, EnableCallBackDebug, ExPrivateChatName, GetContactList: Boolean; - SyncMethod, SyncInterval, SyncMessageCount, MaxErrLogSize: Integer; - DBType, DBName, DBUserName, DefaultLanguage: String; - //Global_AccountUIN: WideString; - //Global_AccountName: WideString; - //Global_CurrentAccountUIN: WideString; - //Global_CurrentAccountName: WideString; - Global_CurrentAccountProtoID: Integer; - Global_CurrentAccountProtoName, Global_CurrentAccountProtoAccount: WideString; - Glogal_History_Type: Integer; - //Global_ChatName: WideString; - Global_AboutForm_Showing: Boolean; - DllPath, DllName, ProfilePath, MyAccount: String; - MessageCount: Integer; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - CoreLanguage: String; - AboutFormHandle: HWND; - ExportFormHandle: HWND; - LangDoc: IXMLDocument; - PluginPath: String = ''; - // Øèôðîâàíèå - Cipher: TDCP_3des; - Digest: Array[0..19] of Byte; - Hash: TDCP_sha1; - // Ëîã-ôàéëû - TFMsgLog: TextFile; - MsgLogOpened: Boolean; - TFErrLog: TextFile; - ErrLogOpened: Boolean; - TFDebugLog: TextFile; - DebugLogOpened: Boolean; - TFContactListLog: TextFile; - ContactListLogOpened: Boolean; - TFProtoListLog: TextFile; - ProtoListLogOpened: Boolean; - TFImportLog: TextFile; - ImportLogOpened: Boolean; - ExportFormDestroy: Boolean; - // MMF - FMap: TMapStream; - -function BoolToIntStr(Bool: Boolean): String; -function UnixToDateTime(USec: Longint): TDateTime; -function PrepareString(const Source : PWideChar) : WideString; -function MatchStrings(Source, Pattern: String): Boolean; -function ReadCustomINI(INIPath, CustomParams, DefaultParamsStr: String): String; -function EncryptMD5(Str: String): String; -function EncryptStr(const Str: String): String; -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -function OpenLogFile(LogPath: String; LogType: Integer): Boolean; -function GetMyFileSize(const Path: String): Integer; -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -function WideStringToString(const ws: WideString; codePage: Word): AnsiString; -function AnsiToWideString(const S: AnsiString; CodePage: Cardinal; InLength: Integer = -1): WideString; -function WideToAnsiString(const WS: WideString; CodePage: Cardinal; InLength: Integer = -1): AnsiString; -function Utf8ToWideChar(Dest: PWideChar; MaxDestChars: Integer; Source: PAnsiChar; SourceBytes: Integer; CodePage: Cardinal = CP_ACP): Integer; -function StrContactProtoToInt(Proto: AnsiString): Integer; -function UnixToLocalTime(tUnix :Longint): TDateTime; -function GetUserTempPath: WideString; -procedure IMDelay(Value: Cardinal); -procedure EncryptInit; -procedure EncryptFree; -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -procedure CloseLogFile(LogType: Integer); -procedure LoadINI(INIPath: String); -procedure OnSendMessageToAllComponent(Msg: String); -procedure OnSendMessageToOneComponent(WinName, Msg: String); -procedure WriteCustomINI(INIPath, CustomParams, ParamsStr: String); -procedure ProfileDirChangeCallBack(pInfo: TInfoCallBack); -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure CoreLanguageChanged; -procedure MsgDie(Caption, Msg: WideString); -procedure MsgInf(Caption, Msg: WideString); -function GetLangStr(StrID: String): WideString; - -implementation - -uses Menu; - -function BoolToIntStr(Bool: Boolean): String; -begin - if Bool then - Result := '1' - else - Result := '0' -end; - -// Ôóíêöèÿ êîíâåðòàöèè Unix Timestamp â DateTime -function UnixToDateTime(USec: Longint): TDateTime; -begin - Result := (Usec / 86400) + UnixStartDate; -end; - -// Ôóíêöèÿ äëÿ ýêðàíèðîâàíèÿ ñïåöñèìâîëîâ â ñòðîêå -function PrepareString(const Source : PWideChar) : WideString; -var - SLen,i : Cardinal; - WSTmp : WideString; - WChar : WideChar; -begin - Result := ''; - SLen := Length(WideString(Source)); - if (SLen>0) then - begin - for i:=1 to SLen do - begin - WChar:=WideString(Source)[i]; - case WChar of - #$09 :{tab} WSTmp:=WSTmp+'\t'; - #$0A :{line feed} WSTmp:=WSTmp+'\n'; - #$0D :{carriage return} WSTmp:=WSTmp+'\r'; - #$27 :{single quote mark aka apostrophe?} WSTmp:=WSTmp+WChar+WChar; - #$22, {double quote mark aka inch sign?} - #$5C, {backslash itself} - #$60 :{another single quote mark} WSTmp:=WSTmp+'\'+WChar; - else WSTmp := WSTmp + WChar; - end; - end; - Result := WSTmp; - end; -end; - -// LogType = 0 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë MesLogName -// LogType = 1 - îøèáêè äîáàâëÿþòñÿ â ôàéë ErrLogName -// LogType = 2 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë DebugLogName -// LogType = 3 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë ContactListName -// LogType = 4 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë ProtoListName -// LogType = 5 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë ImportLogName -function OpenLogFile(LogPath: String; LogType: Integer): Boolean; -var - Path: WideString; -begin - if LogType = 0 then - Path := LogPath + MesLogName - else if LogType = 1 then - begin - Path := LogPath + ErrLogName; - if (LogType > 0) and (GetMyFileSize(Path) > MaxErrLogSize*1024) then - DeleteFile(Path); - end - else if LogType = 2 then - Path := LogPath + DebugLogName - else if LogType = 3 then - begin - Path := LogPath + ContactListName; - if FileExists(Path) then - begin - try - DeleteFile(Path); - except - end; - end; - end - else if LogType = 4 then - begin - Path := LogPath + ProtoListName; - if FileExists(Path) then - begin - try - DeleteFile(Path); - except - end; - end; - end - else - Path := LogPath + ImportLogName; - {$I-} - try - if LogType = 0 then - Assign(TFMsgLog, Path) - else if LogType = 1 then - Assign(TFErrLog, Path) - else if LogType = 2 then - Assign(TFDebugLog, Path) - else if LogType = 3 then - Assign(TFContactListLog, Path) - else if LogType = 4 then - Assign(TFProtoListLog, Path) - else - Assign(TFImportLog, Path); - if FileExists(Path) then - begin - if LogType = 0 then - Append(TFMsgLog) - else if LogType = 1 then - Append(TFErrLog) - else if LogType = 2 then - Append(TFDebugLog) - else if LogType = 3 then - Append(TFContactListLog) - else if LogType = 4 then - Append(TFProtoListLog) - else - Append(TFImportLog); - end - else - begin - if LogType = 0 then - Rewrite(TFMsgLog) - else if LogType = 1 then - Rewrite(TFErrLog) - else if LogType = 2 then - Rewrite(TFDebugLog) - else if LogType = 3 then - Rewrite(TFContactListLog) - else if LogType = 4 then - Rewrite(TFProtoListLog) - else - Rewrite(TFImportLog); - end; - Result := True; - except - on e : - Exception do - begin - CloseLogFile(LogType); - Result := False; - Exit; - end; - end; - {$I+} -end; - -// LogType = 0 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë MesLogName -// LogType = 1 - îøèáêè äîáàâëÿþòñÿ â ôàéë ErrLogName -// LogType = 2 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë DebugLogName -// LogType = 3 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë ContactListName -// LogType = 4 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë ProtoListName -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -var - Path: WideString; -begin - if LogType = 0 then - begin - if not MsgLogOpened then - MsgLogOpened := OpenLogFile(LogPath, 0); - Path := LogPath + MesLogName - end - else if LogType = 1 then - begin - if not ErrLogOpened then - ErrLogOpened := OpenLogFile(LogPath, 1); - Path := LogPath + ErrLogName; - if (LogType > 0) and (GetMyFileSize(Path) > MaxErrLogSize*1024) then - begin - CloseLogFile(LogType); - DeleteFile(Path); - if not OpenLogFile(LogPath, LogType) then - Exit; - end; - end - else if LogType = 2 then - begin - if not DebugLogOpened then - DebugLogOpened := OpenLogFile(LogPath, 2); - Path := LogPath + DebugLogName; - end - else if LogType = 3 then - begin - if not ContactListLogOpened then - ContactListLogOpened := OpenLogFile(LogPath, 3); - Path := LogPath + ContactListName; - end - else if LogType = 4 then - begin - if not ProtoListLogOpened then - ProtoListLogOpened := OpenLogFile(LogPath, 4); - Path := LogPath + ProtoListName; - end - else - begin - if not ImportLogOpened then - ImportLogOpened := OpenLogFile(LogPath, 5); - Path := LogPath + ImportLogName; - end; - {$I-} - try - if LogType = 0 then - WriteLn(TFMsgLog, TextString) - else if LogType = 1 then - WriteLn(TFErrLog, TextString) - else if LogType = 2 then - WriteLn(TFDebugLog, TextString) - else if LogType = 3 then - WriteLn(TFContactListLog, TextString) - else if LogType = 4 then - WriteLn(TFProtoListLog, TextString) - else - WriteLn(TFImportLog, TextString); - except - on e : - Exception do - begin - CloseLogFile(LogType); - Exit; - end; - end; - if MsgLogOpened then - CloseLogFile(0); - {$I+} -end; - -procedure CloseLogFile(LogType: Integer); -begin - {$I-} - if LogType = 0 then - begin - CloseFile(TFMsgLog); - MsgLogOpened := False; - end - else if LogType = 1 then - begin - CloseFile(TFErrLog); - ErrLogOpened := False; - end - else if LogType = 2 then - begin - CloseFile(TFDebugLog); - DebugLogOpened := False; - end - else if LogType = 3 then - begin - CloseFile(TFContactListLog); - ContactListLogOpened := False; - end - else if LogType = 4 then - begin - CloseFile(TFProtoListLog); - ProtoListLogOpened := False; - end - else - begin - CloseFile(TFImportLog); - ImportLogOpened := False; - end; - {$I+} -end; - -// Åñëè ôàéë íå ñóùåñòâóåò, òî âìåñòî ðàçìåðà ôàéëà ôóíêöèÿ âåðí¸ò -1 -function GetMyFileSize(const Path: String): Integer; -var - FD: TWin32FindData; - FH: THandle; -begin - FH := FindFirstFile(PChar(Path), FD); - Result := 0; - if FH = INVALID_HANDLE_VALUE then - Exit; - Result := FD.nFileSizeLow; - if ((FD.nFileSizeLow and $80000000) <> 0) or - (FD.nFileSizeHigh <> 0) then - Result := -1; - //FindClose(FH); -end; - -// Çàãðóæàåì íàñòðîéêè -procedure LoadINI(INIPath: String); -var - Path: WideString; - Temp: String; - INI: TIniFile; -begin - // Ïðîâåðÿåì íàëè÷èå êàòàëîãà - if not DirectoryExists(INIPath) then - CreateDir(INIPath); - Path := INIPath + ININame; - if FileExists(Path) then - begin - Ini := TIniFile.Create(Path); - DBType := INI.ReadString('Main', 'DBType', 'mysql'); // mysql èëè postgresql - DBUserName := INI.ReadString('Main', 'DBUserName', 'username'); - SyncMethod := INI.ReadInteger('Main', 'SyncMethod', 1); - SyncInterval := INI.ReadInteger('Main', 'SyncInterval', 0); - - Temp := INI.ReadString('Main', 'WriteErrLog', '1'); - if Temp = '1' then WriteErrLog := True - else WriteErrLog := False; - - Temp := INI.ReadString('Main', 'ShowAnimation', '1'); - if Temp = '1' then AniEvents := True - else AniEvents := False; - - Temp := INI.ReadString('Main', 'EnableHistoryEncryption', '0'); - if Temp = '1' then EnableHistoryEncryption := True - else EnableHistoryEncryption := False; - - Temp := INI.ReadString('Main', 'AddSpecialContact', '1'); - if Temp = '1' then AddSpecialContact := True - else AddSpecialContact := False; - - DefaultLanguage := INI.ReadString('Main', 'DefaultLanguage', 'Russian'); - SyncMessageCount := INI.ReadInteger('Main', 'SyncMessageCount', 50); - - Temp := INI.ReadString('Main', 'ShowPluginButton', '1'); - if Temp = '1' then ShowPluginButton := True - else ShowPluginButton := False; - - Temp := INI.ReadString('Main', 'BlockSpamMsg', '0'); - if Temp = '1' then BlockSpamMsg := True - else BlockSpamMsg := False; - - Temp := INI.ReadString('Main', 'EnableExPrivateChatName', '0'); - if Temp = '1' then ExPrivateChatName := True - else ExPrivateChatName := False; - - Temp := INI.ReadString('Main', 'EnableDebug', '0'); - if Temp = '1' then EnableDebug := True - else EnableDebug := False; - - Temp := INI.ReadString('Main', 'EnableCallBackDebug', '0'); - if Temp = '1' then EnableCallBackDebug := True - else EnableCallBackDebug := False; - - MaxErrLogSize := INI.ReadInteger('Main', 'MaxErrLogSize', 20); - end - else - begin - INI := TIniFile.Create(path); - // Çíà÷åíèÿ ïî-óìîë÷àíèþ - DBType := 'mysql'; - DBName := DefaultDBName; - DBUserName := 'username'; - SyncMethod := 1; - SyncInterval := 0; - SyncMessageCount := 50; - WriteErrLog := True; - AniEvents := True; - ShowPluginButton := True; - EnableHistoryEncryption := False; - AddSpecialContact := True; - BlockSpamMsg := False; - EnableDebug := False; - EnableCallBackDebug := False; - MaxErrLogSize := 20; - // Ñîõðàíÿåì íàñòðîéêè - INI.WriteString('Main', 'DBType', DBType); - INI.WriteString('Main', 'DBAddress', DefaultDBAddres); - INI.WriteString('Main', 'DBSchema', 'username'); - INI.WriteString('Main', 'DBPort', '3306'); - INI.WriteString('Main', 'DBName', DefaultDBName); - INI.WriteString('Main', 'DBUserName', DBUserName); - INI.WriteString('Main', 'DBPasswd', 'skGvQNyWUHcHohJS2+2r4A=='); - INI.WriteInteger('Main', 'SyncMethod', SyncMethod); - INI.WriteInteger('Main', 'SyncInterval', SyncInterval); - INI.WriteInteger('Main', 'SyncTimeCount', 40); - INI.WriteInteger('Main', 'SyncMessageCount', SyncMessageCount); - INI.WriteInteger('Main', 'NumLastHistoryMsg', 6); - INI.WriteString('Main', 'WriteErrLog', BoolToIntStr(WriteErrLog)); - INI.WriteString('Main', 'ShowAnimation', BoolToIntStr(AniEvents)); - INI.WriteString('Main', 'EnableHistoryEncryption', BoolToIntStr(EnableHistoryEncryption)); - INI.WriteString('Main', 'DefaultLanguage', CoreLanguage); - INI.WriteString('Main', 'HideHistorySyncIcon', '0'); - INI.WriteString('Main', 'ShowPluginButton', BoolToIntStr(ShowPluginButton)); - INI.WriteString('Main', 'AddSpecialContact', BoolToIntStr(AddSpecialContact)); - INI.WriteString('Main', 'BlockSpamMsg', BoolToIntStr(BlockSpamMsg)); - INI.WriteInteger('Main', 'MaxErrLogSize', MaxErrLogSize); - INI.WriteString('Main', 'AlphaBlend', '0'); - INI.WriteString('Main', 'AlphaBlendValue', '255'); - INI.WriteString('Main', 'EnableDebug', '0'); - INI.WriteString('Main', 'EnableCallBackDebug', '0'); - INI.WriteString('Fonts', 'FontInTitle', '183|-11|Verdana|0|96|8|Y|N|N|N|'); - INI.WriteString('Fonts', 'FontOutTitle', '8404992|-11|Verdana|0|96|8|Y|N|N|N|'); - INI.WriteString('Fonts', 'FontInBody', '-16777208|-11|Verdana|0|96|8|N|N|N|N|'); - INI.WriteString('Fonts', 'FontOutBody', '-16777208|-11|Verdana|0|96|8|N|N|N|N|'); - INI.WriteString('Fonts', 'FontService', '16711680|-11|Verdana|0|96|8|Y|N|N|N|'); - INI.WriteString('Fonts', 'TitleParagraph', '4|4|'); - INI.WriteString('Fonts', 'MessagesParagraph', '2|2|'); - INI.WriteString('HotKey', 'GlobalHotKey', '0'); - INI.WriteString('HotKey', 'SyncHotKey', 'Ctrl+Alt+F12'); - INI.WriteString('HotKey', 'ExSearchHotKey', 'Ctrl+F3'); - INI.WriteString('HotKey', 'ExSearchNextHotKey', 'F3'); - end; - INI.Free; -end; - -{ Ïðîöåäóðà çàïèñè çíà÷åíèÿ ïàðàìåòðà â ôàéë íàñòðîåê } -procedure WriteCustomINI(INIPath, CustomParams, ParamsStr: String); -var - Path: String; - INI: TIniFile; -begin - Path := INIPath + ININame; - if FileExists(Path) then - begin - INI := TIniFile.Create(Path); - try - INI.WriteString('Main', CustomParams, ParamsStr); - finally - INI.Free; - end; - end - else - begin - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà WriteCustomINI: ' + GetLangStr('SettingsErrSave'), 2); - MsgDie(htdPluginShortName, GetLangStr('SettingsErrSave')); - end; -end; - -{ Ôóíêöèÿ ÷òåíèÿ çíà÷åíèÿ ïàðàìåòðà èç ôàéëà íàñòðîåê } -function ReadCustomINI(INIPath, CustomParams, DefaultParamsStr: String): String; -var - Path: String; - INI: TIniFile; -begin - Path := INIPath + ININame; - if FileExists(Path) then - begin - INI := TIniFile.Create(Path); - try - Result := INI.ReadString('Main', CustomParams, DefaultParamsStr); - finally - INI.Free; - end; - end - else - begin - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà ReadCustomINI: ' + GetLangStr('SettingsErrRead'), 2); - MsgDie(htdPluginShortName, GetLangStr('SettingsErrRead')); - end; -end; - -{ Ïðîöåäóðà äëÿ îòïðàâêè ñîîáùåíèé ïðîãðàììå } -{ Ñòàíäàðòíûå êîìàíäû: - 001 - Ïåðå÷èòàòü íàñòðîéêè èç ôàéëà HistoryToDB.ini - 002 - Ñèíõðîíèçàöèÿ èñòîðèè - 003 - Çàêðûòü âñå êîìïîíåíòû ïëàãèíà - 0040 - Ïîêàçàòü âñå îêíà ïëàãèíà (Ðåæèì AntiBoss) - 0041 - Ñêðûòü âñå îêíà ïëàãèíà (Ðåæèì AntiBoss) - 005 - Ïîêàçàòü îêíî íàñòðîåê - 0050 - Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé - 0051 - Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé è óäàëåíèÿ äóáëèêàòîâ - 0060 - Çàïóùåí èìïîðò èñòîðèè - 0061 - Èìïîðò èñòîðèè çàâåðøåí - 007 - Îáíîâèòü êîíòàêò-ëèñò â ÁÄ - 008 - Ïîêàçàòü èñòîðèþ êîíòàêòà/÷àòà - Ôîðìàò êîìàíäû: - äëÿ èñòîðèè êîíòàêòà: - 008|0|UserID|UserName|ProtocolType - äëÿ èñòîðèè ÷àòà: - 008|2|ChatName - 009 - Ýêñòðåííî çàêðûòü âñå êîìïîíåíòû ïëàãèíà. - 010 - Ñòðîêà SQL-insert ïåðåäàíà â ïàìÿòü -} -procedure OnSendMessageToAllComponent(Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - EncryptMsg, WinName: String; -begin - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToAllComponent: Îòïðàâêà çàïðîñà "' + Msg + '" âñåì êîìïîíåíòàì ïëàãèíà.', 2); - EncryptMsg := EncryptStr(Msg); - // Èùåì îêíî HistoryToDBViewer è ïîñûëàåì åìó êîìàíäó - WinName := 'HistoryToDBViewer for ' + htdIMClientName + ' ('+MyAccount+')'; - HToDB := FindWindow(nil, pWideChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(cdtString); - copyDataStruct.cbData := Length(EncryptMsg) * SizeOf(Char); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(@copyDataStruct)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToAllComponent: Îòïðàâêà çàïðîñà "' + Msg + '" îêíó ' + WinName, 2); - end; - // Èùåì îêíî HistoryToDBSync è ïîñûëàåì åìó êîìàíäó - WinName := 'HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')'; - HToDB := FindWindow(nil, pWideChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(cdtString); - copyDataStruct.cbData := Length(EncryptMsg) * SizeOf(Char); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(@copyDataStruct)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToAllComponent: Îòïðàâêà çàïðîñà "' + Msg + '" îêíó ' + WinName, 2); - end; - // Èùåì îêíî HistoryToDBImport è ïîñûëàåì åìó êîìàíäó - WinName := 'HistoryToDBImport for ' + htdIMClientName + ' ('+MyAccount+')'; - HToDB := FindWindow(nil, pWideChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(cdtString); - copyDataStruct.cbData := Length(EncryptMsg) * SizeOf(Char); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(@copyDataStruct)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToAllComponent: Îòïðàâêà çàïðîñà "' + Msg + '" îêíó ' + WinName, 2); - end; - // Èùåì îêíî HistoryToDBUpdater è ïîñûëàåì åìó êîìàíäó - WinName := 'HistoryToDBUpdater for ' + htdIMClientName + ' ('+MyAccount+')'; - HToDB := FindWindow(nil, pWideChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(cdtString); - copyDataStruct.cbData := Length(EncryptMsg) * SizeOf(Char); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(@copyDataStruct)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToAllComponent: Îòïðàâêà çàïðîñà "' + Msg + '" îêíó ' + WinName, 2); - end; -end; - -procedure OnSendMessageToOneComponent(WinName, Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - AppNameStr, EncryptMsg: String; -begin - // Èùåì îêíî WinName è ïîñûëàåì åìó êîìàíäó - HToDB := FindWindow(nil, pWideChar(WinName)); - if HToDB <> 0 then - begin - EncryptMsg := EncryptStr(Msg); - copyDataStruct.dwData := {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(cdtString); - copyDataStruct.cbData := Length(EncryptMsg) * SizeOf(Char); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, {$IFDEF WIN32}Integer{$ELSE}LongInt{$ENDIF}(@copyDataStruct)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnSendMessageToOneComponent: Îòïðàâêà çàïðîñà "' + Msg + '" îêíó ' + WinName, 2); - end; -end; - -{ Ïîèñê îêíà ïðîãðàììû } -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -var - HToDB: HWND; -begin - // Èùåì îêíî - HToDB := FindWindow(nil, MainWindowName); - if HToDB <> 0 then - Result := True - else - Result := False -end; - -{Ôóíêöèÿ îñóùåñòâëÿåò ñðàâíåíèå äâóõ ñòðîê. Ïåðâàÿ ñòðîêà -ìîæåò áûòü ëþáîé, íî îíà íå äîëæíà ñîäåðæàòü ñèìâîëîâ ñîîòâåòñòâèÿ (* è ?). -Ñòðîêà ïîèñêà (èñêîìûé îáðàç) ìîæåò ñîäåðæàòü àáñîëþòíî ëþáûå ñèìâîëû. -Äëÿ ïðèìåðà: MatchStrings('David Stidolph','*St*') âîçâðàòèò True. -Àâòîð îðèãèíàëüíîãî C-êîäà Sean Stanley -Àâòîð ïîðòàöèè íà Delphi David Stidolph} -function MatchStrings(Source, Pattern: String): Boolean; -var - pSource: array[0..255] of Char; - pPattern: array[0..255] of Char; - - function MatchPattern(element, pattern: PChar): Boolean; - - function IsPatternWild(pattern: PChar): Boolean; - begin - Result := StrScan(pattern, '*') <> nil; - if not Result then - Result := StrScan(pattern, '?') <> nil; - end; - - begin - if 0 = StrComp(pattern, '*') then - Result := True - else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then - Result := False - else if element^ = Chr(0) then - Result := True - else - begin - case pattern^ of - '*': if MatchPattern(element, @pattern[1]) then - Result := True - else - Result := MatchPattern(@element[1], pattern); - '?': Result := MatchPattern(@element[1], @pattern[1]); - else - if element^ = pattern^ then - Result := MatchPattern(@element[1], @pattern[1]) - else - Result := False; - end; - end; - end; -begin - StrPCopy(pSource, source); - StrPCopy(pPattern, pattern); - Result := MatchPattern(pSource, pPattern); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure MsgDie(Caption, Msg: WideString); -begin - //{$IFDEF UNICODE} - //MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONERROR); - //{$ELSE} - //MessageBoxA(GetForegroundWindow, PAnsiChar(Msg), PAnsiChar(Caption), MB_ICONERROR); - //{$ENDIF} - MessageBox(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONERROR); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure MsgInf(Caption, Msg: WideString); -begin - //{$IFDEF UNICODE} - //MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONINFORMATION); - //{$ELSE} - //MessageBoxA(GetForegroundWindow, PAnsiChar(Msg), PAnsiChar(Caption), MB_ICONINFORMATION); - //{$ENDIF} - MessageBox(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONINFORMATION); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -function GetLangStr(StrID: String): WideString; -begin - if (not Assigned(LangDoc)) or (not LangDoc.Active) then - begin - Result := ''; - Exit; - end; - if LangDoc.ChildNodes['strings'].ChildNodes.FindNode(StrID) <> nil then - Result := LangDoc.ChildNodes['strings'].ChildNodes[StrID].Text - else - Result := 'String not found.'; -end; - -{ Îáðàáîò÷èê èçìåíåíèé ôàéëîâ â êàòàëîãå ïðîôèëÿ } -procedure ProfileDirChangeCallBack(pInfo: TInfoCallBack); -var - SettingsFormRequest: String; -begin - SettingsFormRequest := ReadCustomINI(ProfilePath, 'SettingsFormRequestSend', '0'); - if EnableCallBackDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà ProfileDirChangeCallBack: Ïàðàìåòð SettingsFormRequestSend = ' + SettingsFormRequest + ' | FAction = ' + IntToStr(pInfo.FAction) + ' | FOldFileName = ' + pInfo.FOldFileName + ' | FNewFileName = ' + Trim(pInfo.FNewFileName), 2); - if (pInfo.FAction = 3) and (Trim(pInfo.FNewFileName) = 'HistoryToDB.ini') and (SettingsFormRequest = '0') then - begin - IMDelay(500); - LoadINI(ProfilePath); - CoreLanguage := DefaultLanguage; - if EnableCallBackDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà ProfileDirChangeCallBack: Íàñòðîéêè HistoryToDB.ini ïåðå÷èòàíû. | Íîâûé ÿçûê ïðîãðàììû = ' + CoreLanguage, 2); - // Èíèöèàëèçàöèÿ COM ñ ïîääåðæêîé ìíîãîïîòî÷íîñòè - // ÕÇ çà÷åì ýòî íóæíî, íî åñëè ýòîãî íå äåëàòü, òî ïðè âûçîâå CoreLanguageChanged - // âûëàçèò îøèáêà "Íå áûë ïðîèçâåäåí âûçîâ CoInitialize" - // CoInitialize îáúÿâëåí â ìîäóëå ActiveX - CoInitializeEx(nil, COINIT_MULTITHREADED); - // Ïåðåçàãðóæÿåì ÿçûêîâîé ôàéë - CoreLanguageChanged; - // Îñâîáîæäåíèå COM (äâàæäû) - CoUninitialize(); - CoUninitialize(); - // Ïåðåñòðàèâàåì ìåíþ - RebuildMainMenu; - // MMF - if SyncMethod = 0 then - begin - if not Assigned(FMap) then - begin - if EnableCallBackDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà ProfileDirChangeCallBack: Ñîçäàåì TMapStream', 2); - FMap := TMapStream.CreateEx('HistoryToDB for QIP ('+MyAccount+')',MAXDWORD,2000); - end; - end - else - begin - if Assigned(FMap) then - begin - FMap.Free; - FMap := nil; - end; - end; - end; -end; - -// Ïîäñ÷åò MD5 ñòðîêè -function EncryptMD5(Str: String): String; -var - Hash: TDCP_md5; - Digest: Array[0..15] of Byte; - I: Integer; - P: String; -begin - if Str <> '' then - begin - Hash:= TDCP_md5.Create(nil); - try - Hash.HashSize := 128; - Hash.Init; - Hash.UpdateStr(Str); - Hash.Final(Digest); - P := ''; - for I:= 0 to 15 do - P:= P + IntToHex(Digest[I], 2); - finally - Hash.Free; - end; - Result := P; - end - else - Result := 'MD5'; -end; - -// Èíèöèèðóåì êðèïòîâàíèå -procedure EncryptInit; -begin - Hash:= TDCP_sha1.Create(nil); - try - Hash.Init; - Hash.UpdateStr(EncryptKey); - Hash.Final(Digest); - finally - Hash.Free; - end; - Cipher := TDCP_3des.Create(nil); - try - Cipher.Init(Digest,Sizeof(Digest)*8,nil); - except - on E: Exception do - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà EncryptInit: ' + E.Message, 2); - end; -end; - -// Îñâîáîæäàåì ðåñóðñû -procedure EncryptFree; -begin - if Assigned(Cipher) then - begin - Cipher.Burn; - Cipher.Free; - end; -end; - -// Çàøèôðîâûâàåì ñòðîêó -function EncryptStr(const Str: String): String; -begin - Result := ''; - if Str <> '' then - begin - Cipher.Reset; - Result := Cipher.EncryptString(Str); - end; -end; - -{ Ôóíêöèÿ äëÿ ïîëó÷åíèÿ èìåíè ôàéëà èç ïóòè áåç èëè ñ åãî ðàñøèðåíèåì. - Âîçâðàùàåò èìÿ ôàéëà, áåç èëè ñ åãî ðàñøèðåíèåì. - Âõîäíûå ïàðàìåòðû: - FileName - èìÿ ôàéëà, êîòîðîå íàäî îáðàáîòàòü - ShowExtension - åñëè TRUE, òî ôóíêöèÿ âîçâðàòèò êîðîòêîå èìÿ ôàéëà - (áåç ïîëíîãî ïóòè äîñòóïà ê íåìó), ñ ðàñøèðåíèåì ýòîãî ôàéëà, èíà÷å, âîçâðàòèò - êîðîòêîå èìÿ ôàéëà, áåç ðàñøèðåíèÿ ýòîãî ôàéëà. } -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -var - I: Integer; - S, S1: string; -begin - I := Length(FileName); - if I <> 0 then - begin - while (FileName[i] <> '\') and (i > 0) do - i := i - 1; - S := Copy(FileName, i + 1, Length(FileName) - i); - i := Length(S); - if i = 0 then - begin - Result := ''; - Exit; - end; - while (S[i] <> '.') and (i > 0) do - i := i - 1; - S1 := Copy(S, 1, i - 1); - if s1 = '' then - s1 := s; - if ShowExtension = True then - Result := s - else - Result := s1; - end - else - Result := ''; -end; - -function WideStringToString(const ws: WideString; codePage: Word): AnsiString; -var - l: integer; -begin - if ws = '' then - Result := '' - else - begin - l := WideCharToMultiByte(codePage, - WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, - @ws[1], -1, nil, 0, nil, nil); - SetLength(Result, l - 1); - if l > 1 then - WideCharToMultiByte(codePage, - WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, - @ws[1], -1, @Result[1], l - 1, nil, nil); - end; -end; - -function AnsiToWideString(const S: AnsiString; CodePage: Cardinal; InLength: Integer = -1): WideString; -var - InputLength, - OutputLength: Integer; -begin - Result := ''; - if S = '' then - exit; - if Codepage = CP_UTF8 then - begin - Result := UTF8ToWideString(S); // CP_UTF8 not supported on Windows 95 - end - else - begin - if InLength < 0 then - InputLength := Length(S) - else - InputLength := InLength; - OutputLength := MultiByteToWideChar(Codepage, 0, PAnsiChar(S), InputLength, nil, 0); - SetLength(Result, OutputLength); - MultiByteToWideChar(Codepage, MB_PRECOMPOSED, PAnsiChar(S), InputLength, PWideChar(Result), - OutputLength); - end; -end; - -function WideToAnsiString(const WS: WideString; CodePage: Cardinal; InLength: Integer = -1): AnsiString; -var - InputLength, - OutputLength: Integer; -begin - Result := ''; - if WS = '' then - exit; - if Codepage = CP_UTF8 then - Result := UTF8Encode(WS) // CP_UTF8 not supported on Windows 95 - else - begin - if InLength < 0 then - InputLength := Length(WS) - else - InputLength := InLength; - OutputLength := WideCharToMultiByte(Codepage, 0, PWideChar(WS), InputLength, nil, 0, - nil, nil); - SetLength(Result, OutputLength); - WideCharToMultiByte(Codepage, 0, PWideChar(WS), InputLength, PAnsiChar(Result), - OutputLength, nil, nil); - end; -end; - -function StrContactProtoToInt(Proto: AnsiString): Integer; -var - ProtoType: Integer; -begin - { Ïðîòîêîëû - 0 - ICQ - 1 - Google Talk - 2 - MRA - 3 - Jabber - 4 - QIP.Ru - 5 - Facebook - 6 - VKontacte - 7 - Twitter - 8 - Social (LiveJournal) - 9 - AIM - 10 - IRC - 11 - MSN - 12 - YAHOO - 13 - GADU - 14 - SKYPE - 15 - MetaContacts - 16 - Unknown - } - if MatchStrings(LowerCase(Proto), 'icq*') then - ProtoType := 0 - else if MatchStrings(LowerCase(Proto), 'google talk*') then - ProtoType := 1 - else if MatchStrings(LowerCase(Proto), 'mrad*') then - ProtoType := 15 - else if MatchStrings(LowerCase(Proto), 'mra*') then - ProtoType := 2 - else if MatchStrings(LowerCase(Proto), 'jabber*') then - ProtoType := 3 - else if (LowerCase(Proto) = 'qip.ru') then - ProtoType := 4 - else if MatchStrings(LowerCase(Proto), 'facebook*') then - ProtoType := 5 - else if MatchStrings(LowerCase(Proto), 'vkontakte*') then - ProtoType := 6 - else if MatchStrings(LowerCase(Proto), 'âêîíòàêòå*') then - ProtoType := 6 - else if MatchStrings(LowerCase(Proto), 'twitter*') then - ProtoType := 7 - else if MatchStrings(LowerCase(Proto), 'livejournal*') then - ProtoType := 8 - else if MatchStrings(LowerCase(Proto), 'aim*') then - ProtoType := 9 - else if MatchStrings(LowerCase(Proto), 'irc*') then - ProtoType := 10 - else if MatchStrings(LowerCase(Proto), 'msn*') then - ProtoType := 11 - else if MatchStrings(LowerCase(Proto), 'yahoo*') then - ProtoType := 12 - else if MatchStrings(LowerCase(Proto), 'gadu*') then - ProtoType := 13 - else if MatchStrings(LowerCase(Proto), 'skype*') then - ProtoType := 14 - else if MatchStrings(LowerCase(Proto), 'metacontacts*') then - ProtoType := 15 - else - ProtoType := 16; - Result := ProtoType; -end; - -{ Çàäåðæêà íå ãðóçÿùàÿ ïðîöåññîð } -procedure IMDelay(Value: Cardinal); -var - F, N: Cardinal; -begin - N := 0; - while N <= (Value div 10) do - begin - SleepEx(1, True); - //Application.ProcessMessages; - Inc(N); - end; - F := GetTickCount; - repeat - //Application.ProcessMessages; - N := GetTickCount; - until (N - F >= (Value mod 10)) or (N < F); -end; - -function Utf8ToWideChar(Dest: PWideChar; MaxDestChars: Integer; Source: PAnsiChar; SourceBytes: Integer; CodePage: Cardinal = CP_ACP): Integer; -const - MB_ERR_INVALID_CHARS = 8; -var - Src,SrcEnd: PAnsiChar; - Dst,DstEnd: PWideChar; -begin - if (Source = nil) or (SourceBytes <= 0) then - begin - Result := 0; - end - else if (Dest = nil) or (MaxDestChars <= 0) then - begin - Result := -1; - end - else - begin - Src := Source; - SrcEnd := Source + SourceBytes; - Dst := Dest; - DstEnd := Dst + MaxDestChars; - while (PAnsiChar(Src) < PAnsiChar(SrcEnd)) and (Dst < DstEnd) do - begin - if (Byte(Src[0]) and $80) = 0 then - begin - Dst[0] := WideChar(Src[0]); - Inc(Src); - end - else if (Byte(Src[0]) and $E0) = $E0 then - begin - if Src + 2 >= SrcEnd then - break; - if (Src[1] = #0) or ((Byte(Src[1]) and $C0) <> $80) then - break; - if (Src[2] = #0) or ((Byte(Src[2]) and $C0) <> $80) then - break; - Dst[0] := WideChar(((Byte(Src[0]) and $0F) shl 12) + ((Byte(Src[1]) and $3F) shl 6) + - ((Byte(Src[2]) and $3F))); - Inc(Src, 3); - end - else if (Byte(Src[0]) and $E0) = $C0 then - begin - if Src + 1 >= SrcEnd then - break; - if (Src[1] = #0) or ((Byte(Src[1]) and $C0) <> $80) then - break; - Dst[0] := WideChar(((Byte(Src[0]) and $1F) shl 6) + ((Byte(Src[1]) and $3F))); - Inc(Src, 2); - end - else - begin - if MultiByteToWideChar(CodePage, MB_ERR_INVALID_CHARS, Src, 1, Dst, 1) = 0 then - Dst[0] := '?'; - Inc(Src); - end; - Inc(Dst); - end; - Dst[0] := #0; - Inc(Dst); - Result := Dst - Dest; - end; -end; - -// Êîíâåðòàöèÿ Unix Timestamp â Ëîêàëüíîå âðåìÿ ñ ó÷åòîì ïîÿñà è Ïåðåõîäà íà ëåòíåå âðåìÿ -function UnixToLocalTime(tUnix :Longint): TDateTime; -var - TimeZone :TTimeZoneInformation; - Bias :Integer; -begin - if (GetTimeZoneInformation(TimeZone) = TIME_ZONE_ID_DAYLIGHT) then - Bias := TimeZone.Bias + TimeZone.DaylightBias - else - Bias := TimeZone.Bias + TimeZone.StandardBias; - Result := EncodeDate(1970,1,1) - Bias / 1440 + tUnix / 86400; -end; - -{ Ôóíêöèÿ äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè } -procedure CoreLanguageChanged; -var - LangFile: String; -begin - if CoreLanguage = '' then - Exit; - try - LangFile := PluginPath + dirLangs + CoreLanguage + '.xml'; - if FileExists(LangFile) then - LangDoc.LoadFromFile(LangFile) - else - begin - if FileExists(PluginPath + dirLangs + defaultLangFile) then - LangDoc.LoadFromFile(PluginPath + dirLangs + defaultLangFile) - else - begin - MsgDie(htdPluginShortName, 'Not found any language file!'); - Exit; - end; - end; - SendMessage(AboutFormHandle, WM_LANGUAGECHANGED, 0, 0); - SendMessage(ExportFormHandle, WM_LANGUAGECHANGED, 0, 0); - except - on E: Exception do - begin - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Error on CoreLanguageChanged: ' + Trim(E.Message) + ' | CoreLanguage: ' + CoreLanguage, 2); - MsgDie(htdPluginShortName, 'Error on CoreLanguageChanged: ' + E.Message + sLineBreak + - 'CoreLanguage: ' + CoreLanguage); - end; - end; -end; - -{ Ôóíêöèÿ âîçâðàùàåò ïóòü äî ïîëüçîâàòåëüñêîé âðåìåííîé ïàïêè } -function GetUserTempPath: WideString; -var - UserPath: WideString; -begin - Result := ''; - SetLength(UserPath, MAX_PATH); - GetTempPath(MAX_PATH, PChar(UserPath)); - GetLongPathName(PChar(UserPath), PChar(UserPath), MAX_PATH); - SetLength(UserPath, StrLen(PChar(UserPath))); - Result := UserPath; -end; - -begin - hppVersionStr := AnsiString(Format('%d.%d.%d.%d',[htdVerMajor,htdVerMinor,htdVerRelease,htdVerBuild])); -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas deleted file mode 100644 index f3f68e7ea2..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas +++ /dev/null @@ -1,1583 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Îáíîâëåíèå è óñòàíîâêà íàáîðà ïðîãðàìì IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -unit Global; - -{$I jedi.inc} - -interface - -uses - Windows, Forms, Classes, SysUtils, IniFiles, DCPcrypt2, DCPblockciphers, DCPsha1, - DCPdes, DCPmd5, TypInfo, Messages, XMLIntf, XMLDoc, StrUtils, Types, TLHELP32, PsAPI, NTNative; - -type - TWinVersion = (wvUnknown,wv95,wv98,wvME,wvNT3,wvNT4,wvW2K,wvXP,wv2003,wvVista,wv7,wv2008,wv8); - TCopyDataType = (cdtString = 0, cdtImage = 1, cdtRecord = 2); - TDelim = set of Char; - TArrayOfString = Array of String; - TArrayOfCardinal = Array of Cardinal; - TProcessInfo = packed record - ProcessName: String; - PID: DWord; - ProcessFullCmd: String; - ProcessPath: String; - ProcessParamCmd: String; - end; - TProcessInfoArray = Array of TProcessInfo; - -const - ProgramsName = 'HistoryToDBUpdater'; - ProgramsVer : WideString = '2.5.0.0'; - DefaultDBAddres = 'db01.im-history.ru'; - DefaultDBName = 'imhistory'; - ININame = 'HistoryToDB.ini'; - ErrLogName = 'HistoryToDBUpdaterErr.log'; - DebugLogName = 'HistoryToDBUpdaterDebug.log'; - // Íà÷àëüíàÿ äàòà (01/01/1970) Unix Timestamp äëÿ ôóíêöèé êîíâåðòàöèè - UnixStartDate: TDateTime = 25569.0; - // Êëþ÷ü äëÿ ðàñøèôðîâêè ïàðàìåòðà DBPasswd èç êîíôèãà - EncryptKey = 'jsU6s2msoxghsKsn7'; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - WM_LANGUAGECHANGED = WM_USER + 1; - dirLangs = 'langs\'; - dirSQLUpdate = 'update\'; - defaultLangFile = 'English.xml'; - // End - WM_MSGBOX = WM_USER + 2; - uURL = 'http://im-history.ru/update/get.php?file=HistoryToDB-Update'; - {$IFDEF WIN32} - PlatformType = 'x86'; - {$ELSE} - PlatformType = 'x64'; - {$ENDIF} -var - WriteErrLog: Boolean; - EnableDebug, AlphaBlendEnable: Boolean; - MaxErrLogSize, AlphaBlendEnableValue: Integer; - DBType, DefaultLanguage, IMClientType: String; - PluginPath, ProfilePath: WideString; - Global_MainForm_Showing, Global_AboutForm_Showing: Boolean; - Global_IMProcessPID: DWORD; - // Ïðîêñè - IMUseProxy, IMProxyAuth: Boolean; - IMProxyAddress, IMProxyPort, IMProxyUser, IMProxyUserPagsswd: String; - DBUserName, MyAccount: String; - IMClientPlatformType: String; - UpdateServer: String; - // Øèôðîâàíèå - Cipher: TDCP_3des; - Digest: Array[0..19] of Byte; - Hash: TDCP_sha1; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - CoreLanguage: String; - MainFormHandle: HWND; - AboutFormHandle: HWND; - LangDoc: IXMLDocument; - -function BoolToIntStr(Bool: Boolean): String; -function IsNumber(const S: String): Boolean; -function DateTimeToUnix(ConvDate: TDateTime): Longint; -function UnixToDateTime(USec: Longint): TDateTime; -function PrepareString(const Source : PWideChar) : AnsiString; -function EncryptStr(const Str: String): String; -function DecryptStr(const Str: String): String; -function EncryptMD5(Str: String): String; -function MatchStrings(source, pattern: String): Boolean; -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -function ReadCustomINI(INIPath, CustomSection, CustomParams, DefaultParamsStr: String): String; -function GetSystemDefaultUILanguage: UINT; stdcall; external kernel32 name 'GetSystemDefaultUILanguage'; -function GetSysLang: AnsiString; -function Tok(Sep: String; var S: String): String; -function GetMyFileSize(const Path: String): Integer; -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -function StrContactProtoToInt(Proto: AnsiString): Integer; -function IsProcessRun(ProcessName: String): Boolean; overload; -function IsProcessRun(ProcessName, WinCaption: String): Boolean; overload; -function GetProcessID(ExeFileName: String): Cardinal; -//function GetProcessIDMulti(ExeFileName: String): TArrayOfString; -function GetProcessIDMulti2(ExeFileName: String): TArrayOfCardinal; -function GetThreadsOfProcess(APID: Cardinal): TIntegerDynArray; -function KillTask(ExeFileName: String): Integer; overload; -function KillTask(ExeFileName, WinCaption: String): Integer; overload; -function ProcessTerminate(dwPID: Cardinal): Boolean; -function ProcCloseEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function ProcQuitEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function GetProcessFileName(PID: DWord; FullPath: Boolean=True): String; -function GetProcessCmdLine(dwProcessId : DWORD): String; -function SetProcessDebugPrivelege: Boolean; -function EndProcess(IMClientExeName: String; EndType: Integer; EndProcess: Boolean): TProcessInfoArray; -function GetUserTempPath: WideString; -//function ProcGetCaptionForHandleEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function EnumThreadWndProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall; -function StringToParts(sString:String; tdDelim:TDelim): TArrayOfString; -function ExtractWord(const AString: string; const ADelimiter: Char; const ANumber: integer): string; -procedure EncryptInit; -procedure EncryptFree; -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -procedure LoadINI(INIPath: String; NotSettingsForm: Boolean); -procedure WriteCustomINI(INIPath, CustomSection, CustomParams, ParamsStr: String); -procedure MakeTransp(winHWND: HWND); -procedure OnSendMessageToAllComponent(Msg: String); -procedure IMDelay(Value: Cardinal); -procedure OnSendMessageToOneComponent(WinName, Msg: String); -function DetectWinVersion: TWinVersion; -function DetectWinVersionStr: String; -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure MsgDie(Caption, Msg: WideString); -procedure MsgInf(Caption, Msg: WideString); -function GetLangStr(StrID: String): WideString; - -implementation - -function BoolToIntStr(Bool: Boolean): String; -begin - if Bool then - Result := '1' - else - Result := '0' -end; - -function IsNumber(const S: string): Boolean; -begin - Result := True; - try - StrToInt(S); - except - Result := False; - end; -end; - -// Ôóíêöèÿ êîíâåðòàöèè DateTime â Unix Timestamp -function DateTimeToUnix(ConvDate: TDateTime): Longint; -begin - Result := Round((ConvDate - UnixStartDate) * 86400); -end; - -// Ôóíêöèÿ êîíâåðòàöèè Unix Timestamp â DateTime -function UnixToDateTime(USec: Longint): TDateTime; -begin - Result := (Usec / 86400) + UnixStartDate; -end; - -// Ôóíêöèÿ äëÿ ýêðàíèðîâàíèÿ ñïåöñèìâîëîâ â ñòðîêå -function PrepareString(const Source : PWideChar) : AnsiString; -var - SLen,i : Cardinal; - WSTmp : WideString; - WChar : WideChar; -begin - Result := ''; - SLen := Length(WideString(Source)); - if (SLen>0) then - begin - for i:=1 to SLen do - begin - WChar:=WideString(Source)[i]; - case WChar of - #$09 :{tab} WSTmp:=WSTmp+'\t'; - #$0A :{line feed} WSTmp:=WSTmp+'\n'; - #$0D :{carriage return} WSTmp:=WSTmp+'\r'; - #$27 :{single quote mark aka apostrophe?} WSTmp:=WSTmp+WChar+WChar; - #$22, {double quote mark aka inch sign?} - #$5C, {backslash itself} - #$60 :{another single quote mark} WSTmp:=WSTmp+'\'+WChar; - else WSTmp := WSTmp + WChar; - end; - end; - Result := AnsiString(WSTmp); - end; -end; - -// Èíèöèèðóåì êðèïòîâàíèå -procedure EncryptInit; -begin - Hash:= TDCP_sha1.Create(nil); - try - Hash.Init; - Hash.UpdateStr(EncryptKey); - Hash.Final(Digest); - finally - Hash.Free; - end; - Cipher := TDCP_3des.Create(nil); - Cipher.Init(Digest,Sizeof(Digest)*8,nil); -end; - -// Îñâîáîæäàåì ðåñóðñû -procedure EncryptFree; -begin - if Assigned(Cipher) then - begin - Cipher.Burn; - Cipher.Free; - end; -end; - -// Çàøèôðîâûâàåì ñòðîêó -function EncryptStr(const Str: String): String; -begin - Result := ''; - if Str <> '' then - begin - Cipher.Reset; - Result := Cipher.EncryptString(Str); - end; -end; - -// Ðàñøèôðîâûâàåì ñòðîêó -function DecryptStr(const Str: String): String; -begin - Result := ''; - if Str <> '' then - begin - Cipher.Reset; - Result := Cipher.DecryptString(Str); - end; -end; - -// Ïîäñ÷åò MD5 ñòðîêè -function EncryptMD5(Str: String): String; -var - Hash: TDCP_md5; - Digest: Array[0..15] of Byte; - I: Integer; - P: String; -begin - if Str <> '' then - begin - Hash:= TDCP_md5.Create(nil); - try - Hash.HashSize := 128; - Hash.Init; - Hash.UpdateStr(Str); - Hash.Final(Digest); - P := ''; - for I:= 0 to 15 do - P:= P + IntToHex(Digest[I], 2); - finally - Hash.Free; - end; - Result := P; - end - else - Result := 'MD5'; -end; - -// LogType = 0 - îøèáêè äîáàâëÿþòñÿ â ôàéë ErrLogName -// LogType = 1 - ñîîáùåíèÿ äîáàâëÿþòñÿ â ôàéë DebugLogName -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -var - Path: WideString; - TF: TextFile; -begin - if LogType = 0 then - begin - Path := LogPath + ErrLogName; - if (GetMyFileSize(Path) > MaxErrLogSize*1024) then - DeleteFile(Path); - end - else - Path := LogPath + DebugLogName; - {$I-} - try - Assign(TF,Path); - if FileExists(Path) then - Append(TF) - else - Rewrite(TF); - Writeln(TF,TextString); - CloseFile(TF); - except - on e : - Exception do - begin - CloseFile(TF); - Exit; - end; - end; - {$I+} -end; - -// Çàãðóæàåì íàñòðîéêè -procedure LoadINI(INIPath: String; NotSettingsForm: Boolean); -var - Path: WideString; - Temp: String; - INI: TIniFile; -begin - // Ïðîâåðÿåì íàëè÷èå êàòàëîãà - if not DirectoryExists(INIPath) then - CreateDir(INIPath); - Path := INIPath + ININame; - if FileExists(Path) then - begin - INI := TIniFile.Create(Path); - try - DBType := INI.ReadString('Main', 'DBType', 'Unknown'); - DBUserName := INI.ReadString('Main', 'DBUserName', 'username'); - DefaultLanguage := INI.ReadString('Main', 'DefaultLanguage', 'English'); - IMClientType := INI.ReadString('Main', 'IMClientType', 'Unknown'); - MyAccount := INI.ReadString('Main', 'MyAccount', DBUserName); - - Temp := INI.ReadString('Main', 'WriteErrLog', '0'); - if Temp = '1' then WriteErrLog := True - else WriteErrLog := False; - - MaxErrLogSize := INI.ReadInteger('Main', 'MaxErrLogSize', 20); - - Temp := INI.ReadString('Main', 'EnableDebug', '0'); - if Temp = '1' then EnableDebug := True - else EnableDebug := False; - - Temp := INI.ReadString('Main', 'AlphaBlend', '0'); - if Temp = '1' then AlphaBlendEnable := True - else AlphaBlendEnable := False; - AlphaBlendEnableValue := INI.ReadInteger('Main', 'AlphaBlendValue', 255); - - Temp := INI.ReadString('Proxy', 'UseProxy', '0'); - if Temp = '1' then IMUseProxy := True - else IMUseProxy := False; - - IMProxyAddress := INI.ReadString('Proxy', 'ProxyAddress', '127.0.0.1'); - IMProxyPort := INI.ReadString('Proxy', 'ProxyPort', '3128'); - - Temp := INI.ReadString('Proxy', 'ProxyAuth', '0'); - if Temp = '1' then IMProxyAuth := True - else IMProxyAuth := False; - - IMProxyUser := INI.ReadString('Proxy', 'ProxyUser', ''); - IMProxyUserPagsswd := INI.ReadString('Proxy', 'ProxyUserPasswd', ''); - if IMProxyUserPagsswd <> '' then - IMProxyUserPagsswd := DecryptStr(IMProxyUserPagsswd); - - IMClientPlatformType := INI.ReadString('Main', 'IMClientPlatformType', PlatformType); - UpdateServer := INI.ReadString('Updater', 'UpdateServer', uURL); - finally - INI.Free; - end; - end - else - begin - INI := TIniFile.Create(path); - try - // Çíà÷åíèÿ ïî-óìîë÷àíèþ - DBType := 'Unknown'; - DefaultLanguage := 'English'; - IMClientType := 'Unknown'; - WriteErrLog := True; - MaxErrLogSize := 20; - EnableDebug := False; - AlphaBlendEnable := False; - AlphaBlendEnableValue := 255; - IMUseProxy := False; - IMProxyAddress := '127.0.0.1'; - IMProxyPort := '3128'; - IMProxyAuth := False; - IMProxyUser := ''; - IMProxyUserPagsswd := ''; - // Ñîõðàíÿåì íàñòðîéêè - INI.WriteString('Main', 'DBType', DBType); - INI.WriteString('Main', 'DefaultLanguage', DefaultLanguage); - INI.WriteString('Main', 'IMClientType', IMClientType); - INI.WriteString('Main', 'WriteErrLog', BoolToIntStr(WriteErrLog)); - INI.WriteInteger('Main', 'MaxErrLogSize', MaxErrLogSize); - INI.WriteString('Main', 'EnableDebug', BoolToIntStr(EnableDebug)); - INI.WriteString('Main', 'AlphaBlend', BoolToIntStr(AlphaBlendEnable)); - INI.WriteInteger('Main', 'AlphaBlendValue', AlphaBlendEnableValue); - INI.WriteString('Proxy', 'UseProxy', BoolToIntStr(IMUseProxy)); - INI.WriteString('Proxy', 'ProxyAddress', IMProxyAddress); - INI.WriteString('Proxy', 'ProxyPort', IMProxyPort); - INI.WriteString('Proxy', 'ProxyAuth', BoolToIntStr(IMProxyAuth)); - INI.WriteString('Proxy', 'ProxyUser', IMProxyUser); - INI.WriteString('Proxy', 'ProxyUserPasswd', IMProxyUserPagsswd); - INI.WriteString('Updater', 'UpdateServer', uURL); - finally - INI.Free; - end; - end; -end; - -{Ôóíêöèÿ îñóùåñòâëÿåò ñðàâíåíèå äâóõ ñòðîê. Ïåðâàÿ ñòðîêà -ìîæåò áûòü ëþáîé, íî îíà íå äîëæíà ñîäåðæàòü ñèìâîëîâ ñîîòâåòñòâèÿ (* è ?). -Ñòðîêà ïîèñêà (èñêîìûé îáðàç) ìîæåò ñîäåðæàòü àáñîëþòíî ëþáûå ñèìâîëû. -Äëÿ ïðèìåðà: MatchStrings('David Stidolph','*St*') âîçâðàòèò True. -Àâòîð îðèãèíàëüíîãî C-êîäà Sean Stanley -Àâòîð ïîðòàöèè íà Delphi David Stidolph} -function MatchStrings(source, pattern: String): Boolean; -var - pSource: array[0..255] of Char; - pPattern: array[0..255] of Char; - - function MatchPattern(element, pattern: PChar): Boolean; - - function IsPatternWild(pattern: PChar): Boolean; - begin - Result := StrScan(pattern, '*') <> nil; - if not Result then - Result := StrScan(pattern, '?') <> nil; - end; - - begin - if 0 = StrComp(pattern, '*') then - Result := True - else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then - Result := False - else if element^ = Chr(0) then - Result := True - else - begin - case pattern^ of - '*': if MatchPattern(element, @pattern[1]) then - Result := True - else - Result := MatchPattern(@element[1], pattern); - '?': Result := MatchPattern(@element[1], @pattern[1]); - else - if element^ = pattern^ then - Result := MatchPattern(@element[1], @pattern[1]) - else - Result := False; - end; - end; - end; -begin - StrPCopy(pSource, source); - StrPCopy(pPattern, pattern); - Result := MatchPattern(pSource, pPattern); -end; - -{ Ôóíêöèÿ äëÿ ïîëó÷åíèÿ èìåíè ôàéëà èç ïóòè áåç èëè ñ åãî ðàñøèðåíèåì. - Âîçâðàùàåò èìÿ ôàéëà, áåç èëè ñ åãî ðàñøèðåíèåì. - Âõîäíûå ïàðàìåòðû: - FileName - èìÿ ôàéëà, êîòîðîå íàäî îáðàáîòàòü - ShowExtension - åñëè TRUE, òî ôóíêöèÿ âîçâðàòèò êîðîòêîå èìÿ ôàéëà - (áåç ïîëíîãî ïóòè äîñòóïà ê íåìó), ñ ðàñøèðåíèåì ýòîãî ôàéëà, èíà÷å, âîçâðàòèò - êîðîòêîå èìÿ ôàéëà, áåç ðàñøèðåíèÿ ýòîãî ôàéëà. } -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -var - I: Integer; - S, S1: string; -begin - I := Length(FileName); - if I <> 0 then - begin - while (FileName[i] <> '\') and (i > 0) do - i := i - 1; - S := Copy(FileName, i + 1, Length(FileName) - i); - i := Length(S); - if i = 0 then - begin - Result := ''; - Exit; - end; - while (S[i] <> '.') and (i > 0) do - i := i - 1; - S1 := Copy(S, 1, i - 1); - if s1 = '' then - s1 := s; - if ShowExtension = True then - Result := s - else - Result := s1; - end - else - Result := ''; -end; - -{ Ïðîçðà÷íîñòü îêíà MessageBox } -procedure MakeTransp(winHWND: HWND); -var - exStyle: Longint; -begin - exStyle := GetWindowLong(winHWND, GWL_EXSTYLE); - if (exStyle and WS_EX_LAYERED = 0) then - begin - exStyle := exStyle or WS_EX_LAYERED; - SetwindowLong(winHWND, GWL_EXSTYLE, exStyle); - end; - SetLayeredWindowAttributes(winHWND, 0, AlphaBlendEnableValue, LWA_ALPHA); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure MsgDie(Caption, Msg: WideString); -begin - if AlphaBlendEnable then - PostMessage(GetForegroundWindow, WM_USER + 2, 0, 0); - MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONERROR); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure MsgInf(Caption, Msg: WideString); -begin - if AlphaBlendEnable then - PostMessage(GetForegroundWindow, WM_USER + 2, 0, 0); - MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONINFORMATION); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -function GetLangStr(StrID: String): WideString; -begin - if (not Assigned(LangDoc)) or (not LangDoc.Active) then - begin - Result := ''; - Exit; - end; - if LangDoc.ChildNodes['strings'].ChildNodes.FindNode(StrID) <> nil then - Result := LangDoc.ChildNodes['strings'].ChildNodes[StrID].Text - else - Result := 'String not found.'; -end; - -function GetSysLang: AnsiString; -var - WinLanguage: Array [0..50] of Char; -begin - //Result := Lo(GetSystemDefaultUILanguage); - VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50); - Result := StrPas(WinLanguage); -end; - -{ Ôóíêöèÿ ðàçáèâàåò ñòðîêó S íà ñëîâà, ðàçäåëåííûå ñèìâîëàìè-ðàçäåëèòåëÿìè, -óêàçàííûìè â ñòðîêå Sep. Ôóíêöèÿ âîçâðàùàåò ïåðâîå íàéäåííîå ñëîâî, ïðè -ýòîì èç ñòðîêè S óäàëÿåòñÿ íà÷àëüíàÿ ÷àñòü äî ñëåäóþùåãî ñëîâà } -function Tok(Sep: String; var S: String): String; - - function isoneof(c, s: string): Boolean; - var - iTmp: integer; - begin - Result := False; - for iTmp := 1 to Length(s) do - begin - if c = Copy(s, iTmp, 1) then - begin - Result := True; - Exit; - end; - end; - end; - -var - c, t: String; -begin - if s = '' then - begin - Result := s; - Exit; - end; - c := Copy(s, 1, 1); - while isoneof(c, sep) do - begin - s := Copy(s, 2, Length(s) - 1); - c := Copy(s, 1, 1); - end; - t := ''; - while (not isoneof(c, sep)) and (s <> '') do - begin - t := t + c; - s := Copy(s, 2, length(s) - 1); - c := Copy(s, 1, 1); - end; - Result := t; -end; - -{ Ïðîöåäóðà çàïèñè çíà÷åíèÿ ïàðàìåòðà â ôàéë íàñòðîåê } -procedure WriteCustomINI(INIPath, CustomSection, CustomParams, ParamsStr: String); -var - Path: String; - IsFileClosed: Boolean; - sFile: DWORD; - INI: TIniFile; -begin - Path := INIPath + ININame; - if FileExists(Path) then - begin - // Æäåì ïîêà ôàéë îñâîáîäèò àíòèâèðü èëè åùå êàêàÿ-íèáóäü ãàäîñòü - IsFileClosed := False; - repeat - sFile := CreateFile(PChar(Path),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); - if (sFile <> INVALID_HANDLE_VALUE) then - begin - CloseHandle(sFile); - IsFileClosed := True; - end; - until IsFileClosed; - // End - INI := TIniFile.Create(Path); - try - INI.WriteString(CustomSection, CustomParams, ParamsStr); - finally - INI.Free; - end; - end - else - MsgDie(ProgramsName, GetLangStr('SettingsErrSave')); -end; - -{ Ôóíêöèÿ ÷òåíèÿ çíà÷åíèÿ ïàðàìåòðà èç ôàéëà íàñòðîåê } -function ReadCustomINI(INIPath, CustomSection, CustomParams, DefaultParamsStr: String): String; -var - Path: String; - INI: TIniFile; -begin - Path := INIPath + ININame; - INI := TIniFile.Create(Path); - if FileExists(Path) then - begin - try - Result := INI.ReadString(CustomSection, CustomParams, DefaultParamsStr); - finally - INI.Free; - end; - end - else - MsgDie(ProgramsName, GetLangStr('SettingsErrRead')); -end; - -// Åñëè ôàéë íå ñóùåñòâóåò, òî âìåñòî ðàçìåðà ôàéëà ôóíêöèÿ âåðí¸ò -1 -function GetMyFileSize(const Path: String): Integer; -var - FD: TWin32FindData; - FH: THandle; -begin - FH := FindFirstFile(PChar(Path), FD); - Result := 0; - if FH = INVALID_HANDLE_VALUE then - Exit; - Result := FD.nFileSizeLow; - if ((FD.nFileSizeLow and $80000000) <> 0) or - (FD.nFileSizeHigh <> 0) then - Result := -1; - //FindClose(FH); -end; - -{ Ïîèñê îêíà ïðîãðàììû } -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -var - HToDB: HWND; -begin - // Èùåì îêíî - HToDB := FindWindow(nil, MainWindowName); - if HToDB <> 0 then - Result := True - else - Result := False -end; - -{ Ïðîöåäóðà äëÿ îòïðàâêè ñîîáùåíèé ïðîãðàììå } -{ Ñòàíäàðòíûå êîìàíäû: - 001 - Ïåðå÷èòàòü íàñòðîéêè èç ôàéëà HistoryToDB.ini - 002 - Ñèíõðîíèçàöèÿ èñòîðèè - 003 - Çàêðûòü âñå êîìïîíåíòû ïëàãèíà - 0040 - Ïîêàçàòü âñå îêíà ïëàãèíà (Ðåæèì AntiBoss) - 0041 - Ñêðûòü âñå îêíà ïëàãèíà (Ðåæèì AntiBoss) - 0050 - Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé - 0051 - Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé è óäàëåíèÿ äóáëèêàòîâ - 0060 - Çàïóùåí èìïîðò èñòîðèè - 0061 - Èìïîðò èñòîðèè çàâåðøåí - 007 - Îáíîâèòü êîíòàêò-ëèñò â ÁÄ - 008 - Ïîêàçàòü èñòîðèþ êîíòàêòà/÷àòà - Ôîðìàò êîìàíäû: - äëÿ èñòîðèè êîíòàêòà: - 008|0|UserID|UserName|ProtocolType - äëÿ èñòîðèè ÷àòà: - 008|2|ChatName - 009 - Ýêñòðåííî çàêðûòü âñå êîìïîíåíòû ïëàãèíà. -} -procedure OnSendMessageToAllComponent(Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - EncryptMsg, WinName: String; -begin - EncryptMsg := EncryptStr(Msg); - WinName := 'HistoryToDBViewer for ' + IMClientType; - // Èùåì îêíî HistoryToDBViewer è ïîñûëàåì åìó êîìàíäó - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; - WinName := 'HistoryToDBSync for ' + IMClientType; - // Èùåì îêíî HistoryToDBSync è ïîñûëàåì åìó êîìàíäó - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; - WinName := 'HistoryToDBImport for ' + IMClientType; - // Èùåì îêíî HistoryToDBImport è ïîñûëàåì åìó êîìàíäó - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; -end; - -procedure OnSendMessageToOneComponent(WinName, Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - EncryptMsg: String; -begin - EncryptMsg := EncryptStr(Msg); - // Èùåì îêíî HistoryToDBViewer è ïîñûëàåì åìó êîìàíäó - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; -end; - -function StrContactProtoToInt(Proto: AnsiString): Integer; -var - ProtoType: Integer; -begin - { Ïðîòîêîëû - 0 - ICQ - 1 - Google Talk - 2 - MRA - 3 - Jabber - 4 - QIP.Ru - 5 - Facebook - 6 - VKontacte - 7 - Twitter - 8 - Social (LiveJournal) - 9 - AIM - 10 - IRC - 11 - MSN - 12 - YAHOO - 13 - GADU - 14 - SKYPE - 15 - Unknown - } - if MatchStrings(LowerCase(Proto), 'icq*') then - ProtoType := 0 - else if MatchStrings(LowerCase(Proto), 'google talk*') then - ProtoType := 1 - else if MatchStrings(LowerCase(Proto), 'mra*') then - ProtoType := 2 - else if MatchStrings(LowerCase(Proto), 'jabber*') then - ProtoType := 3 - else if (LowerCase(Proto) = 'qip.ru') then - ProtoType := 4 - else if MatchStrings(LowerCase(Proto), 'facebook*') then - ProtoType := 5 - else if MatchStrings(LowerCase(Proto), 'vkontakte*') then - ProtoType := 6 - else if MatchStrings(Proto, 'ÂÊîíòàêòå*') then - ProtoType := 6 - else if MatchStrings(Proto, 'âêîíòàêòå*') then - ProtoType := 6 - else if MatchStrings(LowerCase(Proto), 'twitter*') then - ProtoType := 7 - else if MatchStrings(LowerCase(Proto), 'livejournal*') then - ProtoType := 8 - else if MatchStrings(LowerCase(Proto), 'aim*') then - ProtoType := 9 - else if MatchStrings(LowerCase(Proto), 'irc*') then - ProtoType := 10 - else if MatchStrings(LowerCase(Proto), 'msn*') then - ProtoType := 11 - else if MatchStrings(LowerCase(Proto), 'yahoo*') then - ProtoType := 12 - else if MatchStrings(LowerCase(Proto), 'gadu*') then - ProtoType := 13 - else if MatchStrings(LowerCase(Proto), 'skype*') then - ProtoType := 14 - else - ProtoType := 15; - Result := ProtoType; -end; - -{ Çàäåðæêà íå ãðóçÿùàÿ ïðîöåññîð } -procedure IMDelay(Value: Cardinal); -var - F, N: Cardinal; -begin - N := 0; - while N <= (Value div 10) do - begin - SleepEx(1, True); - Application.ProcessMessages; - Inc(N); - end; - F := GetTickCount; - repeat - Application.ProcessMessages; - N := GetTickCount; - until (N - F >= (Value mod 10)) or (N < F); -end; - -{ Çàêðûòèå ïðîãðàììû ÷åðåç WM_CLOSE ïî å¸ PID } -function ProcCloseEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - PostMessage(hwnd, WM_CLOSE, 0, 0); - end; -end; - -{ Çàêðûòèå ïðîãðàììû ÷åðåç WM_QUIT ïî å¸ PID } -function ProcQuitEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - PostMessage(hwnd, WM_QUIT, 0, 0); - end; -end; - -{function ProcGetCaptionForHandleEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; - WinCaption: Array [0 .. 255] of Char; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - //PostMessage(hwnd, WM_QUIT, 0, 0); - GetWindowText(hwnd, WinCaption, SizeOf(WinCaption)); - if WinCaption <> '' then - MsgInf('ProcGetCaptionForHandleEnum', WinCaption); - end; -end;} - -{ Ôóíêöèÿ îòïðàâëÿåò WM_QUIT ïðîöåññó - è âîçâðàùàåò TArrayOfString ñî ñïèñêîì ïîëíûõ ïóòåé + ïàðàìåòðû çàïóñêà - ýòèõ ïðîöåññîâ - EndType = 0 - WM_CLOSE - EndType = 1 - WM_QUIT - } -function EndProcess(IMClientExeName: String; EndType: Integer; EndProcess: Boolean): TProcessInfoArray; -var - I: Integer; - ProcessPIDListArray: TArrayOfCardinal; - MyFullCMD, MyCMD, ProcessCmdLine: String; -begin - SetLength(Result, 0); - SetLength(ProcessPIDListArray, 0); - ProcessPIDListArray := GetProcessIDMulti2(IMClientExeName); - for I := 0 to High(ProcessPIDListArray) do - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1].ProcessName := IMClientExeName; - Result[Length(Result)-1].PID := ProcessPIDListArray[I]; - ProcessCmdLine := GetProcessCmdLine(ProcessPIDListArray[I]); - if ProcessCmdLine = '' then - begin - - if (IMClientExeName = 'qip.exe') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\QIP 2012\qip.exe"' - else if (IMClientExeName = 'qip.exe') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\QIP 2012\qip.exe"' - - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - - else if (IMClientExeName = 'skype.exe') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Skype\Phone\skype.exe"' - else if (IMClientExeName = 'skype.exe') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Skype\Phone\skype.exe"' - else - ProcessCmdLine := IMClientExeName; - end; - Result[Length(Result)-1].ProcessFullCmd := ProcessCmdLine; - //MsgInf('EndProcess', 'ProcessName: ' + Result[Length(Result)-1].ProcessName + #13 + 'PID: ' + IntToStr(Result[Length(Result)-1].PID) + #13 + 'ProcessFullCmd: ' + Result[Length(Result)-1].ProcessFullCmd); - //Result[Length(Result)-1] := GetProcessFileName(StrToInt(ProcessListArray[I]), True); - // Åñëè â ïîëíîì CMD âèäà - // "C:/Program Files/PostgreSQL/9.1/bin/postgres.exe" "--forklog" "244" "248" - // èëè - // "C:\Program Files\Microsoft Firewall Client 2004\FwcAgent.exe" - if Result[Length(Result)-1].ProcessFullCmd[1] = '"' then - begin - MyFullCMD := Result[Length(Result)-1].ProcessFullCmd; - Delete(MyFullCMD, 1, 1); - MyCMD := Copy(MyFullCMD, 1, Pos('"', MyFullCMD)-1); - Delete(MyFullCMD, 1, Pos('"', MyFullCMD)+1); - Result[Length(Result)-1].ProcessPath := MyCMD; - Result[Length(Result)-1].ProcessParamCmd := MyFullCMD; - end - else - begin - MyFullCMD := Result[Length(Result)-1].ProcessFullCmd; - // Åñëè â ïîëíîì CMD âèäà - // C:\WINDOWS\system32\svchost -k DcomLaunch - if Pos(' ', MyFullCMD) > 0 then - begin - MyCMD := Copy(MyFullCMD, 1, Pos(' ', MyFullCMD)-1); - Delete(MyFullCMD, 1, Pos(' ', MyFullCMD)); - Result[Length(Result)-1].ProcessPath := MyCMD; - Result[Length(Result)-1].ProcessParamCmd := MyFullCMD; - end - // Åñëè â ïîëíîì CMD âèäà - // C:\WINDOWS\system32\lsass.exe - else - begin - Result[Length(Result)-1].ProcessPath := MyFullCMD; - Result[Length(Result)-1].ProcessParamCmd := ''; - end; - end; - // Çàâåðøåíèå ïðîöåññà - if EndProcess then - begin - if EndType = 0 then //WM_CLOSE - EnumWindows(@ProcCloseEnum, ProcessPIDListArray[I]) - else //WM_QUIT - EnumWindows(@ProcQuitEnum, ProcessPIDListArray[I]); - end; - end; -end; - -function EnumThreadWndProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall; -var - WindowClassName: String; - WindowClassNameLength: Integer; - WinCaption: Array [0 .. 255] of Char; - ThreadProcessWinCaption: String; - PID: DWORD; -begin - Result := True; - ThreadProcessWinCaption := String(LPARAM); - GetWindowThreadProcessId(hwnd, pid); - SetLength(WindowClassName, MAX_PATH); - WindowClassNameLength := GetClassName(hwnd, PChar(WindowClassName), MAX_PATH); - GetWindowText(hwnd, WinCaption, SizeOf(WinCaption)); - if MatchStrings(LeftStr(WindowClassName, WindowClassNameLength), 'TMain*') and (WinCaption = ThreadProcessWinCaption) then - begin - Global_IMProcessPID := PID; - //MsgInf('EnumThreadWndProc', 'PID ïðîöåññà ðîäèòåëÿ: ' + IntToStr(PID) + #10#13 + 'Êëàññ: ' + LeftStr(WindowClassName, WindowClassNameLength) + #10#13 + 'Çàãîëîâîê îêíà: ' + WinCaption); - end; - // Ïîëó÷èì äî÷åðíèå îêíà. - //EnumChildWindows(hwnd, @EnumThreadWndProc, lParam); -end; - -{ Ïîëó÷åíèå ID âñåõ ïîòîêîâ óêàçàííîãî ïðîöåññà } -function GetThreadsOfProcess(APID: Cardinal): TIntegerDynArray; -var - lSnap: DWord; - lThread: TThreadEntry32; -begin - Result := nil; - if APID <> INVALID_HANDLE_VALUE then - begin - lSnap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - if (lSnap <> INVALID_HANDLE_VALUE) then - begin - lThread.dwSize := SizeOf(TThreadEntry32); - if Thread32First(lSnap, lThread) then - repeat - if lThread.th32OwnerProcessID = APID then - begin - SetLength(Result, Length(Result) + 1); - Result[High(Result)] := lThread.th32ThreadID; - end; - until not Thread32Next(lSnap, lThread); - CloseHandle(lSnap); - end; - end; -end; - -{ Ïðîâåðêà ïðîöåññà íà íàëè÷èå â ïàìÿòè ïî åãî èìåíè } -function IsProcessRun(ProcessName: String): Boolean; overload; -var - Snapshot: THandle; - Proc: TProcessEntry32; -begin - Result := False; - Snapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if Snapshot = INVALID_HANDLE_VALUE then - Exit; - Proc.dwSize := SizeOf(TProcessEntry32); - if Process32First(Snapshot, Proc) then - repeat - if Proc.szExeFile = ProcessName then - begin - Result := True; - Break; - end; - until not Process32Next(Snapshot, Proc); - CloseHandle(Snapshot); -end; - -function IsProcessRun(ProcessName, WinCaption: String): Boolean; overload; -var - Snapshot: THandle; - Proc: TProcessEntry32; - lThreads: TIntegerDynArray; - J: Integer; -begin - Result := False; - Snapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if Snapshot = INVALID_HANDLE_VALUE then - Exit; - Proc.dwSize := SizeOf(TProcessEntry32); - if Process32First(Snapshot, Proc) then - repeat - if ((UpperCase(ExtractFileName(Proc.szExeFile)) = UpperCase(ProcessName)) - or (UpperCase(Proc.szExeFile) = UpperCase(ProcessName))) then - begin - // Ïîëó÷åíèå Çàãîëîâêîâ îêîí ïðîöåññà - //EnumWindows(@ProcGetCaptionForHandleEnum, FProcessEntry32.th32ProcessID); - // Ïîëó÷åíèå ClassName è Çàãîëîâêîâ îêîí âñåõ ïîòîêîâ ïðîöåññà - Global_IMProcessPID := 0; - lThreads := GetThreadsOfProcess(Proc.th32ProcessID); - for J := Low(lThreads) to High(lThreads) do - EnumThreadWindows(lThreads[J], @EnumThreadWndProc, LPARAM(WinCaption)); - if Global_IMProcessPID = Proc.th32ProcessID then - //MsgInf('IsProcessRun', 'Íàéäåí íóæíûé ïðîöåññ'); - Result := True; - // Ends - end; - until not Process32Next(Snapshot, Proc); - CloseHandle(Snapshot); -end; - -{ Çàâåðøåíèå ïðîöåññà ïî èìåíè } -function KillTask(ExeFileName: String): Integer; -const - PROCESS_TERMINATE=$0001; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - while Integer(ContinueLoop) <> 0 do - begin - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), - FProcessEntry32.th32ProcessID), 0)); - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - end; - CloseHandle(FSnapshotHandle); -end; - -{ Çàâåðøåíèå ïðîöåññà ïî èìåíè è çàãîëîâêó îêíà } -function KillTask(ExeFileName, WinCaption: String): Integer; overload; -const - PROCESS_TERMINATE=$0001; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; - lThreads: TIntegerDynArray; - J: Integer; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - while Integer(ContinueLoop) <> 0 do - begin - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - // Ïîëó÷åíèå Çàãîëîâêîâ îêîí ïðîöåññà - //EnumWindows(@ProcGetCaptionForHandleEnum, FProcessEntry32.th32ProcessID); - // Ïîëó÷åíèå ClassName è Çàãîëîâêîâ îêîí âñåõ ïîòîêîâ ïðîöåññà - Global_IMProcessPID := 0; - lThreads := GetThreadsOfProcess(FProcessEntry32.th32ProcessID); - for J := Low(lThreads) to High(lThreads) do - EnumThreadWindows(lThreads[J], @EnumThreadWndProc, LPARAM(WinCaption)); - if Global_IMProcessPID = FProcessEntry32.th32ProcessID then - //MsgInf('KillTask', 'Íàéäåí íóæíûé ïðîöåññ'); - Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); - // Ends - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - end; - CloseHandle(FSnapshotHandle); -end; - -{ Ïîëó÷åíèå PID ïðîãðàììû â ïàìÿòè } -function GetProcessID(ExeFileName: String): Cardinal; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - Result := FProcessEntry32.th32ProcessID; - Break; - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end; - -{ Ïîëó÷åíèå PID äëÿ íåñêîëüêèõ ïðîöåññîâ ñ îäèíàêîâûì èìåíåì } -{function GetProcessIDMulti(ExeFileName: String): TArrayOfString; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - SetLength(Result, 0); - //Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := IntToStr(FProcessEntry32.th32ProcessID); - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end;} - -{ Ïîëó÷åíèå PID äëÿ íåñêîëüêèõ ïðîöåññîâ ñ îäèíàêîâûì èìåíåì } -function GetProcessIDMulti2(ExeFileName: String): TArrayOfCardinal; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - SetLength(Result, 0); - //Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := FProcessEntry32.th32ProcessID; - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end; - -{ Ïîëó÷àåì ïîëíûé ïóòü äî ïðèëîæåíèÿ ïî åãî PID } -function GetProcessFileName(PID: DWord; FullPath: Boolean=True): String; -var - Handle: THandle; -begin - Result := ''; - Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID); - try - if Handle <> 0 then - begin - SetLength(Result, MAX_PATH); - if FullPath then - begin - if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then - SetLength(Result, StrLen(PChar(Result))) - else - Result := ''; - end - else - begin - if GetModuleBaseNameA(Handle, 0, PAnsiChar(Result), MAX_PATH) > 0 then - SetLength(Result, StrLen(PChar(Result))) - else - Result := ''; - end; - end; - finally - CloseHandle(Handle); - end; -end; - -{ Ïîëó÷àåì êîìàíäó çàïóñêà ïðîãðàììû ñ ïîëíûì ïóòåì ïî å¸ PID } -function GetProcessCmdLine(dwProcessId : DWORD): String; -const - STATUS_SUCCESS = $00000000; - SE_DEBUG_NAME = 'SeDebugPrivilege'; - ProcessWow64Information = 26; -var - ProcessHandle : THandle; - ProcessBasicInfo : PROCESS_BASIC_INFORMATION; - ReturnLength : DWORD; - lpNumberOfBytesRead : ULONG_PTR; - TokenHandle : THandle; - lpLuid : TOKEN_PRIVILEGES; - OldlpLuid : TOKEN_PRIVILEGES; - Rtl : RTL_USER_PROCESS_PARAMETERS; - Peb : _PEB; - IsProcessx64 : Boolean; - {$IFDEF CPUX64} - PEBBaseAddress32 : Pointer; - Peb32 : _PEB32; - Rtl32 : RTL_USER_PROCESS_PARAMETERS32; - {$ENDIF} - Ws: WideString; -begin - Result:=''; - if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle) then - begin - try - if not LookupPrivilegeValue(nil, SE_DEBUG_NAME, lpLuid.Privileges[0].Luid) then - RaiseLastOSError - else - begin - lpLuid.PrivilegeCount := 1; - lpLuid.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - ReturnLength := 0; - OldlpLuid := lpLuid; - // Âêëþ÷àåì ñåáå SeDebugPrivilege - if not AdjustTokenPrivileges(TokenHandle, False, lpLuid, SizeOf(OldlpLuid), OldlpLuid, ReturnLength) then RaiseLastOSError; - end; - - ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, dwProcessId); - if ProcessHandle = 0 then RaiseLastOSError - else - try - IsProcessx64 := ProcessIsX64(ProcessHandle); - - {$IFNDEF CPUX64} - if IsProcessx64 then - raise Exception.Create('Only 32 bits processes are supported'); - {$ENDIF} - - {$IFDEF CPUX64} - if IsProcessx64 then - begin - {$ENDIF} - // Ïîëó÷àåì äîñòóï ê PROCESS_BASIC_INFORMATION ïî àäðåñó PEB - if (NtQueryInformationProcess(ProcessHandle,0{=>ProcessBasicInformation},@ProcessBasicInfo, SizeOf(ProcessBasicInfo), @ReturnLength)=STATUS_SUCCESS) and (ReturnLength=SizeOf(ProcessBasicInfo)) then - begin - // ×èòàåì PEB ñòðóêòóðó - if not ReadProcessMemory(ProcessHandle, ProcessBasicInfo.PEBBaseAddress, @Peb, sizeof(Peb), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - // ×èòàåì RTL_USER_PROCESS_PARAMETERS ñòðóêòóðó - if not ReadProcessMemory(ProcessHandle, Peb.ProcessParameters, @Rtl, SizeOf(Rtl), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - SetLength(ws,(Rtl.CommandLine.Length div 2)); - if not ReadProcessMemory(ProcessHandle,Rtl.CommandLine.Buffer,PWideChar(ws),Rtl.CommandLine.Length,lpNumberOfBytesRead) then - RaiseLastOSError - else - Result := String(ws); - end; - end; - end - else - RaiseLastOSError; - {$IFDEF CPUX64} - end - else - begin - // Ïîëó÷àåì PEB àäðåñ - if NtQueryInformationProcess(ProcessHandle, ProcessWow64Information, @PEBBaseAddress32, SizeOf(PEBBaseAddress32), nil)=STATUS_SUCCESS then - begin - // ×èòàåì PEB ñòðóêòóðó - if not ReadProcessMemory(ProcessHandle, PEBBaseAddress32, @Peb32, sizeof(Peb32), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - // ×èòàåì RTL_USER_PROCESS_PARAMETERS ñòðóêòóðó - if not ReadProcessMemory(ProcessHandle, Pointer(Peb32.ProcessParameters), @Rtl32, SizeOf(Rtl32), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - SetLength(ws,(Rtl32.CommandLine.Length div 2)); - if not ReadProcessMemory(ProcessHandle, Pointer(Rtl32.CommandLine.Buffer), PWideChar(ws), Rtl32.CommandLine.Length, lpNumberOfBytesRead) then - RaiseLastOSError - else - Result := String(Ws); - end; - end; - end - else - RaiseLastOSError; - end; - {$ENDIF} - finally - CloseHandle(ProcessHandle); - end; - finally - CloseHandle(TokenHandle); - end; - end - else - RaiseLastOSError; -end; - -{ Âêëþ÷àåì ñåáå SeDebugPrivilege } -function SetProcessDebugPrivelege: Boolean; -var - hToken: THandle; - tp: TTokenPrivileges; - rl: Cardinal; -begin - Result := False; - if not OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then - Exit; - try - if not LookupPrivilegeValue(nil,'SeDebugPrivilege', tp.Privileges[0].Luid) then - Exit; - tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - tp.PrivilegeCount := 1; - Result := AdjustTokenPrivileges(hToken,false,tp,0,nil,rl) and (GetLastError=0); - finally - CloseHandle(hToken); - end -end; - -// Çàâåðøåíèå ëþáûõ ïðîöåññîâ â òîì ÷èñëå ñèñòåìíûõ. -// Âêëþ÷åíèå, ïðèìèíåíèå è îòêëþ÷åíèÿ ïðèâèëåãèè. -// Äëÿ ïðèìåðà âîçüìåì ïðèâèëåãèþ îòëàäêè ïðèëîæåíèé 'SeDebugPrivilege' -// íåîáõîäèìóþ äëÿ çàâåðøåíèÿ ËÞÁÛÕ ïðîöåññîâ â ñèñòåìå (çàâåðøåíèå ïðîöåñîâ -// ñîçäàííûõ òåêóùèì ïîëüçîâàòåëåì ïðèâèëåãèÿ íå íóæíà. -// Íàçâàíèå äîáàâëåíèå/óäàëåíèå ïðèâèëãèè íåìíîãî íåïðàâèëüíûå. Ïðèâèëåãèÿ èëè -// åñòü â òîêåíå ïðîöåññà èëè åå íåò. Åñëè ïðèâèëåãèÿ åñòü, òî îíà ìîæåò áûòü â -// äâóõ ñîñòîÿíèÿõ - èëè âêëþ÷åíàÿ èëè îòêëþ÷åíàÿ. È â ýòîì ïðèìåðå ìû òîëüêî -// âêëþ÷àåì èëè âûêëþ÷àåì íåîáõîäèìóþ ïðèâèëåãèþ, à íå äîáàâëÿåì åå. -function ProcessTerminate(dwPID: Cardinal): Boolean; -var - hToken:THandle; - SeDebugNameValue:Int64; - tkp:TOKEN_PRIVILEGES; - ReturnLength:Cardinal; - hProcess:THandle; -begin - Result := False; - // Âêëþ÷àåì ïðèâèëåãèþ SeDebugPrivilege - // Äëÿ íà÷àëà ïîëó÷àåì òîêåí íàøåãî ïðîöåññà - if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken ) then - Exit; - // Ïîëó÷àåì LUID ïðèâèëåãèè - if not LookupPrivilegeValue(nil, 'SeDebugPrivilege', SeDebugNameValue) then - begin - CloseHandle(hToken); - Exit; - end; - tkp.PrivilegeCount := 1; - tkp.Privileges[0].Luid := SeDebugNameValue; - tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - // Äîáàâëÿåì ïðèâèëåãèþ ê íàøåìó ïðîöåññó - AdjustTokenPrivileges(hToken, False, tkp, SizeOf(tkp), tkp, ReturnLength); - if GetLastError() <> ERROR_SUCCESS then - Exit; - // Çàâåðøàåì ïðîöåññ. Åñëè ó íàñ åñòü SeDebugPrivilege, òî ìû ìîæåì - // çàâåðøèòü è ñèñòåìíûé ïðîöåññ - // Ïîëó÷àåì äåñêðèïòîð ïðîöåññà äëÿ åãî çàâåðøåíèÿ - hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID); - if hProcess = 0 then - Exit; - // Çàâåðøàåì ïðîöåññ - if not TerminateProcess(hProcess, DWORD(-1)) then - Exit; - CloseHandle( hProcess ); - // Îòêëþ÷àåì ïðèâèëåãèþ - tkp.Privileges[0].Attributes := 0; - AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength); - if GetLastError() <> ERROR_SUCCESS then - Exit; - Result := True; -end; - -function StringToParts(sString: String; tdDelim: TDelim): TArrayOfString; -var - iCounter,iBegin:Integer; -begin - if length(sString)>0 then - begin - include(tdDelim, #0); - iBegin:=1; - SetLength(Result, 0); - for iCounter:=1 to Length(sString)+1 do - begin - if(sString[iCounter] in tdDelim) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := Copy(sString, iBegin, iCounter-iBegin); - iBegin := iCounter+1; - end; - end; - end; -end; - -{ Edit1.Text := ExtractWord(ExtractWord('admin:login:password', ':', 3)); //'password' } -function ExtractWord(const AString: string; const ADelimiter: Char; const ANumber: integer): string; -var - i, j, k: integer; -begin - i := 1; - k := 1; - while k <> ANumber do - begin - if AString[i] = ADelimiter then - begin - Inc(k); - end; - Inc(i); - end; - j := i + 1; - while (j <= Length(AString)) and (AString[j] <> ADelimiter) do - Inc(j); - Result := Copy(AString, i, j - i); -end; - -{ Ôóíêöèÿ âîçâðàùàåò ïóòü äî ïîëüçîâàòåëüñêîé âðåìåííîé ïàïêè } -function GetUserTempPath: WideString; -var - UserPath: WideString; -begin - Result := ''; - SetLength(UserPath, MAX_PATH); - GetTempPath(MAX_PATH, PChar(UserPath)); - GetLongPathName(PChar(UserPath), PChar(UserPath), MAX_PATH); - SetLength(UserPath, StrLen(PChar(UserPath))); - Result := UserPath; -end; - -{ -DwMajorVersion:DWORD - ñòàðøàÿ öèôðà âåðñèè Windows - - Windows 95 - 4 - Windows 98 - 4 - Windows Me - 4 - Windows NT 3.51 - 3 - Windows NT 4.0 - 4 - Windows 2000 - 5 - Windows XP - 5 - -DwMinorVersion: DWORD - ìëàäøàÿ öèôðà âåðñèè - - Windows 95 - 0 - Windows 98 - 10 - Windows Me - 90 - Windows NT 3.51 - 51 - Windows NT 4.0 - 0 - Windows 2000 - 0 - Windows XP - 1 - - -DwBuildNumber: DWORD - Win NT 4 - íîìåð áèëäà - Win 9x - ñòàðøèé áàéò - ñòàðøàÿ è ìëàäøàÿ öèôðû âåðñèè / ìëàäøèé - íîìåð -áèëäà - -dwPlatformId: DWORD - - VER_PLATFORM_WIN32s Win32s on Windows 3.1. - VER_PLATFORM_WIN32_WINDOWS Win32 on Windows 9x - VER_PLATFORM_WIN32_NT Win32 on Windows NT, 2000 - - -SzCSDVersion:DWORD - NT - ñîäåðæèò PÑhar ñ èíôî î óñòàíîâëåííîì ServicePack - 9x - äîï. èíôî, ìîæåò è íå áûòü -} -function DetectWinVersion: TWinVersion; -var - OSVersionInfo : TOSVersionInfo; -begin - Result := wvUnknown; // Íåèçâåñòíàÿ âåðñèÿ ÎÑ - OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo); - if GetVersionEx(OSVersionInfo) - then - begin - case OSVersionInfo.DwMajorVersion of - 3: Result := wvNT3; // Windows NT 3 - 4: case OSVersionInfo.DwMinorVersion of - 0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT - then Result := wvNT4 // Windows NT 4 - else Result := wv95; // Windows 95 - 10: Result := wv98; // Windows 98 - 90: Result := wvME; // Windows ME - end; - 5: case OSVersionInfo.DwMinorVersion of - 0: Result := wvW2K; // Windows 2000 - 1: Result := wvXP; // Windows XP - 2: Result := wv2003; // Windows 2003 - 3: Result := wvVista; // Windows Vista - end; - 6: case OSVersionInfo.DwMinorVersion of - 0: Result := wv2008; // Windows 2008 - 1: Result := wv7; // Windows 7 - end; - 7: case OSVersionInfo.DwMinorVersion of - 1: Result := wv8; // Windows 8 - end; - end; - end; -end; - -function DetectWinVersionStr: String; -const - VersStr : Array[TWinVersion] of String = ( - 'Unknown OS', - 'Windows 95', - 'Windows 98', - 'Windows ME', - 'Windows NT 3', - 'Windows NT 4', - 'Windows 2000', - 'Windows XP', - 'Windows Server 2003', - 'Windows Vista', - 'Windows 7', - 'Windows Server 2008', - 'Windows 8'); -begin - Result := VersStr[DetectWinVersion]; -end; - -begin -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr deleted file mode 100644 index 62b3039fd9..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr +++ /dev/null @@ -1,32 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Îáíîâëåíèå è óñòàíîâêà íàáîðà ïðîãðàìì IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -program HistoryToDBUpdater; - -uses - madExcept, - madLinkDisAsm, - madListHardware, - madListProcesses, - madListModules, - Forms, - Main in 'Main.pas' {MainForm}, - Global in 'Global.pas'; - -{$R *.res} - -begin - Application.Initialize; - Application.MainFormOnTaskbar := True; - Application.Title := 'HistoryToDBUpdater'; - Application.CreateForm(TMainForm, MainForm); - if MainForm.RunAppDone then - Application.Run; -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj deleted file mode 100644 index 72aa3a5ce1..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj +++ /dev/null @@ -1,197 +0,0 @@ - - - {939BF92A-9B69-4A14-B992-518631C54279} - HistoryToDBUpdater.dpr - True - Release - 3 - Application - VCL - 14.4 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - false - false - 1049 - false - 00400000 - false - false - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;CFBundleExecutable= - - - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - 1033 - true - HistoryToDBUpdater_Icon1.ico - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - $(BDS)\bin\default_app.manifest - - - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - 1033 - true - HistoryToDBUpdater_Icon1.ico - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - $(BDS)\bin\default_app.manifest - - - false - RELEASE;$(DCC_Define) - false - 0 - - - true - true - madExcept;$(DCC_Define) - true - 3 - HistoryToDBUpdater_Icon.ico - ..\..\..\bin10\Release\Plugins\ - ..\..\..\bin10\Release\Plugins\ - ..\..\..\bin10\Release\Obj\hpp\ - ..\..\..\bin10\Release\Obj\hpp\ - true - 1033 - 5 - CompanyName=http://www.im-history.ru;FileDescription=HistoryToDBUpdater;FileVersion=2.5.0.0;InternalName=HistoryToDBUpdater;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=HistoryToDBUpdater.exe;ProductName=HistoryToDBUpdater;ProductVersion=1.0.0.0;Comments=http://www.im-history.ru - 2 - - - true - 2 - madExcept;$(DCC_Define) - true - 5 - true - HistoryToDBUpdater_Icon.ico - 3 - ..\..\..\bin10\Release64\Plugins\ - ..\..\..\bin10\Release64\Plugins\ - 1033 - true - ..\..\..\bin10\Release64\Obj\hpp\ - CompanyName=http://www.im-history.ru;FileDescription=HistoryToDBUpdater;FileVersion=2.5.0.0;InternalName=HistoryToDBUpdater;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=HistoryToDBUpdater.exe;ProductName=HistoryToDBUpdater;ProductVersion=1.0.0.0;Comments=http://www.im-history.ru - ..\..\..\bin10\Release64\Obj\hpp\ - - - DEBUG;$(DCC_Define) - true - false - - - - MainSource - - -
MainForm
-
- - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - Delphi.Personality.12 - - - - - HistoryToDBUpdater.dpr - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1049 - 1251 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - - - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - True - True - - - 12 - - - -
diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest deleted file mode 100644 index 812068c2ab..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest +++ /dev/null @@ -1,21 +0,0 @@ - - - -HistoryToDBUpdater - - - - - - diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes deleted file mode 100644 index 1fcb334c1d..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes +++ /dev/null @@ -1,163 +0,0 @@ -[GeneralSettings] -MesVersion=4 -HandleExceptions=1 -LinkInCode=1 -AppendMapFileToBinary=1 -NoOwnMadExceptSettings=0 -CheckFileCrc=1 -CheckForFrozenMainThread=0 -FreezeTimeout=60000 -ReportLeaks=0 -WindowsLogo=0 -CrashOnBuffer=0 -CrashOnUnderrun=0 -AutomaticallySaveBugReport=1 -AutoSaveBugReportIfNotSent=1 -AutomaticallyMailBugReport=0 -AutoMailProgressBox=0 -CopyBugReportToClipboard=0 -SuspendAllRunningThreads=0 -ShowPleaseWaitBox=1 -PleaseWaitIcon=plwait1 -AutomaticallyContinueApplication=0 -AutomaticallyRestartApplication=0 -AutomaticallyCloseApplication=0 -SendInBackground=1 -SendHelper=196608 -Send32Icon=send321 -UploadViaHttp=0 -HttpServer= -HttpSsl=0 -HttpPort=0 -HttpAccount= -HttpPassword= -UploadToFogBugz=0 -UploadToBugZilla=0 -UploadToMantis=0 -BugTrackerAccount= -BugTrackerPassword= -BugTrackerProject= -BugTrackerArea= -BugTrackerAssignTo= -MailAsSmtpServer=0 -MailAsSmtpClient=0 -SmtpServer= -SmtpSsl=0 -SmtpTls=0 -SmtpPort=0 -SmtpAccount= -SmtpPassword= -MailViaMapi=1 -MailViaMailto=1 -MailAddress=sleuthhound@gmail.com -BugReportFile=bugreport.txt -AttachBugReport=1 -AttachBugReportFile=1 -DeleteBugReportFile=1 -BugReportSendAs=bugreport.txt -BugReportZip= -ScreenShotDepth=8 -ScreenShotAppOnly=0 -ScreenShotSendAs=screenshot.png -ScreenShotZip= -AdditionalAttachments= -AppendBugReports=1 -BugReportFileSize=100000 -DontSaveDuplicateExceptions=1 -DontSaveDuplicateFreezings=1 -DuplicateExceptionDefinition=1 -DuplicateFreezeDefinition=2 -ShowExceptionBox=1 -OkBtnText=&OK -DetailsBtnText=&Details -PleaseWaitTitle=Information -PleaseWaitText=Please wait a moment... -BugTrackerTitle=%25appname%25, %25exceptMsg%25 -BugTrackerDescr=error details: %0d%0a%25errorDetails%25 -MailSubject=bug report -MailBody=please find the bug report attached -SendBoxTitle=Sending bug report... -PrepareAttachMsg=Preparing attachments... -MxLookupMsg=Searching for mail server... -ConnectMsg=Connecting to server... -SendMailMsg=Sending mail... -FieldsMsg=Setting fields... -SendAttachMsg=Sending attachments... -SendFinalizeMsg=Finalizing... -MailFailureMsg=Sorry, sending the bug report didn't work. -VersionVariable= -[ExceptionBox] -ShowButtonMailBugReport=1 -ShowButtonSaveBugReport=0 -ShowButtonPrintBugReport=0 -ShowButtonShowBugReport=1 -ShowButtonContinueApplication=1 -ShowButtonRestartApplication=1 -ShowButtonCloseApplication=1 -IconButtonSendBugReport=send1 -IconButtonSaveBugReport=save1 -IconButtonPrintBugReport=print1 -IconButtonShowBugReport=show1 -IconButtonContinueApplication=continue1 -IconButtonCantContinueApplication=cantContinue1 -IconButtonRestartApplication=restart1 -IconButtonCloseApplication=close1 -FocusedButton=0 -SendAssistant=SendAssistant -SaveAssistant=SaveAssistant -PrintAssistant=PrintAssistant -AutomaticallyShowBugReport=0 -NoOwnerDrawButtons=0 -BigExceptionIcon=big1 -TitleBar=%25appname%25 -ExceptionMessage=An error occurred in the application. -FrozenMessage=The application seems to be frozen. -BitFaultMsg=The file "%25modname%25" seems to be corrupt! -MailBugReportText=send bug report -SaveBugReportText=save bug report -PrintBugReportText=print bug report -ShowBugReportText=show bug report -ContinueApplicationText=continue application -RestartApplicationText=restart application -CloseApplicationText=close application -[BugReport] -ListThreads=1 -ListModules=1 -ListHardware=1 -ShowCpuRegisters=1 -ShowStackDump=1 -Disassembly=1 -HideUglyItems=0 -ShowRelativeAddrs=1 -ShowRelativeLines=1 -FormatDisassembly=0 -LimitDisassembly=5 -EnabledPlugins=modules|processes|hardware -[Filters] -Filter1ExceptionClasses=EDBEditError -Filter1DontCreateBugReport=1 -Filter1DontCreateScreenshot=1 -Filter1DontSuspendThreads=1 -Filter1DontCallHandlers=1 -Filter1ShowBox=3 -Filter1Assis= -Filter2ExceptionClasses= -Filter2DontCreateBugReport=0 -Filter2DontCreateScreenshot=0 -Filter2DontSuspendThreads=0 -Filter2DontCallHandlers=0 -Filter2ShowBox=0 -Filter2Assis= -GeneralDontCreateBugReport=0 -GeneralDontCreateScreenshot=0 -GeneralDontSuspendThreads=0 -GeneralDontCallHandlers=0 -GeneralShowBox=0 -GeneralAssis= -[Assistants] -Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm -Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm -Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm -Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00 -Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c'%00%00%00in which situation did the error occur?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00 -Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00 diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares deleted file mode 100644 index 93e7e944f2..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res deleted file mode 100644 index f283649744..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico deleted file mode 100644 index 244fcd4ddd..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm deleted file mode 100644 index 623f7ef672..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm +++ /dev/null @@ -1,530 +0,0 @@ -object MainForm: TMainForm - Left = 0 - Top = 0 - BorderIcons = [biSystemMenu, biMinimize] - Caption = 'HistoryToDBUpdater' - ClientHeight = 357 - ClientWidth = 486 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Icon.Data = { - 0000010001001010000001000000680400001600000028000000100000002000 - 0000010020000000000000040000000000000000000000000000000000000000 - 0000000000000000000000000000FF1F2A000000000000000000000000000000 - 00000000000000000000FF1F2A00000000000000000000000000000000000000 - 000000000000D0CDC500FF1F2A00FEEFA900FF1F2A00CDCDCD00CDCDCD00CDCD - CD00CDCDCD00FF1F2A00FEEFA900FF1F2A000000000000000000000000000000 - 0000D0CDC500FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A00D0CDC500000000000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FECF4D00FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A0000000000FF1F - 2A00FEEFA900FFE55F00FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FFE55F00FF1F2A00FF1F2A000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A00000000000000 - 0000C1BDB600FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A00CFC7BF00000000000000 - 0000C1BDB600F9F3ED00FF1F2A00FEEFA900FF1F2A00D2D2D200D2D2D200D2D2 - D200D2D2D200FF1F2A00FEEFA900FF1F2A00BAB7AF00CFC7BF00000000000000 - 0000BAB7AF00A39A8F00BAB2A700FF1F2A00D2D2D200D2D2D200D2D2D200D2D2 - D200D2D2D200D2D2D200FF1F2A00CFC7BF00A39A8F00BAB7AF00000000000000 - 0000B1AB9F00C9C2B900CFC7BF00D5CCC400DCD3CA00E4D9D200E8DDD500E4D6 - CF00E4D6CF00E4D6CF00D5CCC400CFC7BF00C9C2B900B1AB9F00000000000000 - 0000B0AB9E00C7C0B600CCC4BB00D3C9C100DAD0C700E1D7CF00EBE1DA00E4D9 - D100E4D9D100DDD2CA00DBCDC500DDCAC400DBC4BF00C1ADA400000000000000 - 0000AFAA9D00C8C1B700E8E3DB00F5F0E800FDF8F200FCF8F100FBF7F000FCF7 - F100FCF7F100FDF8F200F7F0EA00ECE3DC00CDC3BB00B2AA9E00000000000000 - 0000AEA89C00FBF5EF00EEE7DE00E0D8CE00DDD5CC00DDD4CB00DDD4CB00DDD4 - CB00DDD4CB00DDD5CC00E0D7CE00EDE6DE00FBF6EF00AEA89C00000000000000 - 0000AFA99D00E1D8CE00E1D7CE00DFD6CC00DFD5CB00DFD5CB00DFD5CB00DFD5 - CB00DFD5CB00DFD5CB00DFD6CC00E1D7CE00E1D8CE00AFA99D00000000000000 - 000000000000B6B0A400D6CFC400E6DED500EFE7DD00EEE6DC00EEE6DC00EEE6 - DC00EEE6DC00EFE7DD00E6DED500D6CFC400B6B0A40000000000000000000000 - 00000000000000000000C4C0B700AEA99C00AEA89C00AEA89C00AEA89C00AEA8 - 9C00AEA89C00AEA89C00AEA99C00C4C0B700000000000000000000000000F7EF - FFFFC007FFFF8001FFFF8001FFFF0000FFFF8001FFFF8001FFFF8001FFFF8001 - FFFF8001FFFF8001FFFF8001FFFF8001FFFF8001FFFFC003FFFFE007FFFF} - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - DesignSize = ( - 486 - 357) - PixelsPerInch = 96 - TextHeight = 13 - object GBUpdater: TGroupBox - Left = 8 - Top = 8 - Width = 472 - Height = 145 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1054#1073#1085#1086#1074#1083#1077#1085#1080#1077' ' - TabOrder = 0 - DesignSize = ( - 472 - 145) - object LAmountDesc: TLabel - Left = 16 - Top = 56 - Width = 37 - Height = 13 - Caption = #1054#1073#1098#1077#1084':' - end - object LAmount: TLabel - Left = 59 - Top = 56 - Width = 30 - Height = 13 - Caption = '10000' - end - object LSpeedDesc: TLabel - Left = 16 - Top = 75 - Width = 52 - Height = 13 - Caption = #1057#1082#1086#1088#1086#1089#1090#1100':' - end - object LSpeed: TLabel - Left = 74 - Top = 75 - Width = 49 - Height = 13 - Caption = '1000 '#1050#1073'/c' - end - object LFileDesc: TLabel - Left = 210 - Top = 75 - Width = 53 - Height = 13 - Caption = #1054#1087#1080#1089#1072#1085#1080#1077':' - end - object LFileDescription: TLabel - Left = 269 - Top = 75 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LFileMD5Desc: TLabel - Left = 210 - Top = 94 - Width = 25 - Height = 13 - Caption = 'MD5:' - end - object LFileMD5: TLabel - Left = 241 - Top = 94 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LFileNameDesc: TLabel - Left = 210 - Top = 56 - Width = 58 - Height = 13 - Caption = #1048#1084#1103' '#1092#1072#1081#1083#1072':' - end - object LFileName: TLabel - Left = 274 - Top = 56 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LStatus: TLabel - Left = 17 - Top = 21 - Width = 322 - Height = 13 - Hint = 'UpdateStatus' - Caption = #1053#1072#1078#1084#1080#1090#1077' '#1082#1085#1086#1087#1082#1091' "'#1054#1073#1085#1086#1074#1080#1090#1100'" '#1076#1083#1103' '#1085#1072#1095#1072#1083#1072' '#1087#1088#1086#1094#1077#1089#1089#1072' '#1086#1073#1085#1086#1074#1083#1077#1085#1080#1103'.' - end - object ProgressBarDownloads: TProgressBar - Left = 16 - Top = 40 - Width = 444 - Height = 10 - Anchors = [akLeft, akTop, akRight] - TabOrder = 0 - end - object ButtonSettings: TButton - Left = 114 - Top = 109 - Width = 90 - Height = 25 - Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080 - ImageIndex = 1 - Images = ImageList_Main - TabOrder = 2 - OnClick = ButtonSettingsClick - end - object ButtonUpdate: TButton - Left = 16 - Top = 109 - Width = 95 - Height = 25 - Hint = 'UpdateButton' - Caption = #1054#1073#1085#1086#1074#1080#1090#1100 - ImageIndex = 0 - Images = ImageList_Main - TabOrder = 1 - OnClick = ButtonUpdateStartClick - end - end - object SettingsPageControl: TPageControl - Left = 8 - Top = 159 - Width = 472 - Height = 193 - ActivePage = TabSheetSettings - Anchors = [akLeft, akTop, akRight] - TabOrder = 1 - object TabSheetSettings: TTabSheet - Caption = #1054#1073#1097#1080#1077' '#1085#1072#1089#1090#1088#1086#1081#1082#1080 - ImageIndex = 2 - DesignSize = ( - 464 - 165) - object GBSettings: TGroupBox - Left = 3 - Top = 0 - Width = 458 - Height = 161 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1054#1073#1097#1080#1077' '#1085#1072#1089#1090#1088#1086#1081#1082#1080 - TabOrder = 0 - object LLanguage: TLabel - Left = 16 - Top = 81 - Width = 88 - Height = 13 - Caption = #1071#1079#1099#1082' '#1087#1088#1086#1075#1088#1072#1084#1084#1099':' - end - object LIMClientType: TLabel - Left = 16 - Top = 27 - Width = 56 - Height = 13 - Caption = 'IM-'#1082#1083#1080#1077#1085#1090':' - end - object LDBType: TLabel - Left = 16 - Top = 54 - Width = 39 - Height = 13 - Caption = #1058#1080#1087' '#1041#1044':' - end - object LPlatformType: TLabel - Left = 261 - Top = 27 - Width = 18 - Height = 13 - Caption = 'x86' - end - object CBLang: TComboBox - Left = 110 - Top = 78 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 2 - OnChange = CBLangChange - end - object CBIMClientType: TComboBox - Left = 110 - Top = 24 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 0 - OnChange = CBIMClientTypeChange - end - object CBDBType: TComboBox - Left = 110 - Top = 51 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 1 - OnChange = CBDBTypeChange - end - end - end - object TabSheetConnectSettings: TTabSheet - Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080' '#1089#1086#1077#1076#1080#1085#1077#1085#1080#1103 - DesignSize = ( - 464 - 165) - object GBConnectSettings: TGroupBox - Left = 3 - Top = 0 - Width = 458 - Height = 161 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1053#1072#1089#1090#1088#1086#1081#1082#1080' '#1089#1086#1077#1076#1080#1085#1077#1085#1080#1103' ' - TabOrder = 0 - object LProxyAddress: TLabel - Left = 16 - Top = 47 - Width = 118 - Height = 13 - Caption = #1040#1076#1088#1077#1089' '#1087#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088#1072':' - end - object LProxyPort: TLabel - Left = 267 - Top = 48 - Width = 29 - Height = 13 - Caption = #1055#1086#1088#1090':' - end - object LProxyUser: TLabel - Left = 16 - Top = 98 - Width = 76 - Height = 13 - Caption = #1055#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1100':' - end - object LProxyUserPasswd: TLabel - Left = 16 - Top = 125 - Width = 41 - Height = 13 - Caption = #1055#1072#1088#1086#1083#1100':' - end - object CBUseProxy: TCheckBox - Left = 16 - Top = 24 - Width = 193 - Height = 17 - Caption = #1048#1089#1087#1086#1083#1100#1079#1086#1074#1072#1090#1100' '#1089#1074#1086#1081' '#1087#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088 - TabOrder = 0 - OnClick = CBUseProxyClick - end - object EProxyAddress: TEdit - Left = 140 - Top = 44 - Width = 121 - Height = 21 - TabOrder = 1 - Text = '127.0.0.1' - end - object EProxyPort: TEdit - Left = 302 - Top = 44 - Width = 73 - Height = 21 - MaxLength = 5 - NumbersOnly = True - TabOrder = 2 - Text = '3128' - end - object EProxyUser: TEdit - Left = 98 - Top = 95 - Width = 163 - Height = 21 - TabOrder = 4 - end - object CBProxyAuth: TCheckBox - Left = 16 - Top = 71 - Width = 233 - Height = 17 - Caption = #1055#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088' '#1090#1088#1077#1073#1091#1077#1090' '#1072#1074#1090#1086#1088#1080#1079#1072#1094#1080#1102 - TabOrder = 3 - OnClick = CBProxyAuthClick - end - object EProxyUserPasswd: TEdit - Left = 98 - Top = 122 - Width = 163 - Height = 21 - PasswordChar = '*' - TabOrder = 5 - end - end - end - object TabSheetLog: TTabSheet - Caption = #1051#1086#1075#1080 - ImageIndex = 1 - DesignSize = ( - 464 - 165) - object LogMemo: TMemo - Left = 3 - Top = 3 - Width = 458 - Height = 159 - Anchors = [akLeft, akTop, akRight, akBottom] - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 0 - end - end - end - object IMDownloader1: TIMDownloader - OnError = IMDownloader1Error - OnAccepted = IMDownloader1Accepted - OnHeaders = IMDownloader1Headers - OnMD5Checked = IMDownloader1MD5Checked - OnDownloading = IMDownloader1Downloading - OnStartDownload = IMDownloader1StartDownload - OnBreak = IMDownloader1Break - Left = 384 - Top = 112 - end - object ImageList_Main: TImageList - ColorDepth = cd32Bit - DrawingStyle = dsTransparent - Left = 384 - Top = 64 - Bitmap = { - 494C010102000400300210001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000001000000001002000000000000010 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000112A1251235A26B72A6E2DE42C732EF52C732EF5286C2CE6027920FA0279 - 1CFF000200040000000000000000000000000000000000000000000000000000 - 0000000000000000000029292963414141BF3C3C3CBF1F1F1F63000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000207030D2A65 - 2EB637873CFB9AC49CFFB2C19CFFBCC09BFFBDC29CFFAFD2B0FF0A8732FF41A0 - 5DFF06731FF2030C051C00000000000000000000000000000000000000001111 - 11290505050E01010102767676EABDBDBDFFB2B2B2FF545454EA010101020404 - 040E0C0C0C290000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000308030D397E3ED16EB6 - 85FFADE8C7FFBFD29FFF20964FFF1A9047FF148E41FF0F8A39FF389E5CFF7EC0 - 95FF44A260FF06781FF8030D051E0000000000000000000000004E4E4E9B6D6D - 6DFD5A5A5AE70B0B0B19777777E7CBCBCBFFC7C7C7FF585858E7080808194F4F - 4FE74D4D4DFD2B2B2B9B00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000034743BB174BF8CFF98D7 - B2FF77BF7EFFBBC17CFF279A59FF8FCAA8FF8CC8A4FF89C5A0FF87C49DFF68B5 - 84FF81C196FF46A464FF057620F500030009000000004F4F4F7BBCBCBCFFDEDE - DEFFA6A6A6FF7D7D7DF4848484FEC4C4C4FFC2C2C2FF6C6C6CFE686868F4A6A6 - A6FFD2D2D2FF808080FF2727277B000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001631194650AB5AFBB4EAD3FF67BB - 72FF6CBC6FFFBDB56BFF2F9E61FF93CDACFF6DB98DFF69B788FF64B584FF5FB2 - 7EFF65B481FF82C197FF3A9F5AFF007B23FB000000005353537DA5A5A5FED5D5 - D5FFC5C5C5FFCBCBCBFFD1D1D1FFC9C9C9FFC7C7C7FFCCCCCCFFC5C5C5FFBDBD - BDFFCBCBCBFF6D6D6DFE3131317D000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000003D8146B291D7AEFF9FDEB3FF83C5 - 6EFFA7D07EFFC4A45AFF35A269FF95CEAFFF93CDACFF90CBA9FF8FCBA7FF72BB - 8FFF89C7A0FF44A466FF088735FF215A24BF00000000000000005A5A5A85C5C5 - C5FFC1C1C1FFC5C5C5FFC7C7C7FFAAAAAAFFA7A7A7FFC1C1C1FFBEBEBEFFB5B5 - B5FFAAAAAAFF3636368500000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000052AA5DE4AFE9CFFF82D48FFFBEDC - 89FFC2CB81FFCCA154FF3BA46DFF38A26BFF33A065FF2F9C5FFF53AE7AFF90CB - A9FF4DAA72FF168E44FFA0D8BBFF296D2CE8838383CD7F7F7FE3959595EECFCF - CFFFC6C6C6FFCCCCCCFF7A7A7AC629292944272727446F6F6FC6C1C1C1FFBCBC - BCFFB9B9B9FF5C5C5CEE4E4E4EE3424242CD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005BBB67F6BDEFDDFF71D17BFF8FD1 - 6AFFBBE09DFFC7A65CFFD3AF5CFFC59851FFC5BB6CFFAED178FF39A162FF58B2 - 80FF269755FF58A265FFB0E3CEFF2D7832F7BEBEBEFDE2E2E2FFD2D2D2FFC6C6 - C6FFCDCDCDFFB1B1B1FF27272744000000000000000028282844A8A8A8FFC2C2 - C2FFB7B7B7FFC0C0C0FFD2D2D2FF5F5F5FFD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005BBB68F5BDF0DCFF80D882FF75DB - 6BFFBEE599FFCCDFA6FFCAA75BFFC1BC6AFFB7DA8AFFA5D85EFF3AA666FF2F9E - 63FF57BB4EFF61AA6AFFB1E4CEFF317C35F6C2C2C2FDE9E9E9FFD6D6D6FFC9C9 - C9FFCECECEFFA5A5A5FF23232344000000000000000029292944ACACACFFC4C4 - C4FFBABABAFFC6C6C6FFDDDDDDFF696969FD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000054AD60E2B2ECD2FF9AE2A1FF9CEA - 8CFFD4EDB6FFD0EAC7FFCFB86CFFCCB064FFCBC973FF74DB65FF64D94BFF63D7 - 4BFF6AD35BFF71BA7CFFA4DBC1FF337A36E6A0A0A0CDADADADE3B3B3B3EED8D8 - D8FFCDCDCDFFBCBCBCFF656565C61F1F1F44222222446F6F6FC6C3C3C3FFC2C2 - C2FFCDCDCDFF838383EE787878E3696969CD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000408449AD97DEB4FFB4EBCCFFB0EF - A6FFC9EEA8FFD1EAC9FFD5CF8CFFD9CB8AFFCDB364FFBBBB65FF99D66FFF81DE - 71FF78DC6FFF90D0A2FF87C8A3FF2C672FB9000000000000000066666685D4D4 - D4FFCCCCCCFFC9C9C9FFBABABAFF9C9C9CFFA1A1A1FFC2C2C2FFC6C6C6FFC1C1 - C1FFB7B7B7FF4747478500000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000162E1A3C5DBF6AFABFF3E2FFB4EF - B3FFB4F0ABFFC0EDB6FFD4E3B6FFD9D89BFFDAD394FFCDB46BFFC7B26BFFB4CB - 83FF93DF99FFAEE7CDFF43984AFC142D154F000000006363637DC3C3C3FEDCDC - DCFFD4D4D4FFD9D9D9FFDBDBDBFFD6D6D6FFD4D4D4FFD9D9D9FFD2D2D2FFCBCB - CBFFC8C8C8FF787878FE3636367D000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000003D7E46A586D79FFFBFF2 - DEFFC7F2D6FFD5EFD5FFD0E9CFFFD5DBA5FFDCDEAAFFDBCD8FFFD7C88AFFC9C0 - 8DFFBCD5AEFF78C790FF33743BB600000000000000006363637BDCDCDCFFEDED - EDFFDBDBDBFFB9B9B9F4BDBDBDFED6D6D6FFD4D4D4FFAFAFAFFEA4A4A4F4CBCB - CBFFE7E7E7FFB7B7B7FF4343437B000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000001040105499653C48BD8 - A1FFCDF5E8FFD4EDDAFFCEEDD3FFCFDFAEFFD6DEB4FFD4D4A1FFCED0A0FFC3D0 - A9FF86C990FF428E4BD1040A040F0000000000000000000000007F7F7F9BCCCC - CCFDB7B7B7E713131319AFAFAFE7DEDEDEFFDDDDDDFFA1A1A1E7101010199C9C - 9CE7A6A6A6FD6363639B00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000020302043D7C - 45A45DBD69F8A4E1BAFFB9EACCFFC4E0BDFFC4DAB3FFBCD7AFFFA5D7ABFF5ABA - 65FB3F8447B60309040C00000000000000000000000000000000000000002121 - 21290A0A0A0E02020202B6B6B6EAE5E5E5FFE4E4E4FF9E9E9EEA010101020A0A - 0A0E1C1C1C290000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000162E193D3F8249AA53AB5EDF5BBA67F45DBD69F857B263E942884BB21B36 - 1D48000000000000000000000000000000000000000000000000000000000000 - 000000000000000000004E4E4E63959595BF929292BF4A4A4A63000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000100000000100010000000000800000000000000000000000 - 000000000000000000000000FFFFFF0000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000} - end -end diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas deleted file mode 100644 index 7579d1834a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas +++ /dev/null @@ -1,1497 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Îáíîâëåíèå è óñòàíîâêà íàáîðà ïðîãðàìì IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -unit Main; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ComCtrls, XMLIntf, XMLDoc, Global, IniFiles, uIMDownloader, ShellApi, - ImgList; - -type - TMainForm = class(TForm) - GBUpdater: TGroupBox; - ProgressBarDownloads: TProgressBar; - LAmountDesc: TLabel; - LAmount: TLabel; - LSpeedDesc: TLabel; - LSpeed: TLabel; - ButtonSettings: TButton; - ButtonUpdate: TButton; - SettingsPageControl: TPageControl; - TabSheetConnectSettings: TTabSheet; - TabSheetLog: TTabSheet; - GBConnectSettings: TGroupBox; - LProxyAddress: TLabel; - LProxyPort: TLabel; - LProxyUser: TLabel; - LProxyUserPasswd: TLabel; - CBUseProxy: TCheckBox; - EProxyAddress: TEdit; - EProxyPort: TEdit; - EProxyUser: TEdit; - CBProxyAuth: TCheckBox; - EProxyUserPasswd: TEdit; - LogMemo: TMemo; - LFileDesc: TLabel; - LFileDescription: TLabel; - LFileMD5Desc: TLabel; - LFileMD5: TLabel; - LFileNameDesc: TLabel; - LFileName: TLabel; - IMDownloader1: TIMDownloader; - LStatus: TLabel; - TabSheetSettings: TTabSheet; - GBSettings: TGroupBox; - LLanguage: TLabel; - CBLang: TComboBox; - LIMClientType: TLabel; - CBIMClientType: TComboBox; - LDBType: TLabel; - CBDBType: TComboBox; - ImageList_Main: TImageList; - LPlatformType: TLabel; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure FormDestroy(Sender: TObject); - procedure ButtonSettingsClick(Sender: TObject); - procedure ButtonUpdateStartClick(Sender: TObject); - procedure ButtonUpdateStopClick(Sender: TObject); - procedure CBUseProxyClick(Sender: TObject); - procedure CBProxyAuthClick(Sender: TObject); - procedure IMDownloader1StartDownload(Sender: TObject); - procedure IMDownloader1Break(Sender: TObject); - procedure IMDownloader1Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); - procedure IMDownloader1Error(Sender: TObject; E: TIMDownloadError); - procedure IMDownloader1Accepted(Sender: TObject); - procedure IMDownloader1Headers(Sender: TObject; Headers: String); - procedure IMDownloader1MD5Checked(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: string); - procedure CBLangChange(Sender: TObject); - procedure CBIMClientTypeChange(Sender: TObject); - procedure CBDBTypeChange(Sender: TObject); - procedure ButtonUpdateEnableStart; - procedure ButtonUpdateEnableStop; - procedure FindLangFile; - procedure CoreLanguageChanged; - procedure InstallUpdate; - procedure SetProxySettings; - procedure AntiBoss(HideAllForms: Boolean); - procedure RunIMClient(IMClientName: String; IMProcessArray: TProcessInfoArray); - procedure RunAllIMClients; - function StartStepByStepUpdate(CurrStep: Integer; INIFileName: String): Integer; - private - { Private declarations } - FLanguage : WideString; - procedure OnControlReq(var Msg : TWMCopyData); message WM_COPYDATA; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - procedure OnLanguageChanged(var Msg: TMessage); message WM_LANGUAGECHANGED; - procedure LoadLanguageStrings; - function EndTask(TaskName, FormName: String): Boolean; - public - { Public declarations } - RunAppDone: Boolean; - C1, C2: TLargeInteger; - iCounterPerSec: TLargeInteger; - TrueHeader: Boolean; - CurrentUpdateStep: Integer; - HeaderMD5: String; - HeaderFileSize: Integer; - HeaderFileName: String; - MD5InMemory: String; - IMMD5Correct: Boolean; - IMSizeCorrect: Boolean; - INISavePath: String; - SavePath: String; - SystemLang: String; - IMCancelCopy: Boolean; - DropboxProcessInfo: TProcessInfoArray; - QIPProcessInfo: TProcessInfoArray; - RnQProcessInfo: TProcessInfoArray; - SkypeProcessInfo: TProcessInfoArray; - MirandaProcessInfo: TProcessInfoArray; - property CoreLanguage: WideString read FLanguage; - end; - -function CopyProgressFunc(TotalFileSize: Int64; TotalBytesTransferred: Int64; - StreamSize: Int64; StreamBytesTransferred: Int64; dwStreamNumber: DWORD; - dwCallbackReason: DWORD; hSourceFile: THandle; hDestinationFile: THandle; - lpData: Pointer): DWORD; stdcall; - -var - MainForm: TMainForm; - - -implementation - -{$R *.dfm} - -procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); -var - INI: TIniFile; - Path: WideString; - IsFileClosed: Boolean; - sFile: DWORD; -begin - // Ïåðåìåííàÿ äëÿ ðåæèìà àíòè-áîññ - Global_MainForm_Showing := False; - // Ñîõðàíåíèå íàñòðîåê - DBType := CBDBType.Items[CBDBType.ItemIndex]; - IMClientType := CBIMClientType.Items[CBIMClientType.ItemIndex]; - DefaultLanguage := CoreLanguage; - Path := ProfilePath + ININame; - if FileExists(Path) then - begin - try - // Æäåì ïîêà ôàéë îñâîáîäèò àíòèâèðü èëè åùå êàêàÿ-íèáóäü ãàäîñòü - IsFileClosed := False; - repeat - sFile := CreateFile(PChar(Path),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); - if (sFile <> INVALID_HANDLE_VALUE) then - begin - CloseHandle(sFile); - IsFileClosed := True; - end; - until IsFileClosed; - // End - INI := TIniFile.Create(Path); - if ParamCount = 0 then - begin - INI.WriteString('Main', 'DBType', DBType); - INI.WriteString('Main', 'IMClientType', IMClientType); - INI.WriteString('Main', 'DefaultLanguage', DefaultLanguage); - end; - INI.WriteString('Proxy', 'UseProxy', BoolToIntStr(CBUseProxy.Checked)); - INI.WriteString('Proxy', 'ProxyAddress', EProxyAddress.Text); - INI.WriteString('Proxy', 'ProxyPort', EProxyPort.Text); - INI.WriteString('Proxy', 'ProxyAuth', BoolToIntStr(CBProxyAuth.Checked)); - INI.WriteString('Proxy', 'ProxyUser', EProxyUser.Text); - INI.WriteString('Proxy', 'ProxyUserPasswd', EncryptStr(EProxyUserPasswd.Text)); - INI.WriteString('Updater', 'UpdateServer', UpdateServer); - finally - INI.Free; - end; - end; - if FileExists(INISavePath) then - DeleteFile(INISavePath); - // Ïèøåì âñå â ëîã - if EnableDebug then - LogMemo.Lines.SaveToFile(ProfilePath + DebugLogName); -end; - -procedure TMainForm.FormCreate(Sender: TObject); -var - CmdHelpStr: WideString; -begin - RunAppDone := False; - TrueHeader := False; - IMMD5Correct := False; - IMSizeCorrect := False; - CurrentUpdateStep := 0; - // Îïðåäåëÿåì ñèñòåìíûé ÿçûê - if MatchStrings(GetSysLang, 'Ðóññêèé*') or MatchStrings(GetSysLang, 'Russian*') then - SystemLang := 'Russian' - else - SystemLang := 'English'; - // Ïîäñêàçêà ïî ïàðàìåòðàì çàïóñêà - if SystemLang = 'Russian' then - begin - CmdHelpStr := 'Ïàðàìåòðû çàïóñêà ' + ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType + ':' + #13 + - '--------------------------------------------------------------' + #13#13 + - 'HistoryToDBUpdater.exe <1>' + #13#13 + - '<1> - (Íåîáÿçàòåëüíûé ïàðàìåòð) - Ïóòü äî ôàéëà íàñòðîåê HistoryToDB.ini (Íàïðèìåð: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\")'; - end - else - begin - CmdHelpStr := 'Startup options ' + ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType + ':' + #13 + - '------------------------------------------------' + #13#13 + - 'HistoryToDBUpdater.exe <1>' + #13#13 + - '<1> - (Optional) - The path to the configuration file HistoryToDB.ini (Example: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\")'; - end; - // Ïðîâåðêà âõîäíûõ ïàðàìåòðîâ - if (ParamStr(1) = '/?') or (ParamStr(1) = '-?') then - begin - MsgInf(ProgramsName, CmdHelpStr); - Exit; - end - else - begin - if ParamCount >= 1 then - begin - ProfilePath := IncludeTrailingPathDelimiter(ParamStr(1)); - end - else - begin - ProfilePath := ExtractFilePath(Application.ExeName); - end; - PluginPath := ExtractFilePath(Application.ExeName); - // Âðåìåííûé êàòàëîã - SavePath := GetUserTempPath + 'IMHistory\'; - INISavePath := SavePath + 'HistoryToDBUpdate.ini'; - IMDownloader1.DirPath := PluginPath; - // Èíèöèàëèçàöèÿ êðèïòîâàíèÿ - EncryptInit; - // ×èòàåì íàñòðîéêè - LoadINI(ProfilePath, false); - // Çàãðóæàåì íàñòðîéêè ëîêàëèçàöèè - if ParamCount >= 1 then - FLanguage := DefaultLanguage - else - FLanguage := SystemLang; - LangDoc := NewXMLDocument(); - if not DirectoryExists(PluginPath + dirLangs) then - CreateDir(PluginPath + dirLangs); - if not FileExists(PluginPath + dirLangs + defaultLangFile) then - begin - if SystemLang = 'Russian' then - CmdHelpStr := 'Ôàéë ëîêàëèçàöèè ' + PluginPath + dirLangs + defaultLangFile + ' íå íàéäåí.' - else - CmdHelpStr := 'The localization file ' + PluginPath + dirLangs + defaultLangFile + ' is not found.'; - MsgInf(ProgramsName, CmdHelpStr); - // Îñâîáîæäàåì ðåñóðñû - EncryptFree; - Exit; - end; - CoreLanguageChanged; - // Çàïîëíÿåì ñïèñîê ÿçûêîâ - FindLangFile; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - MainFormHandle := Handle; - SetWindowLong(Handle, GWL_HWNDPARENT, 0); - SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); - // Çàãðóæàåì ÿçûê èíòåðôåéñà - LoadLanguageStrings; - // Ïðîãðàììà çàïóùåíà - RunAppDone := True; - end; -end; - -procedure TMainForm.FormDestroy(Sender: TObject); -begin - if RunAppDone then - begin - // Îñâîáîæäàåì ðåñóðñû - EncryptFree; - end; -end; - -procedure TMainForm.FormShow(Sender: TObject); -var - I: Integer; -begin - // Ïåðåìåííàÿ äëÿ ðåæèìà àíòè-áîññ - Global_MainForm_Showing := True; - // Ïðîçðà÷íîñòü îêíà - AlphaBlend := AlphaBlendEnable; - AlphaBlendValue := AlphaBlendEnableValue; - // Äð. íàñòðîéêè - LAmount.Caption := '0 '+GetLangStr('Kb'); - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - CBUseProxy.Checked := False; - EProxyAddress.Enabled := False; - EProxyPort.Enabled := False; - CBProxyAuth.Enabled := False; - SettingsPageControl.ActivePage := TabSheetSettings; - SettingsPageControl.Visible := False; - MainForm.Height := SettingsPageControl.Height + 5; - if (DBType = 'Unknown') or (ParamCount = 0) then - begin - CBDBType.Enabled := True; - CBDBType.Items.Add('Unknown'); - CBDBType.Items.Add('mysql'); - CBDBType.Items.Add('postgresql'); - CBDBType.Items.Add('oracle'); - CBDBType.Items.Add('sqlite-3'); - CBDBType.Items.Add('firebird-2.0'); - CBDBType.Items.Add('firebird-2.5'); - if ParamCount = 0 then - begin - for I := 0 to CBDBType.Items.Count-1 do - if CBDBType.Items[I] = DBType then - CBDBType.ItemIndex := I - end - else - CBDBType.ItemIndex := 0; - // Ïîêàçûâàåì íàñòðîéêè - ButtonSettingsClick(Self); - end - else - begin - CBDBType.Enabled := False; - CBDBType.Items.Add(DBType); - CBDBType.ItemIndex := 0; - end; - if (IMClientType = 'Unknown') or (ParamCount = 0) then - begin - CBIMClientType.Enabled := True; - CBIMClientType.Items.Add('Unknown'); - CBIMClientType.Items.Add('QIP'); - CBIMClientType.Items.Add('RnQ'); - CBIMClientType.Items.Add('Skype'); - CBIMClientType.Items.Add('Miranda'); - CBIMClientType.Items.Add('MirandaNG'); - if ParamCount = 0 then - begin - for I := 0 to CBIMClientType.Items.Count-1 do - if CBIMClientType.Items[I] = IMClientType then - CBIMClientType.ItemIndex := I - end - else - CBIMClientType.ItemIndex := 0; - // Ïîêàçûâàåì íàñòðîéêè åñëè íå áûëè ïîêàçûíû ðàíåå - if not SettingsPageControl.Visible then - ButtonSettingsClick(Self); - end - else - begin - CBIMClientType.Enabled := False; - CBIMClientType.Items.Add(IMClientType); - CBIMClientType.ItemIndex := 0; - end; - // Ïëàòôîðìà - LPlatformType.Caption := IMClientPlatformType; - // Ïðîêñè - CBUseProxy.Checked := IMUseProxy; - EProxyAddress.Text := IMProxyAddress; - EProxyPort.Text := IMProxyPort; - CBProxyAuth.Checked := IMProxyAuth; - EProxyUser.Text := IMProxyUser; - EProxyUserPasswd.Text := IMProxyUserPagsswd; - // Âåðñèÿ óòèëèòû îáíîâëåíèÿ - LogMemo.Lines.Add(ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType); -end; - -procedure TMainForm.ButtonSettingsClick(Sender: TObject); -begin - if not SettingsPageControl.Visible then - begin - MainForm.Height := GBUpdater.Height + SettingsPageControl.Height + 55; - SettingsPageControl.Visible := True; - end - else - begin - SettingsPageControl.Visible := False; - MainForm.Height := SettingsPageControl.Height + 5; - end; -end; - -procedure TMainForm.ButtonUpdateStartClick(Sender: TObject); -var - AllProcessEndErr: Integer; -begin - IMCancelCopy := False; - AllProcessEndErr := 0; - if (DBType = 'Unknown') or (IMClientType = 'Unknown') then - MsgInf(Caption, GetLangStr('SelectDBTypeAndIMClient')) - else - begin - LogMemo.Clear; - // Èùåì ïðîãðàììû ñèíõðîíèçàöèè òèïà Dropbox - {if IsProcessRun('Dropbox.exe') then - begin - if SystemLang = 'Russian' then - MsgString := ' ïàìÿòè íàéäåíà ïðîãðàììà Dropbox.' + #13 + - 'Åñëè Âû èñïîëüçóåòå å¸ äëÿ ñèíõðîíèçàöèè IM-êëèåíòà, òî äëÿ êîððåêòíîãî îáíîâëåíèÿ' + #13 + - 'âñåõ êîìïîíåíòîâ ïëàãèíà íåîáõîäèìî å¸ çàêðûòü.' + #13 + - 'Çàêðûòü Dropbox?' - else - MsgString := 'Find the program in the memory of Dropbox.' + #13 + - 'If you use it to synchronize the IM-client, to properly' + #13 + - 'update all the components necessary to close the plug.' + #13 + - 'Close Dropbox?'; - case MessageBox(MainForm.Handle, PWideChar(MsgString), PWideChar(Caption),36) of - 6: DropboxProcessInfo := EndProcess('Dropbox.exe', True); - end; - end;} - // Èùåì çàïóùåííûå êîìïîíåíòû ïëàãèíà è çàêðûâàåì èõ - if not EndTask('HistoryToDBSync.exe', 'HistoryToDBSync for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - if not EndTask('HistoryToDBViewer.exe', 'HistoryToDBViewer for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - if not EndTask('HistoryToDBImport.exe', 'HistoryToDBImport for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - // Åñëè âñå ïðîöåññû óáèòû, òî îáíîâëÿåìñÿ - if AllProcessEndErr = 0 then - begin - // Èùåì âñå ýêçåìïëÿðû IM-êëèåíòîâ è çàêðûâàåì èõ - if IMClientType = 'QIP' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['qip.exe'])); - QIPProcessInfo := EndProcess('qip.exe', 0, True); - end; - if IMClientType = 'Miranda' then - begin - if IMClientPlatformType = 'x86' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda32.exe'])); - MirandaProcessInfo := EndProcess('miranda32.exe', 1, True); - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda64.exe'])); - MirandaProcessInfo := EndProcess('miranda64.exe', 1, True); - end; - end; - if IMClientType = 'MirandaNG' then - begin - if IMClientPlatformType = 'x86' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda32.exe'])); - MirandaProcessInfo := EndProcess('miranda32.exe', 0, True); - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda64.exe'])); - MirandaProcessInfo := EndProcess('miranda64.exe', 0, True); - end; - end; - if IMClientType = 'RnQ' then - begin - if IsProcessRun('rnq.exe') then - begin - RnQProcessInfo := EndProcess('rnq.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['rnq.exe'])); - end; - if IsProcessRun('R&Q.exe') then - begin - RnQProcessInfo := EndProcess('R&Q.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['R&Q.exe'])); - end; - end; - if IMClientType = 'Skype' then - begin - SkypeProcessInfo := EndProcess('skype.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['skype.exe'])); - end; - // Íà÷èíàåì îáíîâëåíèå - TrueHeader := False; - CurrentUpdateStep := 0; - SetProxySettings; - if IMClientPlatformType = 'x86' then - IMDownloader1.URL := UpdateServer + '&platform=windows-x86' - else - IMDownloader1.URL := UpdateServer + '&platform=windows-x64'; - IMDownloader1.DownLoad; - end - else - MsgInf(Caption, GetLangStr('ManualUpdate')); - end; -end; - -{ Óñòàíàâëèâàåì íàñòðîéêè ïðîêñè } -procedure TMainForm.SetProxySettings; -begin - if CBUseProxy.Checked then - begin - IMDownloader1.Proxy := EProxyAddress.Text + ':' + EProxyPort.Text; - if CBProxyAuth.Checked then - begin - IMDownloader1.ProxyAuthUserName := EProxyUser.Text; - IMDownloader1.ProxyAuthPassword := EProxyUserPasswd.Text; - end - else - begin - IMDownloader1.ProxyAuthUserName := ''; - IMDownloader1.ProxyAuthPassword := ''; - end; - end - else - begin - IMDownloader1.Proxy := ''; - IMDownloader1.AuthUserName := ''; - IMDownloader1.AuthPassword := ''; - end; -end; - -procedure TMainForm.IMDownloader1Accepted(Sender: TObject); -var - MaxSteps: Integer; -begin - LStatus.Caption := GetLangStr('DownloadSuccessful'); - LStatus.Hint := 'DownloadSuccessful'; - LStatus.Repaint; - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - if not TrueHeader then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LStatus.Caption := GetLangStr('InvalidResponseHeader'); - LStatus.Hint := 'InvalidResponseHeader'; - LStatus.Repaint; - ButtonUpdateEnableStart; - end - else - begin - LStatus.Caption := GetLangStr('IsChecksum'); - LStatus.Hint := 'IsChecksum'; - LStatus.Repaint; - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - LogMemo.Lines.Add(GetLangStr('MD5FileInMemory') + ' ' + MD5InMemory); - LogMemo.Lines.Add(GetLangStr('FileSizeInMemory') + ' ' + IntToStr(IMDownloader1.OutStream.Size)); - end; - if IMMD5Correct and IMSizeCorrect then - begin - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - LStatus.Caption := GetLangStr('ChecksumConfirmed'); - LStatus.Hint := 'ChecksumConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumConfirmed')); - end - else - begin - LStatus.Caption := GetLangStr('ChecksumFileEqServer'); - LStatus.Hint := 'ChecksumFileEqServer'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumFileEqServer')); - end; - // Åñëè ïåðâûé øàã - ñêà÷èâàíèå INI ôàéëà - if CurrentUpdateStep = 0 then - INISavePath := SavePath + HeaderFileName; - // Ïðîâåðÿåì êàòàëîã äëÿ ñîõðàíåíèÿ - if not DirectoryExists(SavePath) then - CreateDir(SavePath); - // Óäàëÿåì ñòàðûé ôàéë - if CurrentUpdateStep = 0 then - begin - if FileExists(INISavePath) then - DeleteFile(INISavePath); - end; - if FileExists(SavePath + HeaderFileName) then - DeleteFile(SavePath + HeaderFileName); - // Ñîõðÿíÿåì íîâûé - try - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - IMDownloader1.OutStream.SaveToFile(SavePath + HeaderFileName); - LStatus.Caption := GetLangStr('FileSavedAs') + ' ' + HeaderFileName; - LStatus.Hint := 'FileSavedAs'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('FileSavedAs') + ' ' + HeaderFileName); - end; - Inc(CurrentUpdateStep); - if CurrentUpdateStep > 0 then - MaxSteps := StartStepByStepUpdate(CurrentUpdateStep, INISavePath); - except - on E: Exception do - begin - LStatus.Caption := GetLangStr('ErrFileSavedAs') + ' ' + HeaderFileName; - LStatus.Hint := 'ErrFileSavedAs'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ErrFileSavedAs') + ' ' + HeaderFileName); - end; - end; - end - else - begin - if not IMMD5Correct then - begin - LStatus.Caption := GetLangStr('ChecksumNotConfirmed'); - LStatus.Hint := 'ChecksumNotConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumNotConfirmed')); - end; - if not IMSizeCorrect then - begin - LStatus.Caption := GetLangStr('SizeNotConfirmed'); - LStatus.Hint := 'SizeNotConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('SizeNotConfirmed')); - end; - ButtonUpdateEnableStart; - end; - end; -end; - -function TMainForm.StartStepByStepUpdate(CurrStep: Integer; INIFileName: String): Integer; -var - UpdateINI: TIniFile; - MaxStep, IMClientCount, IMClientDownloadFileCount: Integer; - DatabaseCount, DatabaseDownloadFileCount, I, UpdateServerInServiceMode: Integer; - IMClientName, IMClientNum, UpdateURL: String; - DatabaseName, DatabaseNum, TmpUpdateServer: String; - FileListArray: TArrayOfString; - DownloadListArray: TArrayOfString; -begin - Result := 0; - if FileExists(INIFileName) then - begin - UpdateINI := TIniFile.Create(INIFileName); - UpdateServerInServiceMode := UpdateINI.ReadInteger('HistoryToDBUpdate', 'UpdateServerInServiceMode', 0); - LogMemo.Lines.Add('UpdateServerInServiceMode = ' + IntToStr(UpdateServerInServiceMode)); - //Ñåðâåð îáíîâëåíèé âðåìåííî íà ñåðâèñíîì îáñëóæèâàíèè - if UpdateServerInServiceMode = 1 then - begin - LogMemo.Lines.Add(Format(GetLangStr('UpdateServerInServiceMode'), [' '])); - IMDownloader1.BreakDownload; - MsgInf(Caption, Format(GetLangStr('UpdateServerInServiceMode'), [#13])); - Result := -1; - // Âêë. êíîïêè - ButtonUpdateEnableStart; - // Çàïóñê IM-êëèåíòà - RunAllIMClients; - // Âûõîä - Close; - Exit; - end; - // Ñìåíà ñåðâåðà îáíîâëåíèÿ - TmpUpdateServer := UpdateINI.ReadString('HistoryToDBUpdate', 'UpdateServer', UpdateServer); - if TmpUpdateServer <> UpdateServer then - UpdateServer := TmpUpdateServer; - // End - MaxStep := UpdateINI.ReadInteger('HistoryToDBUpdate', 'FileCount', 0); - IMClientCount := UpdateINI.ReadInteger('HistoryToDBUpdate', 'IMClientCount', 0); - if EnableDebug then - LogMemo.Lines.Add('×èñëî IM-êëèåíòîâ â INI-ôàéëå = ' + IntToStr(IMClientCount)); - IMClientDownloadFileCount := 0; - SetLength(DownloadListArray, 0); - if IMClientCount > 0 then - begin - IMClientName := ''; - while (IMClientCount > 0) and (IMClientName <> CBIMClientType.Items[CBIMClientType.ItemIndex]) do - begin - IMClientName := UpdateINI.ReadString('HistoryToDBUpdate', 'IMClient'+IntToStr(IMClientCount)+'Name', ''); - IMClientNum := UpdateINI.ReadString('HistoryToDBUpdate', 'IMClient'+IntToStr(IMClientCount)+'File', ''); - if EnableDebug then - begin - LogMemo.Lines.Add('IM-êëèåíò = ' + IMClientName); - LogMemo.Lines.Add('Íîìåðà ôàéëîâ = ' + IMClientNum); - end; - Dec(IMClientCount); - end; - FileListArray := StringToParts(IMClientNum, [',']); - SetLength(DownloadListArray, Length(FileListArray)); - DownloadListArray := FileListArray; - IMClientDownloadFileCount := Length(FileListArray); - if EnableDebug then - begin - for I := 0 to High(FileListArray) do - LogMemo.Lines.Add('¹ ôàéëà äëÿ '+IMClientName+' = ' + FileListArray[I]); - end; - end; - DatabaseCount := UpdateINI.ReadInteger('HistoryToDBUpdate', 'DatabaseCount', 0); - DatabaseDownloadFileCount := 0; - if EnableDebug then - LogMemo.Lines.Add('×èñëî òèïîâ Database â INI-ôàéëå = ' + IntToStr(DatabaseCount)); - if DatabaseCount > 0 then - begin - DatabaseName := ''; - while (DatabaseCount > 0) and (DatabaseName <> CBDBType.Items[CBDBType.ItemIndex]) do - begin - DatabaseName := UpdateINI.ReadString('HistoryToDBUpdate', 'Database'+IntToStr(DatabaseCount)+'Name', ''); - DatabaseNum := UpdateINI.ReadString('HistoryToDBUpdate', 'Database'+IntToStr(DatabaseCount)+'File', ''); - if EnableDebug then - begin - LogMemo.Lines.Add('Database = ' + DatabaseName); - LogMemo.Lines.Add('Íîìåðà ôàéëîâ = ' + DatabaseNum); - end; - Dec(DatabaseCount); - end; - FileListArray := StringToParts(DatabaseNum, [',']); - SetLength(DownloadListArray, Length(DownloadListArray) + Length(FileListArray)); - DatabaseDownloadFileCount := Length(FileListArray); - for I := 0 to High(FileListArray) do - begin - DownloadListArray[IMClientDownloadFileCount+I] := FileListArray[I]; - if EnableDebug then - LogMemo.Lines.Add('¹ ôàéëà äëÿ '+DatabaseName+' = ' + FileListArray[I]); - end; - end; - if EnableDebug then - begin - LogMemo.Lines.Add('×èñëî øàãîâ = ' + IntToStr(Length(DownloadListArray))); - for I := 0 to High(DownloadListArray) do - LogMemo.Lines.Add('DownloadListArray['+IntToStr(I)+'] = ' + DownloadListArray[I]); - end; - MaxStep := IMClientDownloadFileCount + DatabaseDownloadFileCount; - Result := MaxStep; - if EnableDebug then - LogMemo.Lines.Add('×èñëî øàãîâ = ' + IntToStr(MaxStep)); - if CurrentUpdateStep > MaxStep then - begin - LStatus.Caption := GetLangStr('AllUpdatesDownloaded'); - LStatus.Hint := 'AllUpdatesDownloaded'; - LStatus.Repaint; - LogMemo.Lines.Add('========================================='); - LogMemo.Lines.Add(GetLangStr('AllUpdatesDownloaded')); - InstallUpdate; - LStatus.Caption := GetLangStr('AllUpdatesInstalled'); - LStatus.Hint := 'AllUpdatesInstalled'; - LStatus.Repaint; - LogMemo.Lines.Add('========================================='); - LogMemo.Lines.Add(GetLangStr('AllUpdatesInstalled')); - // Âêë. êíîïêè - ButtonUpdateEnableStart; - // Çàïóñê IM-êëèåíòà - RunAllIMClients; - Close; - Exit; - end; - LogMemo.Lines.Add('================= ' + GetLangStr('Step') + ' '+IntToStr(CurrStep)+' ================='); - LogMemo.Lines.Add(GetLangStr('NumberFilesUpdate') + ' = ' + IntToStr(MaxStep)); - if MaxStep > 0 then - begin - UpdateURL := UpdateINI.ReadString('HistoryToDBUpdate', 'File'+DownloadListArray[CurrStep-1], ''); - if (UpdateURL <> '') and (CurrStep <= MaxStep) then - begin - LogMemo.Lines.Add(GetLangStr('FileToUpdate') + ' = ' + UpdateURL); - if MatchStrings(UpdateURL, '*file=*Lang') then - IMDownloader1.DirPath := PluginPath + dirLangs - else if MatchStrings(UpdateURL, '*file=*-update-*-to-*') then - IMDownloader1.DirPath := PluginPath + dirSQLUpdate - else - IMDownloader1.DirPath := PluginPath; - IMDownloader1.URL := UpdateURL; - IMDownloader1.DownLoad; - end - else - CurrentUpdateStep := 0; - end; - end - else - LogMemo.Lines.Add(GetLangStr('UpdateSettingsFileNotFound') + ' ' + INIFileName); -end; - -procedure TMainForm.InstallUpdate; -var - SR: TSearchRec; -begin - LAmount.Caption := '0 '+GetLangStr('Kb'); - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - // Îáíîâëåíèå - if FindFirst(SavePath + '*.*', faAnyFile or faDirectory, SR) = 0 then - begin - repeat - if (SR.Attr = faDirectory) and ((SR.Name = '.') or (SR.Name = '..')) then // ×òîáû íå áûëî ôàéëîâ . è .. - begin - Continue; // Ïðîäîëæàåì öèêë - end; - if MatchStrings(SR.Name, 'HistoryToDBUpdater.exe') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + 'HistoryToDBUpdater.upd'), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.xml') then - begin - LStatus.Caption := Format(GetLangStr('UpdateLangFile'), [SR.Name]); - LStatus.Hint := 'UpdateLangFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateLangFile'), [SR.Name])); - if FileExists(PluginPath + dirLangs + SR.Name) then - DeleteFile(PluginPath + dirLangs + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + dirLangs + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateLangFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.sql') then - begin - LStatus.Caption := Format(GetLangStr('UpdateSQLFile'), [SR.Name]); - LStatus.Hint := 'UpdateSQLFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateSQLFile'), [SR.Name])); - if not DirectoryExists(PluginPath + dirSQLUpdate) then - CreateDir(PluginPath + dirSQLUpdate); - if FileExists(PluginPath + dirSQLUpdate + SR.Name) then - DeleteFile(PluginPath + dirSQLUpdate + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + dirSQLUpdate + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateSQLFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.exe') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), nil, nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.dll') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.msg') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), nil, nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.txt') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - until FindNext(SR) <> 0; - FindClose(SR); - end; -end; - -procedure TMainForm.IMDownloader1Break(Sender: TObject); -begin - LStatus.Caption := GetLangStr('DownloadStopped'); - LStatus.Hint := 'DownloadStopped'; - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - ButtonUpdateEnableStart; -end; - -procedure TMainForm.IMDownloader1Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); -begin - QueryPerformanceCounter(C2); - ProgressBarDownloads.Max := MaxSize; - ProgressBarDownloads.Position := AcceptedSize; - LStatus.Caption := GetLangStr('Loading'); - LStatus.Hint := 'Loading'; - LAmount.Caption := CurrToStr(AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - LSpeed.Caption := CurrToStr((AcceptedSize/1024)/((C2 - C1) / iCounterPerSec))+' '+GetLangStr('KbSec'); - LSpeed.Repaint; -end; - -procedure TMainForm.IMDownloader1Error(Sender: TObject; E: TIMDownloadError); -var - S, HS: String; -begin - case E of - deInternetOpen: - begin - S := GetLangStr('ErrInternetOpen'); - HS := 'ErrInternetOpen'; - end; - deInternetOpenUrl: - begin - S := GetLangStr('ErrInternetOpenURL'); - HS := 'ErrInternetOpenURL'; - end; - deDownloadingFile: - begin - S := GetLangStr('ErrDownloadingFile'); - HS := 'ErrDownloadingFile'; - end; - deRequest: - begin - S := GetLangStr('ErrRequest'); - HS := 'ErrRequest'; - end; - end; - LStatus.Caption := S; - LStatus.Hint := HS; - LogMemo.Lines.Add(S); - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - if not TrueHeader then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - end; - ButtonUpdateEnableStart; -end; - -{ Ïîëó÷åíèå èíôîðìàöèè î ôàéëå - Ôîðìàò èíîðìàöèè: - Èìÿ_ôàéëà|Îïèñàíè_ôàéëà|MD5Sum_ôàéëà|Ðàçìåð_ôàéëà -} -procedure TMainForm.IMDownloader1Headers(Sender: TObject; Headers: string); -var - HeadersStrList: TStringList; - I: Integer; - Size: String; - Ch: Char; - ResultFilename, ResultFileDesc, ResultMD5Sum, ResultHeaders: String; - ResultFileSize: Integer; -begin - //LogMemo.Lines.Add(Headers); - HeadersStrList := TStringList.Create; - HeadersStrList.Clear; - HeadersStrList.Text := Headers; - HeadersStrList.Delete(HeadersStrList.Count-1); // Ïîñëåäíèé ýëåìåíò ñîäåðæèò âñåãäà CRLF - if HeadersStrList.Count > 0 then - begin - ResultFilename := 'Test'; - ResultFileDesc := 'Test'; - ResultMD5Sum := '00000000000000000000000000000000'; - ResultFileSize := 0; - LogMemo.Lines.Add(GetLangStr('ParseHeader')); - for I := 0 to HeadersStrList.Count - 1 do - begin - //LogMemo.Lines.Add(HeadersStrList[I]); - // Ïàðñèì ñòðîêó âèäà - // Content-Disposition: attachment; filename="ÈÌß-ÔÀÉËÀ" - // Òàêóþ ñòðîêó âñòàâëÿåò â çàãîëîâîê HTTP-çàïðîñà - // òîëüêî ìîé ñêðèïò get.php - if pos('content-disposition', lowercase(HeadersStrList[I])) > 0 then - begin - ResultFilename := HeadersStrList[I]; - Delete(ResultFilename, 1, Pos('"', HeadersStrList[I])); - Delete(ResultFilename, Length(ResultFilename),1); - //LogMemo.Lines.Add('Filename: '+ResultFilename); - end; - // Ïàðñèì ñòðîêó âèäà - // Content-Description: Desc - if pos('content-description', lowercase(HeadersStrList[I])) > 0 then - begin - ResultFileDesc := HeadersStrList[I]; - Delete(ResultFileDesc, 1, Pos(':', HeadersStrList[I])); - Delete(ResultFileDesc, 1,1); - //LogMemo.Lines.Add('Description: '+ResultFileDesc); - end; - // Ïàðñèì ñòðîêó âèäà - // Content-MD5Sum: MD5 - if pos('content-md5sum', lowercase(HeadersStrList[I])) > 0 then - begin - ResultMD5Sum := HeadersStrList[I]; - Delete(ResultMD5Sum, 1, Pos(':', HeadersStrList[I])); - Delete(ResultMD5Sum, 1,1); - //LogMemo.Lines.Add('MD5: '+ResultMD5Sum); - end; - // Ïàðñèì ñòðîêó âèäà - // Content-Length: ÐÀÇÌÅÐ - if pos('content-length', lowercase(HeadersStrList[i])) > 0 then - begin - Size := ''; - for Ch in HeadersStrList[I]do - if Ch in ['0'..'9'] then - Size := Size + Ch; - ResultFileSize := StrToIntDef(Size,-1);// + Length(HeadersStrList.Text); - end; - end; - ResultHeaders := ResultFilename + '|' + ResultFileDesc + '|' + ResultMD5Sum + '|' + IntToStr(ResultFileSize) + '|'; - if(ResultHeaders <> 'Test|Test|00000000000000000000000000000000|' + IntToStr(ResultFileSize) + '|') then - begin - LogMemo.Lines.Add(GetLangStr('HeaderData')); - LogMemo.Lines.Add(GetLangStr('FileName') + ' ' + ResultFilename); - LogMemo.Lines.Add(GetLangStr('FileDesc') + ' ' + ResultFileDesc); - LogMemo.Lines.Add('MD5: ' + ResultMD5Sum); - LogMemo.Lines.Add(GetLangStr('FileSize') + ' ' + IntToStr(ResultFileSize)); - LFileName.Caption := ResultFilename; - LFileDescription.Caption := ResultFileDesc; - LFileMD5.Caption := ResultMD5Sum; - HeaderFileName := ResultFilename; - HeaderMD5 := ResultMD5Sum; - HeaderFileSize := ResultFileSize; - if (CurrentUpdateStep = 0) and FileExists(PluginPath+HeaderFileName) then - DeleteFile(PluginPath+HeaderFileName); - TrueHeader := True; - end - else - begin - LogMemo.Lines.Add(GetLangStr('InvalidResponseHeader')); - LogMemo.Lines.Add(GetLangStr('InvalidResponseHeaderDesc')); - HeaderFileName := 'Test'; - HeaderMD5 := '00000000000000000000000000000000'; - HeaderFileSize := 0; - TrueHeader := False; - end; - end; - HeadersStrList.Free; -end; - -procedure TMainForm.IMDownloader1MD5Checked(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: string); -begin - MD5InMemory := MD5Str; - IMMD5Correct := MD5Correct; - IMSizeCorrect := SizeCorrect; -end; - -procedure TMainForm.IMDownloader1StartDownload(Sender: TObject); -begin - QueryPerformanceFrequency(iCounterPerSec); - QueryPerformanceCounter(C1); - ButtonUpdateEnableStop; - LStatus.Caption := GetLangStr('InitDownload'); - LStatus.Hint := 'InitDownload'; - LAmount.Caption := '0 '+GetLangStr('Kb'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - LogMemo.Lines.Add(GetLangStr('InitDownloadFromURL') + ' ' + IMDownloader1.URL); -end; - -procedure TMainForm.ButtonUpdateStopClick(Sender: TObject); -begin - // Ïðåðûâàåì çàêà÷êó - IMDownloader1.BreakDownload; - //Îñòàíàâëèâàåì ïðîöåññ êîïèðîâàíèÿ - IMCancelCopy := True; -end; - -procedure TMainForm.CBUseProxyClick(Sender: TObject); -begin - if CBUseProxy.Checked then - begin - EProxyAddress.Enabled := True; - EProxyPort.Enabled := True; - CBProxyAuth.Enabled := True; - end - else - begin - EProxyAddress.Enabled := False; - EProxyPort.Enabled := False; - CBProxyAuth.Enabled := False; - end; -end; - -procedure TMainForm.CBProxyAuthClick(Sender: TObject); -begin - if CBProxyAuth.Checked then - begin - EProxyUser.Enabled := True; - EProxyUserPasswd.Enabled := True; - end - else - begin - EProxyUser.Enabled := False; - EProxyUserPasswd.Enabled := False; - end; -end; - -procedure TMainForm.ButtonUpdateEnableStart; -begin - ButtonUpdate.OnClick := ButtonUpdateStartClick; - ButtonUpdate.Caption := GetLangStr('UpdateButton'); - ButtonUpdate.Hint := 'UpdateButton'; - ButtonSettings.Enabled := True; - CBIMClientType.Enabled := True; - CBDBType.Enabled := True; -end; - -procedure TMainForm.ButtonUpdateEnableStop; -begin - ButtonUpdate.OnClick := ButtonUpdateStopClick; - ButtonUpdate.Caption := GetLangStr('StopButton'); - ButtonUpdate.Hint := 'StopButton'; - ButtonSettings.Enabled := False; - CBIMClientType.Enabled := False; - CBDBType.Enabled := False; -end; - -procedure TMainForm.CBDBTypeChange(Sender: TObject); -begin - DBType := CBDBType.Items[CBDBType.ItemIndex]; -end; - -procedure TMainForm.CBIMClientTypeChange(Sender: TObject); -begin - IMClientType := CBIMClientType.Items[CBIMClientType.ItemIndex]; -end; - -{ Ñìåíà ÿçûêà } -procedure TMainForm.CBLangChange(Sender: TObject); -begin - FLanguage := CBLang.Items[CBLang.ItemIndex]; - DefaultLanguage := CBLang.Items[CBLang.ItemIndex]; - CoreLanguageChanged; -end; - -{ Ïðîöåäóðà ïîèñêà ÿçûêîâûõ ôàéëîâ è çàïîëíåíèÿ ñïèñêà } -procedure TMainForm.FindLangFile; -var - SR: TSearchRec; - I: Integer; -begin - CBLang.Items.Clear; - if FindFirst(PluginPath + dirLangs + '\*.*', faAnyFile or faDirectory, SR) = 0 then - begin - repeat - if (SR.Attr = faDirectory) and ((SR.Name = '.') or (SR.Name = '..')) then // ×òîáû íå áûëî ôàéëîâ . è .. - begin - Continue; // Ïðîäîëæàåì öèêë - end; - if MatchStrings(SR.Name, '*.xml') then - begin - // Çàïîëíÿåì ëèñò - CBLang.Items.Add(ExtractFileNameEx(SR.Name, False)); - end; - until FindNext(SR) <> 0; - FindClose(SR); - end; - if CBLang.Items.Count > 0 then - begin - for I := 0 to CBLang.Items.Count-1 do - begin - if CBLang.Items[I] = CoreLanguage then - CBLang.ItemIndex := I; - end; - end - else - begin - CBLang.Items.Add(GetLangStr('NotFoundLangFile')); - CBLang.ItemIndex := 0; - CBLang.Enabled := False; - end; -end; - -{ Ñìåíà ÿçûêà èíòåðôåéñà ïî ñîáûòèþ WM_LANGUAGECHANGED } -procedure TMainForm.OnLanguageChanged(var Msg: TMessage); -begin - LoadLanguageStrings; -end; - -{ Ôóíêöèÿ äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè } -procedure TMainForm.CoreLanguageChanged; -var - LangFile: String; -begin - if CoreLanguage = '' then - Exit; - try - LangFile := PluginPath + dirLangs + CoreLanguage + '.xml'; - if FileExists(LangFile) then - LangDoc.LoadFromFile(LangFile) - else - begin - if FileExists(PluginPath + dirLangs + defaultLangFile) then - LangDoc.LoadFromFile(PluginPath + dirLangs + defaultLangFile) - else - begin - MsgDie(ProgramsName, 'Not found any language file!'); - Exit; - end; - end; - Global.CoreLanguage := CoreLanguage; - SendMessage(MainFormHandle, WM_LANGUAGECHANGED, 0, 0); - //SendMessage(AboutFormHandle, WM_LANGUAGECHANGED, 0, 0); - except - on E: Exception do - MsgDie(ProgramsName, 'Error on CoreLanguageChanged: ' + E.Message + sLineBreak + - 'CoreLanguage: ' + CoreLanguage); - end; -end; - -{ Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè } -procedure TMainForm.LoadLanguageStrings; -begin - if IMClientType <> 'Unknown' then - Caption := ProgramsName + ' for ' + IMClientType + ' (' + MyAccount + ')' - else - Caption := ProgramsName; - if ButtonUpdate.Hint = 'UpdateButton' then - begin - ButtonUpdate.Caption := GetLangStr('UpdateButton'); - ButtonUpdate.Hint := 'UpdateButton'; - end - else - begin - ButtonUpdate.Caption := GetLangStr('StopButton'); - ButtonUpdate.Hint := 'StopButton'; - end; - ButtonSettings.Caption := GetLangStr('SettingsButton'); - LIMClientType.Caption := GetLangStr('IMClientType'); - LDBType.Caption := GetLangStr('LDBType'); - LLanguage.Caption := GetLangStr('Language'); - TabSheetSettings.Caption := GetLangStr('GeneralSettings'); - TabSheetConnectSettings.Caption := GetLangStr('ConnectionSettings'); - TabSheetLog.Caption := GetLangStr('Logs'); - GBSettings.Caption := GetLangStr('GeneralSettings'); - GBConnectSettings.Caption := GetLangStr('ConnectionSettings'); - CBUseProxy.Caption := GetLangStr('UseProxy'); - LProxyAddress.Caption := GetLangStr('ProxyAddress'); - LProxyPort.Caption := GetLangStr('ProxyPort'); - CBProxyAuth.Caption := GetLangStr('ProxyAuth'); - LProxyUser.Caption := GetLangStr('ProxyUser'); - LProxyUserPasswd.Caption := GetLangStr('ProxyUserPasswd'); - EProxyAddress.Left := LProxyAddress.Left + LProxyAddress.Width + 5; - LProxyPort.Left := EProxyAddress.Left + EProxyAddress.Width + 5; - EProxyPort.Left := LProxyPort.Left + LProxyPort.Width + 5; - GBUpdater.Caption := GetLangStr('Update'); - LStatus.Caption := GetLangStr(LStatus.Hint); - LAmountDesc.Caption := GetLangStr('Amount'); - LSpeedDesc.Caption := GetLangStr('Speed'); - LFileNameDesc.Caption := GetLangStr('FileName'); - LFileDesc.Caption := GetLangStr('FileDesc'); - LAmount.Left := LAmountDesc.Left + LAmountDesc.Width + 5; - LSpeed.Left := LSpeedDesc.Left + LSpeedDesc.Width + 5; - LFileName.Left := LFileNameDesc.Left + LFileNameDesc.Width + 5; - LFileDescription.Left := LFileDesc.Left + LFileDesc.Width + 5; - if ButtonSettings.Enabled then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - end; -end; - -function TMainForm.EndTask(TaskName, FormName: String): Boolean; -begin - Result := False; - if IsProcessRun(TaskName, FormName) then - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryFoundProcess'), [TaskName, IntToStr(GetProcessID(TaskName))])); - LogMemo.Lines.Add(GetLangStr('SendExitCommand')); - OnSendMessageToOneComponent(FormName, '009'); - Sleep(1200); - LogMemo.Lines.Add(Format(GetLangStr('SearchProcessInMemory'), [TaskName])); - if IsProcessRun(TaskName, FormName) then - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryFoundProcess'), [TaskName, IntToStr(GetProcessID(TaskName))])); - LogMemo.Lines.Add(Format(GetLangStr('KillProcess'), [TaskName])); - if KillTask(TaskName, FormName) = 1 then - begin - LogMemo.Lines.Add(Format(GetLangStr('KillProcessDone'), [TaskName])); - Result := True; - end - else - begin - if Global_IMProcessPID <> 0 then - begin - LogMemo.Lines.Add(Format(GetLangStr('NotKillProcess'), [TaskName])); - LogMemo.Lines.Add(Format(GetLangStr('SeDebugPrivilege'), [TaskName])); - if ProcessTerminate(Global_IMProcessPID) then - begin - LogMemo.Lines.Add(Format(GetLangStr('SeDebugPrivilegeDone'), [TaskName])); - Result := True; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('NotKillSeDebugPrivilege'), [TaskName])); - Result := False; - end; - end; - end; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryNotFoundProcess'), [TaskName])); - Result := True; - end; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryNotFoundProcess'), [TaskName])); - Result := True; - end; -end; - -{ Ïðèåì óïðàâëÿþùèõ êîìàíä îò ïëàãèíà ïî ñîáûòèþ WM_COPYDATA } -procedure TMainForm.OnControlReq(var Msg : TWMCopyData); -var - ControlStr, EncryptControlStr: String; - copyDataType : TCopyDataType; - GotChars: Integer; -begin - copyDataType := TCopyDataType(Msg.CopyDataStruct.dwData); - if copyDataType = cdtString then - begin - GotChars := Msg.CopyDataStruct.cbData div SizeOf(Char); - SetLength(EncryptControlStr, GotChars); - Move(Msg.CopyDataStruct.lpData^, PChar(EncryptControlStr)^, GotChars * sizeof(Char)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà OnControlReq: Ïîëó÷åíî øèôðîâàííîå óïðàâëÿþùåå ñîîáùåíèå: ' + EncryptControlStr, 1); - ControlStr := DecryptStr(EncryptControlStr); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà OnControlReq: Óïðàâëÿþùåå ñîîáùåíèå ðàñøèôðîâàíî: ' + ControlStr, 1); - //Msg.Result := 2006; - if ControlStr = 'Russian' then - begin - FLanguage := 'Russian'; - CoreLanguageChanged; - end - else if ControlStr = 'English' then - begin - FLanguage := 'English'; - CoreLanguageChanged; - end; - // 001 - Ïåðå÷èòàòü íàñòðîéêè èç ôàéëà HistoryToDB.ini - if ControlStr = '001' then - begin - // ×èòàåì íàñòðîéêè - LoadINI(ProfilePath, true); - end; - // 004 - Ðåæèì Àíòè-áîññ - if ControlStr = '0040' then // Ïîêàçàòü ôîðìû - AntiBoss(False); - if ControlStr = '0041' then // Ñêðûòü ôîðìû - AntiBoss(True); - // 003 - Âûõîä èç ïðîãðàììû - {if (ControlStr = '003') and (ButtonUpdate.Enabled) then - Close;} - // 009 - Ýêñòðåííûé âûõîä èç ïðîãðàììû - if ControlStr = '009' then - begin - IMDownloader1.BreakDownload; - Close; - end; - end; -end; - -{ Ïîääåðæêà ðåæèìà Àíòè-áîññ } -procedure TMainForm.AntiBoss(HideAllForms: Boolean); -begin - if not Assigned(MainForm) then Exit; - if HideAllForms then - begin - ShowWindow(MainForm.Handle, SW_HIDE); - MainForm.Hide; - //ShowWindow(AboutForm.Handle, SW_HIDE); - //AboutForm.Hide; - end - else - begin - // Åñëè ôîðìà áûëà ðàíåå îòêðûòà, òî ïîêàçûâàåì å¸ - if Global_MainForm_Showing then - begin - ShowWindow(MainForm.Handle, SW_SHOW); - MainForm.Show; - // Åñëè ôîðìà ñâåðíóòà, òî ðàçâîðà÷èâàåì å¸ ïîâåðõ âñåõ îêîí - if MainForm.WindowState = wsMinimized then - begin - MainForm.FormStyle := fsStayOnTop; - MainForm.WindowState := wsNormal; - MainForm.FormStyle := fsNormal; - end; - if MainForm.WindowState = wsNormal then - begin - MainForm.FormStyle := fsStayOnTop; - MainForm.FormStyle := fsNormal; - end; - end; - {if Global_AboutForm_Showing then - begin - ShowWindow(AboutForm.Handle, SW_SHOW); - AboutForm.Show; - end;} - end; -end; - -procedure TMainForm.RunIMClient(IMClientName: String; IMProcessArray: TProcessInfoArray); -var - i: Integer; -begin - for i := Low(IMProcessArray) to High(IMProcessArray) do - begin - if LowerCase(IMClientName) = LowerCase(IMProcessArray[i].ProcessName) then - begin - if FileExists(IMProcessArray[i].ProcessPath) then - begin - LogMemo.Lines.Add(Format(GetLangStr('StartProgram'), [IMProcessArray[i].ProcessPath + IMProcessArray[i].ProcessParamCmd])); - ShellExecute(0, 'open', PWideChar(IMProcessArray[i].ProcessPath), PWideChar(' '+IMProcessArray[i].ProcessParamCmd), nil, SW_SHOWNORMAL); - Sleep(500); - if IsProcessRun(IMProcessArray[i].ProcessName) then - LogMemo.Lines.Add(Format(GetLangStr('StartProgramDone'), [IMProcessArray[i].ProcessPath])) - else - LogMemo.Lines.Add(Format(GetLangStr('StartProgramFail'), [IMProcessArray[i].ProcessPath])); - end; - end; - end; -end; - -procedure TMainForm.RunAllIMClients; -begin - if IMClientType = 'QIP' then - RunIMClient('qip.exe', QIPProcessInfo); - if (IMClientType = 'Miranda') or (IMClientType = 'MirandaNG') then - {$IfDef WIN32} - RunIMClient('miranda32.exe', MirandaProcessInfo); - {$Else} - RunIMClient('miranda64.exe', MirandaProcessInfo); - {$EndIf} - if IMClientType = 'RnQ' then - begin - RunIMClient('R&Q.exe', RnQProcessInfo); - RunIMClient('rnq.exe', RnQProcessInfo); - end; - if IMClientType = 'Skype' then - begin - if SystemLang = 'Russian' then - begin - if FileExists(PluginPath + 'installupdater-ru.cmd') then - ShellExecute(0, 'open', PWideChar(PluginPath + 'installupdater-ru.cmd'), nil, nil, SW_HIDE) - else - RunIMClient('skype.exe', SkypeProcessInfo); - end - else - begin - if FileExists(PluginPath + 'installupdater-en.cmd') then - ShellExecute(0, 'open', PWideChar(PluginPath + 'installupdater-en.cmd'), nil, nil, SW_HIDE) - else - RunIMClient('skype.exe', SkypeProcessInfo); - end; - end; - // Çàïóñê Dropbox - {if not IsProcessRun('Dropbox.exe') then - RunIMClient('Dropbox.exe', DropboxProcessInfo);} -end; - -function CopyProgressFunc(TotalFileSize: Int64; TotalBytesTransferred: Int64; - StreamSize: Int64; StreamBytesTransferred: Int64; dwStreamNumber: DWORD; - dwCallbackReason: DWORD; hSourceFile: THandle; hDestinationFile: THandle; - lpData: Pointer): DWORD; stdcall; -begin - MainForm.ProgressBarDownloads.Position := 100 * TotalBytesTransferred div TotalFileSize; - Application.ProcessMessages; - CopyProgressFunc := PROGRESS_CONTINUE; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas deleted file mode 100644 index 0f6a2bd831..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas +++ /dev/null @@ -1,210 +0,0 @@ -unit NTNative; - -interface - -uses Classes, SysUtils, Windows; - -type - Pointer32 = ULONG; - THANDLE32 = ULONG; - - _UNICODE_STRING = record - Length: Word; - MaximumLength: Word; - Buffer: LPWSTR; - end; - UNICODE_STRING = _UNICODE_STRING; - - //http://msdn.microsoft.com/en-us/library/windows/desktop/ms684280%28v=vs.85%29.aspx - PROCESS_BASIC_INFORMATION = record - Reserved1 : Pointer; - PebBaseAddress: Pointer; - Reserved2: array [0..1] of Pointer; - UniqueProcessId: ULONG_PTR; - Reserved3: Pointer; - end; - - - //http://undocumented.ntinternals.net/UserMode/Structures/RTL_DRIVE_LETTER_CURDIR.html - _RTL_DRIVE_LETTER_CURDIR = record - Flags: Word; - Length: Word; - TimeStamp: ULONG; - DosPath: UNICODE_STRING; - end; - RTL_DRIVE_LETTER_CURDIR = _RTL_DRIVE_LETTER_CURDIR; - - _CURDIR = record - DosPath: UNICODE_STRING; - Handle: THANDLE; - end; - CURDIR = _CURDIR; - - //http://undocumented.ntinternals.net/UserMode/Structures/RTL_USER_PROCESS_PARAMETERS.html - _RTL_USER_PROCESS_PARAMETERS = record - MaximumLength: ULONG; - Length: ULONG; - Flags: ULONG; - DebugFlags: ULONG; - ConsoleHandle: THANDLE; - ConsoleFlags: ULONG; - StandardInput: THANDLE; - StandardOutput: THANDLE; - StandardError: THANDLE; - CurrentDirectory: CURDIR; - DllPath: UNICODE_STRING; - ImagePathName: UNICODE_STRING; - CommandLine: UNICODE_STRING; - Environment: Pointer; - StartingX: ULONG; - StartingY: ULONG; - CountX: ULONG; - CountY: ULONG; - CountCharsX: ULONG; - CountCharsY: ULONG; - FillAttribute: ULONG; - WindowFlags: ULONG; - ShowWindowFlags: ULONG; - WindowTitle: UNICODE_STRING; - DesktopInfo: UNICODE_STRING; - ShellInfo: UNICODE_STRING; - RuntimeData: UNICODE_STRING; - CurrentDirectories: array[0..31] of RTL_DRIVE_LETTER_CURDIR; - end; - RTL_USER_PROCESS_PARAMETERS = _RTL_USER_PROCESS_PARAMETERS; - PRTL_USER_PROCESS_PARAMETERS = ^RTL_USER_PROCESS_PARAMETERS; - - _PEB = record - Reserved1 : array [0..1] of Byte; - BeingDebugged : Byte; - Reserved2 : Byte; - Reserved3 : array [0..1] of Pointer; - Ldr : Pointer; - ProcessParameters : PRTL_USER_PROCESS_PARAMETERS; - Reserved4 : array [0..102] of Byte; - Reserved5 : array [0..51] of Pointer; - PostProcessInitRoutine : Pointer; - Reserved6 : array [0..127] of byte; - Reserved7 : Pointer; - SessionId : ULONG; - end; - PEB=_PEB; - -{$IFDEF CPUX64} - _UNICODE_STRING32 = record - Length: Word; - MaximumLength: Word; - Buffer: Pointer32; - end; - UNICODE_STRING32 = _UNICODE_STRING32; - - _RTL_DRIVE_LETTER_CURDIR32 = record - Flags: Word; - Length: Word; - TimeStamp: ULONG; - DosPath: UNICODE_STRING32; - end; - RTL_DRIVE_LETTER_CURDIR32 = _RTL_DRIVE_LETTER_CURDIR32; - - _CURDIR32 = record - DosPath: UNICODE_STRING32; - Handle: THANDLE32; - end; - CURDIR32 = _CURDIR32; - - _RTL_USER_PROCESS_PARAMETERS32 = record - MaximumLength: ULONG; - Length: ULONG; - Flags: ULONG; - DebugFlags: ULONG; - ConsoleHandle: THANDLE32; - ConsoleFlags: ULONG; - StandardInput: THANDLE32; - StandardOutput: THANDLE32; - StandardError: THANDLE32; - CurrentDirectory: CURDIR32; - DllPath: UNICODE_STRING32; - ImagePathName: UNICODE_STRING32; - CommandLine: UNICODE_STRING32; - Environment: Pointer32; - StartingX: ULONG; - StartingY: ULONG; - CountX: ULONG; - CountY: ULONG; - CountCharsX: ULONG; - CountCharsY: ULONG; - FillAttribute: ULONG; - WindowFlags: ULONG; - ShowWindowFlags: ULONG; - WindowTitle: UNICODE_STRING32; - DesktopInfo: UNICODE_STRING32; - ShellInfo: UNICODE_STRING32; - RuntimeData: UNICODE_STRING32; - CurrentDirectories: array[0..31] of RTL_DRIVE_LETTER_CURDIR32; - end; - RTL_USER_PROCESS_PARAMETERS32 = _RTL_USER_PROCESS_PARAMETERS32; - PRTL_USER_PROCESS_PARAMETERS32 = ^RTL_USER_PROCESS_PARAMETERS32; - - _PEB32 = record - Reserved1 : array [0..1] of Byte; - BeingDebugged : Byte; - Reserved2 : Byte; - Reserved3 : array [0..1] of Pointer32; - Ldr : Pointer32; - ProcessParameters : Pointer32;//PRTL_USER_PROCESS_PARAMETERS; - Reserved4 : array [0..102] of Byte; - Reserved5 : array [0..51] of Pointer32; - PostProcessInitRoutine : Pointer32; - Reserved6 : array [0..127] of byte; - Reserved7 : Pointer32; - SessionId : ULONG; - end; - PEB32=_PEB32; -{$ENDIF} - -type - TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall; -var - _IsWow64Process : TIsWow64Process; - -function NtQueryInformationProcess(ProcessHandle : THandle; ProcessInformationClass : DWORD; ProcessInformation : Pointer; ProcessInformationLength : ULONG; ReturnLength : PULONG ): LongInt; stdcall; external 'ntdll.dll'; -function NtQueryVirtualMemory(ProcessHandle : THandle; BaseAddress : Pointer; MemoryInformationClass : DWORD; MemoryInformation : Pointer; MemoryInformationLength : ULONG; ReturnLength : PULONG ): LongInt; stdcall; external 'ntdll.dll'; -function ProcessIsX64(hProcess: DWORD): Boolean; -procedure Init_IsWow64Process; - -implementation - -procedure Init_IsWow64Process; -var - hKernel32 : Integer; -begin - hKernel32 := LoadLibrary(kernel32); - if (hKernel32 = 0) then RaiseLastOSError; - try - _IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process'); - finally - FreeLibrary(hKernel32); - end; -end; - -function ProcessIsX64(hProcess: DWORD): Boolean; -var - IsWow64: BOOL; -begin - Result := False; - {$IFNDEF CPUX64} - Exit; - {$ENDIF} - if not Assigned(_IsWow64Process) then - Init_IsWow64Process; - - if Assigned(_IsWow64Process) then - begin - if (_IsWow64Process(hProcess, IsWow64)) then - Result := not IsWow64 - else - RaiseLastOSError; - end; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc deleted file mode 100644 index c31a08c04a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc +++ /dev/null @@ -1,1430 +0,0 @@ -{$IFNDEF JEDI_INC} -{$DEFINE JEDI_INC} - -{**************************************************************************************************} -{ } -{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");} -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } -{ ANY KIND, either express or implied. See the License for the specific language governing rights } -{ and limitations under the License. } -{ } -{ The Original Code is: jedi.inc. } -{ The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org } -{ } -{ Alternatively, the contents of this file may be used under the terms of the GNU Lesser General } -{ Public License (the "LGPL License"), in which case the provisions of the LGPL License are } -{ applicable instead of those above. If you wish to allow use of your version of this file only } -{ under the terms of the LGPL License and not to allow others to use your version of this file } -{ under the MPL, indicate your decision by deleting the provisions above and replace them with } -{ the notice and other provisions required by the LGPL License. If you do not delete the } -{ provisions above, a recipient may use your version of this file under either the MPL or the } -{ LGPL License. } -{ } -{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } -{ } -{**************************************************************************************************} -{ } -{ This file defines various generic compiler directives used in different libraries, e.g. in the } -{ JEDI Code Library (JCL) and JEDI Visual Component Library Library (JVCL). The directives in } -{ this file are of generic nature and consist mostly of mappings from the VERXXX directives } -{ defined by Delphi, C++Builder and FPC to friendly names such as DELPHI5 and } -{ SUPPORTS_WIDESTRING. These friendly names are subsequently used in the libraries to test for } -{ compiler versions and/or whether the compiler supports certain features (such as widestrings or } -{ 64 bit integers. The libraries provide an additional, library specific, include file. For the } -{ JCL e.g. this is jcl.inc. These files should be included in source files instead of this file } -{ (which is pulled in automatically). } -{ } -{**************************************************************************************************} -{ } -{ Last modified: $Date:: 2012-09-04 16:01:38 +0200 (út, 04 9 2012) $ } -{ Revision: $Rev:: 161 $ } -{ Author: $Author:: outchy $ } -{ } -{**************************************************************************************************} - -(* - -- Development environment directives - - This file defines two directives to indicate which development environment the - library is being compiled with. Currently this can either be Delphi, Kylix, - C++Builder or FPC. - - Directive Description - ------------------------------------------------------------------------------ - DELPHI Defined if compiled with Delphi - KYLIX Defined if compiled with Kylix - DELPHICOMPILER Defined if compiled with Delphi or Kylix/Delphi - BCB Defined if compiled with C++Builder - CPPBUILDER Defined if compiled with C++Builder (alias for BCB) - BCBCOMPILER Defined if compiled with C++Builder or Kylix/C++ - DELPHILANGUAGE Defined if compiled with Delphi, Kylix or C++Builder - BORLAND Defined if compiled with Delphi, Kylix or C++Builder - FPC Defined if compiled with FPC - -- Platform Directives - - Platform directives are not all explicitly defined in this file, some are - defined by the compiler itself. They are listed here only for completeness. - - Directive Description - ------------------------------------------------------------------------------ - WIN32 Defined when target platform is 32 bit Windows - WIN64 Defined when target platform is 64 bit Windows - MSWINDOWS Defined when target platform is 32 bit Windows - LINUX Defined when target platform is Linux - UNIX Defined when target platform is Unix-like (including Linux) - CLR Defined when target platform is .NET - -- Architecture directives. These are auto-defined by FPC - CPU32 and CPU64 are mostly for generic pointer size dependant differences rather - than for a specific architecture. - - CPU386 Defined when target platform is native x86 (win32) - CPUx86_64 Defined when target platform is native x86_64 (win64) - CPU32 Defined when target is 32-bit - CPU64 Defined when target is 64-bit - CPUASM Defined when target assembler is available - -- Visual library Directives - - The following directives indicate for a visual library. In a Delphi/BCB - (Win32) application you need to define the VisualCLX symbol in the project - options, if you want to use the VisualCLX library. Alternatively you can use - the IDE expert, which is distributed with the JCL to do this automatically. - - Directive Description - ------------------------------------------------------------------------------ - VCL Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined - VisualCLX Defined for Kylix; needs to be defined for Delphi/BCB to - use JCL with VisualCLX applications. - - -- Other cross-platform related defines - - These symbols are intended to help in writing portable code. - - Directive Description - ------------------------------------------------------------------------------ - PUREPASCAL Code is machine-independent (as opposed to assembler code) - Win32API Code is specific for the Win32 API; - use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs - - -- Delphi Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Delphi (ie DELPHI is defined). - - Directive Description - ------------------------------------------------------------------------------ - DELPHI1 Defined when compiling with Delphi 1 (Codename WASABI/MANGO) - DELPHI2 Defined when compiling with Delphi 2 (Codename POLARIS) - DELPHI3 Defined when compiling with Delphi 3 (Codename IVORY) - DELPHI4 Defined when compiling with Delphi 4 (Codename ALLEGRO) - DELPHI5 Defined when compiling with Delphi 5 (Codename ARGUS) - DELPHI6 Defined when compiling with Delphi 6 (Codename ILLIAD) - DELPHI7 Defined when compiling with Delphi 7 (Codename AURORA) - DELPHI8 Defined when compiling with Delphi 8 (Codename OCTANE) - DELPHI2005 Defined when compiling with Delphi 2005 (Codename DIAMONDBACK) - DELPHI9 Alias for DELPHI2005 - DELPHI10 Defined when compiling with Delphi 2006 (Codename DEXTER) - DELPHI2006 Alias for DELPHI10 - DELPHI11 Defined when compiling with Delphi 2007 for Win32 (Codename SPACELY) - DELPHI2007 Alias for DELPHI11 - DELPHI12 Defined when compiling with Delphi 2009 for Win32 (Codename TIBURON) - DELPHI2009 Alias for DELPHI12 - DELPHI14 Defined when compiling with Delphi 2010 for Win32 (Codename WEAVER) - DELPHI2010 Alias for DELPHI14 - DELPHI15 Defined when compiling with Delphi XE for Win32 (Codename FULCRUM) - DELPHIXE Alias for DELPHI15 - DELPHI16 Defined when compiling with Delphi XE2 for Win32 (Codename PULSAR) - DELPHIXE2 Alias for DELPHI16 - DELPHI17 Defined when compiling with Delphi XE3 for Win32 (Codename WATERDRAGON) - DELPHIXE3 Alias for DELPHI17 - DELPHI1_UP Defined when compiling with Delphi 1 or higher - DELPHI2_UP Defined when compiling with Delphi 2 or higher - DELPHI3_UP Defined when compiling with Delphi 3 or higher - DELPHI4_UP Defined when compiling with Delphi 4 or higher - DELPHI5_UP Defined when compiling with Delphi 5 or higher - DELPHI6_UP Defined when compiling with Delphi 6 or higher - DELPHI7_UP Defined when compiling with Delphi 7 or higher - DELPHI8_UP Defined when compiling with Delphi 8 or higher - DELPHI2005_UP Defined when compiling with Delphi 2005 or higher - DELPHI9_UP Alias for DELPHI2005_UP - DELPHI10_UP Defined when compiling with Delphi 2006 or higher - DELPHI2006_UP Alias for DELPHI10_UP - DELPHI11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHI2007_UP Alias for DELPHI11_UP - DELPHI12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHI2009_UP Alias for DELPHI12_UP - DELPHI14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHI2010_UP Alias for DELPHI14_UP - DELPHI15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHIXE_UP Alias for DELPHI15_UP - DELPHI16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHIXE2_UP Alias for DELPHI16_UP - DELPHI17_UP Defined when compiling with Delphi XE3 for Win32 or higher - DELPHIXE3_UP Alias for DELPHI17_UP - - -- Kylix Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Kylix (ie KYLIX is defined). - - Directive Description - ------------------------------------------------------------------------------ - KYLIX1 Defined when compiling with Kylix 1 - KYLIX2 Defined when compiling with Kylix 2 - KYLIX3 Defined when compiling with Kylix 3 (Codename CORTEZ) - KYLIX1_UP Defined when compiling with Kylix 1 or higher - KYLIX2_UP Defined when compiling with Kylix 2 or higher - KYLIX3_UP Defined when compiling with Kylix 3 or higher - - -- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode) - - Directive Description - ------------------------------------------------------------------------------ - DELPHICOMPILER1 Defined when compiling with Delphi 1 - DELPHICOMPILER2 Defined when compiling with Delphi 2 - DELPHICOMPILER3 Defined when compiling with Delphi 3 - DELPHICOMPILER4 Defined when compiling with Delphi 4 - DELPHICOMPILER5 Defined when compiling with Delphi 5 - DELPHICOMPILER6 Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 - DELPHICOMPILER7 Defined when compiling with Delphi 7 - DELPHICOMPILER8 Defined when compiling with Delphi 8 - DELPHICOMPILER9 Defined when compiling with Delphi 2005 - DELPHICOMPILER10 Defined when compiling with Delphi Personality of BDS 4.0 - DELPHICOMPILER11 Defined when compiling with Delphi 2007 for Win32 - DELPHICOMPILER12 Defined when compiling with Delphi Personality of BDS 6.0 - DELPHICOMPILER14 Defined when compiling with Delphi Personality of BDS 7.0 - DELPHICOMPILER15 Defined when compiling with Delphi Personality of BDS 8.0 - DELPHICOMPILER16 Defined when compiling with Delphi Personality of BDS 9.0 - DELPHICOMPILER17 Defined when compiling with Delphi Personality of BDS 10.0 - DELPHICOMPILER1_UP Defined when compiling with Delphi 1 or higher - DELPHICOMPILER2_UP Defined when compiling with Delphi 2 or higher - DELPHICOMPILER3_UP Defined when compiling with Delphi 3 or higher - DELPHICOMPILER4_UP Defined when compiling with Delphi 4 or higher - DELPHICOMPILER5_UP Defined when compiling with Delphi 5 or higher - DELPHICOMPILER6_UP Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher - DELPHICOMPILER7_UP Defined when compiling with Delphi 7 or higher - DELPHICOMPILER8_UP Defined when compiling with Delphi 8 or higher - DELPHICOMPILER9_UP Defined when compiling with Delphi 2005 - DELPHICOMPILER10_UP Defined when compiling with Delphi 2006 or higher - DELPHICOMPILER11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHICOMPILER12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHICOMPILER14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHICOMPILER15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHICOMPILER16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHICOMPILER17_UP Defined when compiling with Delphi XE3 for Win32 or higher - - -- C++Builder Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is C++Builder (ie BCB is defined). - - Directive Description - ------------------------------------------------------------------------------ - BCB1 Defined when compiling with C++Builder 1 - BCB3 Defined when compiling with C++Builder 3 - BCB4 Defined when compiling with C++Builder 4 - BCB5 Defined when compiling with C++Builder 5 (Codename RAMPAGE) - BCB6 Defined when compiling with C++Builder 6 (Codename RIPTIDE) - BCB10 Defined when compiling with C++Builder Personality of BDS 4.0 (also known as C++Builder 2006) (Codename DEXTER) - BCB11 Defined when compiling with C++Builder Personality of RAD Studio 2007 (also known as C++Builder 2007) (Codename COGSWELL) - BCB12 Defined when compiling with C++Builder Personality of RAD Studio 2009 (also known as C++Builder 2009) (Codename TIBURON) - BCB14 Defined when compiling with C++Builder Personality of RAD Studio 2010 (also known as C++Builder 2010) (Codename WEAVER) - BCB15 Defined when compiling with C++Builder Personality of RAD Studio XE (also known as C++Builder XE) (Codename FULCRUM) - BCB16 Defined when compiling with C++Builder Personality of RAD Studio XE2 (also known as C++Builder XE2) (Codename PULSAR) - BCB17 Defined when compiling with C++Builder Personality of RAD Studio XE3 (also known as C++Builder XE3) (Codename WATERDRAGON) - BCB1_UP Defined when compiling with C++Builder 1 or higher - BCB3_UP Defined when compiling with C++Builder 3 or higher - BCB4_UP Defined when compiling with C++Builder 4 or higher - BCB5_UP Defined when compiling with C++Builder 5 or higher - BCB6_UP Defined when compiling with C++Builder 6 or higher - BCB10_UP Defined when compiling with C++Builder Personality of BDS 4.0 or higher - BCB11_UP Defined when compiling with C++Builder Personality of RAD Studio 2007 or higher - BCB12_UP Defined when compiling with C++Builder Personality of RAD Studio 2009 or higher - BCB14_UP Defined when compiling with C++Builder Personality of RAD Studio 2010 or higher - BCB15_UP Defined when compiling with C++Builder Personality of RAD Studio XE or higher - BCB16_UP Defined when compiling with C++Builder Personality of RAD Studio XE2 or higher - BCB17_UP Defined when compiling with C++Builder Personality of RAD Studio XE3 or higher - - -- RAD Studio / Borland Developer Studio Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated IDE. These directives are only defined if - the IDE is Borland Developer Studio Version 2 or above. - - Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006, - but those provide only different labels for identical content. - - Directive Description - ------------------------------------------------------------------------------ - BDS Defined when compiling with BDS version of dcc32.exe (Codename SIDEWINDER) - BDS2 Defined when compiling with BDS 2.0 (Delphi 8) (Codename OCTANE) - BDS3 Defined when compiling with BDS 3.0 (Delphi 2005) (Codename DIAMONDBACK) - BDS4 Defined when compiling with BDS 4.0 (Borland Developer Studio 2006) (Codename DEXTER) - BDS5 Defined when compiling with BDS 5.0 (CodeGear RAD Studio 2007) (Codename HIGHLANDER) - BDS6 Defined when compiling with BDS 6.0 (CodeGear RAD Studio 2009) (Codename TIBURON) - BDS7 Defined when compiling with BDS 7.0 (Embarcadero RAD Studio 2010) (Codename WEAVER) - BDS8 Defined when compiling with BDS 8.0 (Embarcadero RAD Studio XE) (Codename FULCRUM) - BDS9 Defined when compiling with BDS 9.0 (Embarcadero RAD Studio XE2) (Codename PULSAR) - BDS10 Defined when compiling with BDS 10.0 (Embarcadero RAD Studio XE3) (Codename WATERDRAGON) - BDS2_UP Defined when compiling with BDS 2.0 or higher - BDS3_UP Defined when compiling with BDS 3.0 or higher - BDS4_UP Defined when compiling with BDS 4.0 or higher - BDS5_UP Defined when compiling with BDS 5.0 or higher - BDS6_UP Defined when compiling with BDS 6.0 or higher - BDS7_UP Defined when compiling with BDS 7.0 or higher - BDS8_UP Defined when compiling with BDS 8.0 or higher - BDS9_UP Defined when compiling with BDS 9.0 or higher - BDS10_UP Defined when compiling with BDS 10.0 or higher - -- Compiler Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X - directives, these directives are indepedent of the development environment. - That is, they are defined regardless of whether compilation takes place using - Delphi or C++Builder. - - Directive Description - ------------------------------------------------------------------------------ - COMPILER1 Defined when compiling with Delphi 1 - COMPILER2 Defined when compiling with Delphi 2 or C++Builder 1 - COMPILER3 Defined when compiling with Delphi 3 - COMPILER35 Defined when compiling with C++Builder 3 - COMPILER4 Defined when compiling with Delphi 4 or C++Builder 4 - COMPILER5 Defined when compiling with Delphi 5 or C++Builder 5 - COMPILER6 Defined when compiling with Delphi 6 or C++Builder 6 - COMPILER7 Defined when compiling with Delphi 7 - COMPILER8 Defined when compiling with Delphi 8 - COMPILER9 Defined when compiling with Delphi 9 - COMPILER10 Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 - COMPILER11 Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 - COMPILER12 Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 - COMPILER14 Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 - COMPILER15 Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 - COMPILER16 Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 - COMPILER17 Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 - COMPILER1_UP Defined when compiling with Delphi 1 or higher - COMPILER2_UP Defined when compiling with Delphi 2 or C++Builder 1 or higher - COMPILER3_UP Defined when compiling with Delphi 3 or higher - COMPILER35_UP Defined when compiling with C++Builder 3 or higher - COMPILER4_UP Defined when compiling with Delphi 4 or C++Builder 4 or higher - COMPILER5_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - COMPILER6_UP Defined when compiling with Delphi 6 or C++Builder 6 or higher - COMPILER7_UP Defined when compiling with Delphi 7 - COMPILER8_UP Defined when compiling with Delphi 8 - COMPILER9_UP Defined when compiling with Delphi Personalities of BDS 3.0 - COMPILER10_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - COMPILER11_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - COMPILER12_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - COMPILER14_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - COMPILER15_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - COMPILER16_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - COMPILER17_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- RTL Versions - - Use e.g. following to determine the exact RTL version since version 14.0: - {$IFDEF CONDITIONALEXPRESSIONS} - {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)} - // code for Delphi 6.02 or higher, Kylix 2 or higher, C++Builder 6 or higher - ... - {$IFEND} - {$ENDIF} - - Directive Description - ------------------------------------------------------------------------------ - RTL80_UP Defined when compiling with Delphi 1 or higher - RTL90_UP Defined when compiling with Delphi 2 or higher - RTL93_UP Defined when compiling with C++Builder 1 or higher - RTL100_UP Defined when compiling with Delphi 3 or higher - RTL110_UP Defined when compiling with C++Builder 3 or higher - RTL120_UP Defined when compiling with Delphi 4 or higher - RTL125_UP Defined when compiling with C++Builder 4 or higher - RTL130_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - RTL140_UP Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++Builder 6 or higher - RTL150_UP Defined when compiling with Delphi 7 or higher - RTL160_UP Defined when compiling with Delphi 8 or higher - RTL170_UP Defined when compiling with Delphi Personalities of BDS 3.0 or higher - RTL180_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - RTL185_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - RTL190_UP Defined when compiling with Delphi.NET of BDS 5.0 or higher - RTL200_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - RTL210_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - RTL220_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - RTL230_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - RTL240_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- CLR Versions - - Directive Description - ------------------------------------------------------------------------------ - CLR Defined when compiling for .NET - CLR10 Defined when compiling for .NET 1.0 (may be overriden by FORCE_CLR10) - CLR10_UP Defined when compiling for .NET 1.0 or higher - CLR11 Defined when compiling for .NET 1.1 (may be overriden by FORCE_CLR11) - CLR11_UP Defined when compiling for .NET 1.1 or higher - CLR20 Defined when compiling for .NET 2.0 (may be overriden by FORCE_CLR20) - CLR20_UP Defined when compiling for .NET 2.0 or higher - - -- Feature Directives - - The features directives are used to test if the compiler supports specific - features, such as method overloading, and adjust the sources accordingly. Use - of these directives is preferred over the use of the DELPHI and COMPILER - directives. - - Directive Description - ------------------------------------------------------------------------------ - SUPPORTS_CONSTPARAMS Compiler supports const parameters (D1+) - SUPPORTS_SINGLE Compiler supports the Single type (D1+) - SUPPORTS_DOUBLE Compiler supports the Double type (D1+) - SUPPORTS_EXTENDED Compiler supports the Extended type (D1+) - SUPPORTS_CURRENCY Compiler supports the Currency type (D2+) - SUPPORTS_THREADVAR Compiler supports threadvar declarations (D2+) - SUPPORTS_OUTPARAMS Compiler supports out parameters (D3+) - SUPPORTS_VARIANT Compiler supports variant (D2+) - SUPPORTS_WIDECHAR Compiler supports the WideChar type (D2+) - SUPPORTS_WIDESTRING Compiler supports the WideString type (D3+/BCB3+) - SUPPORTS_INTERFACE Compiler supports interfaces (D3+/BCB3+) - SUPPORTS_DISPINTERFACE Compiler supports dispatch interfaces (D3+/BCB3+) - SUPPORTS_DISPID Compiler supports dispatch ids (D3+/BCB3+/FPC) - SUPPORTS_EXTSYM Compiler supports the $EXTERNALSYM directive (D4+/BCB3+) - SUPPORTS_NODEFINE Compiler supports the $NODEFINE directive (D4+/BCB3+) - SUPPORTS_LONGWORD Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+) - SUPPORTS_INT64 Compiler supports the Int64 type (D4+/BCB4+) - SUPPORTS_UINT64 Compiler supports the UInt64 type (D XE+ ?) - SUPPORTS_DYNAMICARRAYS Compiler supports dynamic arrays (D4+/BCB4+) - SUPPORTS_DEFAULTPARAMS Compiler supports default parameters (D4+/BCB4+) - SUPPORTS_OVERLOAD Compiler supports overloading (D4+/BCB4+) - SUPPORTS_IMPLEMENTS Compiler supports implements (D4+/BCB4+) - SUPPORTS_DEPRECATED Compiler supports the deprecated directive (D6+/BCB6+) - SUPPORTS_PLATFORM Compiler supports the platform directive (D6+/BCB6+) - SUPPORTS_LIBRARY Compiler supports the library directive (D6+/BCB6+/FPC) - SUPPORTS_LOCAL Compiler supports the local directive (D6+/BCB6+) - SUPPORTS_SETPEFLAGS Compiler supports the SetPEFlags directive (D6+/BCB6+) - SUPPORTS_EXPERIMENTAL_WARNINGS Compiler supports the WARN SYMBOL_EXPERIMENTAL and WARN UNIT_EXPERIMENTAL directives (D6+/BCB6+) - SUPPORTS_INLINE Compiler supports the inline directive (D9+/FPC) - SUPPORTS_FOR_IN Compiler supports for in loops (D9+) - SUPPORTS_NESTED_CONSTANTS Compiler supports nested constants (D9+) - SUPPORTS_NESTED_TYPES Compiler supports nested types (D9+) - SUPPORTS_REGION Compiler supports the REGION and ENDREGION directives (D9+) - SUPPORTS_ENHANCED_RECORDS Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+) - SUPPORTS_CLASS_FIELDS Compiler supports class fields (D9.NET, D10+) - SUPPORTS_CLASS_HELPERS Compiler supports class helpers (D9.NET, D10+) - SUPPORTS_CLASS_OPERATORS Compiler supports class operators (D9.NET, D10+) - SUPPORTS_CLASS_CTORDTORS Compiler supports class contructors/destructors (D14+) - SUPPORTS_STRICT Compiler supports strict keyword (D9.NET, D10+) - SUPPORTS_STATIC Compiler supports static keyword (D9.NET, D10+) - SUPPORTS_FINAL Compiler supports final keyword (D9.NET, D10+) - SUPPORTS_METHODINFO Compiler supports the METHODINFO directives (D10+) - SUPPORTS_GENERICS Compiler supports generic implementations (D11.NET, D12+) - SUPPORTS_DEPRECATED_DETAILS Compiler supports additional text for the deprecated directive (D11.NET, D12+) - ACCEPT_DEPRECATED Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC) - ACCEPT_PLATFORM Compiler supports or ignores the platform directive (D6+/BCB6+/FPC) - ACCEPT_LIBRARY Compiler supports or ignores the library directive (D6+/BCB6+) - SUPPORTS_CUSTOMVARIANTS Compiler supports custom variants (D6+/BCB6+) - SUPPORTS_VARARGS Compiler supports varargs (D6+/BCB6+) - SUPPORTS_ENUMVALUE Compiler supports assigning ordinalities to values of enums (D6+/BCB6+) - SUPPORTS_DEPRECATED_WARNINGS Compiler supports deprecated warnings (D6+/BCB6+) - SUPPORTS_LIBRARY_WARNINGS Compiler supports library warnings (D6+/BCB6+) - SUPPORTS_PLATFORM_WARNINGS Compiler supports platform warnings (D6+/BCB6+) - SUPPORTS_UNSAFE_WARNINGS Compiler supports unsafe warnings (D7) - SUPPORTS_WEAKPACKAGEUNIT Compiler supports the WEAKPACKAGEUNIT directive - SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive - SUPPORTS_PACKAGES Compiler supports Packages - HAS_UNIT_LIBC Unit Libc exists (Kylix, FPC on Linux/x86) - HAS_UNIT_RTLCONSTS Unit RTLConsts exists (D6+/BCB6+/FPC) - HAS_UNIT_TYPES Unit Types exists (D6+/BCB6+/FPC) - HAS_UNIT_VARIANTS Unit Variants exists (D6+/BCB6+/FPC) - HAS_UNIT_STRUTILS Unit StrUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_DATEUTILS Unit DateUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_CONTNRS Unit contnrs exists (D6+/BCB6+/FPC) - HAS_UNIT_HTTPPROD Unit HTTPProd exists (D9+) - HAS_UNIT_GIFIMG Unit GifImg exists (D11+) - HAS_UNIT_ANSISTRINGS Unit AnsiStrings exists (D12+) - HAS_UNIT_PNGIMAGE Unit PngImage exists (D12+) - HAS_UNIT_CHARACTER Unit Character exists (D12+) - XPLATFORM_RTL The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC) - SUPPORTS_UNICODE string type is aliased to an unicode string (WideString or UnicodeString) (DX.NET, D12+) - SUPPORTS_UNICODE_STRING Compiler supports UnicodeString (D12+) - SUPPORTS_INT_ALIASES Types Int8, Int16, Int32, UInt8, UInt16 and UInt32 are defined in the unit System (D12+) - HAS_UNIT_RTTI Unit RTTI is available (D14+) - SUPPORTS_CAST_INTERFACE_TO_OBJ The compiler supports casts from interfaces to objects (D14+) - SUPPORTS_DELAYED_LOADING The compiler generates stubs for delaying imported function loads (D14+) - HAS_UNIT_REGULAREXPRESSIONSAPI Unit RegularExpressionsAPI is available (D15+) - HAS_UNIT_SYSTEM_UITYPES Unit System.UITypes is available (D16+) - HAS_UNIT_SYSTEM_ACTIONS Unit System.Actions is available (D17+) - - -- Compiler Settings - - The compiler settings directives indicate whether a specific compiler setting - is in effect. This facilitates changing compiler settings locally in a more - compact and readible manner. - - Directive Description - ------------------------------------------------------------------------------ - ALIGN_ON Compiling in the A+ state (no alignment) - BOOLEVAL_ON Compiling in the B+ state (complete boolean evaluation) - ASSERTIONS_ON Compiling in the C+ state (assertions on) - DEBUGINFO_ON Compiling in the D+ state (debug info generation on) - IMPORTEDDATA_ON Compiling in the G+ state (creation of imported data references) - LONGSTRINGS_ON Compiling in the H+ state (string defined as AnsiString) - IOCHECKS_ON Compiling in the I+ state (I/O checking enabled) - WRITEABLECONST_ON Compiling in the J+ state (typed constants can be modified) - LOCALSYMBOLS Compiling in the L+ state (local symbol generation) - LOCALSYMBOLS_ON Alias of LOCALSYMBOLS - TYPEINFO_ON Compiling in the M+ state (RTTI generation on) - OPTIMIZATION_ON Compiling in the O+ state (code optimization on) - OPENSTRINGS_ON Compiling in the P+ state (variable string parameters are openstrings) - OVERFLOWCHECKS_ON Compiling in the Q+ state (overflow checing on) - RANGECHECKS_ON Compiling in the R+ state (range checking on) - TYPEDADDRESS_ON Compiling in the T+ state (pointers obtained using the @ operator are typed) - SAFEDIVIDE_ON Compiling in the U+ state (save FDIV instruction through RTL emulation) - VARSTRINGCHECKS_ON Compiling in the V+ state (type checking of shortstrings) - STACKFRAMES_ON Compiling in the W+ state (generation of stack frames) - EXTENDEDSYNTAX_ON Compiling in the X+ state (Delphi extended syntax enabled) -*) - -{$DEFINE BORLAND} - -{ Set FreePascal to Delphi mode } -{$IFDEF FPC} - {$MODE DELPHI} - {$ASMMODE Intel} - {$UNDEF BORLAND} - {$DEFINE CPUASM} - // FPC defines CPU32, CPU64 and Unix automatically -{$ENDIF} - -{$IFDEF BORLAND} - {$IFDEF LINUX} - {$DEFINE KYLIX} - {$ENDIF LINUX} - {$IFNDEF CLR} - {$IFNDEF CPUX86} - {$IFNDEF CPUX64} - {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default - {$DEFINE CPU32} // Assume Borland compilers are 32-bit (rather than 64-bit) - {$DEFINE CPUASM} - {$ELSE ~CPUX64} - {$DEFINE CPU64} - {$DEFINE CPUASM} - {$DEFINE DELPHI64_TEMPORARY} - {$ENDIF ~CPUX64} - {$ELSE ~CPUX86} - {$DEFINE CPU386} - {$DEFINE CPU32} - {$DEFINE CPUASM} - {$ENDIF ~CPUX86} - {$ENDIF ~CLR} -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ VERXXX to COMPILERX, DELPHIX and BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BORLAND} - {$IFDEF KYLIX} - {$I kylix.inc} // FPC incompatible stuff - {$ELSE ~KYLIX} - - {$DEFINE UNKNOWN_COMPILER_VERSION} - - {$IFDEF VER80} - {$DEFINE COMPILER1} - {$DEFINE DELPHI1} - {$DEFINE DELPHICOMPILER1} - {$DEFINE RTL80_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER90} - {$DEFINE COMPILER2} - {$DEFINE DELPHI2} - {$DEFINE DELPHICOMPILER2} - {$DEFINE RTL90_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER93} - {$DEFINE COMPILER2} - {$DEFINE BCB1} - {$DEFINE BCB} - {$DEFINE RTL93_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER100} - {$DEFINE COMPILER3} - {$DEFINE DELPHI3} - {$DEFINE DELPHICOMPILER3} - {$DEFINE RTL100_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER110} - {$DEFINE COMPILER35} - {$DEFINE BCB3} - {$DEFINE BCB} - {$DEFINE RTL110_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER120} - {$DEFINE COMPILER4} - {$DEFINE DELPHI4} - {$DEFINE DELPHICOMPILER4} - {$DEFINE RTL120_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER125} - {$DEFINE COMPILER4} - {$DEFINE BCB4} - {$DEFINE BCB} - {$DEFINE RTL125_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER130} - {$DEFINE COMPILER5} - {$IFDEF BCB} - {$DEFINE BCB5} - {$ELSE} - {$DEFINE DELPHI5} - {$DEFINE DELPHICOMPILER5} - {$ENDIF} - {$DEFINE RTL130_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER140} - {$DEFINE COMPILER6} - {$IFDEF BCB} - {$DEFINE BCB6} - {$ELSE} - {$DEFINE DELPHI6} - {$DEFINE DELPHICOMPILER6} - {$ENDIF} - {$DEFINE RTL140_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER150} - {$DEFINE COMPILER7} - {$DEFINE DELPHI7} - {$DEFINE DELPHICOMPILER7} - {$DEFINE RTL150_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER160} - {$DEFINE BDS2} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR10} - {$ENDIF CLR} - {$DEFINE COMPILER8} - {$DEFINE DELPHI8} - {$DEFINE DELPHICOMPILER8} - {$DEFINE RTL160_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER170} - {$DEFINE BDS3} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$DEFINE COMPILER9} - {$DEFINE DELPHI9} - {$DEFINE DELPHI2005} // synonym to DELPHI9 - {$DEFINE DELPHICOMPILER9} - {$DEFINE RTL170_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER180} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$IFDEF VER185} - {$DEFINE BDS5} - {$DEFINE COMPILER11} - {$IFDEF BCB} - {$DEFINE BCB11} - {$ELSE} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$ENDIF} - {$DEFINE RTL185_UP} - {$ELSE ~~VER185} - {$DEFINE BDS4} - {$DEFINE COMPILER10} - {$IFDEF BCB} - {$DEFINE BCB10} - {$ELSE} - {$DEFINE DELPHI10} - {$DEFINE DELPHI2006} // synonym to DELPHI10 - {$DEFINE DELPHICOMPILER10} - {$ENDIF} - {$DEFINE RTL180_UP} - {$ENDIF ~VER185} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER190} // Delphi 2007 for .NET - {$DEFINE BDS} - {$DEFINE BDS5} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER11} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$DEFINE RTL190_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER190} - - {$IFDEF VER200} // RAD Studio 2009 - {$DEFINE BDS} - {$DEFINE BDS6} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER12} - {$IFDEF BCB} - {$DEFINE BCB12} - {$ELSE} - {$DEFINE DELPHI12} - {$DEFINE DELPHI2009} // synonym to DELPHI12 - {$DEFINE DELPHICOMPILER12} - {$ENDIF BCB} - {$IFDEF CLR} - {$DEFINE RTL190_UP} - {$ELSE} - {$DEFINE RTL200_UP} - {$ENDIF} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER200} - - {$IFDEF VER210} // RAD Studio 2010 - {$DEFINE BDS} - {$DEFINE BDS7} - {$DEFINE COMPILER14} - {$IFDEF BCB} - {$DEFINE BCB14} - {$ELSE} - {$DEFINE DELPHI14} - {$DEFINE DELPHI2010} // synonym to DELPHI14 - {$DEFINE DELPHICOMPILER14} - {$ENDIF BCB} - {$DEFINE RTL210_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER210} - - {$IFDEF VER220} // RAD Studio XE - {$DEFINE BDS} - {$DEFINE BDS8} - {$DEFINE COMPILER15} - {$IFDEF BCB} - {$DEFINE BCB15} - {$ELSE} - {$DEFINE DELPHI15} - {$DEFINE DELPHIXE} // synonym to DELPHI15 - {$DEFINE DELPHICOMPILER15} - {$ENDIF BCB} - {$DEFINE RTL220_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER220} - - {$IFDEF VER230} // RAD Studio XE2 - {$DEFINE BDS} - {$DEFINE BDS9} - {$DEFINE COMPILER16} - {$IFDEF BCB} - {$DEFINE BCB16} - {$ELSE} - {$DEFINE DELPHI16} - {$DEFINE DELPHIXE2} // synonym to DELPHI16 - {$DEFINE DELPHICOMPILER16} - {$ENDIF BCB} - {$DEFINE RTL230_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER230} - - {$IFDEF VER240} // RAD Studio XE3 - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER240} - - {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version (always use latest version) - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$ENDIF ~KYLIX} - - {$IFDEF BCB} - {$DEFINE CPPBUILDER} - {$DEFINE BCBCOMPILER} - {$ELSE ~BCB} - {$DEFINE DELPHI} - {$DEFINE DELPHICOMPILER} - {$ENDIF ~BCB} - -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17} {$DEFINE DELPHI17_UP} {$ENDIF} -{$IFDEF DELPHI16} {$DEFINE DELPHI16_UP} {$ENDIF} -{$IFDEF DELPHI15} {$DEFINE DELPHI15_UP} {$ENDIF} -{$IFDEF DELPHI14} {$DEFINE DELPHI14_UP} {$ENDIF} -{$IFDEF DELPHI12} {$DEFINE DELPHI12_UP} {$ENDIF} -{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF} -{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF} -{$IFDEF DELPHI9} {$DEFINE DELPHI9_UP} {$ENDIF} -{$IFDEF DELPHI8} {$DEFINE DELPHI8_UP} {$ENDIF} -{$IFDEF DELPHI7} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI6} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI5} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI4} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI3} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI2} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI1} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17_UP} - {$DEFINE DELPHIXE3_UP} // synonym to DELPHI17_UP - {$DEFINE DELPHI16_UP} -{$ENDIF} - -{$IFDEF DELPHI16_UP} - {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP - {$DEFINE DELPHI15_UP} -{$ENDIF} - -{$IFDEF DELPHI15_UP} - {$DEFINE DELPHIXE_UP} // synonym to DELPHI15_UP - {$DEFINE DELPHI14_UP} -{$ENDIF} - -{$IFDEF DELPHI14_UP} - {$DEFINE DELPHI2010_UP} // synonym to DELPHI14_UP - {$DEFINE DELPHI12_UP} -{$ENDIF} - -{$IFDEF DELPHI12_UP} - {$DEFINE DELPHI2009_UP} // synonym to DELPHI12_UP - {$DEFINE DELPHI11_UP} -{$ENDIF} - -{$IFDEF DELPHI11_UP} - {$DEFINE DELPHI2007_UP} // synonym to DELPHI11_UP - {$DEFINE DELPHI10_UP} -{$ENDIF} - -{$IFDEF DELPHI10_UP} - {$DEFINE DELPHI2006_UP} // synonym to DELPHI10_UP - {$DEFINE DELPHI9_UP} -{$ENDIF} - -{$IFDEF DELPHI9_UP} - {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP - {$DEFINE DELPHI8_UP} -{$ENDIF} - -{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17} {$DEFINE BCB17_UP} {$ENDIF} -{$IFDEF BCB16} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB15} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB14} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB12} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB6} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB5} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB4} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB3} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB1} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17_UP} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB16_UP} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB15_UP} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB14_UP} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB12_UP} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB10_UP} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB6_UP} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB5_UP} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB4_UP} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB3_UP} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10} {$DEFINE BDS10_UP} {$ENDIF} -{$IFDEF BDS9} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS8} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS7} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS6} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10_UP} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS9_UP} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS8_UP} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS7_UP} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS6_UP} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17} {$DEFINE DELPHICOMPILER17_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER1} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17_UP} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16_UP} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15_UP} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14_UP} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12_UP} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9_UP} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7_UP} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6_UP} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5_UP} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4_UP} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3_UP} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2_UP} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17} {$DEFINE COMPILER17_UP} {$ENDIF} -{$IFDEF COMPILER16} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER15} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER14} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER12} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER9} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER8} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER7} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER6} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER5} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER4} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER3} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER2} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER1} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17_UP} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER16_UP} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER15_UP} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER14_UP} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER12_UP} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER9_UP} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER8_UP} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER7_UP} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER6_UP} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER5_UP} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER4_UP} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER3_UP} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER2_UP} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ RTLX_UP from RTLX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF RTL240_UP} {$DEFINE RTL230_UP} {$ENDIF} -{$IFDEF RTL230_UP} {$DEFINE RTL220_UP} {$ENDIF} -{$IFDEF RTL220_UP} {$DEFINE RTL210_UP} {$ENDIF} -{$IFDEF RTL210_UP} {$DEFINE RTL200_UP} {$ENDIF} -{$IFDEF RTL200_UP} {$DEFINE RTL190_UP} {$ENDIF} -{$IFDEF RTL190_UP} {$DEFINE RTL185_UP} {$ENDIF} -{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF} -{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF} -{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF} -{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF} -{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF} -{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF} -{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF} -{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF} -{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF} -{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF} -{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF} -{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF} -{$IFDEF RTL100_UP} {$DEFINE RTL93_UP} {$ENDIF} -{$IFDEF RTL93_UP} {$DEFINE RTL90_UP} {$ENDIF} -{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Check for CLR overrides of default detection } -{------------------------------------------------------------------------------} - -{$IFDEF CLR} - {$IFDEF FORCE_CLR10} - {$DEFINE CLR10} - {$UNDEF CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR10} - - {$IFDEF FORCE_CLR11} - {$UNDEF CLR10} - {$DEFINE CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR11} - - {$IFDEF FORCE_CLR20} - {$UNDEF CLR10} - {$UNDEF CLR11} - {$DEFINE CLR20} - {$ENDIF FORCE_CLR20} -{$ENDIF CLR} - -{------------------------------------------------------------------------------} -{ CLRX from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR10} {$DEFINE CLR10_UP} {$ENDIF} -{$IFDEF CLR11} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR20} {$DEFINE CLR20_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ CLRX_UP from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR20_UP} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR11_UP} {$DEFINE CLR10_UP} {$ENDIF} - -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{$IFDEF BCBCOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF} -{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Map COMPILERX_UP to friendly feature names } -{------------------------------------------------------------------------------} - -{$IFDEF FPC} - {$IFDEF VER1_0} - Please use FPC 2.0 or higher to compile this. - {$ELSE} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDECHAR} - {$DEFINE SUPPORTS_WIDESTRING} - {$IFDEF HASINTF} - {$DEFINE SUPPORTS_INTERFACE} - {$ENDIF} - {$IFDEF HASVARIANT} - {$DEFINE SUPPORTS_VARIANT} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_SINGLE} - {$DEFINE SUPPORTS_SINGLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_DOUBLE} - {$DEFINE SUPPORTS_DOUBLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_EXTENDED} - {$DEFINE SUPPORTS_EXTENDED} - {$ENDIF} - {$IFDEF HASCURRENCY} - {$DEFINE SUPPORTS_CURRENCY} - {$ENDIF} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE ACCEPT_DEPRECATED} // 2.2 also gives warnings - {$DEFINE ACCEPT_PLATFORM} // 2.2 also gives warnings - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} - - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_CONTNRS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE HAS_UNIT_RTLCONSTS} - - {$DEFINE XPLATFORM_RTL} - - {$IFDEF VER2_2} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_IMPLEMENTS} - {$DEFINE SUPPORTS_DISPID} - {$ELSE} - {$UNDEF SUPPORTS_DISPINTERFACE} - {$UNDEF SUPPORTS_IMPLEMENTS} - {$endif} - {$UNDEF SUPPORTS_UNSAFE_WARNINGS} - {$ENDIF} -{$ENDIF FPC} - -{$IFDEF CLR} - {$DEFINE SUPPORTS_UNICODE} -{$ENDIF CLR} - -{$IFDEF COMPILER1_UP} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_SINGLE} - {$DEFINE SUPPORTS_DOUBLE} - {$DEFINE SUPPORTS_EXTENDED} - {$DEFINE SUPPORTS_PACKAGES} -{$ENDIF COMPILER1_UP} - -{$IFDEF COMPILER2_UP} - {$DEFINE SUPPORTS_CURRENCY} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_VARIANT} - {$DEFINE SUPPORTS_WIDECHAR} -{$ENDIF COMPILER2_UP} - -{$IFDEF COMPILER3_UP} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDESTRING} - {$DEFINE SUPPORTS_INTERFACE} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_DISPID} - {$DEFINE SUPPORTS_WEAKPACKAGEUNIT} -{$ENDIF COMPILER3_UP} - -{$IFDEF COMPILER35_UP} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} -{$ENDIF COMPILER35_UP} - -{$IFDEF COMPILER4_UP} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE SUPPORTS_IMPLEMENTS} -{$ENDIF COMPILER4_UP} - -{$IFDEF COMPILER6_UP} - {$DEFINE SUPPORTS_DEPRECATED} - {$DEFINE SUPPORTS_LIBRARY} - {$DEFINE SUPPORTS_PLATFORM} - {$DEFINE SUPPORTS_LOCAL} - {$DEFINE SUPPORTS_SETPEFLAGS} - {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS} - {$DEFINE ACCEPT_DEPRECATED} - {$DEFINE ACCEPT_PLATFORM} - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_DEPRECATED_WARNINGS} - {$DEFINE SUPPORTS_LIBRARY_WARNINGS} - {$DEFINE SUPPORTS_PLATFORM_WARNINGS} - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$DEFINE SUPPORTS_COMPILETIME_MESSAGES} -{$ENDIF COMPILER6_UP} - -{$IFDEF COMPILER7_UP} - {$DEFINE SUPPORTS_UNSAFE_WARNINGS} -{$ENDIF COMPILER7_UP} - -{$IFDEF COMPILER9_UP} - {$DEFINE SUPPORTS_FOR_IN} - {$DEFINE SUPPORTS_INLINE} - {$DEFINE SUPPORTS_NESTED_CONSTANTS} - {$DEFINE SUPPORTS_NESTED_TYPES} - {$DEFINE SUPPORTS_REGION} - {$IFDEF CLR} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$ENDIF CLR} -{$ENDIF COMPILER9_UP} - -{$IFDEF COMPILER10_UP} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$DEFINE SUPPORTS_METHODINFO} -{$ENDIF COMPILER10_UP} - -{$IFDEF COMPILER11_UP} - {$IFDEF CLR} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$ENDIF CLR} -{$ENDIF COMPILER11_UP} - -{$IFDEF COMPILER12_UP} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$DEFINE SUPPORTS_INT_ALIASES} - {$IFNDEF CLR} - {$DEFINE SUPPORTS_UNICODE} - {$DEFINE SUPPORTS_UNICODE_STRING} - {$ENDIF CLR} -{$ENDIF COMPILER12_UP} - -{$IFDEF COMPILER14_UP} - {$DEFINE SUPPORTS_CLASS_CTORDTORS} - {$DEFINE HAS_UNIT_RTTI} - {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ} - {$DEFINE SUPPORTS_DELAYED_LOADING} -{$ENDIF COMPILER14_UP} - -{$IFDEF COMPILER16_UP} - {$DEFINE USE_64BIT_TYPES} -{$ENDIF COMPILER16_UP} - -{$IFDEF RTL130_UP} - {$DEFINE HAS_UNIT_CONTNRS} -{$ENDIF RTL130_UP} - -{$IFDEF RTL140_UP} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_RTLCONSTS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE XPLATFORM_RTL} -{$ENDIF RTL140_UP} - -{$IFDEF RTL170_UP} - {$DEFINE HAS_UNIT_HTTPPROD} -{$ENDIF RTL170_UP} - -{$IFDEF RTL185_UP} - {$DEFINE HAS_UNIT_GIFIMG} -{$ENDIF RTL185_UP} - -{$IFDEF RTL200_UP} - {$DEFINE HAS_UNIT_ANSISTRINGS} - {$DEFINE HAS_UNIT_PNGIMAGE} - {$DEFINE HAS_UNIT_CHARACTER} -{$ENDIF RTL200_UP} - -{$IFDEF RTL220_UP} - {$DEFINE SUPPORTS_UINT64} - {$DEFINE HAS_UNIT_REGULAREXPRESSIONSAPI} -{$ENDIF RTL220_UP} - -{$IFDEF RTL230_UP} - {$DEFINE HAS_UNITSCOPE} - {$DEFINE HAS_UNIT_SYSTEM_UITYPES} -{$ENDIF RTL230_UP} - -{$IFDEF RTL240_UP} - {$DEFINE HAS_UNIT_SYSTEM_ACTIONS} -{$ENDIF RTL240_UP} - -{------------------------------------------------------------------------------} -{ Cross-platform related defines } -{------------------------------------------------------------------------------} - -{$IFNDEF CPUASM} - {$DEFINE PUREPASCAL} -{$ENDIF ~CPUASM} - -{$IFDEF WIN32} - {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+ - {$DEFINE Win32API} -{$ENDIF} - -{$IFDEF DELPHILANGUAGE} - {$IFDEF LINUX} - {$DEFINE UNIX} - {$ENDIF} - - {$IFNDEF CONSOLE} - {$IFDEF LINUX} - {$DEFINE VisualCLX} - {$ENDIF} - {$IFNDEF VisualCLX} - {$DEFINE VCL} - {$ENDIF} - {$ENDIF ~CONSOLE} -{$ENDIF DELPHILANGUAGE} - -{------------------------------------------------------------------------------} -{ Compiler settings } -{------------------------------------------------------------------------------} - -{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF} -{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF} -{$ENDIF} -{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF} -{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF} -{$ENDIF} - -// Hints -{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF} -{$ENDIF} -{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$DEFINE LOCALSYMBOLS_ON} {$ENDIF} -{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF} -{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF} -{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF} -{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF} -{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF} - -// Real compatibility -{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF} -{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF} -{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF} -{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF} - -// Warnings -{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF} - -// for Delphi/BCB trial versions remove the point from the line below -{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT} - -{$ENDIF ~JEDI_INC} diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt deleted file mode 100644 index 4ee09c3d24..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt +++ /dev/null @@ -1,38 +0,0 @@ -HistoryToDBUpdater ------------------- - -Утилита уÑтановки/Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð² плагинов RnQHistoryToDB, QIPHistoryToDB, MirandaIMHistoryToDB, MirandaNGHistoryToDB. - -Ðвтор: Михаил Григорьев -E-Mail: sleuthhound@gmail.com -ICQ: 161867489 -WWW: http://www.im-history.ru -ЛицензиÑ: GNU GPLv3 - -СиÑтемные требованиÑ: ---------------------- -ОС: Win2000/XP/2003/Vista/7 -IM-клиент: Любой -БД: MySQL 4.0, 4.1, 5.0, 5.1 - PostgreSQL 7.1 - 8.3 - Oracle 8i - 11i - SQLite 3 - Firebird 2.x - -Ðеобходимые компоненты Ð´Ð»Ñ Ñборки плагина: ------------------------------------------- - -1. Embarcadero RAD Studio XE3 - -2. IM-History Downloader Component - See also directory IMDownloaderComponent - -3. DCPcrypt Cryptographic Component Library v2 - http://www.cityinthesky.co.uk/ - -ОпиÑание параметров запуÑка: ----------------------------- - -HistoryToDBUpdater.exe <1> - -<1> - (ÐеобÑзательный параметр) - Путь до файла наÑтроек HistoryToDB.ini (Ðапример: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\") diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dpr b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dpr deleted file mode 100644 index 8942f8b61d..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dpr +++ /dev/null @@ -1,15 +0,0 @@ -program DownLoaderTest; - -uses - Forms, - DownLoaderTestUnit in 'DownLoaderTestUnit.pas' {MainForm}; - -{$R *.res} - -begin - Application.Initialize; - Application.MainFormOnTaskbar := True; - Application.Title := 'IM Downloader Demo'; - Application.CreateForm(TMainForm, MainForm); - Application.Run; -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dproj b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dproj deleted file mode 100644 index c0b14483c0..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.dproj +++ /dev/null @@ -1,109 +0,0 @@ - - - {8B841E47-C817-4F26-8ACF-89048F0E7C42} - DownLoaderTest.dpr - True - Release - Win32 - Application - VCL - DCC32 - 12.3 - - - true - - - true - Base - true - - - true - Base - true - - - 00400000 - false - false - false - false - false - WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias) - - - 0 - RELEASE;$(DCC_Define) - false - false - - - DEBUG;$(DCC_Define) - true - false - - - - MainSource - - -
MainForm
-
- - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - - - Delphi.Personality.12 - VCLApplication - - - - DownLoaderTest.dpr - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1049 - 1251 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - True - - - 12 - -
diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.res b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.res deleted file mode 100644 index fc1937e1c7..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTest.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.dfm b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.dfm deleted file mode 100644 index b245bf8704..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.dfm +++ /dev/null @@ -1,125 +0,0 @@ -object MainForm: TMainForm - Left = 0 - Top = 0 - Caption = 'TIMDownloadThread Test' - ClientHeight = 252 - ClientWidth = 608 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poDesktopCenter - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object ToolBar1: TToolBar - Left = 0 - Top = 0 - Width = 608 - Height = 25 - ButtonHeight = 27 - ButtonWidth = 79 - Caption = 'ToolBar1' - List = True - ShowCaptions = True - TabOrder = 0 - object Edit1: TEdit - Left = 0 - Top = 0 - Width = 385 - Height = 27 - TabOrder = 0 - end - object TBDownload: TToolButton - Left = 385 - Top = 0 - AutoSize = True - Caption = #1057#1082#1072#1095#1072#1090#1100 - ImageIndex = 0 - OnClick = TBDownloadClick - end - object TBStopDownload: TToolButton - Left = 444 - Top = 0 - AutoSize = True - Caption = #1054#1089#1090#1072#1085#1086#1074#1080#1090#1100 - ImageIndex = 1 - Visible = False - OnClick = TBStopDownloadClick - end - object TBView: TToolButton - Left = 521 - Top = 0 - AutoSize = True - Caption = #1042#1099#1074#1077#1089#1090#1080 - DropdownMenu = PopupMenu1 - ImageIndex = 2 - Style = tbsDropDown - Visible = False - OnClick = TBViewClick - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 233 - Width = 608 - Height = 19 - Panels = <> - SimplePanel = True - end - object RichEdit1: TRichEdit - Left = 0 - Top = 25 - Width = 608 - Height = 191 - Align = alClient - Font.Charset = RUSSIAN_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ReadOnly = True - ScrollBars = ssBoth - TabOrder = 2 - end - object ProgressBar1: TProgressBar - Left = 0 - Top = 216 - Width = 608 - Height = 17 - Align = alBottom - TabOrder = 3 - end - object IMDownloader_Demo: TIMDownloader - OnError = IMDownloader_DemoError - OnAccepted = IMDownloader_DemoAccepted - OnHeaders = IMDownloader_DemoHeaders - OnMD5Checked = IMDownloader_DemoMD5Checked - OnDownloading = IMDownloader_DemoDownloading - OnStartDownload = IMDownloader_DemoStartDownload - OnBreak = IMDownloader_DemoBreak - Left = 72 - Top = 40 - end - object SaveDialog1: TSaveDialog - Left = 136 - Top = 96 - end - object PopupMenu1: TPopupMenu - Left = 224 - Top = 120 - object ViewAsTest: TMenuItem - Caption = #1054#1090#1086#1073#1088#1072#1079#1080#1090#1100' '#1082#1072#1082' '#1090#1077#1082#1089#1090 - Default = True - OnClick = ViewAsTestClick - end - object SaveToFile: TMenuItem - Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1074' '#1092#1072#1081#1083 - OnClick = SaveToFileClick - end - end -end diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.pas deleted file mode 100644 index 2ca42ac174..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/Demo/DownLoaderTestUnit.pas +++ /dev/null @@ -1,176 +0,0 @@ -unit DownLoaderTestUnit; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, uIMDownLoader, StdCtrls, ToolWin, ComCtrls, Menus; - -type - TMainForm = class(TForm) - IMDownloader_Demo: TIMDownloader; - Edit1: TEdit; - ToolBar1: TToolBar; - StatusBar1: TStatusBar; - RichEdit1: TRichEdit; - SaveDialog1: TSaveDialog; - TBDownload: TToolButton; - TBStopDownload: TToolButton; - TBView: TToolButton; - ViewAsTest: TMenuItem; - SaveToFile: TMenuItem; - PopupMenu1: TPopupMenu; - ProgressBar1: TProgressBar; - procedure FormShow(Sender: TObject); - procedure IMDownloader_DemoError(Sender: TObject; E: TIMDownLoadError); - procedure IMDownloader_DemoAccepted(Sender: TObject); - procedure IMDownloader_DemoStartDownload(Sender: TObject); - procedure IMDownloader_DemoBreak(Sender: TObject); - procedure ViewAsTestClick(Sender: TObject); - procedure SaveToFileClick(Sender: TObject); - procedure TBDownloadClick(Sender: TObject); - procedure TBStopDownloadClick(Sender: TObject); - procedure TBViewClick(Sender: TObject); - procedure IMDownloader_DemoDownloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); - procedure IMDownloader_DemoHeaders(Sender: TObject; Headers: string); - procedure IMDownloader_DemoMD5Checked(Sender: TObject; MD5Correct, - SizeCorrect: Boolean; MD5Str: string); - private - { Private declarations } - public - { Public declarations } - end; - -var - MainForm: TMainForm; - -const - uURL = 'http://im-history.ru/update/get.php?file=HistoryToDB-Update'; - -implementation - -{$R *.dfm} - -procedure TMainForm.FormShow(Sender: TObject); -begin - Edit1.Text := uURL; - IMDownloader_Demo.DirPath := ExtractFilePath(Application.ExeName); -end; - -procedure TMainForm.IMDownloader_DemoAccepted(Sender: TObject); -begin - ProgressBar1.Visible := False; - TBStopDownload.Visible := false; - TBDownload.Visible := true; - TBView.Visible := true; - Edit1.ReadOnly := false; - StatusBar1.SimpleText := - 'Ñêà÷èâàíèå óñïåøíî çàâåðøåíî. Âñåãî ïîëó÷åíî äàííûõ â áàéòàõ: ' + IntToStr - (IMDownloader_Demo.AcceptedSize); - //RichEdit1.Lines.Append('MD5 ôàéëà â ïàìÿòè: '+MD5DigestToStr(MD5Stream(IMDownloader_Demo.OutStream))); -end; - -procedure TMainForm.IMDownloader_DemoBreak(Sender: TObject); -begin - ProgressBar1.Visible := False; - TBStopDownload.Visible := false; - TBStopDownload.Enabled := true; - TBDownload.Visible := true; - TBView.Visible := IMDownloader_Demo.AcceptedSize > 0; - Edit1.ReadOnly := false; - StatusBar1.SimpleText := - 'Ñêà÷èâàíèå îñòàíîâëåíî. Âñåãî ïîëó÷åíî äàííûõ â áàéòàõ: ' + IntToStr - (IMDownloader_Demo.AcceptedSize); -end; - -procedure TMainForm.IMDownloader_DemoDownloading(Sender: TObject; AcceptedSize, - MaxSize: Cardinal); -begin - StatusBar1.SimpleText := 'Ïîëó÷åíî áàéò: ' + IntToStr(AcceptedSize); - ProgressBar1.Visible := MaxSize > AcceptedSize; - ProgressBar1.Max := MaxSize; - ProgressBar1.Position := AcceptedSize; -end; - -procedure TMainForm.IMDownloader_DemoError(Sender: TObject; E: TIMDownLoadError); -var - s: string; -begin - ProgressBar1.Visible := False; - TBStopDownload.Visible := false; - TBDownload.Visible := true; - TBView.Visible := IMDownloader_Demo.AcceptedSize > 0; - Edit1.ReadOnly := false; - case E of - deInternetOpen: s := 'Îøèáêà ïðè îòêðûòèè ñåññèè. '; - deInternetOpenUrl: s := 'Îøèáêà ïðè çàïðàøèâàíèè ôàéëà. '; - deDownloadingFile: s := 'Îøèáêà ïðè ÷òåíèè ôàéëà. '; - deRequest: s := 'Îøèáêà ïðè çàïðîñå äàííûõ ÷åðåç ïðîêñè-ñåðâåð. '; - end; - StatusBar1.SimpleText := - s + 'Âñåãî ïîëó÷åíî äàííûõ â áàéòàõ: ' + IntToStr - (IMDownloader_Demo.AcceptedSize); -end; - -procedure TMainForm.IMDownloader_DemoHeaders(Sender: TObject; Headers: string); -begin - RichEdit1.Lines.Text := Headers; -end; - -procedure TMainForm.IMDownloader_DemoMD5Checked(Sender: TObject; MD5Correct, - SizeCorrect: Boolean; MD5Str: string); -begin - if MD5Correct then - RichEdit1.Lines.Append('Êîíòðîëüíàÿ ñóììà MD5 = '+MD5Str+' - ÂÅÐÍÀ!') - else - RichEdit1.Lines.Append('Êîíòðîëüíàÿ ñóììà MD5 = '+MD5Str+' - ÍÅ ÂÅÐÍÀ!'); - if SizeCorrect then - RichEdit1.Lines.Append('Ðàçìåð ôàéëà = '+IntToStr(IMDownloader_Demo.AcceptedSize)+' - ÂÅÐÍÛÉ!') - else - RichEdit1.Lines.Append('Ðàçìåð ôàéëà = '+IntToStr(IMDownloader_Demo.AcceptedSize)+' - ÍÅ ÂÅÐÍÛÉ!'); -end; - -procedure TMainForm.IMDownloader_DemoStartDownload(Sender: TObject); -begin - TBDownload.Visible := false; - TBStopDownload.Visible := true; - TBView.Visible := false; - Edit1.ReadOnly := true; - StatusBar1.SimpleText := 'Èíèöèàëèçàöèÿ ñêà÷èâàíèÿ...'; -end; - -procedure TMainForm.ViewAsTestClick(Sender: TObject); -begin - RichEdit1.Lines.LoadFromStream(IMDownloader_Demo.OutStream); -end; - -procedure TMainForm.SaveToFileClick(Sender: TObject); -begin - if Edit1.Text = uURL then - SaveDialog1.FileName := 'HistoryToDBCreateDB.rar'; - if SaveDialog1.Execute then - IMDownloader_Demo.OutStream.SaveToFile(SaveDialog1.FileName); -end; - -procedure TMainForm.TBDownloadClick(Sender: TObject); -begin - IMDownloader_Demo.URL := Edit1.Text; - //IMDownloader_Demo.Proxy := '192.168.42.240:1522'; - IMDownloader_Demo.Proxy := '172.29.72.168:8080'; - IMDownloader_Demo.Download; -end; - -procedure TMainForm.TBStopDownloadClick(Sender: TObject); -begin - StatusBar1.SimpleText := 'Îñòàíàâëèâàåì ñêà÷êó'; - TBStopDownload.Enabled := false; - IMDownloader_Demo.BreakDownload; -end; - -procedure TMainForm.TBViewClick(Sender: TObject); -begin - TBView.DropdownMenu.Popup(TBView.ClientOrigin.X, - TBView.ClientOrigin.Y + TBView.Height); -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dcr b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dcr deleted file mode 100644 index 2311dc0fef..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dcr and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dpk b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dpk deleted file mode 100644 index f925b6df62..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dpk +++ /dev/null @@ -1,38 +0,0 @@ -package IMDownloader; - -{$R *.res} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DEFINE RELEASE} -{$ENDIF IMPLICITBUILDING} -{$IMPLICITBUILD ON} - -requires - rtl, - vcl; - -contains - uIMDownloader in 'uIMDownloader.pas', - uMD5 in 'uMD5.pas'; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dproj b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dproj deleted file mode 100644 index 092d815fc7..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.dproj +++ /dev/null @@ -1,168 +0,0 @@ - - - {BF7E5A55-CA0C-4DDD-B399-17FA1A2FF83F} - IMDownloader.dpk - True - Release - Package - VCL - DCC32 - 14.3 - Win32 - 3 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) - 4 - 1049 - CompanyName=;FileDescription=;FileVersion=1.0.0.4;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - false - false - RELEASE;$(DCC_Define) - 00400000 - true - false - false - 0 - false - true - false - false - - - true - IMDownloader_Icon.ico - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - 1033 - vcl;rtl;$(DCC_UsePackage) - $(BDS)\bin\default_app.manifest - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - - - 1033 - IMDownloader_Icon.ico - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - vcl;rtl;$(DCC_UsePackage) - $(BDS)\bin\default_app.manifest - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - - - 1033 - 0 - .\$(Platform)\$(Config) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - - - 1033 - 0 - .\$(Platform)\$(Config) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - - - DEBUG;$(DCC_Define) - true - false - - - - MainSource - - - - - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - - - Delphi.Personality.12 - Package - - - - IMDownloader.dpk - - - True - False - 1 - 0 - 0 - 4 - False - False - False - False - False - 1049 - 1251 - - - - - 1.0.0.4 - - - - - - 1.0.0.0 - - - - - - True - True - - - 12 - - diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.res b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.res deleted file mode 100644 index ebc501849a..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader_Icon.ico b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader_Icon.ico deleted file mode 100644 index 379ec80d91..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/IMDownloader_Icon.ico and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uIMDownloader.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uIMDownloader.pas deleted file mode 100644 index 168fc21a7f..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uIMDownloader.pas +++ /dev/null @@ -1,612 +0,0 @@ -{ ################################################################################### } -{ # # } -{ # IMDownloader # } -{ # # } -{ # Base on Downloader www.webdelphi.ru # } -{ # http://www.webdelphi.ru/2009/10/mnogopotochnost-v-svoix-prilozheniyax-chast-2/ # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ # Äîðàáîòêè ïî ñðàâíåíèþ ñ Downloader: # } -{ # + Äîáàâëåí ðàáîòà ÷åðåç ïðîêñè (ñâîéñòâà Proxy, ProxyBypass, # } -{ # AuthUserName, AuthPassword, ProxyAuthUserName, ProxyAuthPassword) # } -{ # + Äîáàâëåíî ñâîéñòâî DirPath - Ïóòü ãäå èäåò ïîèñê ôàéëà è ïðîâåðêà åãî MD5. # } -{ # (Èìÿ ôàéëà è åãî MD5 óçíàþòñÿ èç çàãîëîâêà îòâåòà ñåðâåðà). Åñëè MD5 ôàéëà # } -{ # íà äèñêå ðàâíî MD5 ôàéëà â çàãîëîâêå îòâåòà, òî ñêà÷èâàíèå íå íà÷èíàåòñÿ. # } -{ # + Ñîáûòèå OnHeaders - Ïîëó÷åíèå çàãîëîâêà îòâåòà ñåðâåðà. # } -{ # + Ñîáûòèå OnMD5Checked - Ïîäñ÷åò MD5 ñóììû ñêà÷åííîãî ôàéëà. # } -{ # # } -{ ################################################################################### } - -unit uIMDownloader; - -interface - -uses Classes, WinInet, SysUtils, Dialogs, Windows, Forms, uMD5; - -const - Accept = 'Accept: */*' + sLineBreak; - ProxyConnection = 'Proxy-Connection: Keep-Alive' + sLineBreak; - Lang = 'Accept-Language: ru' + sLineBreak; - Agent = - 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; ' + - 'Windows NT 5.1; SV1; .NET CLR 2.0.50727)' + sLineBreak; - -type - PMemoryStream = ^TMemoryStream; - TIMDownloadError = (deInternetOpen, deInternetOpenUrl, deDownloadingFile, deConnect, deRequest); - TErrorEvent = procedure(Sender: TObject; E: TIMDownloadError) of object; - TDownloadingEvent = procedure(Sender: TObject; AcceptedSize, MaxSize: Cardinal) of object; - THeadersEvent = procedure(Sender: TObject; Headers: String) of object; - TMD5Event = procedure(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: String) of object; - - TIMDownloadThread = class(TThread) - private - fURL: String; - fProxy: String; - fProxyBypass: String; - fAuthUserName: String; - fAuthPassword: String; - fProxyAuthUserName: String; - fProxyAuthPassword: String; - fDirPath: String; - MemoryStream: TMemoryStream; - Err: TIMDownloadError; - fError: TErrorEvent; - fAccepted: TNotifyEvent; - fBreak: TNotifyEvent; - fDownloading: TDownloadingEvent; - fHeaders: THeadersEvent; - AcceptedSize: Cardinal; - AllSize: Cardinal; - Headers: String; - MD5Str: String; - MD5Correct: Boolean; - SizeCorrect: Boolean; - fMD5: TMD5Event; - procedure toError; - procedure toHeaders; - procedure toDownloading; - procedure toAccepted; - procedure toBreak; - procedure toMD5; - procedure Complete; - function ErrorResult(E: Boolean; eType: TIMDownloadError): Boolean; - function GetQueryInfo(hRequest: Pointer; Flag: Integer): String; - protected - procedure Execute; override; - public - constructor Create(CreateSuspennded: Boolean; const URL, Proxy, ProxyBypass, AuthUserName, AuthPassword, ProxyAuthUserName, ProxyAuthPassword, DirPath: String; Stream: PMemoryStream); - property URL: string read fURL; - property Proxy: string read fProxy; // Ñïèñîê ïðîêñè - property ProxyBypass: string read fProxyBypass; // Äîïîëíèîòåëüíûé ñïèñîê ïðîêñè - property AuthUserName: string read fAuthUserName; // Ëîãèí äëÿ Authorization: Basic - property AuthPassword: string read fAuthPassword; // Ïàðîëü äëÿ Authorization: Basic - property ProxyAuthUserName: string read fProxyAuthUserName; // Ëîãèí äëÿ ïðîêñè - property ProxyAuthPassword: string read fProxyAuthPassword; // Ïàðîëü äëÿ ïðîêñè - property DirPath: string read fDirPath write fDirPath; // Äèðåêòîðèÿ â êîòîðîé áóäóò ïðîâåðÿòüñÿ MD5 ôàéëîâ - property OnError: TErrorEvent read fError write fError; - property OnAccepted: TNotifyEvent read fAccepted write fAccepted; - property OnBreak: TNotifyEvent read fBreak write fBreak; - property OnDownloading: TDownloadingEvent read fDownloading write fDownloading; - property OnHeaders: THeadersEvent read fHeaders write fHeaders; - property OnMD5Checked: TMD5Event read fMD5 write fMD5; - end; - - TIMDownloader = class(TComponent) - private - fOutStream: TMemoryStream; - fURL: String; - fProxy: String; - fProxyBypass: String; - fAuthUserName: String; - fAuthPassword: String; - fProxyAuthUserName: String; - fProxyAuthPassword: String; - fDirPath: String; - Downloader: TIMDownloadThread; - fOnError: TErrorEvent; - fOnAccepted: TNotifyEvent; - fOnBreak: TNotifyEvent; - fOnStartDownload: TNotifyEvent; - fInDowloading: Boolean; - fAcceptedSize: Cardinal; - fMyHeaders: String; - fMyMD5Str: String; - fMyMD5Correct: Boolean; - fMySizeCorrect: Boolean; - fHeaders: THeadersEvent; - fDownloading: TDownloadingEvent; - fMD5: TMD5Event; - procedure AcceptDownload(Sender: TObject); - procedure Break_Download(Sender: TObject); - procedure Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); - procedure GetHeaders(Sender: TObject; Headers: String); - procedure GetMD5(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: String); - procedure ErrorDownload(Sender: TObject; Error: TIMDownloadError); - public - procedure Download; - procedure BreakDownload; - property OutStream: TMemoryStream read fOutStream; - property InDowloading: Boolean read fInDowloading; - property AcceptedSize: Cardinal read fAcceptedSize; - property MyHeaders: String read fMyHeaders; - property MyMD5Str: String read fMyMD5Str; - property MyMD5Correct: Boolean read fMyMD5Correct; - property MySizeCorrect: Boolean read fMySizeCorrect; - published - property URL: string read fURL write fURL; - property Proxy: string read fProxy write fProxy; // Ñïèñîê ïðîêñè - property ProxyBypass: string read fProxyBypass write fProxyBypass; // Äîïîëíèîòåëüíûé ñïèñîê ïðîêñè - property AuthUserName: string read fAuthUserName write fAuthUserName; // Ëîãèí äëÿ Authorization: Basic - property AuthPassword: string read fAuthPassword write fAuthPassword; // Ïàðîëü äëÿ Authorization: Basic - property ProxyAuthUserName: string read fProxyAuthUserName write fProxyAuthUserName; // Ëîãèí äëÿ ïðîêñè - property ProxyAuthPassword: string read fProxyAuthPassword write fProxyAuthUserName; // Ïàðîëü äëÿ ïðîêñè - property DirPath: string read fDirPath write fDirPath; // Äèðåêòîðèÿ â êîòîðîé áóäóò ïðîâåðÿòüñÿ MD5 ôàéëîâ - property OnError: TErrorEvent read fOnError write fOnError; - property OnAccepted: TNotifyEvent read fOnAccepted write fOnAccepted; - property OnHeaders: THeadersEvent read fHeaders write fHeaders; - property OnMD5Checked: TMD5Event read fMD5 write fMD5; - property OnDownloading: TDownloadingEvent read fDownloading write fDownloading; - property OnStartDownload: TNotifyEvent read fOnStartDownload write fOnStartDownload; - property OnBreak: TNotifyEvent read fOnBreak write fOnBreak; - end; - -{$R IMDownloader.dcr} - -procedure Register; - -implementation - -procedure Register; -begin - RegisterComponents('IM-History', [TIMDownloader]); -end; - -procedure TIMDownloadThread.toHeaders; -begin - if Assigned(fHeaders) then - fHeaders(Self, Headers); -end; - -procedure TIMDownloadThread.toMD5; -begin - if Assigned(fMD5) then - fMD5(Self, MD5Correct, SizeCorrect, MD5Str); -end; - -procedure TIMDownloadThread.toDownloading; -begin - if Assigned(fDownloading) then - fDownloading(Self, AcceptedSize, AllSize); -end; - -procedure TIMDownloadThread.toAccepted; -begin - if Assigned(fAccepted) then - fAccepted(Self); -end; - -procedure TIMDownloadThread.toBreak; -begin - if Assigned(fBreak) then - fBreak(Self); -end; - -procedure TIMDownloadThread.Complete; -begin - if Terminated then - Synchronize(toBreak) - else - Synchronize(toAccepted); -end; - -procedure TIMDownloadThread.toError; -begin - if Assigned(fError) then - OnError(Self, err); -end; - -function TIMDownloadThread.ErrorResult(E: Boolean; eType: TIMDownloadError): Boolean; -begin - Result := E; - if E then - begin - err := eType; - toError; - end; -end; - -function TIMDownloadThread.GetQueryInfo(hRequest: Pointer; Flag: Integer): String; -var - Code: String; - Size, Index: Cardinal; -begin - SetLength(Code, 8); // Äîñòàòî÷íàÿ äëèíà äëÿ ÷òåíèÿ ñòàòóñ-êîäà - Size := Length(Code); - Index := 0; - if HttpQueryInfo(hRequest, Flag ,PChar(Code), Size, Index) then - Result := Code - else - if GetLastError = ERROR_INSUFFICIENT_BUFFER then // Óâåëè÷èâàåì áóôôåð - begin - SetLength(Code, Size); - Size := Length(Code); - if HttpQueryInfo(hRequest, Flag, PChar(Code), Size, Index) then - Result := Code; - end - else - begin - //FErrorCode := GetLastError; - Result := ''; - end; -end; - -procedure TIMDownloadThread.Execute; -var - Buffer: Array [0 .. 1024] of Byte; - BytesRead: Cardinal; - FSession, FConnect, FRequest: hInternet; - dwBuffer: array [0 .. 1024] of Byte; - dwBufferLen, dwIndex: DWORD; - FHost, FScript, SRequest, ARequest: String; - ProxyReqRes, ProxyReqLen: Cardinal; - TempHeaders, TempMD5, DownloadsFileName, DownloadsFileMD5: String; - - function DelHttp(sURL: String): String; - var - HttpPos: Integer; - begin - HttpPos := Pos('http://', sURL); - if HttpPos > 0 then Delete(sURL, HttpPos, 7); - Result := Copy(sURL, 1, Pos('/', sURL) - 1); - if Result = '' then Result := sURL; - end; - - function ParseHeadersMD5andSize(HeaderStr: String): String; - var - HeadersStrList: TStringList; - I: Integer; - Size: String; - Ch: Char; - ResultFilename, ResultMD5Sum, ResultHeaders: String; - ResultFileSize: Integer; - begin - ResultFilename := 'Test'; - ResultMD5Sum := '00000000000000000000000000000000'; - ResultFileSize := 0; - // Ñîçäàåì TStringList - HeadersStrList := TStringList.Create; - HeadersStrList.Clear; - HeadersStrList.Text := HeaderStr; - HeadersStrList.Delete(HeadersStrList.Count-1); // Ïîñëåäíèé ýëåìåíò ñîäåðæèò âñåãäà CRLF - if HeadersStrList.Count > 0 then - begin - for I := 0 to HeadersStrList.Count - 1 do - begin - // Ïàðñèì ñòðîêó âèäà - // Content-Disposition: attachment; filename="ÈÌß-ÔÀÉËÀ" - // Òàêóþ ñòðîêó âñòàâëÿåò â çàãîëîâîê HTTP-çàïðîñà - // òîëüêî ìîé ñêðèïò get.php - if pos('content-disposition', LowerCase(HeadersStrList[I])) > 0 then - begin - ResultFilename := HeadersStrList[I]; - Delete(ResultFilename, 1, Pos('"', HeadersStrList[I])); - Delete(ResultFilename, Length(ResultFilename),1); - //LogMemo.Lines.Add('Filename: '+ResultFilename); - end; - // Ïàðñèì ñòðîêó âèäà - // Content-MD5Sum: MD5 - // Òàêóþ ñòðîêó âñòàâëÿåò â çàãîëîâîê HTTP-çàïðîñà - // òîëüêî ìîé ñêðèïò get.php - if pos('content-md5sum', LowerCase(HeadersStrList[I])) > 0 then - begin - ResultMD5Sum := HeadersStrList[I]; - Delete(ResultMD5Sum, 1, Pos(':', HeadersStrList[I])); - Delete(ResultMD5Sum, 1,1); - end; - // Ïàðñèì ñòðîêó âèäà - // Content-Length: ÐÀÇÌÅÐ - if pos('content-length', LowerCase(HeadersStrList[i])) > 0 then - begin - Size := ''; - for Ch in HeadersStrList[I]do - if Ch in ['0'..'9'] then - Size := Size + Ch; - ResultFileSize := StrToIntDef(Size,-1); - end; - end; - Result := ResultFilename + '|' + LowerCase(ResultMD5Sum) + '|' + IntToStr(ResultFileSize) + '|'; - end; - HeadersStrList.Free; - end; - - { Ôóíêöèÿ ðàçáèâàåò ñòðîêó S íà ñëîâà, ðàçäåëåííûå ñèìâîëàìè-ðàçäåëèòåëÿìè, - óêàçàííûìè â ñòðîêå Sep. Ôóíêöèÿ âîçâðàùàåò ïåðâîå íàéäåííîå ñëîâî, ïðè - ýòîì èç ñòðîêè S óäàëÿåòñÿ íà÷àëüíàÿ ÷àñòü äî ñëåäóþùåãî ñëîâà } - function Tok(Sep: String; var S: String): String; - - function isoneof(c, s: string): Boolean; - var - iTmp: integer; - begin - Result := False; - for iTmp := 1 to Length(s) do - begin - if c = Copy(s, iTmp, 1) then - begin - Result := True; - Exit; - end; - end; - end; - - var - c, t: String; - begin - if s = '' then - begin - Result := s; - Exit; - end; - c := Copy(s, 1, 1); - while isoneof(c, sep) do - begin - s := Copy(s, 2, Length(s) - 1); - c := Copy(s, 1, 1); - end; - t := ''; - while (not isoneof(c, sep)) and (s <> '') do - begin - t := t + c; - s := Copy(s, 2, length(s) - 1); - c := Copy(s, 1, 1); - end; - Result := t; - end; - -begin - // Èíèöèàëèçèðóåì WinInet - if fProxy = '' then - FSession := InternetOpen('IM-History Download Master', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) - else - begin - FSession := InternetOpen('IM-History Download Master', INTERNET_OPEN_TYPE_PROXY, PChar(fProxy), PChar(fProxyBypass), 0); - if fProxyAuthUserName <> '' then - begin - InternetSetOption(FSession, INTERNET_OPTION_PROXY_USERNAME, @fProxyAuthUserName, Length(fProxyAuthUserName)); - InternetSetOption(FSession, INTERNET_OPTION_PROXY_PASSWORD, @fProxyAuthPassword, Length(fProxyAuthPassword)); - end; - end; - if ErrorResult(FSession = nil, deInternetOpen) then - Exit; - if Assigned(FSession) then - begin - // Íåáîëüøîé ïàðñèíã - // Âûòàñêèâàåì èìÿ õîñòà è ïàðàìåòðû îáðàùåíèÿ ê ñêðèïòó - ARequest := fURL; - FHost := DelHttp(ARequest); - FScript := ARequest; - Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost)); - // Ïîïûòêà ñîåäèíåíèÿ ñ ñåðâåðîì - if fAuthUserName = '' then // Åñëè íåò Basic-àâòîðèçàöèè - FConnect := InternetOpenURL(FSession, PChar(fURL), nil, 0, INTERNET_FLAG_RELOAD, 0) - else - FConnect := InternetConnect(FSession, PChar(FHost), INTERNET_DEFAULT_HTTP_PORT, PChar(fAuthUserName), - PChar(fAuthPassword), INTERNET_SERVICE_HTTP, 0, 0); - if ErrorResult(FConnect = nil, deInternetOpenUrl) then - Exit; - dwIndex := 0; - dwBufferLen := Length(dwBuffer); - if fProxy <> '' then - begin - // Ïîäãîòàâëèâàåì çàïðîñ - FRequest := HttpOpenRequest(FConnect, 'GET', PChar(FScript), nil, '', nil, 0, 0); - // Äîáàâëÿåì íåîáõîäèìûå çàãîëîâêè ê çàïðîñó - HttpAddRequestHeaders(FRequest, Accept, Length(Accept), HTTP_ADDREQ_FLAG_ADD); - HttpAddRequestHeaders(FRequest, ProxyConnection, Length(ProxyConnection), HTTP_ADDREQ_FLAG_ADD); - HttpAddRequestHeaders(FRequest, Lang, Length(Lang), HTTP_ADDREQ_FLAG_ADD); - HttpAddRequestHeaders(FRequest, Agent, Length(Agent), HTTP_ADDREQ_FLAG_ADD); - // Ïðîâåðÿåì çàïðîñ: - ProxyReqLen := 0; - ProxyReqRes := 0; - SRequest := ' '; - HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or - HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], ProxyReqLen, ProxyReqRes); - if ProxyReqLen > 0 then - begin - SetLength(SRequest, ProxyReqLen); - HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or - HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], ProxyReqLen, ProxyReqRes); - end; - // Îòïðàâëÿåì çàïðîñ - if ErrorResult(not HttpSendRequest(FRequest, nil, 0, nil, 0), deRequest) then Exit; - end; - if fProxy = '' then - begin - // Ïîëó÷àåì çàãîëîâîê îòâåòà ñ ñåðâåðà - Headers := GetQueryInfo(FConnect, HTTP_QUERY_RAW_HEADERS_CRLF); - Synchronize(toHeaders); - // Çàïðîñ ðàçìåðà - if HttpQueryInfo(FConnect, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex) then - AllSize := StrToInt('0' + PChar(@dwBuffer)); - end - else - begin - // Ïîëó÷àåì çàãîëîâîê îòâåòà ñ ñåðâåðà - Headers := GetQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF); - Synchronize(toHeaders); - // Çàïðîñ ðàçìåðà - if HttpQueryInfo(FRequest, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex) then - AllSize := StrToInt('0' + PChar(@dwBuffer)); - end; - // Ïðîâåðÿåì MD5 ñòàðîãî ôàéëà íà äèñêå - TempHeaders := ParseHeadersMD5andSize(Headers); - DownloadsFileName := Tok('|', TempHeaders); - DownloadsFileMD5 := Tok('|', TempHeaders); - if FileExists(fDirPath+DownloadsFileName) then - TempMD5 := LowerCase(MD5DigestToStr(MD5File(fDirPath+DownloadsFileName))) - else - TempMD5 := '00000000000000000000000000000000'; - if LowerCase(DownloadsFileMD5) <> TempMD5 then - begin - repeat - if Terminated then - Break; - FillChar(Buffer, SizeOf(Buffer), 0); - if fProxy = '' then - begin - if ErrorResult(not InternetReadFile(FConnect, @Buffer, Length(Buffer), BytesRead), deDownloadingFile) then - Exit - else - MemoryStream.Write(Buffer, BytesRead); - end - else - begin - if ErrorResult(not InternetReadFile(FRequest, @Buffer, Length(Buffer), BytesRead), deDownloadingFile) then - Exit - else - MemoryStream.Write(Buffer, BytesRead); - end; - AcceptedSize := MemoryStream.Size; - Synchronize(toDownloading); - until (BytesRead = 0); - MemoryStream.Position := 0; - // Ïîäñ÷åò MD5 è ðàçìåðà ôàéëà - MD5Str := LowerCase(MD5DigestToStr(MD5Stream(MemoryStream))); - TempHeaders := ParseHeadersMD5andSize(Headers); - DownloadsFileName := Tok('|', TempHeaders); - if Tok('|', TempHeaders) = MD5Str then - MD5Correct := True - else - MD5Correct := False; - if Tok('|', TempHeaders) = IntToStr(MemoryStream.Size) then - SizeCorrect := True - else - SizeCorrect := False; - Synchronize(toMD5); - end - else - begin - AcceptedSize := 0; - Synchronize(toDownloading); - MD5Str := 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; - MD5Correct := True; - SizeCorrect := True; - Synchronize(toMD5); - end; - // Î÷èùàåì ðåñóðñû - if Assigned(FRequest) then - InternetCloseHandle(FRequest); - if Assigned(FConnect) then - InternetCloseHandle(FConnect); - InternetCloseHandle(FSession); - Pointer(MemoryStream) := nil; - Complete; - end; -end; - -constructor TIMDownloadThread.Create(CreateSuspennded: Boolean; const URL, Proxy, ProxyBypass, AuthUserName, AuthPassword, ProxyAuthUserName, ProxyAuthPassword, DirPath: String; Stream: PMemoryStream); -begin - inherited Create(CreateSuspennded); - FreeOnTerminate := True; - Pointer(MemoryStream) := Stream; - AcceptedSize := 0; - Headers := ''; - MD5Str := ''; - MD5Correct := False; - SizeCorrect := False; - fURL := URL; - fProxy := Proxy; - fProxyBypass := ProxyBypass; - fAuthUserName := AuthUserName; - fAuthPassword := AuthPassword; - fProxyAuthUserName := ProxyAuthUserName; - fProxyAuthPassword := ProxyAuthPassword; - fDirPath := DirPath; -end; - -procedure TIMDownloader.Download; -begin - fInDowloading := True; - if Assigned(Downloader) then - Downloader.Terminate; - if Assigned(fOutStream) then - FreeAndNil(fOutStream); - fAcceptedSize := 0; - fMyHeaders := ''; - fMyMD5Str := ''; - fMyMD5Correct := False; - fMySizeCorrect := False; - fOutStream := TMemoryStream.Create; - Downloader := TIMDownloadThread.Create(True, fURL, fProxy, fProxyBypass, fAuthUserName, fAuthPassword, fProxyAuthUserName, fProxyAuthPassword, fDirPath, Pointer(fOutStream)); - Downloader.OnAccepted := AcceptDownload; - Downloader.OnError := ErrorDownload; - Downloader.OnHeaders := GetHeaders; - Downloader.OnDownloading := Downloading; - Downloader.OnBreak := Break_Download; - Downloader.OnMD5Checked := GetMD5; - Downloader.Resume; - if Assigned(fOnStartDownload) then - fOnStartDownload(Self); -end; - -procedure TIMDownloader.BreakDownload; -begin - if not InDowloading then - Exit; - if Assigned(Downloader) then - Downloader.Terminate; -end; - -procedure TIMDownloader.Break_Download(Sender: TObject); -begin - fInDowloading := False; - Downloader := nil; - if Assigned(fOnBreak) then - fOnBreak(Self); -end; - -procedure TIMDownloader.AcceptDownload(Sender: TObject); -begin - fInDowloading := False; - Downloader := nil; - if Assigned(fOnAccepted) then - fOnAccepted(Self); -end; - -procedure TIMDownloader.GetHeaders(Sender: TObject; Headers: String); -begin - fMyHeaders := Headers; - if Assigned(fHeaders) then - fHeaders(Self, Headers); -end; - -procedure TIMDownloader.GetMD5(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: String); -begin - fMyMD5Str := MD5Str; - fMyMD5Correct := MD5Correct; - fMySizeCorrect := SizeCorrect; - if Assigned(fMD5) then - fMD5(Self, MD5Correct, SizeCorrect, MD5Str); -end; - -procedure TIMDownloader.Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); -begin - fAcceptedSize := AcceptedSize; - if Assigned(fDownloading) then - fDownloading(Self, AcceptedSize, MaxSize); -end; - -procedure TIMDownloader.ErrorDownload(Sender: TObject; Error: TIMDownloadError); -begin - fInDowloading := False; - Downloader := nil; - fOutStream := nil; - if Assigned(fOnError) then - fOnError(Self, Error); -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uMD5.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uMD5.pas deleted file mode 100644 index 81a6f4697b..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/IMDownloaderComponent/uMD5.pas +++ /dev/null @@ -1,456 +0,0 @@ -{******************************************************************} -{ Âû÷èñëåíèå õåø-ñóììû MD5 } -{ } -{ by delphibase.endimus.com } -{ Çàâèñèìîñòè: Windows, SysUtils, Classes } -{ Àâòîð: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Ñàíêò-Ïåòåðáóðã } -{ Copyright: http://www.faqs.org/rfcs/rfc1321.html } -{ Äàòà: 19 èþíÿ 2002 ã. } -{******************************************************************} - -{******************************************************************} -{ MD5 Hashsum Evaluation Unit For Borland Delphi } -{ } -{ Copyright © 2002 by Dimka Maslov } -{ E-mail: mainbox@endimus.com, } -{ Web-site: http://www.endimus.com } -{ } -{ Derived from the RSA Data Security, Inc. } -{ MD5 Message-Digest Algorithm described in RFC 1321 } -{ http://www.faqs.org/rfcs/rfc1321.html } -{******************************************************************} - -unit uMD5; - -Interface - -Uses Windows, SysUtils, Classes; - -Type -{ The TMD5Digest record is the type of results of - the MD5 hashsum evaluation functions. The contents - of a record may be used as four 32-bit integer values - or as an array of 16 bytes } -{ Òèï TMD5Digest èñïîëüçóåòñÿ äëÿ ïîëó÷åíèÿ - ðåçóëüòàòà ôóíêöèé âû÷èñëåíèÿ õåø-ñóììû. - Ñîäåðæèìîå çàïèñè ìîæíî èñïîëüçîâàòü - êàê íàáîð èç 4 öåëûõ ÷èñåë, èëè êàê - ìàññèâ èç 16 áàéò } - PMD5Digest = ^TMD5Digest; - - TMD5Digest = Record - Case Integer Of - 0: (A, B, C, D: LongInt); - 1: (v: Array[0..15] Of Byte); - End; - -{ The MD5String function evaluates the MD5 hashsum for - a string. The S parameter specifies a string to - evaluate hashsum } -// âû÷èñëåíèå õåø-ñóììû äëÿ ñòðîêè -Function MD5String(Const S: String): TMD5Digest; - -{ The MD5File function evaluates the MD5 hashsum for - a file. The FileName parameter specifies the name - of a file to evaluate hashsum } -// âû÷èñëåíèå õåø-ñóììû äëÿ ôàéëà -Function MD5File(Const FileName: String): TMD5Digest; - -{ The MD5Stream function evaluates the MD5 hashsum for - a stream. The Stream parameters specifies the - TStream descendant class object to evaluate hashsum } -// âû÷èñëåíèå õåø-ñóììû äëÿ ñîäåðæèîãî ïîòîêà Stream -Function MD5Stream(Const Stream: TStream): TMD5Digest; - -{ The MD5Buffer function evaluates the MD5 hashsum for - any memory buffer. The Buffer parameters specifies a - buffer to evaluate hashsum. The Size parameter specifies - the size (in bytes) of a buffer } -// âû÷èñëåíèå õåø-ñóììû äëÿ ïðîèçâîëüíîãî áóôåðà -Function MD5Buffer(Const Buffer; Size: Integer): TMD5Digest; - -{ The MD5DigestToStr function converts the result of - a hashsum evaluation function into a string of - hexadecimal digits } -// ïðåîáðàçîâàíèå õåø-ñóììû â ñòðîêó èç øåñòíàäöàòåðè÷íûõ öèôð -Function MD5DigestToStr(Const Digest: TMD5Digest): String; - - -{ The MD5DigestCompare function compares two - TMD5Digest record variables. This function returns - TRUE if parameters are equal or FALSE otherwise } -// ñðàâíåíèå äâóõ õåø-ñóìì -Function MD5DigestCompare(Const Digest1, Digest2: TMD5Digest): Boolean; - -{ -Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All -rights reserved. - -License to copy and use this software is granted provided that it -is identified as the "RSA Data Security, Inc. MD5 Message-Digest -Algorithm" in all material mentioning or referencing this software -or this function. - -License is also granted to make and use derivative works provided -that such works are identified as "derived from the RSA Data -Security, Inc. MD5 Message-Digest Algorithm" in all material -mentioning or referencing the derived work. - -RSA Data Security, Inc. makes no representations concerning either -the merchantability of this software or the suitability of this -software for any particular purpose. It is provided "as is" -without express or implied warranty of any kind. - -These notices must be retained in any copies of any part of this -documentation and/or software. -} - -Implementation - -Type - UINT4 = LongWord; - - PArray4UINT4 = ^TArray4UINT4; - TArray4UINT4 = Array[0..3] Of UINT4; - PArray2UINT4 = ^TArray2UINT4; - TArray2UINT4 = Array[0..1] Of UINT4; - PArray16Byte = ^TArray16Byte; - TArray16Byte = Array[0..15] Of Byte; - PArray64Byte = ^TArray64Byte; - TArray64Byte = Array[0..63] Of Byte; - - PByteArray = ^TByteArray; - TByteArray = Array[0..0] Of Byte; - - PUINT4Array = ^TUINT4Array; - TUINT4Array = Array[0..0] Of UINT4; - - PMD5Context = ^TMD5Context; - TMD5Context = Record - state: TArray4UINT4; - count: TArray2UINT4; - buffer: TArray64Byte; - End; - -Const - S11 = 7; - S12 = 12; - S13 = 17; - S14 = 22; - S21 = 5; - S22 = 9; - S23 = 14; - S24 = 20; - S31 = 4; - S32 = 11; - S33 = 16; - S34 = 23; - S41 = 6; - S42 = 10; - S43 = 15; - S44 = 21; - -Var - Padding: TArray64Byte = - ($80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - - -Function _F(x, y, z: UINT4): UINT4; -Begin - Result := (((x) And (y)) Or ((Not x) And (z))); -End; - -Function _G(x, y, z: UINT4): UINT4; -Begin - Result := (((x) And (z)) Or ((y) And (Not z))); -End; - -Function _H(x, y, z: UINT4): UINT4; -Begin - Result := ((x) Xor (y) Xor (z)); -End; - -Function _I(x, y, z: UINT4): UINT4; -Begin - Result := ((y) Xor ((x) Or (Not z))); -End; - -Function ROTATE_LEFT(x, n: UINT4): UINT4; -Begin - Result := (((x) Shl (n)) Or ((x) Shr (32 - (n)))); -End; - -Procedure FF(Var a: UINT4; b, c, d, x, s, ac: UINT4); -Begin - a := a + _F(b, c, d) + x + ac; - a := ROTATE_LEFT(a, s); - a := a + b; -End; - -Procedure GG(Var a: UINT4; b, c, d, x, s, ac: UINT4); -Begin - a := a + _G(b, c, d) + x + ac; - a := ROTATE_LEFT(a, s); - a := a + b; -End; - -Procedure HH(Var a: UINT4; b, c, d, x, s, ac: UINT4); -Begin - a := a + _H(b, c, d) + x + ac; - a := ROTATE_LEFT(a, s); - a := a + b; -End; - -Procedure II(Var a: UINT4; b, c, d, x, s, ac: UINT4); -Begin - a := a + _I(b, c, d) + x + ac; - a := ROTATE_LEFT(a, s); - a := a + b; -End; - -Procedure MD5Encode(Output: PByteArray; Input: PUINT4Array; Len: LongWord); -Var - i, j: LongWord; -Begin - j := 0; - i := 0; - While j < Len Do Begin - output[j] := Byte(input[i] And $FF); - output[j + 1] := Byte((input[i] Shr 8) And $FF); - output[j + 2] := Byte((input[i] Shr 16) And $FF); - output[j + 3] := Byte((input[i] Shr 24) And $FF); - Inc(j, 4); - Inc(i); - End; -End; - -Procedure MD5Decode(Output: PUINT4Array; Input: PByteArray; Len: LongWord); -Var - i, j: LongWord; -Begin - j := 0; - i := 0; - While j < Len Do Begin - Output[i] := UINT4(input[j]) Or (UINT4(input[j + 1]) Shl 8) Or - (UINT4(input[j + 2]) Shl 16) Or (UINT4(input[j + 3]) Shl 24); - Inc(j, 4); - Inc(i); - End; -End; - -Procedure MD5_memcpy(Output: PByteArray; Input: PByteArray; Len: LongWord); -Begin - Move(Input^, Output^, Len); -End; - -Procedure MD5_memset(Output: PByteArray; Value: Integer; Len: LongWord); -Begin - FillChar(Output^, Len, Byte(Value)); -End; - -Procedure MD5Transform(State: PArray4UINT4; Buffer: PArray64Byte); -Var - a, b, c, d: UINT4; - x: Array[0..15] Of UINT4; -Begin - a := State[0]; b := State[1]; c := State[2]; d := State[3]; - MD5Decode(PUINT4Array(@x), PByteArray(Buffer), 64); - - FF(a, b, c, d, x[0], S11, $D76AA478); - FF(d, a, b, c, x[1], S12, $E8C7B756); - FF(c, d, a, b, x[2], S13, $242070DB); - FF(b, c, d, a, x[3], S14, $C1BDCEEE); - FF(a, b, c, d, x[4], S11, $F57C0FAF); - FF(d, a, b, c, x[5], S12, $4787C62A); - FF(c, d, a, b, x[6], S13, $A8304613); - FF(b, c, d, a, x[7], S14, $FD469501); - FF(a, b, c, d, x[8], S11, $698098D8); - FF(d, a, b, c, x[9], S12, $8B44F7AF); - FF(c, d, a, b, x[10], S13, $FFFF5BB1); - FF(b, c, d, a, x[11], S14, $895CD7BE); - FF(a, b, c, d, x[12], S11, $6B901122); - FF(d, a, b, c, x[13], S12, $FD987193); - FF(c, d, a, b, x[14], S13, $A679438E); - FF(b, c, d, a, x[15], S14, $49B40821); - - GG(a, b, c, d, x[1], S21, $F61E2562); - GG(d, a, b, c, x[6], S22, $C040B340); - GG(c, d, a, b, x[11], S23, $265E5A51); - GG(b, c, d, a, x[0], S24, $E9B6C7AA); - GG(a, b, c, d, x[5], S21, $D62F105D); - GG(d, a, b, c, x[10], S22, $2441453); - GG(c, d, a, b, x[15], S23, $D8A1E681); - GG(b, c, d, a, x[4], S24, $E7D3FBC8); - GG(a, b, c, d, x[9], S21, $21E1CDE6); - GG(d, a, b, c, x[14], S22, $C33707D6); - GG(c, d, a, b, x[3], S23, $F4D50D87); - - GG(b, c, d, a, x[8], S24, $455A14ED); - GG(a, b, c, d, x[13], S21, $A9E3E905); - GG(d, a, b, c, x[2], S22, $FCEFA3F8); - GG(c, d, a, b, x[7], S23, $676F02D9); - GG(b, c, d, a, x[12], S24, $8D2A4C8A); - - HH(a, b, c, d, x[5], S31, $FFFA3942); - HH(d, a, b, c, x[8], S32, $8771F681); - HH(c, d, a, b, x[11], S33, $6D9D6122); - HH(b, c, d, a, x[14], S34, $FDE5380C); - HH(a, b, c, d, x[1], S31, $A4BEEA44); - HH(d, a, b, c, x[4], S32, $4BDECFA9); - HH(c, d, a, b, x[7], S33, $F6BB4B60); - HH(b, c, d, a, x[10], S34, $BEBFBC70); - HH(a, b, c, d, x[13], S31, $289B7EC6); - HH(d, a, b, c, x[0], S32, $EAA127FA); - HH(c, d, a, b, x[3], S33, $D4EF3085); - HH(b, c, d, a, x[6], S34, $4881D05); - HH(a, b, c, d, x[9], S31, $D9D4D039); - HH(d, a, b, c, x[12], S32, $E6DB99E5); - HH(c, d, a, b, x[15], S33, $1FA27CF8); - HH(b, c, d, a, x[2], S34, $C4AC5665); - - II(a, b, c, d, x[0], S41, $F4292244); - II(d, a, b, c, x[7], S42, $432AFF97); - II(c, d, a, b, x[14], S43, $AB9423A7); - II(b, c, d, a, x[5], S44, $FC93A039); - II(a, b, c, d, x[12], S41, $655B59C3); - II(d, a, b, c, x[3], S42, $8F0CCC92); - II(c, d, a, b, x[10], S43, $FFEFF47D); - II(b, c, d, a, x[1], S44, $85845DD1); - II(a, b, c, d, x[8], S41, $6FA87E4F); - II(d, a, b, c, x[15], S42, $FE2CE6E0); - II(c, d, a, b, x[6], S43, $A3014314); - II(b, c, d, a, x[13], S44, $4E0811A1); - II(a, b, c, d, x[4], S41, $F7537E82); - II(d, a, b, c, x[11], S42, $BD3AF235); - II(c, d, a, b, x[2], S43, $2AD7D2BB); - II(b, c, d, a, x[9], S44, $EB86D391); - - Inc(State[0], a); - Inc(State[1], b); - Inc(State[2], c); - Inc(State[3], d); - - MD5_memset(PByteArray(@x), 0, SizeOf(x)); -End; - - -Procedure MD5Init(Var Context: TMD5Context); -Begin - FillChar(Context, SizeOf(Context), 0); - Context.state[0] := $67452301; - Context.state[1] := $EFCDAB89; - Context.state[2] := $98BADCFE; - Context.state[3] := $10325476; -End; - -Procedure MD5Update(Var Context: TMD5Context; Input: PByteArray; InputLen: LongWord); -Var - i, index, partLen: LongWord; - -Begin - index := LongWord((context.count[0] Shr 3) And $3F); - Inc(Context.count[0], UINT4(InputLen) Shl 3); - If Context.count[0] < UINT4(InputLen) Shl 3 Then Inc(Context.count[1]); - Inc(Context.count[1], UINT4(InputLen) Shr 29); - partLen := 64 - index; - If inputLen >= partLen Then Begin - MD5_memcpy(PByteArray(@Context.buffer[index]), Input, PartLen); - MD5Transform(@Context.state, @Context.buffer); - i := partLen; - While i + 63 < inputLen Do Begin - MD5Transform(@Context.state, PArray64Byte(@Input[i])); - Inc(i, 64); - End; - index := 0; - End Else i := 0; - MD5_memcpy(PByteArray(@Context.buffer[index]), PByteArray(@Input[i]), inputLen - i); -End; - - -Procedure MD5Final(Var Digest: TMD5Digest; Var Context: TMD5Context); -Var - bits: Array[0..7] Of Byte; - index, padLen: LongWord; -Begin - MD5Encode(PByteArray(@bits), PUINT4Array(@Context.count), 8); - index := LongWord((Context.count[0] Shr 3) And $3F); - If index < 56 Then padLen := 56 - index Else padLen := 120 - index; - MD5Update(Context, PByteArray(@PADDING), padLen); - MD5Update(Context, PByteArray(@Bits), 8); - MD5Encode(PByteArray(@Digest), PUINT4Array(@Context.state), 16); - MD5_memset(PByteArray(@Context), 0, SizeOf(Context)); -End; - -Function MD5DigestToStr(Const Digest: TMD5Digest): String; -Var - i: Integer; -Begin - Result := ''; - For i := 0 To 15 Do Result := Result + IntToHex(Digest.v[i], 2); -End; - -Function MD5String(Const S: String): TMD5Digest; -Begin - Result := MD5Buffer(PChar(S)^, Length(S)); -End; - -Function MD5File(Const FileName: String): TMD5Digest; -Var - F: TFileStream; -Begin - F := TFileStream.Create(FileName, fmOpenRead); - Try - Result := MD5Stream(F); - Finally - F.Free; - End; -End; - -Function MD5Stream(Const Stream: TStream): TMD5Digest; -Var - Context: TMD5Context; - Buffer: Array[0..4095] Of Byte; - Size: Integer; - ReadBytes: Integer; - TotalBytes: Integer; - SavePos: Integer; -Begin - MD5Init(Context); - Size := Stream.Size; - SavePos := Stream.Position; - TotalBytes := 0; - Try - Stream.Seek(0, soFromBeginning); - Repeat - ReadBytes := Stream.Read(Buffer, SizeOf(Buffer)); - Inc(TotalBytes, ReadBytes); - MD5Update(Context, @Buffer, ReadBytes); - Until (ReadBytes = 0) Or (TotalBytes = Size); - Finally - Stream.Seek(SavePos, soFromBeginning); - End; - MD5Final(Result, Context); -End; - -Function MD5Buffer(Const Buffer; Size: Integer): TMD5Digest; -Var - Context: TMD5Context; -Begin - MD5Init(Context); - MD5Update(Context, PByteArray(@Buffer), Size); - MD5Final(Result, Context); -End; - -Function MD5DigestCompare(Const Digest1, Digest2: TMD5Digest): Boolean; -Begin - Result := False; - If Digest1.A <> Digest2.A Then Exit; - If Digest1.B <> Digest2.B Then Exit; - If Digest1.C <> Digest2.C Then Exit; - If Digest1.D <> Digest2.D Then Exit; - Result := True; -End; - -End. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MapStream.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/MapStream.pas deleted file mode 100644 index af0b67409a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MapStream.pas +++ /dev/null @@ -1,185 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -//*****************************************************************// -// // -// TMapStream // -// Copyright© BrandsPatch LLC // -// http://www.explainth.at // -// // -// All Rights Reserved // -// // -// Permission is granted to use, modify and redistribute // -// the code in this Delphi unit on the condition that this // -// notice is retained unchanged. // -// // -// BrandsPatch declines all responsibility for any losses, // -// direct or indirect, that may arise as a result of using // -// this code. // -// // -//*****************************************************************// -unit MapStream; - -interface - -uses Windows, SysUtils, Classes, SyncObjs; - -const MAXINTMINUS = MAXINT - 1; - -type TMapBytes = array[0..MAXINTMINUS] of Byte; - PMapBytes = ^TMapBytes; - -type TMapStream = class(TObject) -private - FHandle: THandle; - FPosition: Integer; - FSize: Integer; - FTimeOut: Integer; - procedure SetPosition(Value: Integer); - function CountGood(Count: Integer):Boolean; - function GrabEvent: Boolean; - procedure ReleaseEvent; -protected - FEvent: TEvent; - FMemory: PMapBytes; -public - property Position: Integer read FPosition write SetPosition; - constructor CreateEx(const AName: String; ASize,ATimeOut: Integer); - destructor Destroy; override; - function Clear: Boolean; - function CopyFrom(AStream: TStream;Count: Integer): Boolean; - function ReadBuffer(P: Pointer; Count: Integer): Boolean; - function WriteBuffer(P: Pointer; Count: Integer): Boolean; -end; - -type ENoMapping = class(Exception); - -implementation - -// MapStream Create & Destroy -constructor TMapStream.CreateEx(const AName:String;ASize,ATimeOut:Integer); -begin - inherited Create; - FSize := ASize; - FTimeOut := ATimeOut; - if (FSize < 1) or (FSize > MAXINTMINUS) then FSize:=MAXWORD; - if (FTimeOut < 1) or (FTimeOut > 5000) then FTimeOut:=2000; - //2000ms timeout for safety - FHandle:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,FSize,PChar(AName)); - //See the Windows Kernel32 CreateFileMapping function for information - if (FHandle = 0) then ENoMapping.Create(Format('%s file mapping failed.',[AName])) - else begin - FMemory:=MapViewOfFile(FHandle,FILE_MAP_ALL_ACCESS,0,0,0); - - FEvent:=TEvent.Create(nil,True,True,Format('ExplainThat_%s_MAP',[AName])); - {1. map a view of the file mapping into the address - space of the parent application - - 2. create an event to prevent simultaneous access - to the map by different apps. We try to make the - event name unique so we don't end up with a handle to - an unrelated event that already exists - } - end; -end; - -destructor TMapStream.Destroy; -begin - UnMapViewOfFile(FMemory); - CloseHandle(FHandle); - FEvent.Free; - inherited; -end; - -function TMapStream.CountGood(Count:Integer):Boolean; -begin - Result:=(FPosition + Count < FSize); -end; - -function TMapStream.GrabEvent:Boolean; -begin - Result:=True; - with FEvent do - begin - case WaitFor(FTimeOut) of - wrSignaled:ReSetEvent; - {locks the event for exclusive use by this app. Funny name, ReSetEvent, not - our choice!} - else Result:=False; - end; - end; -end; - -procedure TMapStream.ReleaseEvent; -begin - FEvent.SetEvent; //unlock the event so other apps can use it -end; - -// MapStream Manipulation -function TMapStream.Clear:Boolean; -begin - if GrabEvent then - try - FillChar(FMemory^[0],FSize,0); - FPosition:=0; - Result:=True; - finally ReleaseEvent end else Result:=False; -end; - -function TMapStream.CopyFrom(AStream:TStream;Count:Integer):Boolean; - - function SizeGood:Boolean; - var i,ASize:Integer; - begin - ASize:=AStream.Size; - if (Count = 0) or (Count > ASize) then - begin - Count:=ASize; - AStream.Position:=0; - end; - Result:=(FPosition + Count < FSize); - {make sure the copy block is not too big. Incidentally, also make Count = 0 - as in Delphi.TStream} - end; - -begin - if SizeGood and GrabEvent then - try - AStream.ReadBuffer(Byte(FMemory^[FPosition]),Count); - Result:=True; - finally ReleaseEvent end else Result:=False; -end; - -function TMapStream.ReadBuffer(P:Pointer;Count:Integer):Boolean; -begin - if CountGood(Count) and GrabEvent then - try - Move(FMemory^[FPosition],P^,Count); - inc(FPosition,Count); - Result:=True; - finally ReleaseEvent end else Result:=False; -end; - -function TMapStream.WriteBuffer(P:Pointer;Count:Integer):Boolean; -begin - if CountGood(Count) and GrabEvent then - try - Move(P^,FMemory^[FPosition],Count); - inc(FPosition,Count); - Result:=True; - finally ReleaseEvent end else Result:=False; -end; - -procedure TMapStream.SetPosition(Value:Integer); -begin - if (Value < FSize) and (Value >= 0) then FPosition:=Value; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/Menu.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/Menu.pas deleted file mode 100644 index b2218747b5..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/Menu.pas +++ /dev/null @@ -1,326 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -unit Menu; - -{$I jedi.inc} - -interface - -uses - Windows, Classes, SysUtils, ShellApi, MsgExport, m_api, Database, Global; - -type - TMenuItem = record - Name: String; - Icon: String; - Position: Integer; - Proc: TMIRANDASERVICEPARAM; - Flags: DWord; - end; - -var - MainMenuItems: Array [1..9] of TMenuItem; - MainMenuHandle: Array [1..9] of THandle; - MenuHandle: Array [1..9] of THandle; - ChildExport: TExportForm; - -procedure MenuMainItemsInit; cdecl; forward; -procedure RebuildMainMenu; cdecl; forward; -{$ifdef DELPHIXE_UP} -function MainMenuSync(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuGetContactList(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuCheckUpdate(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuExportAllHistory(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuCheckMD5Hash(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuCheckAndDeleteMD5Hash(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuUpdateContactList(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuSettings(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -function MainMenuAbout(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; forward; -{$ELSE} -function MainMenuSync(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuGetContactList(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuCheckUpdate(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuExportAllHistory(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuCheckMD5Hash(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuCheckAndDeleteMD5Hash(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuUpdateContactList(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuSettings(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -function MainMenuAbout(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; forward; -{$endif DELPHIXE_UP} - -implementation - -uses Contacts, About, FSMonitor; - -{ Àêòèâèðóåì ìåíþ } -procedure MenuMainItemsInit; -begin - MainMenuItems[1].Name := WideStringToString(GetLangStr('SyncButton'), CP_ACP); - MainMenuItems[1].Icon := 'ICON_0'; - MainMenuItems[1].Position := 000000; - MainMenuItems[1].Proc := MainMenuSync; - - MainMenuItems[2].Name := WideStringToString(GetLangStr('ExportAllHistoryButton'), CP_ACP); - MainMenuItems[2].Icon := ''; - MainMenuItems[2].Position := 100000; - MainMenuItems[2].Proc := MainMenuExportAllHistory; - - MainMenuItems[3].Name := WideStringToString(GetLangStr('GetContactListButton'), CP_ACP); - MainMenuItems[3].Icon := ''; - MainMenuItems[3].Position := 100001; - MainMenuItems[3].Proc := MainMenuGetContactList; - - MainMenuItems[4].Name := WideStringToString(GetLangStr('CheckMD5Hash'), CP_ACP); - MainMenuItems[4].Icon := ''; - MainMenuItems[4].Position := 100002; - MainMenuItems[4].Proc := MainMenuCheckMD5Hash; - - MainMenuItems[5].Name := WideStringToString(GetLangStr('CheckAndDeleteMD5Hash'), CP_ACP); - MainMenuItems[5].Icon := ''; - MainMenuItems[5].Position := 100003; - MainMenuItems[5].Proc := MainMenuCheckAndDeleteMD5Hash; - - MainMenuItems[6].Name := WideStringToString(GetLangStr('UpdateContactListButton'), CP_ACP); - MainMenuItems[6].Icon := ''; - MainMenuItems[6].Position := 100004; - MainMenuItems[6].Proc := MainMenuUpdateContactList; - - MainMenuItems[7].Name := WideStringToString(GetLangStr('CheckUpdateButton'), CP_ACP); - MainMenuItems[7].Icon := ''; - MainMenuItems[7].Position := 100004; - MainMenuItems[7].Proc := MainMenuCheckUpdate; - - MainMenuItems[8].Name := WideStringToString(GetLangStr('SettingsButton'), CP_ACP); - MainMenuItems[8].Icon := ''; - MainMenuItems[8].Position := 200000; - MainMenuItems[8].Proc := MainMenuSettings; - - MainMenuItems[9].Name := WideStringToString(GetLangStr('AboutButton'), CP_ACP); - MainMenuItems[9].Icon := ''; - MainMenuItems[9].Position := 300000; - MainMenuItems[9].Proc := MainMenuAbout; -end; - -{ Ïåðåñòðîéêà ïóíêòîâ â îñíîâíîì ìåíþ } -procedure RebuildMainMenu; -var - I: Integer; - Mi: TCListMenuItem; -begin - // Èíèöèàëèçàöèÿ îñíîâíîãî ìåíþ - MenuMainItemsInit; - // Ìîäèôèöèðóåì ìåíþ - for I := Low(MenuHandle) to High(MenuHandle) do - begin - ZeroMemory(@Mi, SizeOf(Mi)); - Mi.cbSize := SizeOf(Mi); - Mi.flags := CMIM_FLAGS; - Mi.flags := Mi.flags or CMIM_NAME; - Mi.szName.a := pAnsiChar(AnsiString(MainMenuItems[I].Name)); - CallService(MS_CLIST_MODIFYMENUITEM, MenuHandle[I], Windows.LPARAM(@Mi)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà RebuildMainMenu: ' + 'MainMenuName = ' + MainMenuItems[I].Name, 2); - end; -end; - -{ Ñèíõðîíèçèðîâàòü èñòîðèþ } -{$ifdef DELPHIXE_UP} -function MainMenuSync(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuSync(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - OnSendMessageToOneComponent('HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')', '002'); -end; - -{ Ýêñïîðò èñòîðèè } -{$ifdef DELPHIXE_UP} -function MainMenuExportAllHistory(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuExportAllHistory(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - if ExportFormDestroy then - ChildExport := TExportForm.Create(nil); - if not ChildExport.Showing then - ChildExport.Show - else - ChildExport.BringFormToFront(ChildExport); -end; - -{ Ñîõðàíèòü ñïèñîê ïðîòîêîëîâ è êîíòàêò ëèñò } -{$ifdef DELPHIXE_UP} -function MainMenuGetContactList(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuGetContactList(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -var - hContact: Cardinal; - ContactProto, ContactID, ContactName, GroupName: AnsiString; - AccountCount: Integer; - AccountName: ^PPROTOACCOUNT; -begin - // Ïîëó÷àåì ñïèñîê êîíòàêòîâ - hContact := db_find_first(); - while hContact <> 0 do - begin - ContactProto := GetContactProto(hContact); - ContactID := GetContactID(hContact, ContactProto); - ContactName := GetContactDisplayName(hContact, '', True); - GroupName := GetDBStr(hContact , 'CList' , 'Group' , GetLangStr('ContactNotInTheList')); - if ContactName = '' then - ContactName := TranslateW('Unknown Contact'); - if ContactID = '' then - ContactID := TranslateW('Unknown Contact'); - if not ((MatchStrings(LowerCase(ContactProto), 'skype*')) or (ContactID = TranslateW('Unknown Contact')) or MatchStrings(LowerCase(ContactProto), 'metacontacts*')) then - WriteInLog(ProfilePath, Format('%s;%s;%s;%d', [ContactID, ContactName, GroupName, StrContactProtoToInt(ContactProto)]), 3); - hContact := db_find_next(hContact); - end; - AccountCount := 0; - // Âûãðóæàåì ñïèñîê ïðîòîêîëîâ â ôàéë ProtoList.csv - if (CallService(MS_PROTO_ENUMACCOUNTS, Integer(@AccountCount), Integer(@AccountName)) = 0) and (AccountCount <> 0) then - begin - while AccountCount > 0 do - begin - if not((AccountName^.szModuleName = 'MetaContacts') or (MatchStrings(LowerCase(AccountName^.szModuleName), 'skype*'))) then - //if not MatchStrings(LowerCase(AccountName^.szModuleName), 'skype*') then - WriteInLog(ProfilePath, Format('%s;%s;%d;%s;%s;%s', [AccountName^.szModuleName, GetMyContactID(AccountName^.szModuleName), StrContactProtoToInt(AccountName^.szProtoName), GetMyContactDisplayName(AccountName^.szModuleName), '', '']), 4); - Inc(AccountName); - Dec(AccountCount); - end; - end; - // Çàêðûâàåì ôàéëû - if ContactListLogOpened then - CloseLogFile(3); - if ProtoListLogOpened then - CloseLogFile(4); - Result := 0; - if (FileExists(ProfilePath + ContactListName)) and (FileExists(ProfilePath + ProtoListName)) then - MsgInf(htdPluginShortName, GetLangStr('SaveContactListCompleted')) - else - MsgInf(htdPluginShortName, GetLangStr('SaveContactListErr')); -end; - -{ Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé } -{$ifdef DELPHIXE_UP} -function MainMenuCheckMD5Hash(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuCheckMD5Hash(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - OnSendMessageToOneComponent('HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')', '0050'); -end; - -{ Çàïóñòèòü ïåðåðàñ÷åò MD5-õåøåé è óäàëåíèÿ äóáëèêàòîâ } -{$ifdef DELPHIXE_UP} -function MainMenuCheckAndDeleteMD5Hash(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuCheckAndDeleteMD5Hash(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - OnSendMessageToOneComponent('HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')', '0051'); -end; - -{ Çàïðîñ íà îáíîâëåíèå êîíòàêò ëèñòà } -{$ifdef DELPHIXE_UP} -function MainMenuUpdateContactList(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuUpdateContactList(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - if FileExists(ProfilePath+ContactListName) then - OnSendMessageToOneComponent('HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')', '007') - else - MsgInf(htdPluginShortName, Format(GetLangStr('SendUpdateContactListErr'), [ContactListName])); -end; - -{ Çàïóñòèòü îáíîâëåíèå } -{$ifdef DELPHIXE_UP} -function MainMenuCheckUpdate(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuCheckUpdate(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -var - WinName: String; -begin - // Èùåì îêíî HistoryToDBUpdater - WinName := 'HistoryToDBUpdater'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater íå íàéäåí, òî èùåì äðóãîå îêíî - begin - WinName := 'HistoryToDBUpdater for ' + htdIMClientName + ' ('+MyAccount+')'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater íå çàïóùåí, òî çàïóñêàåì - begin - if FileExists(PluginPath + 'HistoryToDBUpdater.exe') then - begin - // Îòïðàâëåí çàïðîñ - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBUpdater.exe'), PWideChar(' "'+ProfilePath+'"'), nil, SW_SHOWNORMAL); - end - else - MsgInf(htdPluginShortName, Format(GetLangStr('ERR_NO_FOUND_UPDATER'), [PluginPath + 'HistoryToDBUpdater.exe'])); - end - else // Èíà÷å ïîñûëàåì çàïðîñ - OnSendMessageToOneComponent(WinName, '0040'); - end - else // Èíà÷å ïîñûëàåì çàïðîñ - OnSendMessageToOneComponent(WinName, '0040'); -end; - -{ Ïîêàçûâàåì îêíî Íàñòðîåê ïëàãèíà } -{$ifdef DELPHIXE_UP} -function MainMenuSettings(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuSettings(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -var - WinName: String; -begin - Result := 0; - // Èùåì îêíî HistoryToDBViewer - WinName := 'HistoryToDBViewer'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBViewer íå íàéäåí, òî èùåì äðóãîå îêíî - begin - WinName := 'HistoryToDBViewer for ' + htdIMClientName + ' ('+MyAccount+')'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBViewer íå çàïóùåí, òî çàïóñêàåì - begin - if FileExists(PluginPath + 'HistoryToDBViewer.exe') then - begin - // Îòïðàâëåí çàïðîñ íà ïîêàç íàñòðîåê - StopWatch; - WriteCustomINI(ProfilePath, 'SettingsFormRequestSend', '1'); - StartWatch(ProfilePath, FILE_NOTIFY_CHANGE_LAST_WRITE, False, @ProfileDirChangeCallBack); - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBViewer.exe'), PWideChar(' "'+PluginPath+'" "'+ProfilePath+'" 4'), nil, SW_SHOWNORMAL); - end - else - MsgInf(htdPluginShortName, Format(GetLangStr('ERR_NO_FOUND_VIEWER'), [PluginPath + 'HistoryToDBViewer.exe'])); - end - else // Èíà÷å ïîñûëàåì çàïðîñ - OnSendMessageToOneComponent(WinName, '005'); - end - else // Èíà÷å ïîñûëàåì çàïðîñ íà ïîêàç íàñòðîåê - OnSendMessageToOneComponent(WinName, '005'); -end; - -{ Ïîêàçûâàåì îêíî Î ïëàãèíå } -{$ifdef DELPHIXE_UP} -function MainMenuAbout(wParam: wParam; lParam: lParam; lParam1: LPARAM): int_ptr; cdecl; -{$ELSE} -function MainMenuAbout(wParam: wParam; lParam: lParam; lParam1: integer): integer; cdecl; -{$endif DELPHIXE_UP} -begin - Result := 0; - AboutForm.Show; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dpr b/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dpr deleted file mode 100644 index 660f2e754d..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dpr +++ /dev/null @@ -1,933 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -library MirandaNGHistoryToDB; - -{$I Global.inc} - -uses - madExcept, - madLinkDisAsm, - madListHardware, - madListProcesses, - madListModules, - m_api, - Windows, - SysUtils, - XMLIntf, - XMLDoc, - ShellApi, - WideStrUtils, - JclStringConversions, - Contacts in 'Contacts.pas', - Database in 'Database.pas', - Menu in 'Menu.pas', - About in 'About.pas', - MsgExport in 'MsgExport.pas' {ExportForm}, - Global in 'Global.pas', - FSMonitor in 'FSMonitor.pas', - MapStream in 'MapStream.pas'; - -// use it to make plugin unicode-aware -{$DEFINE UNICODE} - -// tell Miranda about this plugin ExVersion -function MirandaPluginInfoEx(mirandaVersion:DWORD): PPLUGININFOEX; cdecl; -begin - PluginInfo.cbSize:= SizeOf(TPLUGININFOEX); - PluginInfo.shortName:= htdPluginShortName; - PluginInfo.version:= htdVersion; - PluginInfo.description:= htdDescription_EN; - PluginInfo.author:= htdAuthor_EN; - PluginInfo.authorEmail:= htdAuthorEmail; - PluginInfo.copyright:= htdCopyright_EN; - PluginInfo.homepage:= htdHomePageURL; - PluginInfo.flags:= UNICODE_AWARE; - PluginInfo.uuid:= MIID_HISTORYTODBDLL; - Result := @PluginInfo; -end; - -var - {$ifdef REPLDEFHISTMOD} - PluginInterfaces: array[0..1] of TGUID; - {$else} - PluginInterfaces: array[0..0] of TGUID; - {$endif REPLDEFHISTMOD} - - PluginStatus: Boolean = False; - StartExport: Boolean = False; - StartUpdate: Boolean = False; - DefaultINICopy: Boolean = False; - - HookModulesLoad, - HookBuildMenu, - HookContactMenu, - HookSystemHistoryMenu, - {$ifdef REPLDEFHISTMOD} - HookShowMainHistory, - {$endif REPLDEFHISTMOD} - HookEventAdded, - //HookTTBLoaded, - HookShowHistoryAPI, - HookShowContactHistoryAPI, - HookShowVersionAPI: THandle; - //hTTBButton: THandle = 0; - DialogMainWindow: HWND = 0; - -const - hLangpack: THANDLE = 0; - -function OnModulesLoad(awParam:WPARAM; alParam:LPARAM): Integer; cdecl; forward; -function OnBuildContactMenu(awParam: WPARAM; alParam: LPARAM): Integer; cdecl; forward; -function OnEventAdded(wParam: WPARAM; lParam: LPARAM): Integer; cdecl; forward; -//function OnTTBLoaded(awParam: WPARAM; alParam: LPARAM): Integer; cdecl; forward; -function OpenHistoryWindow(wParam:WPARAM;lParam:LPARAM): Integer; cdecl; forward; - -// tell Miranda about supported interfaces -function MirandaPluginInterfaces:PMUUID; cdecl; -begin - {$ifdef REPLDEFHISTMOD} - PluginInterfaces[0]:=MIID_UIHISTORY; - PluginInterfaces[1]:=MIID_LAST; - {$else} - PluginInterfaces[0]:=MIID_LAST; - {$endif REPLDEFHISTMOD} - Result := @PluginInterfaces; -end; - -{ Ïîêàçûâàåì èñòîðèþ êîíòàêòà } -function OpenHistoryWindow(wParam: WPARAM; lParam: LPARAM): Integer; cdecl; -var - ContactProto, ContactID, ContactName: AnsiString; - MyContactName, MyContactID: AnsiString; - ProtoType: Integer; - WinName: String; -begin - Result := 0; - ContactProto := GetContactProto(wParam); - ContactID := GetContactID(wParam, ContactProto); - ContactName := GetContactDisplayName(wParam, '', True); - MyContactName := GetMyContactDisplayName(ContactProto); - MyContactID := GetMyContactID(ContactProto); - if ContactID = '' then - ContactID := TranslateW('Unknown Contact'); - if ContactName = '' then - ContactName := TranslateW('Unknown Contact'); - if MyContactID = '' then - MyContactID := TranslateW('Unknown Contact'); - if MyContactName = '' then - MyContactName := TranslateW('Unknown Contact'); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ PluginContactMenuCommand: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto + ' | My Contact ID: ' + MyContactID + ' | My Contact Name: ' + MyContactName, 2); - // Òèï èñòîðèè - ProtoType := StrContactProtoToInt(ContactProto); - // Ïîêàçûâàåì ïîñëåäíèå N ñîîáùåíèé ïåðåïèñêè - WinName := 'HistoryToDBViewer for ' + htdIMClientName + ' ('+MyAccount+')'; - if SearchMainWindow(pWideChar(WinName)) then - begin - // Ôîðìàò êîìàíäû: - // äëÿ èñòîðèè êîíòàêòà: - // 008|0|UserID|UserName|ProtocolType - // äëÿ èñòîðèè ÷àòà: - // 008|2|ChatName - OnSendMessageToOneComponent(WinName, '008|0|'+ContactID+'|'+ContactName+'|'+IntToStr(ProtoType)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà PluginContactMenuCommand: Îòïðàâëÿåì çàïðîñ - 008|0|'+ContactID+'|'+ContactName+'|'+IntToStr(ProtoType), 2); - end - else - begin - if FileExists(PluginPath + 'HistoryToDBViewer.exe') then - begin - if MatchStrings(LowerCase(ContactProto), 'skype*') then // Skype - begin - // Ñòàâèì ïðèçíàê òèïà èñòîðèè (Èñòîðèÿ ÷àò-ñîîáùåíèé) - Glogal_History_Type := 2; - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà PluginContactMenuCommand: Çàïóñêàåì ' + PluginPath + 'HistoryToDBViewer.exe' + ' "'+PluginPath+'" "'+ProfilePath+'" '+IntToStr(Glogal_History_Type)+' "'+MyContactID+'" "'+MyContactName+'" "'+ContactName+'"', 2); - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBViewer.exe'), PWideChar(' "'+PluginPath+'" "'+ProfilePath+'" '+IntToStr(Glogal_History_Type)+' "'+MyContactID+'" "'+MyContactName+'" "'+ContactName+'"'), nil, SW_SHOWNORMAL); - end - else - begin - // Ñòàâèì ïðèçíàê òèïà èñòîðèè (Èñòîðèÿ IM-ñîîáùåíèé) - Glogal_History_Type := 0; - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ïðîöåäóðà PluginContactMenuCommand: Çàïóñêàåì ' + PluginPath + 'HistoryToDBViewer.exe' + ' "'+PluginPath+'" "'+ProfilePath+'" '+IntToStr(Glogal_History_Type)+' "'+MyContactID+'" "'+MyContactName+'" "'+ContactID+'" "'+ContactName+'" '+IntToStr(ProtoType), 2); - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBViewer.exe'), PWideChar(' "'+PluginPath+'" "'+ProfilePath+'" '+IntToStr(Glogal_History_Type)+' "'+MyContactID+'" "'+MyContactName+'" "'+ContactID+'" "'+ContactName+'" '+IntToStr(ProtoType)), nil, SW_SHOWNORMAL); - end; - end - else - MsgInf(htdPluginShortName, Format(GetLangStr('ERR_NO_FOUND_VIEWER'), [PluginPath + 'HistoryToDBViewer.exe'])); - end; -end; - -{ Ïîñòðîåíèå ìåíþ êîíòàêòà òîëüêî äëÿ îïðåäåëåííûõ ïðîòîêîëîâ } -function OnBuildContactMenu(awParam: WPARAM; alParam: LPARAM): Integer; cdecl; -var - MenuItem: TCLISTMENUITEM; - ContactProto, ContactID, ContactName: AnsiString; -begin - Result := 0; - ContactProto := GetContactProto(awParam); - // Ìåíþ - ZeroMemory(@MenuItem, SizeOf(MenuItem)); - MenuItem.cbSize := SizeOf(MenuItem); - MenuItem.flags := CMIM_FLAGS; - if (ContactProto = MyAccount) or - MatchStrings(LowerCase(ContactProto), 'icq*') or - MatchStrings(LowerCase(ContactProto), 'jabber*') or - MatchStrings(LowerCase(ContactProto), 'aim*') or - MatchStrings(LowerCase(ContactProto), 'irc*') or - MatchStrings(LowerCase(ContactProto), 'msn*') or - MatchStrings(LowerCase(ContactProto), 'yahoo*') or - MatchStrings(LowerCase(ContactProto), 'gadu*') or - MatchStrings(LowerCase(ContactProto), 'skype*') or - MatchStrings(LowerCase(ContactProto), 'vkonta*') then - begin // Ïîêàçûâàåì ïóíê â ìåíþ êîíòàêòà - ContactID := GetContactID(awParam, ContactProto); - ContactName := GetContactDisplayName(awParam, '', True); - if ContactName = '' then - ContactName := TranslateW('Unknown Contact'); - if ContactID = '' then - ContactID := TranslateW('Unknown Contact'); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - MenuItem.flags := MenuItem.flags or CMIM_NAME; - MenuItem.szName.a := pAnsiChar(AnsiString(Format(WideStringToString(GetLangStr('ShowContactHistory'), CP_ACP), [ContactName, ContactID]))); - CallService(MS_CLIST_MODIFYMENUITEM, HookContactMenu, lParam(@MenuItem)); - if EnableDebug then // Åñëè îòëàäêà - WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnBuildContactMenu: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto, 2); - end - else // Èëè ñêðûâàåì - begin - MenuItem.flags := MenuItem.flags or CMIF_HIDDEN; - CallService(MS_CLIST_MODIFYMENUITEM, HookContactMenu, lParam(@MenuItem)); - if EnableDebug then // Åñëè îòëàäêà - begin - ContactID := GetContactID(awParam, ContactProto); - ContactName := GetContactDisplayName(awParam, '', True); - if ContactName = '' then - ContactName := TranslateW('Unknown Contact'); - if ContactID = '' then - ContactID := TranslateW('Unknown Contact'); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnBuildContactMenu: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto, 2); - end; - end; -end; - -{ Ïåðåõâàò ñîáûòèé â áàçå Ìèðàíäû } -function OnEventAdded(wParam: WPARAM; lParam: LPARAM): Integer; cdecl; -var - ContactProto, ContactID, ContactName: AnsiString; - MyContactName, MyContactID: AnsiString; - BlobSize, ProtoType: Integer; - DBEventInfo: TDBEventInfo; - msgA: PAnsiChar; - msgW: PChar; - msgLen, LenW: Cardinal; - I: Integer; - Msg_RcvrNick, Msg_RcvrAcc, Msg_SenderNick, Msg_SenderAcc, Msg_Text, MD5String: WideString; - Date_Str, MsgStatus: String; - InsertSQLData, EncInsertSQLData, WinName: String; - ASize: Integer; - hContact: THandle; -begin - Result := 0; - ZeroMemory(@DBEventInfo, SizeOf(DBEventInfo)); - DBEventInfo.cbSize := SizeOf(DBEventInfo); - DBEventInfo.pBlob := nil; - BlobSize := CallService(MS_DB_EVENT_GETBLOBSIZE, lParam, 0); - GetMem(DBEventInfo.pBlob, BlobSize); - DBEventInfo.cbBlob := BlobSize; - if (CallService(MS_DB_EVENT_GET, lParam, Integer(@DBEventInfo)) = 0) and (DBEventInfo.eventType = EVENTTYPE_MESSAGE and EVENTTYPE_URL) then - begin - // Ïîëó÷àåì òåêñò ñîîáùåíèÿ - msgA := PAnsiChar(DBEventInfo.pBlob); - msgW := nil; - msgLen := lstrlenA(PAnsiChar(DBEventInfo.pBlob)) + 1; - if msgLen > DBEventInfo.cbBlob then - msgLen := DBEventInfo.cbBlob; - if Boolean(DBEventInfo.flags and DBEF_UTF) then - begin - SetLength(Msg_Text, msgLen); - LenW := Utf8ToWideChar(PChar(Msg_Text), msgLen, msgA, msgLen - 1, CP_ACP); - if Integer(LenW) > 0 then - SetLength(Msg_Text, LenW - 1) - else - Msg_Text := AnsiToWideString(msgA, CP_ACP, msgLen - 1); - end - else - begin - LenW := 0; - if DBEventInfo.cbBlob >= msgLen * SizeOf(Char) then - begin - msgW := PChar(msgA + msgLen); - for i := 0 to ((DBEventInfo.cbBlob - msgLen) div SizeOf(Char)) - 1 do - if msgW[i] = #0 then - begin - LenW := i; - Break; - end; - end; - if (LenW > 0) and (LenW < msgLen) then - SetString(Msg_Text, msgW, LenW) - else - Msg_Text := AnsiToWideString(msgA, CP_ACP, msgLen - 1); - end; - // Òèï èñòîðèè - hContact := wParam; - ContactProto := GetContactProto(hContact); - ProtoType := StrContactProtoToInt(ContactProto); - // Åñëè ñîîáùåíèå îò ìåòàêîíòàêòà, òî íå ïèøåì åãî â ÁÄ - // ò.ê. îíî îòïðàâëÿåòñÿ èòàê â ÁÄ ÷åðåç íóæíûé ïðîòîêîë - if ProtoType = 15 then - Exit; - // Äàííûå ñîáåñåäíèêà - ContactID := GetContactID(hContact, ContactProto); - ContactName := GetContactDisplayName(hContact, '', True); - // Ìîè äàííûå - MyContactName := GetMyContactDisplayName(ContactProto); - MyContactID := GetMyContactID(ContactProto); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - ProtoType := StrContactProtoToInt(ContactProto); - // End - if ContactID = '' then - ContactID := TranslateW('Unknown Contact'); - if ContactName = '' then - ContactName := TranslateW('Unknown Contact'); - if MyContactID = '' then - MyContactID := TranslateW('Unknown Contact'); - if MyContactName = '' then - MyContactName := TranslateW('Unknown Contact'); - // Êîððåêòèðóåì MyContactID è ContactName åñëè ïðèõîäÿò è - // îòïðàâëÿþòñÿ ñîîáùåíèÿ äëÿ Ìåòàêîíòàêòà - {if (ProtoType = 15) and (MyContactID = TranslateW('Unknown Contact')) and (MyContactName <> TranslateW('Unknown Contact')) then - MyContactID := MyContactName; - if (ProtoType = 15) and (ContactName = TranslateW('Unknown Contact')) and (ContactID <> TranslateW('Unknown Contact')) then - ContactName := ContactID;} - // Ýêðàíèðîâàíèå, ïåðåêîäèðîâàíèå è ò.ï. - Msg_SenderNick := PrepareString(pWideChar(AnsiToWideString(MyContactName, CP_ACP))); - Msg_SenderAcc := PrepareString(pWideChar(AnsiToWideString(MyContactID, CP_ACP))); - Msg_SenderNick := WideStringToUTF8(Msg_SenderNick); - Msg_SenderAcc := WideStringToUTF8(Msg_SenderAcc); - Msg_RcvrNick := PrepareString(pWideChar(AnsiToWideString(ContactName, CP_ACP))); - Msg_RcvrAcc := PrepareString(pWideChar(AnsiToWideString(ContactID, CP_ACP))); - Msg_RcvrNick := WideStringToUTF8(Msg_RcvrNick); - Msg_RcvrAcc := WideStringToUTF8(Msg_RcvrAcc); - Msg_Text := WideStringToUTF8(PrepareString(pWideChar(Msg_Text))); - MD5String := Msg_RcvrAcc + FormatDateTime('YYYY-MM-DD HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + Msg_Text; - if (DBType = 'oracle') or (DBType = 'oracle-9i') then - Date_Str := FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) - else - Date_Str := FormatDateTime('YYYY-MM-DD HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)); - if MatchStrings(LowerCase(ContactProto), 'skype*') then - begin - // Îïðåäåëÿåì íàïðàâëåíèå îòïðàâêè (ìû îòïðàâèëè èëè íàì ïðèñëàëè) - if (DBEventInfo.flags and DBEF_SENT) = 0 then - MsgStatus := '0' // Âõîäÿùåå - else - MsgStatus := '1'; // Èñõîäÿùåå - // Ëîã îòëàäêè - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnEventAdded: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto + ' | My Contact ID: ' + MyContactID + ' | My Contact Name: ' + MyContactName + ' | Contact Proto = ' + ContactProto + ' | MsgStatus = ' + MsgStatus + ' | DateTime = ' + FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + ' | Message = ' + Msg_Text, 2); - if (MatchStrings(DBType, 'oracle*')) then // Åñëè Oracle, òî ïèøåì SQL-ëîã â ôîðìàòå CHAT_MSG_LOG_ORACLE - InsertSQLData := Format(CHAT_MSG_LOG_ORACLE, [DBUserName, MsgStatus, 'to_date('''+Date_Str+''', ''dd.mm.yyyy hh24:mi:ss'')', Msg_RcvrNick, 'Skype', Msg_RcvrNick+' ('+Msg_RcvrAcc+')', BoolToIntStr(True), BoolToIntStr(False), BoolToIntStr(False), Msg_Text, EncryptMD5(MD5String)]) - else - InsertSQLData := Format(CHAT_MSG_LOG, [DBUserName, MsgStatus, Date_Str, Msg_RcvrNick, 'Skype', Msg_RcvrNick+' ('+Msg_RcvrAcc+')', BoolToIntStr(True), BoolToIntStr(False), BoolToIntStr(False), Msg_Text, EncryptMD5(MD5String)]); - end - else - begin - // Îïðåäåëÿåì íàïðàâëåíèå îòïðàâêè (ìû îòïðàâèëè èëè íàì ïðèñëàëè) - if (DBEventInfo.flags and DBEF_SENT) = 0 then - MsgStatus := '1' // Âõîäÿùåå - else - MsgStatus := '0'; // Èñõîäÿùåå - // Ëîã îòëàäêè - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnEventAdded: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto + ' | My Contact ID: ' + MyContactID + ' | My Contact Name: ' + MyContactName + ' | Contact Proto = ' + ContactProto + ' | MsgStatus = ' + MsgStatus + ' | DateTime = ' + FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + ' | Message = ' + Msg_Text, 2); - if (MatchStrings(DBType, 'oracle*')) then // Åñëè Oracle, òî ïèøåì SQL-ëîã â ôîðìàòå MSG_LOG_ORACLE - InsertSQLData := Format(MSG_LOG_ORACLE, [DBUserName, IntToStr(ProtoType), Msg_SenderNick, Msg_SenderAcc, Msg_RcvrNick, Msg_RcvrAcc, MsgStatus, 'to_date('''+Date_Str+''', ''dd.mm.yyyy hh24:mi:ss'')', Msg_Text, EncryptMD5(MD5String)]) - else - InsertSQLData := Format(MSG_LOG, [DBUserName, IntToStr(ProtoType), Msg_SenderNick, Msg_SenderAcc, Msg_RcvrNick, Msg_RcvrAcc, MsgStatus, Date_Str, Msg_Text, EncryptMD5(MD5String)]); - end; - // Ïîñûëàåì ñîîáùåíèå ÷åðåç MMF äëÿ Àâòîìàòè÷åñêîãî ðåæèìà ñèíõðîíèçàöèè - if SyncMethod = 0 then - begin - WinName := 'HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')'; - if SearchMainWindow(pWideChar(WinName)) then - begin - EncInsertSQLData := EncryptStr(InsertSQLData); - ASize := 2*Length(EncInsertSQLData); - with FMap do - begin - Clear; - WriteBuffer(@ASize,Sizeof(Integer)); - WriteBuffer(PChar(EncInsertSQLData),ASize); - end; - // Îòïðàâëÿåì ñèãíàë, ÷òî ñîîáùåíèå â ïàìÿòè - OnSendMessageToOneComponent('HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')', '010'); - end - else - WriteInLog(ProfilePath, InsertSQLData, 0); - end - else // Äëÿ ðåæèìà ñèíõðîíèçàöèè ïî ðàñïèñàíèþ è ðó÷íîãî ïèøåì ñîîáùåíèÿ â SQL-ôàéë - WriteInLog(ProfilePath, InsertSQLData, 0); - // Åñëè ðåæèì ïî ðàñïèñàíèþ - if SyncMethod = 2 then - begin - if (SyncInterval > 4) and (SyncInterval < 8) then - begin - Inc(MessageCount); - if (SyncInterval = 5) and (MessageCount = 10) then - begin - OnSendMessageToAllComponent('002'); - MessageCount := 0; - end; - if (SyncInterval = 6) and (MessageCount = 20) then - begin - OnSendMessageToAllComponent('002'); - MessageCount := 0; - end; - if (SyncInterval = 7) and (MessageCount = 30) then - begin - OnSendMessageToAllComponent('002'); - MessageCount := 0; - end; - end; - if SyncInterval = 9 then - begin - Inc(MessageCount); - if MessageCount = SyncMessageCount then - begin - OnSendMessageToAllComponent('002'); - MessageCount := 0; - end; - end; - end; - end; -end; - -{function OnTTBLoaded(awParam: WPARAM; alParam: LPARAM): Integer; cdecl; -var - TTB: TTBButtonV2; -begin - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnTTBLoaded', 2); - if hTTBButton <> 0 then - begin - if ServiceExists(MS_TTB_REMOVEBUTTON)>0 then - begin - CallService(MS_TTB_REMOVEBUTTON, WPARAM(hTTBButton),0); - hTTBButton := 0; - end; - end; - if ShowPluginButton then - begin - if ServiceExists(MS_TTB_ADDBUTTON) > 0 then - begin - ZeroMemory(@TTB, SizeOf(TTB)); - TTB.cbSize := SizeOf(TTB); - TTB.pszServiceUp := MHTD_SHOWSERVICE; - TTB.pszServiceDown:= MHTD_SHOWSERVICE; - TTB.hIconUp := LoadImage(hInstance, 'ICON_0', IMAGE_ICON, 16, 16, 0); - TTB.hIconDn := ttb.hIconUp; - TTB.dwFlags := TTBBF_VISIBLE; - TTB.name := htdDBName; - hTTBButton := CallService(MS_TTB_ADDBUTTON, WPARAM(@TTB), 0); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnTTBLoaded: Êíîïêà äîáàâëåíà.', 2); - end; - end; - Result := 0; -end;} - -{ Cåðâèñ MS_MHTD_SHOWHISTORY - Ñìîòðè äåòàëè â m_historytodb.inc } -function HTDBShowHistory(wParam { 0 } : WPARAM; lParam { 0 } : LPARAM): int_ptr; cdecl; -var - WinName: String; -begin - Result := 0; - // Èùåì îêíî HistoryToDBViewer - WinName := 'HistoryToDBViewer'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBViewer íå íàéäåí, òî èùåì äðóãîå îêíî - begin - WinName := 'HistoryToDBViewer for ' + htdIMClientName + ' ('+MyAccount+')'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBViewer íå çàïóùåí, òî çàïóñêàåì - begin - if FileExists(PluginPath + 'HistoryToDBViewer.exe') then - begin - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBViewer.exe'), PWideChar(' "'+PluginPath+'" "'+ProfilePath+'"'), nil, SW_SHOWNORMAL); - end - else - MsgInf(htdPluginShortName, Format(GetLangStr('ERR_NO_FOUND_VIEWER'), [PluginPath + 'HistoryToDBViewer.exe'])); - end - else // Èíà÷å ïîñûëàåì çàïðîñ íà ïîêàç îêíà - OnSendMessageToOneComponent(WinName, '0040'); - end - else // Èíà÷å ïîñûëàåì çàïðîñ íà ïîêàç îêíà - OnSendMessageToOneComponent(WinName, '0040'); -end; - -{ Cåðâèñ MS_MHTD_SHOWCONTACTHISTORY - Ñìîòðè äåòàëè â m_historytodb.inc } -function HTDBShowContactHistory(wParam { hContact } : WPARAM; lParam { 0 } : LPARAM): int_ptr; cdecl; -begin - Result := OpenHistoryWindow(wParam, 0); -end; - -{ Cåðâèñ MS_MHTD_GETVERSION - Ñìîòðè äåòàëè â m_historytodb.inc } -function HTDBGetVersion(wParam { 0 } : WPARAM; lParam { 0 } : LPARAM): int_ptr; cdecl; -begin - Result := htdVersion; -end; - -function OnModulesLoad(awParam{0}:WPARAM; alParam{0}:LPARAM):integer; cdecl; -var - Mi: TCListMenuItem; - //{$ifdef REPLDEFHISTMOD} - Si: TCListMenuItem; - //{$endif REPLDEFHISTMOD} - AutoCoreLang, UpdTmpPath, WinName: String; - I: Byte; - MenuMainService: PAnsiChar; - //IMUPD: TUpdate; -begin - // Ëîã-ôàéëû çàêðûòû - MsgLogOpened := False; - ErrLogOpened := False; - DebugLogOpened := False; - ContactListLogOpened := False; - ProtoListLogOpened := False; - ImportLogOpened := False; - // Èíèöèàëèçàöèÿ øèôðîâàíèÿ - EncryptInit; - // Îïðåäåëÿåì ëîêàëèçàöèþ - if FileExists(ExtractFilePath(ParamStr(0))+'Langpack_russian.txt') then - AutoCoreLang := 'Russian' - else - AutoCoreLang := 'English'; - // Çàïðîñ íà çàêðûòèå âñåõ êîìïîíåíòîâ ïëàãèíà åñëè îíè áûëè çàïóùåíû - OnSendMessageToAllComponent('003'); - // Êîïèðóåì äåôîëòíûé ôàéë êîíôèãóðàöèè þçåðó â ïðîôèëü - if FileExists(PluginPath + DefININame) then - begin - if FileExists(ProfilePath + ININame) then - RenameFile(ProfilePath + ININame, ProfilePath + ININame + '.' + FormatDateTime('ddmmyyhhmmss', Now)); - if CopyFileEx(PChar(PluginPath + DefININame), PChar(ProfilePath + ININame), nil, nil, nil, COPY_FILE_FAIL_IF_EXISTS) then - begin - DefaultINICopy := True; - if FileExists(ProfilePath + ININame) then - DeleteFile(PluginPath + DefININame); - end; - end; - // Çàäàåì âîïðîñû ïðè ïåðâîì çàïóñêå - if (GetDBInt(htdDBName, 'FirstRun.FirstActivate', 0) = 0) or (DefaultINICopy) then - begin - if AutoCoreLang = 'Russian' then - begin - case MessageBox(DialogMainWindow, PWideChar('Âû âïåðâûå àêòèâèðîâàëè ïëàãèí ' + htdPluginShortName + '.' + #13 + - 'Äëÿ êîððåêòíîé ðàáîòû ïëàãèíà ïðîâåðüòå íàñòðîéêè ñîåäèíåíèÿ ñ áàçîé äàííûõ.' + #13 + - 'Âû õîòèòå íà÷àòü ýêñïîðò èñòîðèè?'), PWideChar(htdPluginShortName),36) of - 6: StartExport := True; // Äà - 7: StartExport := False; // Íåò - end; - end - else - begin - case MessageBox(DialogMainWindow, PWideChar('The first time you activate the plugin ' + htdPluginShortName + '.' + #13 + - 'To work correctly, check your plug-in connection to the database.' + #13 + - 'Do you want to start exporting the history?'), PWideChar(htdPluginShortName),36) of - 6: StartExport := True; // Äà - 7: StartExport := False; // Íåò - end; - end; - end; - // Ïðîâåðÿåì çíà÷åíèÿ ôëàãà îáíîâëåíèÿ - if GetDBInt(htdDBName, 'FirstRun.RunUpdateDoneV'+IntToStr(htdVersion), 0) = 0 then - begin - if AutoCoreLang = 'Russian' then - begin - //MsgInf(htdPluginShortName, 'Âû âïåðâûå àêòèâèðîâàëè ïëàãèí ' + htdPluginShortName + '.' + #13 + 'Äëÿ êîððåêòíîé ðàáîòû ïëàãèíà ïðîâåðüòå íàñòðîéêè ñîåäèíåíèÿ ñ áàçîé äàííûõ.' + #13 + 'Ñïàñèáî çà èñïîëüçîâàíèå ïëàãèíà ' + htdPluginShortName + '.') - case MessageBox(DialogMainWindow, PWideChar('Âû âïåðâûå àêòèâèðîâàëè ïëàãèí ' + htdPluginShortName + '.' + #13 + - 'Äëÿ êîððåêòíîé ðàáîòû ïëàãèíà íåîáõîäèìî çàïóñòèòü ïðîöåññ îáíîâëåíèÿ ïëàãèíà ÷åðåç Èíòåðíåò.' + #13 + - 'Âû õîòèòå íà÷àòü ïðîöåññ îáíîâëåíèÿ?'), PWideChar(htdPluginShortName),36) of - 6: StartUpdate := True; // Äà - 7: StartUpdate := False; // Íåò - end; - end - else - begin - //MsgInf(htdPluginShortName, 'The first time you activate the plugin ' + htdPluginShortName + '.' + #13 + 'To work correctly, check your plug-in connection to the database.' + #13 + 'Thank you for using the plugin ' + htdPluginShortName + '.'); - case MessageBox(DialogMainWindow, PWideChar('The first time you activate the plugin ' + htdPluginShortName + '.' + #13 + - 'To work correctly, the plugin must run the update plugin via the Internet.' + #13 + - 'Do you want to start the update process?'), PWideChar(htdPluginShortName),36) of - 6: StartUpdate := True; // Äà - 7: StartUpdate := False; // Íåò - end; - end; - end; - // Âûáîð ÿçûêà ïî óìîë÷àíèþ - if AutoCoreLang <> DefaultLanguage then - begin - CoreLanguage := AutoCoreLang; - WriteCustomINI(ProfilePath, 'DefaultLanguage', CoreLanguage); - end - else - CoreLanguage := DefaultLanguage; - // Çàãðóæàåì íàñòðîéêè ëîêàëèçàöèè - LangDoc := NewXMLDocument(); - CoreLanguageChanged; - // Çàïèñûâàåì òèïà IM êëèåíòà - WriteCustomINI(ProfilePath, 'IMClientType', htdIMClientName); - WriteCustomINI(ProfilePath, 'IMClientPlatformType', htdPlatform); - // Çàïèñûâàåì îòñóòñòâèå çàïðîñà íà ÷òåíèå íàñòðîåê - WriteCustomINI(ProfilePath, 'SettingsFormRequestSend', '0'); - // Ñîçäàåì îêíî About è Export - if not Assigned(AboutForm) then - AboutForm := TAboutForm.Create(nil); - ExportFormDestroy := True; - // API - Îòêðûòèå îêíà èñòîðèè - HookShowHistoryAPI := CreateServiceFunction(MS_MHTD_SHOWHISTORY, @HTDBShowHistory); - // API - Îòêðûòèå îêíà èñòîðèè óêàçàííîãî êîíòàêòà - HookShowContactHistoryAPI := CreateServiceFunction(MS_MHTD_SHOWCONTACTHISTORY, @HTDBShowContactHistory); - // API - Âåðñèÿ ïëàãèíà - HookShowVersionAPI := CreateServiceFunction(MS_MHTD_GETVERSION, @HTDBGetVersion); - // Èíèöèàëèçàöèÿ îñíîâíîãî ìåíþ - MenuMainItemsInit; - // Ñîçäàåì îñíîâíîå ìåíþ - FillChar(Mi, SizeOf(Mi), 0); - Mi.cbSize := SizeOf(Mi); - Mi.szPopupName.a := '&' + htdPluginShortName; - Mi.popupPosition := 500000; - Mi.hIcon := LoadImage(hInstance,'ICON_0',IMAGE_ICON,16,16,0); - Mi.flags := 0; - for I := Low(MainMenuItems) to High(MainMenuItems) do - begin - if MainMenuItems[I].Icon = '' then - Mi.hIcon := 0 - else - Mi.hIcon := LoadImage(hInstance, pChar(MainMenuItems[I].Icon), IMAGE_ICON, 16, 16, 0); - Mi.szName.a := pAnsiChar(AnsiString(MainMenuItems[I].Name)); - MenuMainService := pAnsiChar(AnsiString(Format('%s/MainMenuCommand%d', [htdPluginShortName, I]))); - //if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ Load: ' + 'MenuMainName = ' + MenuMainItems[I].Name + ' | MenuMainService = ' + MenuMainService, 2); - MainMenuHandle[I] := CreateServiceFunctionParam(MenuMainService, @MainMenuItems[I].Proc, I); - Mi.pszService := MenuMainService; - Mi.Position := MainMenuItems[I].Position; - MenuHandle[I] := CallService(MS_CLIST_ADDMAINMENUITEM, 0, Windows.LPARAM(@Mi)); - end; - // Ñîçäàåì ñâîé ïóíêò â îñíîâíîì ìåíþ äëÿ ñèñòåìíîé èñòîðèè - //{$ifdef REPLDEFHISTMOD} - FillChar(Si, SizeOf(Si), 0); - Si.cbSize := SizeOf(Si); - Si.Position := 500060000; - Si.szName.a := pAnsiChar(AnsiString(Format(WideStringToString(GetLangStr('IMButtonCaption'), CP_ACP), [htdPluginShortName]))); - Si.pszService := MS_MHTD_SHOWHISTORY;//MS_HISTORY_SHOWCONTACTHISTORY; - Si.hIcon := LoadImage(hInstance,'ICON_0',IMAGE_ICON,16,16,0); - HookSystemHistoryMenu := CallService(MS_CLIST_ADDMAINMENUITEM,0,LPARAM(@Si)); - //{$endif REPLDEFHISTMOD} - // Ñîçäàåì ñâîé ïóíêò â ìåíþ êîíòàêòà - CreateServiceFunction(htdPluginShortName+'/ContactMenuCommand', @OpenHistoryWindow); - Mi.pszContactOwner := nil; // Âñå êîíòàêòû - Mi.cbSize := SizeOf(Mi); - Mi.position := 1000090000; - Mi.flags := 0; - Mi.hIcon := LoadImage(hInstance,'ICON_0',IMAGE_ICON,16,16,0); - Mi.szName.a := pAnsiChar(WideStringToString(GetLangStr('ShowOneContactHistory'), CP_ACP)); - Mi.pszService := htdPluginShortName+'/ContactMenuCommand'; - HookContactMenu := CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, LPARAM(@Mi)); - // Õóê íà îòêðûòèå ìåíþ êîíòàêòà - HookBuildMenu := HookEvent(ME_CLIST_PREBUILDCONTACTMENU, OnBuildContactMenu); - // Õóê íà äîáàâëåíèå äàííûõ â ëîêàëüíóþ ÁÄ Ìèðàíäû - HookEventAdded := HookEvent(ME_DB_EVENT_ADDED, OnEventAdded); - // Îòêðûòèå îêíà èñòîðèè - {$ifdef REPLDEFHISTMOD} - HookShowMainHistory := CreateServiceFunction(MS_HISTORY_SHOWCONTACTHISTORY, @OpenHistoryWindow); - {$endif REPLDEFHISTMOD} - // Ïîääåðæêà TopToolBar - //HookTTBLoaded := HookEvent(ME_TTB_MODULELOADED, OnTTBLoaded); - // Register in updater - {if Boolean(ServiceExists(MS_UPDATE_REGISTER)) then - begin - ZeroMemory(@IMUPD,SizeOf(IMUPD)); - IMUPD.cbSize := SizeOf(IMUPD); - IMUPD.szComponentName := htdPluginShortName; - IMUPD.pbVersion := @hppVersionStr[1]; - IMUPD.cpbVersion := Length(hppVersionStr); - // File listing section - //IMUPD.szUpdateURL = UPDATER_AUTOREGISTER; - IMUPD.szUpdateURL := htdFLUpdateURL; - IMUPD.szVersionURL := htdFLVersionURL; - IMUPD.pbVersionPrefix := htdFLVersionPrefix; - IMUPD.cpbVersionPrefix := Length(htdFLVersionPrefix); - // Alpha-beta section - IMUPD.szBetaUpdateURL := htdUpdateURL; - IMUPD.szBetaVersionURL := htdVersionURL; - IMUPD.pbBetaVersionPrefix := htdVersionPrefix; - IMUPD.cpbBetaVersionPrefix := Length(htdVersionPrefix); - IMUPD.szBetaChangelogURL := htdChangelogURL; - CallService(MS_UPDATE_REGISTER, 0, LPARAM(@IMUPD)); - end;} - { Çàïóñêàåì êîíòðîëü ôàéëà êîíôèãóðàöèè - FILE_NOTIFY_CHANGE_FILE_NAME = $00000001;//Èçìåíåíèå èìåíè ôàéëà - FILE_NOTIFY_CHANGE_DIR_NAME = $00000002;//Èçìåíåíèå èìåíè ïàïêè - FILE_NOTIFY_CHANGE_ATTRIBUTES = $00000004;//Èçìåíåíèå àòðèáóòîâ ôàéëà - FILE_NOTIFY_CHANGE_SIZE = $00000008;//Èçìåíåíèå ðàçìåðà ôàéëà - FILE_NOTIFY_CHANGE_LAST_WRITE = $00000010;//Èçìåíåíèå âðåìåíè ïîñëåäíåé çàïèñè - FILE_NOTIFY_CHANGE_LAST_ACCESS = $00000020;//Èçìåíåíèå âðåìåíè ïîñëåäíåãî äîñòóïà - FILE_NOTIFY_CHANGE_CREATION = $00000040;//Èçìåíåíèå âðåìåíè ñîçäàíèÿ - FILE_NOTIFY_CHANGE_SECURITY = $00000100;//Èçìåíåíèå ïðàâ äîñòóïà - } - StartWatch(ProfilePath, FILE_NOTIFY_CHANGE_LAST_WRITE, False, @ProfileDirChangeCallBack); - // MMF - if SyncMethod = 0 then - FMap := TMapStream.CreateEx('HistoryToDB for ' + htdIMClientName + ' ('+MyAccount+')',MAXDWORD,2000); - // Ïëàãèí çàãðóæåí - PluginStatus := True; - // Êîë. ñîîáùåíèé - MessageCount := 0; - // Ïèøåì äàííûå î ïåðâîì çàïóñêå â áàçó - WriteDBInt(htdDBName, 'FirstRun.FirstActivate', 1); - // Îáíîâëåíèå óòèëèòû HistoryToDBUpdater.exe èç âðåìåííîé ïàïêè - UpdTmpPath := GetUserTempPath + 'IMHistory\'; - if FileExists(UpdTmpPath + 'HistoryToDBUpdater.exe') then - begin - // Èùåì îêíî HistoryToDBUpdater - WinName := 'HistoryToDBUpdater'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater íå íàéäåí, òî èùåì äðóãîå îêíî - begin - WinName := 'HistoryToDBUpdater for ' + htdIMClientName + ' ('+MyAccount+')'; - if SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater çàïóùåí, òî çàêðûâàåì åãî - OnSendMessageToOneComponent(WinName, '009'); - end - else // Èíà÷å ïîñûëàåì çàïðîñ - OnSendMessageToOneComponent(WinName, '009'); - Sleep(800); - // Óäàëÿåì ñòàðóþ óòèëèòó - if DeleteFile(PluginPath + 'HistoryToDBUpdater.exe') then - begin - if CopyFileEx(PChar(UpdTmpPath + 'HistoryToDBUpdater.exe'), PChar(PluginPath + 'HistoryToDBUpdater.exe'), nil, nil, nil, COPY_FILE_FAIL_IF_EXISTS) then - begin - DeleteFile(UpdTmpPath + 'HistoryToDBUpdater.exe'); - if CoreLanguage = 'Russian' then - MsgInf(htdPluginShortName, Format('Óòèëèòà îáíîâëåíèÿ %s óñïåøíî îáíîâëåíà.', ['HistoryToDBUpdater.exe'])) - else - MsgInf(htdPluginShortName, Format('Update utility %s successfully updated.', ['HistoryToDBUpdater.exe'])); - end; - end - else - begin - DeleteFile(UpdTmpPath + 'HistoryToDBUpdater.exe'); - if CoreLanguage = 'Russian' then - MsgDie(htdPluginShortName, Format('Îøèáêà îáíîâëåíèÿ óòèëèòû %s èç âðåìåííîé ïàïêè.', [PluginPath + 'HistoryToDBUpdater.exe'])) - else - MsgDie(htdPluginShortName, Format('Error update utility %s', [PluginPath + 'HistoryToDBUpdater.exe'])); - end; - end; - // Îáíîâëåíèå óòèëèòû HistoryToDBUpdater.exe èç ïàïêè ïëàãèíà - if FileExists(PluginPath + 'HistoryToDBUpdater.upd') then - begin - // Èùåì îêíî HistoryToDBUpdater - WinName := 'HistoryToDBUpdater'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater íå íàéäåí, òî èùåì äðóãîå îêíî - begin - WinName := 'HistoryToDBUpdater for ' + htdIMClientName + ' ('+MyAccount+')'; - if SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBUpdater çàïóùåí, òî çàêðûâàåì åãî - OnSendMessageToOneComponent(WinName, '009'); - end - else // Èíà÷å ïîñûëàåì çàïðîñ - OnSendMessageToOneComponent(WinName, '009'); - Sleep(800); - // Óäàëÿåì ñòàðóþ óòèëèòó - if DeleteFile(PluginPath + 'HistoryToDBUpdater.exe') then - begin - if CopyFileEx(PChar(PluginPath + 'HistoryToDBUpdater.upd'), PChar(PluginPath + 'HistoryToDBUpdater.exe'), nil, nil, nil, COPY_FILE_FAIL_IF_EXISTS) then - begin - DeleteFile(PluginPath + 'HistoryToDBUpdater.upd'); - if CoreLanguage = 'Russian' then - MsgInf(htdPluginShortName, Format('Óòèëèòà îáíîâëåíèÿ %s óñïåøíî îáíîâëåíà.', ['HistoryToDBUpdater.exe'])) - else - MsgInf(htdPluginShortName, Format('Update utility %s successfully updated.', ['HistoryToDBUpdater.exe'])); - end; - end - else - begin - DeleteFile(PluginPath + 'HistoryToDBUpdater.upd'); - if CoreLanguage = 'Russian' then - MsgDie(htdPluginShortName, Format('Îøèáêà îáíîâëåíèÿ óòèëèòû %s èç ïàïêè ïëàãèíîâ.', [PluginPath + 'HistoryToDBUpdater.exe'])) - else - MsgDie(htdPluginShortName, Format('Error update utility %s', [PluginPath + 'HistoryToDBUpdater.exe'])); - end; - end; - // Çàïóñê îáíîâëåíèÿ - if StartUpdate then - begin - if FileExists(PluginPath + 'HistoryToDBUpdater.exe') then - begin - // Ïèøåì äàííûå â áàçó - WriteDBInt(htdDBName, 'FirstRun.RunUpdateDoneV'+IntToStr(htdVersion), 1); - // Îòïðàâëåí çàïðîñ - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBUpdater.exe'), PWideChar(' "'+ProfilePath+'"'), nil, SW_SHOWNORMAL); - end - else - MsgInf(htdPluginShortName, Format(GetLangStr('ERR_NO_FOUND_UPDATER'), [PluginPath + 'HistoryToDBUpdater.exe'])); - end - else - begin - // Ïðîâåðÿåì çíà÷åíèÿ ôëàãà îáíîâëåíèÿ - if GetDBInt(htdDBName, 'FirstRun.RunUpdateDoneV'+IntToStr(htdVersion), 0) = 0 then - WriteDBInt(htdDBName, 'FirstRun.RunUpdateDoneV'+IntToStr(htdVersion), 1); // Ïèøåì äàííûå â áàçó - end; - // Ïîêàçàòü îêíî ýêñïîðòà - if StartExport then - begin - if ExportFormDestroy then - ChildExport := TExportForm.Create(nil); - if Assigned(ChildExport) then - begin - if not ChildExport.Showing then - ChildExport.Show - else - ChildExport.BringFormToFront(ChildExport); - end; - end; - // Åñëè íå çàïóñêàåì îáíîâëåíèå, òî çàïóñêàåì ïðîãðàììó ñèíõðîíèçàöèè HistoryToDBSync - if not StartUpdate then - begin - if FileExists(PluginPath + 'HistoryToDBSync.exe') then - begin - WinName := 'HistoryToDBSync for ' + htdIMClientName + ' ('+MyAccount+')'; - if not SearchMainWindow(pWideChar(WinName)) then // Åñëè HistoryToDBSync for QIP íå çàïóùåí, òî çàïóñêàåì - ShellExecute(0, 'open', PWideChar(PluginPath + 'HistoryToDBSync.exe'), PWideChar(' "'+PluginPath+'" "'+ProfilePath+'"'), nil, SW_SHOWNORMAL) - end - else - begin - if CoreLanguage = 'Russian' then - MsgInf(htdPluginShortName, Format('Ïðîãðàììà ñèíõðîíèçàöèè èñòîðèè %s íå íàéäåíà.' + #13 + 'Çàïóñòèòå ïðîöåññ îáíîâëåíèÿ ïëàãèíà.', [PluginPath + 'HistoryToDBSync.exe'])) - else - MsgInf(htdPluginShortName, Format('The history synchronization program %s not found.' + #13 + 'Begin the process of updating the plugin.', [PluginPath + 'HistoryToDBSync.exe'])); - end; - end; - Result := 0; -end; - -function Load():Integer; cdecl; -var - ProfileName, TmpProfilePath: String; - Str: PAnsiChar; -begin - CallService(MS_LANGPACK_REGISTER,WPARAM(@hLangpack),LPARAM(@PluginInfo)); - // Êîäîâàÿ ñòðàíèöà - hppCodepage := CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); - if (hppCodepage = CALLSERVICE_NOTFOUND) or (hppCodepage = CP_ACP) then - hppCodepage := GetACP(); - // Ïðîâåðêà íà ïîääåðæêó Ìåòà-êîíòàêòîâ - MetaContactsEnabled := Boolean(ServiceExists(MS_MC_GETMOSTONLINECONTACT)); - if MetaContactsEnabled then - begin - Str := pAnsiChar(CallService(MS_MC_GETPROTOCOLNAME, 0, 0)); - if Assigned(Str) then - MetaContactsProto := AnsiString(Str) - else - MetaContactsEnabled := False; - end; - // Ïóòü äî ïëàãèíîâ - SetLength(DllPath, MAX_PATH); - SetLength(DllPath, GetModuleFileNameW(hInstance, @DllPath[1], MAX_PATH)); - PluginPath := ExtractFilePath(DllPath); - // Ïóòü äî äèðåêòîðèè ïðîôèëÿ (USERNAME\USERNAME.dat) - SetLength(TmpProfilePath, MAX_PATH); - CallService(MS_DB_GETPROFILEPATH, MAX_PATH, lParam(@TmpProfilePath[1])); - SetLength(TmpProfilePath, StrLen(pAnsiChar(@TmpProfilePath[1]))); - TmpProfilePath := pAnsiChar(TmpProfilePath) + PathDelim; - // Èìÿ ôàéëà ïðîôèëÿ - SetLength(ProfileName, MAX_PATH); - CallService(MS_DB_GETPROFILENAME, MAX_PATH, lParam(@ProfileName[1])); - SetLength(ProfileName, StrLen(pAnsiChar(@ProfileName[1]))); - // Ïóòü äî ïðîôèëÿ USERNAME.dat - TmpProfilePath := TmpProfilePath + ExtractFileNameEx(TmpProfilePath+pAnsiChar(ProfileName), False) + PathDelim; - if DirectoryExists(TmpProfilePath) then - ProfilePath := TmpProfilePath - else - ProfilePath := ExtractFilePath(DllPath); - // Çàãðóæàåì íàñòðîéêè - LoadINI(ProfilePath); - // Çàïèñûâàåì Èìÿ ïðîôèëÿ, ïîòîì îíî èñïîëüçóåòñÿ äëÿ çàãîëîâêà ïðîãðàìì - MyAccount := ExtractFileNameEx(pAnsiChar(ProfileName), False); - WriteCustomINI(ProfilePath, 'MyAccount', MyAccount); - // Èíèöèàëèçàöèÿ îñíîâíûõ ôóíêöèé - HookModulesLoad := HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoad); - Result := 0; -end; - -function Unload: int; cdecl; -var - I: Byte; -begin - Result := 0; - if PluginStatus then - begin - // Îñòàíàâëèâàåì êîíòðîëü ôàéëà êîíôèãóðàöèè - StopWatch; - if Assigned(AboutForm) then FreeAndNil(AboutForm); - if Assigned(ExportForm) then FreeAndNil(ExportForm); - // Óäàëÿåì ìåíþ - for I := Low(MainMenuHandle) to High(MainMenuHandle) do - begin - DestroyServiceFunction(MainMenuHandle[I]); - DestroyServiceFunction(MenuHandle[I]); - end; - {$ifdef REPLDEFHISTMOD} - DestroyServiceFunction(HookShowMainHistory); - {$endif REPLDEFHISTMOD} - DestroyServiceFunction(HookShowHistoryAPI); - DestroyServiceFunction(HookShowContactHistoryAPI); - DestroyServiceFunction(HookShowVersionAPI); - //{$ifdef REPLDEFHISTMOD} - UnhookEvent(HookSystemHistoryMenu); - //{$endif REPLDEFHISTMOD} - UnhookEvent(HookContactMenu); - //UnhookEvent(HookTTBLoaded); - UnhookEvent(HookEventAdded); - UnhookEvent(HookBuildMenu); - UnhookEvent(HookModulesLoad); - // Çàïðîñ íà çàêðûòèå âñåõ êîìïîíåíòîâ ïëàãèíà - OnSendMessageToAllComponent('003'); - // Çàêðûâàåì ëîã-ôàéëû - if MsgLogOpened then - CloseLogFile(0); - if ErrLogOpened then - CloseLogFile(1); - if DebugLogOpened then - CloseLogFile(2); - if ContactListLogOpened then - CloseLogFile(3); - if ProtoListLogOpened then - CloseLogFile(4); - // Î÷èñòêà êëþ÷åé øèôðîâàíèÿ - EncryptFree; - // MMF - if Assigned(FMap) then - FMap.Free; - // Îòêë. ÿçûêîâîé ïîääåðæêè - LangDoc.Active := False; - end; -end; - -exports - MirandaPluginInfoEx, - MirandaPluginInterfaces, - Load, - Unload; - -begin -end. - diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dproj b/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dproj deleted file mode 100644 index 3fc30e6265..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.dproj +++ /dev/null @@ -1,226 +0,0 @@ - - - {E69B7AEB-9B0F-45CB-A345-314CBE1E2449} - MirandaNGHistoryToDB.dpr - True - Release - Library - None - DCC32 - 14.4 - Win32 - 3 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - 1049 - System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;$(DCC_Namespace) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - false - false - 00400000 - false - true - false - false - - - 1033 - true - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - C:\Program Files\QIP Infium\ - C:\Program Files\QIP Infium\infium.exe - C:\Program Files\QIP Infium\;$(Debugger_DebugSourcePath) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - - - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - true - 1033 - - - false - false - false - ..\..\include\delphi;..\..\plugins\ExternalAPI\delphi;$(DCC_UnitSearchPath) - false - RELEASE;$(DCC_Define) - 0 - - - C:\Program Files\Miranda NG - C:\Program Files\Miranda NG\Miranda32.exe - C:\Program Files\Miranda NG;$(Debugger_DebugSourcePath) - - ..\..\bin10\Release\Plugins\ - ..\..\bin10\Release\Obj\hpp\ - true - madExcept;$(DCC_Define) - 3 - true - 2 - 5 - CompanyName=http://www.im-history.ru;FileDescription=MirandaNGHistoryToDB;FileVersion=2.5.0.0;InternalName=MirandaNGHistoryToDB;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=MirandaNGHistoryToDB.dll;ProductName=MirandaNGHistoryToDB;ProductVersion=2.5.0.0;Comments=http://www.im-history.ru - true - None - 1033 - ..\..\bin10\Release\Obj\hpp\ - ..\..\bin10\Release\Plugins\ - - - - ..\..\bin10\Release64\Plugins\ - ..\..\bin10\Release64\Obj\hpp\ - true - madExcept;$(DCC_Define) - 3 - true - 2 - 5 - CompanyName=http://www.im-history.ru;FileDescription=MirandaNGHistoryToDB;FileVersion=2.5.0.0;InternalName=MirandaNGHistoryToDB;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=MirandaNGHistoryToDB.dll;ProductName=MirandaNGHistoryToDB;ProductVersion=2.5.0.0;Comments=http://www.im-history.ru - true - None - 1033 - ..\..\bin10\Release64\Obj\hpp\ - ..\..\bin10\Release64\Plugins\ - - - 3 - DEBUG;$(DCC_Define) - false - true - - - - MainSource - - - - - - -
ExportForm
-
- - - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - - - Delphi.Personality.12 - VCLApplication - - - - MirandaNGHistoryToDB.dpr - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1049 - 1251 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - C:\Program Files\QIP Infium\infium.exe - C:\Program Files\QIP Infium\ - C:\Program Files\QIP Infium\ - - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - False - True - True - - - 12 - - - - False - - False - copy_langs.bat - False - - - - False - - False - copy_langs.bat - False - -
diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.mes b/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.mes deleted file mode 100644 index 1fcb334c1d..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.mes +++ /dev/null @@ -1,163 +0,0 @@ -[GeneralSettings] -MesVersion=4 -HandleExceptions=1 -LinkInCode=1 -AppendMapFileToBinary=1 -NoOwnMadExceptSettings=0 -CheckFileCrc=1 -CheckForFrozenMainThread=0 -FreezeTimeout=60000 -ReportLeaks=0 -WindowsLogo=0 -CrashOnBuffer=0 -CrashOnUnderrun=0 -AutomaticallySaveBugReport=1 -AutoSaveBugReportIfNotSent=1 -AutomaticallyMailBugReport=0 -AutoMailProgressBox=0 -CopyBugReportToClipboard=0 -SuspendAllRunningThreads=0 -ShowPleaseWaitBox=1 -PleaseWaitIcon=plwait1 -AutomaticallyContinueApplication=0 -AutomaticallyRestartApplication=0 -AutomaticallyCloseApplication=0 -SendInBackground=1 -SendHelper=196608 -Send32Icon=send321 -UploadViaHttp=0 -HttpServer= -HttpSsl=0 -HttpPort=0 -HttpAccount= -HttpPassword= -UploadToFogBugz=0 -UploadToBugZilla=0 -UploadToMantis=0 -BugTrackerAccount= -BugTrackerPassword= -BugTrackerProject= -BugTrackerArea= -BugTrackerAssignTo= -MailAsSmtpServer=0 -MailAsSmtpClient=0 -SmtpServer= -SmtpSsl=0 -SmtpTls=0 -SmtpPort=0 -SmtpAccount= -SmtpPassword= -MailViaMapi=1 -MailViaMailto=1 -MailAddress=sleuthhound@gmail.com -BugReportFile=bugreport.txt -AttachBugReport=1 -AttachBugReportFile=1 -DeleteBugReportFile=1 -BugReportSendAs=bugreport.txt -BugReportZip= -ScreenShotDepth=8 -ScreenShotAppOnly=0 -ScreenShotSendAs=screenshot.png -ScreenShotZip= -AdditionalAttachments= -AppendBugReports=1 -BugReportFileSize=100000 -DontSaveDuplicateExceptions=1 -DontSaveDuplicateFreezings=1 -DuplicateExceptionDefinition=1 -DuplicateFreezeDefinition=2 -ShowExceptionBox=1 -OkBtnText=&OK -DetailsBtnText=&Details -PleaseWaitTitle=Information -PleaseWaitText=Please wait a moment... -BugTrackerTitle=%25appname%25, %25exceptMsg%25 -BugTrackerDescr=error details: %0d%0a%25errorDetails%25 -MailSubject=bug report -MailBody=please find the bug report attached -SendBoxTitle=Sending bug report... -PrepareAttachMsg=Preparing attachments... -MxLookupMsg=Searching for mail server... -ConnectMsg=Connecting to server... -SendMailMsg=Sending mail... -FieldsMsg=Setting fields... -SendAttachMsg=Sending attachments... -SendFinalizeMsg=Finalizing... -MailFailureMsg=Sorry, sending the bug report didn't work. -VersionVariable= -[ExceptionBox] -ShowButtonMailBugReport=1 -ShowButtonSaveBugReport=0 -ShowButtonPrintBugReport=0 -ShowButtonShowBugReport=1 -ShowButtonContinueApplication=1 -ShowButtonRestartApplication=1 -ShowButtonCloseApplication=1 -IconButtonSendBugReport=send1 -IconButtonSaveBugReport=save1 -IconButtonPrintBugReport=print1 -IconButtonShowBugReport=show1 -IconButtonContinueApplication=continue1 -IconButtonCantContinueApplication=cantContinue1 -IconButtonRestartApplication=restart1 -IconButtonCloseApplication=close1 -FocusedButton=0 -SendAssistant=SendAssistant -SaveAssistant=SaveAssistant -PrintAssistant=PrintAssistant -AutomaticallyShowBugReport=0 -NoOwnerDrawButtons=0 -BigExceptionIcon=big1 -TitleBar=%25appname%25 -ExceptionMessage=An error occurred in the application. -FrozenMessage=The application seems to be frozen. -BitFaultMsg=The file "%25modname%25" seems to be corrupt! -MailBugReportText=send bug report -SaveBugReportText=save bug report -PrintBugReportText=print bug report -ShowBugReportText=show bug report -ContinueApplicationText=continue application -RestartApplicationText=restart application -CloseApplicationText=close application -[BugReport] -ListThreads=1 -ListModules=1 -ListHardware=1 -ShowCpuRegisters=1 -ShowStackDump=1 -Disassembly=1 -HideUglyItems=0 -ShowRelativeAddrs=1 -ShowRelativeLines=1 -FormatDisassembly=0 -LimitDisassembly=5 -EnabledPlugins=modules|processes|hardware -[Filters] -Filter1ExceptionClasses=EDBEditError -Filter1DontCreateBugReport=1 -Filter1DontCreateScreenshot=1 -Filter1DontSuspendThreads=1 -Filter1DontCallHandlers=1 -Filter1ShowBox=3 -Filter1Assis= -Filter2ExceptionClasses= -Filter2DontCreateBugReport=0 -Filter2DontCreateScreenshot=0 -Filter2DontSuspendThreads=0 -Filter2DontCallHandlers=0 -Filter2ShowBox=0 -Filter2Assis= -GeneralDontCreateBugReport=0 -GeneralDontCreateScreenshot=0 -GeneralDontSuspendThreads=0 -GeneralDontCallHandlers=0 -GeneralShowBox=0 -GeneralAssis= -[Assistants] -Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm -Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm -Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm -Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00 -Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c'%00%00%00in which situation did the error occur?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00 -Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00 diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.res b/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.res deleted file mode 100644 index e7d67124de..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/MirandaNGHistoryToDB.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.dfm b/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.dfm deleted file mode 100644 index 1a244adc27..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.dfm +++ /dev/null @@ -1,4447 +0,0 @@ -object ExportForm: TExportForm - Left = 0 - Top = 0 - ActiveControl = Page1 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'MirandaNGHistoryToDB - '#1069#1082#1089#1087#1086#1088#1090' '#1080#1089#1090#1086#1088#1080#1080 - ClientHeight = 266 - ClientWidth = 561 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Icon.Data = { - 0000010001001010000001000000680400001600000028000000100000002000 - 0000010020000000000000040000000000000000000000000000000000000000 - 0000000000000000000000000000FF1F2A000000000000000000000000000000 - 00000000000000000000FF1F2A00000000000000000000000000000000000000 - 00000000000000000000FF1F2A00FEEFA900FF1F2A00CDCDCD00CDCDCD00CDCD - CD00CDCDCD00FF1F2A00FEEFA900FF1F2A000000000000000000000000000000 - 000000000000FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A0000000000000000000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FECF4D00FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A0000000000FF1F - 2A00FEEFA900FFE55F00FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A00000000000000 - 000000000000FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A0000000000000000000000 - 000000000000C1BDB600FF1F2A00FEEFA900FF1F2A00C1B7AF00D2BEB900D2BE - B900D2BEB900FF1F2A00FEEFA900FF1F2A00C1BDB60000000000000000000000 - 000000000000BAB7AF00A39A8F00FF1F2A00CAC1B800DFD5CC00FAE2DF00F7DB - D900DFD5CC00CAC1B800FF1F2A00A39A8F00BAB7AF0000000000000000000000 - 000000000000B1AB9F00C9C2B900CFC7BF00D5CCC400DCD3CA00E8DDD500E4D6 - CF00E4D6CF00D5CCC400CFC7BF00C9C2B900B1AB9F0000000000000000000000 - 000000000000B0AB9E00C7C0B600CCC4BB00D3C9C100DAD0C700EBE1DA00E4D9 - D100DDD2CA00DBCDC500DDCAC400DBC4BF00C1ADA40000000000000000000000 - 000000000000AFAA9D00C8C1B700E8E3DB00F5F0E800FDF8F200FBF7F000FCF7 - F100FDF8F200F7F0EA00ECE3DC00CDC3BB00B2AA9E0000000000000000000000 - 000000000000AEA89C00FBF5EF00EEE7DE00E0D8CE00DDD5CC00DDD4CB00DDD4 - CB00DDD5CC00E0D7CE00EDE6DE00FBF6EF00AEA89C0000000000000000000000 - 000000000000AFA99D00E1D8CE00E1D7CE00DFD6CC00DFD5CB00DFD5CB00DFD5 - CB00DFD5CB00DFD6CC00E1D7CE00E1D8CE00AFA99D0000000000000000000000 - 000000000000D9D9D900B6B0A400D6CFC400E6DED500EFE7DD00EEE6DC00EEE6 - DC00EFE7DD00E6DED500D6CFC400B6B0A400D9D9D90000000000000000000000 - 00000000000000000000D9D9D900C4C0B700AEA99C00AEA89C00AEA89C00AEA8 - 9C00AEA89C00AEA99C00C4C0B700D9D9D900000000000000000000000000F7EF - FFFFE007FFFFC003FFFF8001FFFF0000FFFF8001FFFFC003FFFFC003FFFFC003 - FFFFC003FFFFC003FFFFC003FFFFC003FFFFC003FFFFC003FFFFE007FFFF} - OldCreateOrder = False - Position = poDesktopCenter - OnClose = FormClose - OnCloseQuery = FormCloseQuery - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object IMExportWizard: TJvWizard - Left = 0 - Top = 0 - Width = 561 - Height = 266 - ActivePage = Page1 - ButtonBarHeight = 42 - ButtonStart.Caption = 'To &'#1055#1077#1088#1074#1072#1103' '#1089#1090#1088#1072#1085#1080#1094#1072 - ButtonStart.NumGlyphs = 1 - ButtonStart.Width = 85 - ButtonLast.Caption = 'To &'#1055#1086#1089#1083#1077#1076#1085#1103#1103' '#1089#1090#1088#1072#1085#1080#1094#1072 - ButtonLast.NumGlyphs = 1 - ButtonLast.Width = 85 - ButtonBack.Caption = '< &'#1053#1072#1079#1072#1076 - ButtonBack.NumGlyphs = 1 - ButtonBack.Width = 75 - ButtonNext.Caption = '&'#1044#1072#1083#1077#1077' >' - ButtonNext.NumGlyphs = 1 - ButtonNext.Width = 75 - ButtonFinish.Caption = '&'#1042#1099#1081#1090#1080 - ButtonFinish.NumGlyphs = 1 - ButtonFinish.Width = 75 - ButtonCancel.Caption = #1054#1090#1084#1077#1085#1072 - ButtonCancel.NumGlyphs = 1 - ButtonCancel.ModalResult = 2 - ButtonCancel.Width = 75 - ButtonHelp.Caption = '&'#1055#1086#1084#1086#1097#1100 - ButtonHelp.NumGlyphs = 1 - ButtonHelp.Width = 75 - ShowRouteMap = False - OnFinishButtonClick = IMExportWizardFinishButtonClick - OnCancelButtonClick = IMExportWizardCancelButtonClick - DesignSize = ( - 561 - 266) - object Page1: TJvWizardWelcomePage - Header.Height = 100 - Header.Title.Color = clNone - Header.Title.Text = #1044#1086#1073#1088#1086' '#1087#1086#1078#1072#1083#1086#1074#1072#1090#1100' '#1074' '#1084#1072#1089#1090#1077#1088' '#1101#1082#1089#1087#1086#1088#1090#1072' '#1080#1089#1090#1086#1088#1080#1080 - Header.Title.Anchors = [akLeft, akTop, akRight] - Header.Title.Font.Charset = DEFAULT_CHARSET - Header.Title.Font.Color = clWindowText - Header.Title.Font.Height = -16 - Header.Title.Font.Name = 'Tahoma' - Header.Title.Font.Style = [fsBold] - Header.Subtitle.Color = clNone - Header.Subtitle.Text = - #1044#1072#1085#1085#1099#1081' '#1084#1072#1089#1090#1077#1088' '#1087#1086#1084#1086#1078#1077#1090' '#1042#1072#1084' '#1101#1082#1089#1087#1086#1088#1090#1080#1088#1086#1074#1072#1090#1100' '#1080#1089#1090#1086#1088#1080#1102' Miranda '#1074#1086' '#1074#1085#1077#1096 + - #1085#1102#1102' '#1073#1072#1079#1091' '#1076#1072#1085#1085#1099#1093'. '#1069#1082#1089#1087#1086#1088#1090' '#1073#1091#1076#1077#1090' '#1087#1088#1086#1080#1079#1074#1077#1076#1077#1085' '#1074' '#1092#1072#1081#1083' '#1092#1086#1088#1084#1072#1090#1072' sql-ins' + - 'ert. '#1055#1088#1080' '#1089#1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1080' '#1101#1090#1080' '#1076#1072#1085#1085#1099#1077' '#1073#1091#1076#1091#1090' '#1087#1077#1088#1077#1076#1072#1085#1099' '#1074' '#1073#1072#1079#1091' '#1076#1072#1085#1085#1099#1093'.' - Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] - Header.Subtitle.Font.Charset = DEFAULT_CHARSET - Header.Subtitle.Font.Color = clWindowText - Header.Subtitle.Font.Height = -11 - Header.Subtitle.Font.Name = 'Tahoma' - Header.Subtitle.Font.Style = [] - Header.ShowDivider = False - Image.Alignment = iaCenter - Image.Layout = ilCenter - EnabledButtons = [bkBack, bkNext, bkFinish, bkCancel] - WaterMark.Color = clCaptionText - WaterMark.Image.Picture.Data = { - 07544269746D617086080200424D86080200000000003600000028000000C800 - 0000DE000000010018000000000050080200120B0000120B0000000000000000 - 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFF4DED4F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1F0D2 - C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD685 - 61C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6F0D2C6F0D2C6F0 - D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4E5B19BE5B19BE5B19B - F8E9E2FFFFFFFFFFFFFFFFFFF8E9E2E5B19BE5B19BE5B19BF0D2C6FFFFFFFFFF - FFFFFFFFF0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6F0 - D2C6F0D2C6F0D2C6F0D2C6E5B19BC75828E5B19BFFFFFFFBF4F1E5B19BE5B19B - E5B19BF8E9E2F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFBF4F1E9BCA9E5B19BE5B19BECC7B7FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6F0D2C6F0D2C6F0D2C6F0D2C6 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6E5B19BE5B19BECC7B7F8E9E2F0D2 - C6FBF4F1FFFFFFFBF4F1F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0 - D2C6FFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFF4DED4F0D2C6 - FFFFFFFFFFFFFBF4F1F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828C75828C75828C75828DA9070 - FFFFFFFFFFFFFBF4F1D68561C75828C75828C75828C75828C75828F4DED4FFFF - FFE1A68CC75828C75828C75828C75828C75828DA9070FFFFFFFFFFFFC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828C75828C75828C75828 - C75828C75828C75828E5B19BFBF4F1CB6336C75828C75828C75828CB6336C758 - 28D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9BCA9CB - 6336C75828C75828C75828C75828DA9070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFD68561C75828C75828C75828C75828C75828CB6336E5B19BFFFF - FFFFFFFFE5B19BC75828C75828C75828C75828CB6336C75828F0D2C6FFFFFFF0 - D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFFFFFF - E5B19BC75828DA9070FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFFFFFFF0D2 - C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFD68561C75828F0D2C6F0D2C6ECC7B7D27953C75828E9BCA9FFFFFFE5B1 - 9BC75828DA9070F8E9E2FFFFFFE9BCA9CE6E45F0D2C6F0D2C6C75828CB6336EC - C7B7FFFFFFF4DED4DD9B7ED68561FFFFFFFFFFFFC75828D68561FFFFFFFFFFFF - FFFFFFFFFFFFF4DED4CE6E45C75828E9BCA9F0D2C6F0D2C6E5B19BC75828DD9B - 7EF8E9E2E5B19BC75828DD9B7EFFFFFFF8E9E2DD9B7EC75828D68561FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1CB6336CB6336E9BCA9FFFFFF - F8E9E2DD9B7ED68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD685 - 61C75828E5B19BF0D2C6F0D2C6E5B19BCB6336C75828ECC7B7FFFFFFCB6336CB - 6336F4DED4FFFFFFE9BCA9CE6E45C75828F0D2C6FFFFFFF0D2C6C75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFFFFFFE5B19BC75828C758 - 28E5B19BFFFFFFFFFFFFD68561C75828FFFFFFFFFFFFF0D2C6C75828C75828FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C758 - 28FFFFFFFFFFFFFFFFFFECC7B7C75828E5B19BFFFFFFCE6E45C75828FBF4F1FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFDD9B7EC75828ECC7B7FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFE9BCA9C75828E1A68CFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFE5B19BC7 - 5828ECC7B7FFFFFFFFFFFFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFE9BCA9C75828E1A68CFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FF - FFFFFFFFFFFFFFFFE9BCA9C75828D68561FFFFFFC75828D27953FFFFFFFFFFFF - FFFFFFE5B19BC75828F0D2C6FFFFFFF0D2C6C75828E5B19BF8E9E2C75828CE6E - 45FFFFFFD68561C75828FFFFFFFFFFFFE5B19BC75828C75828C75828F0D2C6FF - FFFFD68561C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BE5B19BE1 - A68CCE6E45CB6336F4DED4FFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFD68561C75828F0D2C6F0D2C6F0D2C6F0D2C6F0D2C6F0D2C6FFFF - FFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB6336CB - 6336FFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFF0D2C6C75828CB6336E1A68C - E5B19BF0D2C6C75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFFFFFFF - F0D2C6C75828D68561FFFFFFD68561C75828D68561E5B19BECC7B7DD9B7EC758 - 28F0D2C6FFFFFFF0D2C6C75828E5B19BDD9B7EC75828C75828E9BCA9D68561C7 - 5828FFFFFFFFFFFFE5B19BC75828E5B19BCB6336CB6336FBF4F1D68561C75828 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD68561C75828D68561D68561CE6E45C75828E5B19B - FFFFFFFFFFFFC75828D27953FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD685 - 61C75828C75828C75828C75828C75828C75828C75828FFFFFFFFFFFFC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA9070C75828F0D2C6FFFFFF - F0D2C6C75828E5B19BFFFFFFFFFFFFECC7B7D27953C75828C75828C75828C758 - 28D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828EC - C7B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFF8E9E2D27953C75828E5B1 - 9BFFFFFFFBF4F1DD9B7ECB6336C75828C75828C75828C75828F0D2C6FFFFFFF0 - D2C6C75828D68561C75828D68561CE6E45CE6E45D27953C75828FFFFFFFFFFFF - E5B19BC75828F0D2C6E9BCA9C75828D27953D68561C75828FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFD68561C75828FFFFFFFFFFFFFFFFFFD27953CB6336FFFFFFFFFFFFD279 - 53C75828F4DED4FFFFFFFFFFFFFFFFFFF8E9E2FBF4F1E1A68CC75828F0D2C6FF - FFFFFFFFFFFFFFFFCE6E45C75828FFFFFFFFFFFFC75828D68561FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFF0D2C6C75828E5B1 - 9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6C75828D68561FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC7B7C75828DA9070FFFFFFFFFFFF - FFFFFFFFFFFFF4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD685 - 61C75828C75828C75828C75828C75828C75828D68561FBF4F1FFFFFFFFFFFFFF - FFFFFFFFFFFBF4F1F0D2C6DD9B7EC75828F0D2C6FFFFFFF0D2C6C75828C75828 - C75828F8E9E2E9BCA9C75828C75828C75828FFFFFFFFFFFFE5B19BC75828F0D2 - C6FFFFFFDD9B7EC75828C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C758 - 28E5B19BE5B19BE1A68CC75828CB6336FFFFFFFFFFFFECC7B7C75828CE6E45E9 - BCA9F0D2C6DD9B7EC75828F0D2C6F8E9E2CB6336CB6336E9BCA9F0D2C6DA9070 - C75828DD9B7EFFFFFFFFFFFFC75828CE6E45E5B19BE5B19BE5B19BE5B19BF8E9 - E2FFFFFFF0D2C6C75828D68561E5B19BDD9B7EC75828E5B19BFFFFFFFFFFFFE1 - A68CE1A68CECC7B7F0D2C6DA9070C75828DD9B7EFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFD27953C75828DD9B7EF0D2C6E9BCA9CE6E45D685 - 61FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828DD9B7EE5 - B19BE1A68CCB6336CE6E45F4DED4FFFFFFFFFFFFF4DED4DA9070E5B19BF0D2C6 - E9BCA9CB6336C75828F8E9E2FFFFFFF0D2C6C75828C75828DD9B7EFFFFFFFFFF - FFCE6E45C75828C75828FFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFBF4F1D2 - 7953C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828C75828C7 - 5828CE6E45E9BCA9FFFFFFFFFFFFFFFFFFE9BCA9CB6336C75828C75828C75828 - CE6E45F8E9E2FFFFFFECC7B7CB6336C75828C75828C75828D27953FBF4F1FFFF - FFFFFFFFC75828C75828C75828C75828C75828C75828F0D2C6FFFFFFF0D2C6C7 - 5828C75828C75828C75828C75828E5B19BFFFFFFFFFFFFD68561C75828C75828 - C75828C75828D27953FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFBF4F1D68561C75828C75828C75828C75828E5B19BFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFE9BCA9 - C75828DA9070FFFFFFFFFFFFF0D2C6C75828C75828C75828C75828C75828E9BC - A9FFFFFFFFFFFFF0D2C6C75828C75828F8E9E2FFFFFFFFFFFFE9BCA9C75828C7 - 5828FFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFF8E9E2CB6336C75828 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6F0D2C6F4DED4FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF0D2C6F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6F0D2C6F4DED4FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF8E9E2F0D2C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFE9BCA9C75828D68561FFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6F0D2C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD685 - 61C75828D27953D68561D68561C75828C75828E5B19BFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A68CD68561D68561D6 - 8561D68561DA9070E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFF8E9E2F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2 - C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC7B7CE6E45C75828C758 - 28DA9070E9BCA9E5B19BF8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC7B7C758 - 28DA9070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFE5B19BE5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2E5B19BE9BCA9 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFBF4F1CB6336C75828DA9070E1A68CE1A68CE5B19BC7 - 5828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E45C75828F8E9E2FF - FFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFDA9070C75828F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB6336CB6336FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - F0D2C6F0D2C6F0D2C6F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFF4DED4E5B1 - 9BE5B19BE5B19BECC7B7FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC7B7E5 - B19BDD9B7EC75828CE6E45FFFFFFFFFFFFFFFFFFF8E9E2C75828CE6E45FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1ECC7B7E5B19BE5B19BE5B19BECC7 - B7FFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFF0 - D2C6F0D2C6FBF4F1FFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828E5B19BE5B19BE5B19BE9BCA9FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFECC7B7E5B19BE5B19BE9BCA9F8E9E2FFFFFFE9BCA9C75828DD - 9B7EFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2E5B19BE5B19BE5B19BF4DED4FFFFFF - FFFFFFFFFFFFFFFFFFF8E9E2E5B19BE5B19BE9BCA9F8E9E2F0D2C6F8E9E2FFFF - FFFFFFFFF0D2C6F0D2C6E9BCA9E5B19BE5B19BF4DED4FFFFFFFFFFFFFFFFFFFB - F4F1F0D2C6F0D2C6E5B19BE5B19BE5B19BF8E9E2FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFECC7B7E5B19BE5B19BE9BCA9F8E9E2FFFFFFFFFFFFF8E9E2F0D2C6FBF4 - F1FFFFFFFFFFFFFFFFFFDD9B7EC75828E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFBF4F1F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1F0D2C6 - F4DED4FFFFFFFFFFFFFFFFFFF4DED4E5B19BE5B19BE5B19BE5B19BF8E9E2FFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFF0D2C6F0 - D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC75828C75828C758 - 28C75828C75828FFFFFFFFFFFFFBF4F1D68561C75828C75828C75828C75828C7 - 5828C75828E5B19BFFFFFFFFFFFFF4DED4CE6E45C75828C75828C75828C75828 - C75828DD9B7EFFFFFFFFFFFFFFFFFFDA9070C75828F0D2C6FFFFFFFFFFFFFFFF - FFFFFFFFE9BCA9C75828C75828C75828C75828C75828C75828CE6E45F4DED4FF - FFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFDD9B7EC75828D27953FBF4F1 - FFFFFFFFFFFFECC7B7C75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC758 - 28C75828C75828C75828C75828D27953F8E9E2FFFFFFFFFFFFF4DED4CE6E45C7 - 5828C75828C75828C75828C75828F4DED4FFFFFFCB6336CB6336FBF4F1FFFFFF - FFFFFFFFFFFFE5B19BC75828C75828C75828C75828E1A68CFFFFFFFFFFFFF0D2 - C6C75828C75828C75828C75828CB6336C75828E5B19BFFFFFFFFFFFFC75828C7 - 5828C75828C75828C75828C75828E5B19BFFFFFFFFFFFFF0D2C6C75828C75828 - C75828C75828C75828CB6336ECC7B7FFFFFFFFFFFFF4DED4CE6E45C75828C758 - 28C75828C75828C75828F4DED4FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFF - FFFFF4DED4C75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828 - D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFF - FFCE6E45C75828C75828C75828C75828C75828C75828E1A68CFFFFFFFFFFFFFF - FFFFC75828C75828FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828E5B19BFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6DD9B7EC75828DD9B7EF0D2C6FF - FFFFFFFFFFD68561C75828D27953ECC7B7FFFFFFFBF4F1E9BCA9CB6336D68561 - FFFFFFF8E9E2CB6336C75828DD9B7EF8E9E2FFFFFFECC7B7CB6336C75828E5B1 - 9BFFFFFFFFFFFFECC7B7C75828DD9B7EFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC7 - 5828DD9B7EF4DED4FFFFFFFBF4F1E5B19BC75828CB6336FFFFFFFFFFFFE5B19B - C75828F0D2C6FFFFFFDD9B7EC75828D27953FBF4F1FFFFFFFFFFFFFFFFFFDD9B - 7EC75828C75828E9BCA9FFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFBF4F1FB - F4F1E5B19BC75828D68561FFFFFFFFFFFFD68561C75828DD9B7EF8E9E2FBF4F1 - E9BCA9CE6E45F0D2C6FFFFFFE1A68CC75828E9BCA9FFFFFFFFFFFFFFFFFFF8E9 - E2F4DED4FFFFFFF0D2C6C75828C75828F8E9E2FFFFFFDA9070C75828E9BCA9FF - FFFFF0D2C6D68561C75828E5B19BFFFFFFFFFFFFC75828CE6E45F4DED4FFFFFF - F0D2C6D27953C75828F0D2C6FFFFFFF0D2C6C75828DA9070F8E9E2FFFFFFE9BC - A9CB6336CB6336FBF4F1FFFFFFD68561C75828DD9B7EF8E9E2FBF4F1E9BCA9CE - 6E45F0D2C6FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFD27953 - C75828F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFFFFC75828CE6E45E9 - BCA9FBF4F1FFFFFFF0D2C6D27953C75828E5B19BFFFFFFFFFFFFC75828C75828 - FFFFFFFFFFFFFFFFFFD68561C75828C75828E5B19BFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFECC7B7C75828 - CB6336FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFBF4F1E9BCA9FFFFFFE1A68CC758 - 28DA9070FFFFFFFFFFFFFFFFFFFFFFFFF4DED4C75828C75828FBF4F1FFFFFFFF - FFFFCB6336CB6336FBF4F1FFFFFFFFFFFFFFFFFFF0D2C6F4DED4FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFD27953C75828F0D2C6FFFFFFE5B19BC75828E5B19BDD9B - 7EC75828D27953FBF4F1FFFFFFFFFFFFFFFFFFF8E9E2C75828CB6336C75828D2 - 7953FFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD27953 - C75828F8E9E2F8E9E2C75828D27953FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF4DED4C75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFD68561C75828F0D2C6FFFFFFD68561C75828FBF4F1FFFFFFFFFFFFF0D2C6 - C75828E5B19BFFFFFFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFECC7B7C758 - 28DD9B7EFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFE1A68CC75828E9 - BCA9F8E9E2C75828D27953FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - E5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFFFFF0D2C6F8E9E2FF - FFFFF0D2C6C75828D68561FFFFFFFFFFFFE5B19BFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFECC7B7C75828D68561FFFFFFFFFFFFC75828C75828FFFFFFFFFFFFF0D2 - C6C75828C75828C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFE1A68CC75828E1A68CFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD27953C75828F0D2C6FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD68561C75828ECC7B7FFFFFFFFFFFFE1A68CC75828 - E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9 - E2CB6336C75828F0D2C6FFFFFFE5B19BC75828C75828C75828D27953FBF4F1FF - FFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BD68561C75828F4DED4FFFFFF - FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6F0D2 - C6C75828DD9B7EF0D2C6F0D2C6F0D2C6F0D2C6F0D2C6F8E9E2FFFFFFFFFFFFD2 - 7953C75828F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828 - F0D2C6FFFFFFE5B19BC75828CE6E45E5B19BE9BCA9E5B19BC75828E5B19BFFFF - FFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFF0 - D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BF0D2C6C75828 - DD9B7EF0D2C6F0D2C6F0D2C6F0D2C6F0D2C6F8E9E2FFFFFFE5B19BC75828F0D2 - C6FFFFFFFFFFFFFFFFFFFFFFFFFBF4F1C75828CE6E45FFFFFFFFFFFFFFFFFFFF - FFFFF0D2C6C75828D68561FFFFFFF0D2C6C75828D68561FFFFFFF0D2C6C75828 - D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A68CC758 - 28D68561FFFFFFFFFFFFC75828C75828FFFFFFFFFFFFDA9070C75828D68561C7 - 5828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC758 - 28E5B19BFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFC75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFF4DED4C75828D68561FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF8E9E2E9BCA9E5B19BD68561C75828C75828CE6E45FF - FFFFFFFFFFE5B19BC75828CB6336C75828DD9B7EFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFCE6E45C75828F8E9E2E9BCA9C75828DD9B7EFFFFFFFFFFFFE5B19BC758 - 28F0D2C6FFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6F0D2C6C75828C75828C7 - 5828C75828C75828C75828C75828E5B19BFFFFFFFFFFFFE5B19BC75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFF - FFE5B19BCE6E45C75828C75828C75828C75828E5B19BFFFFFFFFFFFFC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFF0D2C6C75828E5B19B - FFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BF0D2C6C75828C75828C75828C758 - 28C75828C75828C75828E5B19BFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFDA9070C75828F0D2C6FFFFFFFFFFFFFFFFFFF0D2C6C75828 - D68561FFFFFFD68561C75828C75828F4DED4F0D2C6C75828D68561FFFFFFFFFF - FFFFFFFFFFFFFFF0D2C6E5B19BDD9B7ECE6E45C75828C75828E9BCA9FFFFFFFF - FFFFC75828C75828FFFFFFF8E9E2C75828D68561E5B19BC75828E5B19BFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFFF - FFFFD68561C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFC75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC758 - 28E5B19BFFFFFFFFFFFFFFFFFFD27953C75828F8E9E2FFFFFFFFFFFFFFFFFFE1 - A68CC75828C75828C75828C75828CB6336DD9B7EFBF4F1FFFFFFFFFFFFE5B19B - C75828ECC7B7D27953C75828DD9B7EFFFFFFFFFFFFFFFFFFECC7B7C75828DD9B - 7EFFFFFFFFFFFFCE6E45C75828FBF4F1FFFFFFE5B19BC75828F0D2C6FFFFFFFF - FFFFFFFFFFD27953C75828F8E9E2FBF4F1C75828D68561FFFFFFFFFFFFFFFFFF - E9BCA9C75828E5B19BFFFFFFFFFFFFFBF4F1C75828CE6E45FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF0D2C6E5B19BC75828E5B19BFFFFFFFFFFFFC75828D68561FFFFFFFFFFFF - FFFFFFECC7B7C75828DD9B7EFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFF - FFE1A68CC75828E9BCA9FBF4F1C75828D68561FFFFFFFFFFFFFFFFFFE9BCA9C7 - 5828E5B19BFFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - ECC7B7C75828DD9B7EFFFFFFFFFFFFFFFFFFF0D2C6C75828D68561F8E9E2C758 - 28D27953C75828DD9B7EF0D2C6C75828D68561FFFFFFFFFFFFF4DED4CE6E45C7 - 5828C75828C75828C75828D27953ECC7B7FFFFFFFFFFFFFFFFFFC75828C75828 - FFFFFFDD9B7EC75828ECC7B7E5B19BC75828E5B19BFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFDA9070C75828 - E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB6336C758 - 28F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD9B7EC75828E5B19BFFFFFFFF - FFFFFFFFFFE9BCA9C75828E1A68CFFFFFFFFFFFFF0D2C6C75828C75828E1A68C - F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FBF4 - F1D27953C75828DD9B7EFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFE5 - B19BC75828E5B19BFFFFFFE5B19BC75828CB6336E1A68CF0D2C6DA9070C75828 - D68561FFFFFFFFFFFFE1A68CC75828DA9070F0D2C6E9BCA9CB6336C75828F8E9 - E2FFFFFFFFFFFFFFFFFFDD9B7EC75828ECC7B7FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFD68561C75828F0D2C6FFFFFFFFFFFFD68561E5B19BF0D2C6ECC7B7D27953 - C75828E9BCA9FFFFFFFFFFFFC75828C75828D68561E9BCA9ECC7B7CE6E45C758 - 28F0D2C6FFFFFFF0D2C6C75828C75828DD9B7EECC7B7E5B19BCB6336CB6336FB - F4F1FFFFFFE1A68CC75828DA9070F0D2C6E9BCA9CB6336C75828F8E9E2FFFFFF - E5B19BC75828C75828D68561E5B19BD68561FFFFFFFFFFFFFFFFFFCE6E45C758 - 28FBF4F1FFFFFFFFFFFFF0D2C6C75828D68561DD9B7EC75828F0D2C6DD9B7EC7 - 5828E9BCA9C75828D68561FFFFFFFFFFFFD68561C75828D27953E9BCA9F0D2C6 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC75828C75828F8E9E2C75828CE6E - 45FFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA9070C75828E9BCA9FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFCE6E45C75828F4DED4FFFFFFFFFFFFFFFFFFFBF4F1 - C75828CE6E45FFFFFFFFFFFFE5B19BC75828E1A68CFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFBF4F1D27953C7 - 5828E1A68CF8E9E2C75828D27953FFFFFFFFFFFFFFFFFFFBF4F1C75828CE6E45 - FFFFFFE5B19BC75828D68561C75828C75828C75828CE6E45F4DED4FFFFFFFFFF - FFFBF4F1DA9070C75828C75828C75828C75828E9BCA9FFFFFFFFFFFFFFFFFFFF - FFFFECC7B7C75828DD9B7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828 - F0D2C6FFFFFFFFFFFFC75828C75828C75828C75828C75828DD9B7EFFFFFFFFFF - FFFFFFFFC75828CE6E45CB6336C75828C75828C75828E1A68CFFFFFFFFFFFFF0 - D2C6C75828D27953C75828C75828C75828CB6336E9BCA9FFFFFFFFFFFFFBF4F1 - DA9070C75828C75828C75828C75828E9BCA9FFFFFFFFFFFFE5B19BC75828E1A6 - 8CCE6E45C75828C75828FFFFFFFFFFFFFFFFFFE1A68CC75828E9BCA9FFFFFFFF - FFFFF0D2C6C75828D27953C75828CE6E45FFFFFFF0D2C6C75828D27953C75828 - D68561FFFFFFFFFFFFC75828C75828FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFC75828C75828DD9B7EC75828E9BCA9FFFFFFE5B19BC7 - 5828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC758 - 28E5B19BFFFFFFFFFFFFFBF4F1CB6336C75828E9BCA9FFFFFFFFFFFFFFFFFFFF - FFFFE5B19BD68561FFFFFFE9BCA9C75828CB6336F4DED4FFFFFFFFFFFFFFFFFF - DD9B7EC75828CE6E45FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD9B7EC75828ECC7 - B7FFFFFFE5B19BC75828DA9070FFFFFFFFFFFFFFFFFFFFFFFFF0D2C6E1A68CFF - FFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF8E9E2F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 - E9E2F0D2C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E45 - C75828FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFF - FFFFFFFFF4DED4F0D2C6F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFC75828D6 - 8561FFFFFFF0D2C6F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19B - FBF4F1F0D2C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2 - C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFF8E9E2C75828D27953FFFFFFFFFFFFF0D2C6C75828 - C75828C75828E9BCA9FFFFFFFFFFFFD68561C75828C75828D68561FFFFFFFFFF - FFCB6336C75828F4DED4FFFFFFFFFFFFFFFFFFFBF4F1E1A68CF4DED4FFFFFFFF - FFFFC75828C75828C75828CE6E45FFFFFFFFFFFFE5B19BC75828E5B19BFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561CE6E45C75828CE6E45D68561FF - FFFFFFFFFFE9BCA9C75828C75828D27953E5B19BDD9B7ECE6E45C75828D68561 - FFFFFFFFFFFFDD9B7EC75828CB6336DD9B7EE5B19BD27953C75828CB6336F4DE - D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC7B7C75828DA9070FFFFFFFBF4F1CB - 6336C75828D27953E5B19BE1A68CCE6E45C75828D68561FFFFFFFFFFFFE5B19B - C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A68CC75828E5B19BFFFF - FFFFFFFFD68561D68561CB6336C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFD27953C75828F4DED4FFFFFFF0D2C6C75828C75828CE6E45FFFF - FFFFFFFFFFFFFFE9BCA9C75828C75828D68561FFFFFFFFFFFFE5B19BC75828CB - 6336DD9B7EE5B19BDA9070C75828C75828F0D2C6FFFFFFFFFFFFC75828C75828 - C75828E9BCA9FFFFFFFFFFFFE5B19BC75828E5B19BFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFD68561D68561D68561D68561D68561FFFFFFFFFFFFFFFFFF - F4DED4DD9B7ECB6336C75828C75828CE6E45E1A68CF8E9E2FFFFFFFFFFFFFFFF - FFE9BCA9D27953C75828C75828CB6336DD9B7EF8E9E2FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFCE6E45C75828FBF4F1FFFFFFFBF4F1DD9B7ECB6336 - C75828C75828CE6E45DA9070ECC7B7FFFFFFFFFFFFE5B19BC75828F0D2C6FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2C75828D27953FFFFFFFFFFFFD68561D6 - 8561D68561D68561F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9BC - A9C75828E1A68CFFFFFFF4DED4D68561D68561E9BCA9FFFFFFFFFFFFFFFFFFFF - FFFFDA9070D68561E1A68CFFFFFFFFFFFFFFFFFFECC7B7D27953C75828C75828 - C75828D68561E1A68CFBF4F1FFFFFFFFFFFFD68561D68561DA9070FFFFFFFFFF - FFFFFFFFE9BCA9D68561E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFF4DED4F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB - F4F1F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F4DED4FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6F4DED4FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFB - F4F1F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFF8E9E2E5B19BE5B19BE5B19B - F4DED4FFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF4DED4E5B19BE5B19BE9BCA9FBF4F1FFFFFFFFFFFFFFFFFFC75828D2 - 7953E9BCA9E5B19BE5B19BF8E9E2FFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F8E9E2 - FFFFFFFFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FBF4F1F0D2C6F0D2C6FFFFFFFFFF - FFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF8E9E2F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFF4DED4F0D2C6FFFFFFFFFFFF - FFFFFFFFFFFFECC7B7E5B19BE5B19BE9BCA9F8E9E2FFFFFFFFFFFFE5B19BC758 - 28E5B19BE5B19BE5B19BE9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC - C7B7E5B19BE5B19BE9BCA9F8E9E2FFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFFFF - FFFFFFFFFFFFF4DED4F0D2C6FFFFFFFFFFFFF4DED4F0D2C6FFFFFFFFFFFFFFFF - FFFFFFFFF0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFECC7B7E5B19BE5B19BE9 - BCA9FBF4F1FFFFFFFBF4F1F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFF0D2C6F0D2C6 - FBF4F1FBF4F1F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFF8E9E2F0D2C6FBF4F1FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6F0D2C6F0D2C6F0 - D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFD68561C75828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828D68561 - FFFFFFFFFFFFFFFFFFE1A68CC75828C75828C75828C75828C75828E5B19BFFFF - FFFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFDD9B7EC75828C7 - 5828C75828C75828CB6336F4DED4FFFFFFFFFFFFC75828C75828C75828C75828 - C75828C75828E5B19BFFFFFFFFFFFFF0D2C6C75828CE6E45FBF4F1FFFFFFFFFF - FFE5B19BC75828F0D2C6FBF4F1D27953C75828E5B19BFFFFFFFFFFFFE5B19BC7 - 5828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828 - F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFFFFFFF4DED4CE6E45C758 - 28C75828C75828C75828C75828F4DED4FFFFFFE5B19BC75828C75828C75828C7 - 5828C75828D27953F8E9E2FFFFFFFFFFFFF4DED4CE6E45C75828C75828C75828 - C75828C75828F4DED4FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD685 - 61C75828FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFC75828D6 - 8561FFFFFFFFFFFFF4DED4CE6E45C75828C75828C75828C75828CB6336FFFFFF - F0D2C6C75828E5B19BFFFFFFFFFFFFDD9B7EC75828D27953FBF4F1F0D2C6C758 - 28CE6E45FBF4F1FFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828C75828C75828C75828DA9070 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561 - C75828C75828F0D2C6FFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFFFFF0D2 - C6C75828D27953F0D2C6FFFFFFF0D2C6D68561E5B19BFFFFFFFFFFFFF0D2C6C7 - 5828E5B19BFFFFFFFFFFFFFFFFFFF0D2C6C75828D27953F4DED4FBF4F1E5B19B - C75828D68561FFFFFFFFFFFFC75828CE6E45F4DED4FFFFFFF0D2C6D27953C758 - 28F0D2C6FFFFFFF0D2C6C75828C75828D68561FFFFFFFFFFFFE5B19BC75828F0 - D2C6FFFFFFF8E9E2CB6336C75828F0D2C6FFFFFFE5B19BC75828F0D2C6FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFF - FFFFFFFFD68561C75828FFFFFFFFFFFFD68561C75828DD9B7EF8E9E2FBF4F1E9 - BCA9CE6E45F0D2C6FFFFFFE5B19BC75828E5B19BFBF4F1FBF4F1E5B19BC75828 - D68561FFFFFFFFFFFFD68561C75828DD9B7EF8E9E2FBF4F1E9BCA9CE6E45F0D2 - C6FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFF - FFFFD68561C75828C75828F0D2C6FFFFFFFFFFFFC75828D68561FFFFFFFFFFFF - D68561C75828E5B19BFBF4F1FBF4F1E5B19BCB6336FFFFFFF0D2C6C75828E5B1 - 9BFFFFFFDD9B7EC75828D27953FBF4F1FFFFFFF0D2C6C75828C75828D68561FF - FFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFD68561C75828F0D2C6F0D2C6ECC7B7D27953C75828E9BCA9FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828CE6E - 45FFFFFFFFFFFFF0D2C6C75828D68561FFFFFFFFFFFFDD9B7EC75828ECC7B7FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFF - FFFFFFFFFFFFDD9B7EC75828F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828F8E9 - E2FFFFFFC75828D68561FFFFFFFFFFFFFFFFFFECC7B7C75828DD9B7EFFFFFFF0 - D2C6C75828C75828C75828E5B19BFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFF - F4DED4C75828CB6336FBF4F1E5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD68561C7 - 5828FFFFFFF8E9E2C75828D27953FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD27953C75828F8E9E2F8E9 - E2C75828D27953FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC7 - 5828F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFFFFFFD68561C75828 - C75828CB6336FBF4F1FFFFFFC75828D68561FFFFFFF8E9E2C75828D27953FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BE9BCA9C75828D2 - 7953FBF4F1FFFFFFFFFFFFF0D2C6C75828C75828C75828E5B19BFFFFFFE5B19B - C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C758 - 28FFFFFFFFFFFFFFFFFFECC7B7C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828D68561C75828E5B19BFFFFFFF0 - D2C6C75828D68561FFFFFFFFFFFFD68561C75828FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFD685 - 61C75828FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFC75828D68561FFFFFFF0D2C6C75828E1A68C - D27953C75828F0D2C6E5B19BC75828F0D2C6FFFFFFFFFFFFE5B19BCB6336C758 - 28C75828C75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFF0D2C6 - C75828DD9B7EF0D2C6F0D2C6F0D2C6F0D2C6F0D2C6F8E9E2FFFFFFE5B19BC758 - 28F0D2C6FFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6F0D2C6C75828DD9B7EF0 - D2C6F0D2C6F0D2C6F0D2C6F0D2C6F8E9E2FFFFFFE5B19BC75828F0D2C6FFFFFF - FFFFFFFFFFFFD68561C75828FFFFFFFFFFFFD68561C75828E9BCA9C75828D685 - 61FFFFFFC75828D68561FFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF0D2C6C75828CE6E45C75828CB6336F4DED4FFFFFFFFFFFF - FFFFFFF0D2C6C75828E1A68CD27953C75828F0D2C6E5B19BC75828F0D2C6FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BE5B19BE1 - A68CCE6E45CB6336F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFD68561C75828ECC7B7CB6336CB6336FBF4F1F0D2C6C75828D68561 - FFFFFFFFFFFFD68561C75828FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFF - FFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFC75828D68561FFFFFFFFFFFF - FFFFFFFFFFFFC75828D68561FFFFFFF0D2C6C75828E5B19BF4DED4CB6336CB63 - 36DD9B7EC75828F0D2C6FFFFFFF0D2C6C75828D27953ECC7B7F0D2C6DD9B7EC7 - 5828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828 - F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFF0D2C6C75828C75828C758 - 28C75828C75828C75828C75828E5B19BFFFFFFE5B19BC75828F0D2C6FFFFFFFF - FFFFFFFFFFE5B19BC75828F0D2C6F0D2C6C75828C75828C75828C75828C75828 - C75828C75828E5B19BFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD685 - 61C75828FFFFFFFFFFFFD68561C75828FFFFFFDD9B7EC75828E1A68CC75828D6 - 8561FFFFFFF0D2C6C75828E1A68CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - F0D2C6C75828D27953CB6336CB6336F4DED4FFFFFFFFFFFFFFFFFFF0D2C6C758 - 28E5B19BF4DED4CB6336CB6336DD9B7EC75828F0D2C6FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD68561C75828D68561D68561CE6E45C75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561 - C75828F0D2C6E9BCA9C75828DD9B7EF0D2C6C75828D68561FFFFFFFFFFFFE1A6 - 8CC75828E5B19BFFFFFFFFFFFFFFFFFFFBF4F1F8E9E2FFFFFFFFFFFFF0D2C6C7 - 5828E5B19BFFFFFFFFFFFFFFFFFFE1A68CC75828E9BCA9FFFFFFFFFFFFFFFFFF - CE6E45C75828FBF4F1FFFFFFC75828D68561FFFFFFFFFFFFFFFFFFECC7B7C758 - 28DD9B7EFFFFFFF0D2C6C75828E5B19BFFFFFFE9BCA9C75828C75828C75828F0 - D2C6FFFFFFE5B19BC75828ECC7B7FFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828F0D2C6FFFFFFFFFF - FFFFFFFFD68561C75828FFFFFFFBF4F1C75828D68561FFFFFFFFFFFFFFFFFFE9 - BCA9C75828E5B19BFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD27953 - C75828F8E9E2FBF4F1C75828D68561FFFFFFFFFFFFFFFFFFE9BCA9C75828E5B1 - 9BFFFFFFE5B19BC75828F0D2C6FFFFFFFFFFFFFFFFFFD68561C75828FFFFFFFF - FFFFD68561C75828FFFFFFFBF4F1D27953C75828C75828D68561FFFFFFFBF4F1 - C75828CE6E45FBF4F1FFFFFFFFFFFFFFFFFFF4DED4FFFFFFF0D2C6C75828E5B1 - 9BF0D2C6C75828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828E5B19BFFFFFFE9 - BCA9C75828C75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFD68561C75828FFFFFFFFFFFFFFFFFFD27953CB6336FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFF - FFD68561C75828E5B19BC75828D68561FFFFFFFFFFFFF8E9E2CB6336CB6336E5 - B19BF0D2C6E5B19BCB6336E5B19BE5B19BE5B19BDD9B7EC75828D68561E5B19B - E5B19BF0D2C6F8E9E2C75828CB6336E9BCA9F0D2C6DA9070C75828DD9B7EFFFF - FFFFFFFFC75828C75828D68561E9BCA9E9BCA9CB6336C75828F0D2C6FFFFFFF0 - D2C6C75828E5B19BFFFFFFFFFFFFDD9B7EC75828C75828F0D2C6FFFFFFE9BCA9 - C75828CE6E45E5B19BE5B19BD68561C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFE5B19BC75828DD9B7EE5B19BE5B19BE5B19BCE6E45C7 - 5828FFFFFFFFFFFFE1A68CC75828DA9070F0D2C6E9BCA9CB6336C75828F8E9E2 - FFFFFFE5B19BC75828CB6336E1A68CF0D2C6DA9070C75828D68561FFFFFFFFFF - FFE1A68CC75828DA9070F0D2C6E9BCA9CB6336C75828F8E9E2FFFFFFE5B19BC7 - 5828DD9B7EE5B19BE5B19BE5B19BCE6E45C75828FFFFFFFFFFFFD68561C75828 - FFFFFFFFFFFFF4DED4CB6336C75828D68561FFFFFFFFFFFFE1A68CC75828D685 - 61ECC7B7ECC7B7D68561C75828FFFFFFF0D2C6C75828E5B19BFFFFFFD27953C7 - 5828DD9B7EE9BCA9FFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFDD9B7EC75828 - C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C758 - 28E5B19BE5B19BE1A68CC75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828F0D2C6FFFFFFF0D2C6C75828CB - 6336C75828D68561FFFFFFFFFFFFFFFFFFF4DED4CE6E45C75828C75828C75828 - CB6336ECC7B7C75828C75828C75828C75828C75828C75828C75828E5B19BFFFF - FFE9BCA9CB6336C75828C75828C75828D68561FBF4F1FFFFFFFFFFFFC75828CE - 6E45CE6E45C75828C75828C75828E1A68CFFFFFFFFFFFFF0D2C6C75828E5B19B - FFFFFFFFFFFFFFFFFFD27953C75828F0D2C6FFFFFFFFFFFFE5B19BCB6336C758 - 28C75828C75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFE5B19BC75828C75828C75828C75828C75828C75828C75828FFFFFFFFFFFF - FBF4F1DA9070C75828C75828C75828C75828E9BCA9FFFFFFFFFFFFE5B19BC758 - 28D68561C75828C75828C75828CE6E45F4DED4FFFFFFFFFFFFFBF4F1DA9070C7 - 5828C75828C75828C75828E9BCA9FFFFFFFFFFFFE5B19BC75828C75828C75828 - C75828C75828C75828C75828FFFFFFFFFFFFD68561C75828FFFFFFFFFFFFFFFF - FFECC7B7C75828D68561FFFFFFFFFFFFFFFFFFE1A68CC75828C75828C75828C7 - 5828D68561FFFFFFF0D2C6C75828E5B19BFFFFFFF4DED4D27953C75828D68561 - FFFFFFF0D2C6C75828E5B19BFFFFFFFFFFFFFFFFFFD27953C75828F0D2C6FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828C75828C75828C7 - 5828CE6E45E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFD68561C75828F0D2C6FFFFFFFFFFFFDD9B7EC75828C75828D68561 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6F0D2C6FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 - D2C6F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6 - F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9 - E2F0D2C6F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0 - D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6F0D2C6 - FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F0D2C6F8E9E2FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561 - C75828F0D2C6FFFFFFFFFFFFF8E9E2CB6336C75828D68561FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A68CD68561F4DED4FFFF - FFFFFFFFFFFFFFE5B19BD68561E1A68CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD - FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD - FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFC - FCFCF7F7F7F1F1F1ECECECE5E5E5DEDEDED7D7D7D0D0D0CBCCCCC9C9C9C5C5C5 - C7C8C8CACBCBCCCCCCD1D1D1D8D8D8DFDFDFE6E6E6EEEEEEF4F4F4F8F8F8FBFB - FBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCF9F9F9F9F9F9F7F7F7F6 - F6F6F6F6F6F7F7F7F6F6F6FAFAFAFBFBFBF9F9F9F8F8F7F7F7F6F8F8F7F8F8F7 - F8F8F7F8F8F7F8F8F7F8F8F7F8F8F7F8F8F7F8F8F7F9F8F8F9F8F8F9F8F8F9F8 - F8F9F8F8F9F8F8FBFBFBFFFFFFFBFBFBF8F8F8FAFAFAFBFBFBFCFCFCFCFCFCFD - FDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9 - F9F4F5F5F0F1F1F0F1F0F1F2F2F5F6F5FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F7F2F2F5F3F3F6F3F3F6F3 - F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6 - F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F3F3F6F2F2F5F9F9FAFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFEFEFEFBFBFBF7F7F7EFEFEFE7E7E7DEDEDED5D5D5CCCCCC - C3C3C3BABABAB2B2B2AFAFAFADAFAFAD9F97BC8265CC7A56C3805FB09A8CABAA - A9AAABABAFAFAFB4B4B4BCBCBCC5C5C5CFCFCFD7D7D7E0E0E0E8E8E8F0F0F0F7 - F7F7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFCFCFCF9F9F9F6F6F6F4F4F4F1F1F1F0F0F0EBEBEBE8E8E8E5E5E5E4E4E4 - E5E6E6E6E6E6DDD5D0DBBEAFD8B39FD8B39FD8B3A0D8B3A0D9B3A1D9B3A1D9B4 - A1D9B4A1D9B4A1D9B4A1DAB5A2D9B4A2D9B5A1D9B5A1D9B5A2D9B3A0D9B3A0DE - C1B2E3DAD5EDEDEDEEEEEEEEEEEEF1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F8F8F8 - FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFCFCFCFAFAFAF5F5F5EEEEEEE5E5E5CBCCCCA8ADAB85938C6D85795F7E6F5C - 7C6D607E706F867B899690B0B4B2D9D9D9ECECECEFEFEFF6F6F6FAFAFAFEFEFE - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFBFBDC96765825A587C6161856160836060835D5E835E5D82 - 5B5B815A5B805A5A7F59577F56577D56567D56567D55557C54557D54547E5454 - 7D52527C54547D54547D53517C4D4B73807D93E1E0E5FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF7F7F7 - EFEFEFE7E7E7DEDEDED4D4D4CCCCCCC1C1C1BABABAB1B1B1ADADADABABABABAB - ABAEAFAFAFA29ACF8661EA7B48EE814BEC7D49D87F54B29A8DAFAFAFABACACAB - ABABABABABAEAEAEB4B4B4BCBCBCC4C4C4CFCFCFD7D7D7E1E1E1EAEAEAF2F2F2 - F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD - FDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBE9E9E9CFCFCFDADBDCBFA396E688 - 59E88552EA844FEA844EEA844FEB844FEB854FED8550EC8550EC864FEC864FEC - 8550EB854FEC8650ED8650EC8651ED8750ED8650ED8650ED8953E79063D0B6A8 - E3E3E3E2E2E2E4E4E4E7E7E7E9E9E9E9E9E9ECECECEEEEEEF3F3F3F8F8F8FDFD - FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9CD - CDCDB8B8B8848C8842715B307B5930865F33916734956A35966B349469318D63 - 2F845D327A59527665919694BCBCBCDDDDDDEFEFEFFBFBFBFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEADABB9 - 4C497375719E7E7BB1726FAD6C6BA86867A66362A55E5FA05A599D56559C5051 - 9D4B4B994747964444964140923D3E8F3B3B8F39388F36368D33328A28288620 - 1F82211F8426258525226D545174D7D7DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF2F2F2EAEAEAE0E0E0D8D8D8CDCD - CDC5C5C5BCBCBCB2B2B2ADADADACACACACACACACACADADAFB0B1A8A3CD8966EE - 844DEA9C5DEEB86EECA863EB8750D8865BAFA29AB0B2B3ADADAEACACACACACAC - ACACACAEAEAEB4B4B4BFBFBFC8C8C8D1D1D1DADADAE4E4E4EDEDEDF4F4F4FCFC - FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFE6E6E6C5C6C7BFB0A7E58D5EED854EE5824DE5824DE6 - 824DE6844EE7844EE7844EE7854FE7854FE7854FE7854FE7854EE7854EE7854E - E7854EE7844FE7854EE7854EE5834EE6844EEE8850E48F5FCAB8ADD3D3D4D6D6 - D6D8D8D8DBDBDBDFDFDFE4E4E4E8E8E8EEEEEEF4F4F4FAFAFAFDFDFDFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7A4B1AB929995747B77377A5B - 32936731916734976B389E733BA3763DA6793CA5783AA175369C7035986C3597 - 6B3C70588083818F9C95D2D6D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFECCCAD257557A8C89B95F5CAA1C1B - 8117167E1D1B831E1A821C19811B1A7E17177D1212790F10760E0F7713137B14 - 157C0D0E760A0C750B0B750A0B750B0B760908760A097B1C1B851F1E85212087 - 292792222274676581EAE9ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFEFEFEF9F9F9F1F1F1E7E7E7DEDEDED5D5D5CDCDCDC3C3C3BABABAB1B1B1AC - ACACACACACADADADACACACAEAFB0B1ADAAC29175EC854FF3B46BFBEC8FFEFC9D - FDF595F5C374F29053CE8E6AB1A9A3AFB0B1ADADADADADADACACACACACACACAC - ACB4B4B4BDBDBDC6C6C6CECECED8D8D8E1E1E1EAEAEAF3F3F3FCFCFCFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFE2E2E2C3C5C6B89784F98E52E6864FE88850E78750E88850E98850E98A51 - E98A51E98951E98951E98A51E98A51EA8B52EA8B52EA8B52E98B52EA8A51E98B - 51E98B51E98851E98A51EA8951F58E52C79374C8C9C9CECFD0D1D1D1D6D6D6DB - DBDBE2E2E2E7E7E7ECECECF4F4F4F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFCFCFC699E8355826C507162308D63339469318F643394 - 69379B703AA0753EA5793EA6783BA175389B7035986E379C7031815C57746644 - 8E6ABCCBC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF4F4F77F7E9979759F6F6BB21010770F0F740E0D7708047408 - 03730A037208007200006E07077318177A1B187B100A75000070090A74141479 - 1312791313791111781C1C7C6B69A9B4B3D2A4A4CA4948940B0B7B28278E2321 - 5FB9B8C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3EB - EBEBE0E0E0D7D7D7CFCFCFC6C6C6BCBCBCB4B4B4ADADADACACACADADADADADAD - AEAFAFB0AEADBD9882E98853F4B068FCF191FFFF9BFFFA97FFFF99FEFA95F7BF - 71F38E54C79679AFACA9ADADAEADADADADADADACACACACACACAEAEAEB6B6B6C0 - C0C0C8C8C8D1D1D1DADADAE3E3E3EDEDEDF6F6F6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFE4E4E4C5C7C8 - B3907CFD9455E98B52EB8D52EB8D53EB8E54ED8E54EC8F54EC8E54EC8F54EE90 - 55ED9055ED9055ED8F55EE9055EE9055ED8F54EE9055ED9054EC8F54ED8F55EC - 8F54EB8E53F99557CA8D67CACBCBD0D1D1D4D3D3D9D9D9DFDFDFE5E5E5EAEAEA - F0F0F0F7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFEFEFE6DA28933805A30694E2C875E309066308E6434946A379C6F3BA1743F - A5783EA4773AA174389B7036966B35976C2B805A2C6E4F389568C5D4CCFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 - F4F78181A28986AE413F963A3A8DAEABCE8684B81312790D0E760F0E7600006F - 242383918FBFC2C0DA8785B81D1A7C16147A8381B7AEACD0B2B0D2AAA8CC9E9C - C5A9A7CCE0DDEDFAF6FDE1DDEF7775B00A0B76211F8B26256AB4B5C4FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF1F1F1EAEAEADFDFDFD6D6D6 - CDCDCDC5C5C5BBBBBBB3B3B3AEAEAEADADADADADADACACADB0B1B1B59E90E68E - 5DF3A361FBE68AFFFF9AFFF693FFF592FFF592FFFC96FDED8DF8B068E78F59B4 - 9783A6A6A6ACADAEADADADACACACACACACADADADB5B5B5BFBFBFC7C7C7D0D0D0 - DADADAE2E2E2ECECECF5F5F5FEFEFEFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9FAFA - FAFCFCFCFCFCFCF9F9F9F6F6F6F4F4F4F1F1F1F0F0F0EFEFEFEEEEEEEEEEEEEE - EEEEEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEF0F0F0F0F0F0F2F2F2F5F5F5F8F8F8 - FBFBFBFDFDFDFBFBFBF9F9F9FCFCFCFFFFFFE6E6E6CACCCDB79580FF9A59EC90 - 54EE9055EE9255EF9357EF9257EF9357F09457EF9357F09458F19558F19558F0 - 9657F19558F19558F09457F09557F09457EF9457EF9357EF9357EF9256FD9B59 - C8906BD1D3D4D6D7D7D7D7D7DDDDDDE3E3E3EAEAEAEFEFEFF5F5F5FCFCFCFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F2F164A38629 - 81582A63472D835C3191662F8D64339369389A6F3AA0733CA3763DA578399D72 - 36996E34946B34966C287B56216F4B35996AB0C5BAFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F88A88A78C89B1 - 3E3C9555539EF3F1F9B7B5D60D0C7602026F00006D262483A5A2CBFDF9FEC7C5 - E0454597000069414293DCD9EBEAE6F3C0BFDAD1CFE3F5F1FAF6F3FAD7D4E8B9 - B6D5E3E0EFC1C0DB2425851614852E2C6EB8B8C6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFCFCFCF3F3F3ECECECE1E1E1D8D8D8D0D0D0C7C7C7BEBE - BEB6B6B6ADADADACACACACADADAFB0B1B2A59BE19666F9A05EFAD580FFFD98FF - F593FFF595FFF99AFFF494FFF08FFFFA95FDE086FAA863E0915DA9988AAEB0B0 - ADAEAEADADADACACACAFAFAFB8B8B8BFBFBFCACACAD3D3D3DDDDDDE6E6E6F0F0 - F0F6F6F6FCFCFCFBFBFBF5F5F5EFEFEFE8E8E8E6E6E6E4E4E4E0E0E0DBDBDBD1 - D1D1CACACAC3C3C3BBBBBBB7B7B7B4B4B4B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3 - B4B4B4B3B3B3B3B3B3B6B6B6BABABABEBEBEC7C7C7CECECED7D7D7DEDEDEE2E2 - E2E5E5E5E7E7E7F1F1F1E3E3E3D1CFCECC9F7FFE9C5BEF9557F09558F09758F2 - 9859F2985AF29859F29859F3995AF39A5BF39A5BF39A5BF49959F49A5AF49A5B - F39A5BF29A5AF39A5AF39A5AF2985AF3995AF1985AFD9E5CD3986ED7D6D5E0E1 - E1E2E2E2E8E8E8EDEDEDF4F4F4F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2DDD753A07B2D9165206745257752 - 34946832916732926836966C35966B389A7036996E399D72389B7034966C3191 - 6822734F26785334A16E8DB3A0FCFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F88B89A8918EB545449C54529DE6E4 - F0ACACD0090A7600006C2D2C87AEACD0F1EEF8B2B0D32B2A8400006A00006C4A - 4C99DCDAECBBB7D63534887C7BB2D5D3E7C8C6DF5C5BA13B3B8ED4D3E6C9C7DE - 2B2A881A1688302E70B8B8C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF9F9F9F1F1F1E7E7E7DEDEDED5D5D5CDCDCDC4C4C4BCBCBCB2B2B2AD - ADADAEAEAFB1ABA5D89A70FFA35FFACC79FEF794FFF492FFF190FFF89AFFFEA1 - FFF89AFFF191FFF291FFF694FED37EFFA963DE9E6EB1A9A1AFB1B2ACACACADAD - ADB4B4B4BEBEBEC5C5C5D0D0D0D9D9D9DFDFDFE3E3E3E6E6E6E9E9E9E8E8E8DE - DEDED3D3D3CBCBCBC2C2C2BABABAB3B3B3ACACACA4A4A49E9E9E9C9C9C969696 - 9191918E8E8E8C8C8C8B8B8B8B8B8B8D8D8D8E8E8E8D8D8D8C8C8C8B8B8B8B8B - 8B8D8D8D8F8F8F9393939B9B9B9D9D9DA2A2A2A8A8A8B1B1B1B9B9B9C2C2C2CC - CDCCD4D4D5D6CFCBE4A980FC9E5DF49C5BF39B5BF49C5CF59D5CF59E5DF59E5C - F59E5DF69F5DF6A05EF6A05EF6A05EF69F5DF7A05EF79F5EF7A05EF69F5DF69F - 5DF69E5DF69F5DF69E5DF59D5CF89E5DF6AB73E5DBD3F4F4F4F3F3F3F8F8F8FA - FAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFCBD9D24EA07A319B6C27785423714C2F8C63389B703698 - 6D3B9E73399C713EA17636976D3EA4773A9E723293692D865F2676512B845D35 - A67283A996FAFBFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF5F5F88B8AA99493B84A48A056539FDDDCEBC6C7DF7775B172 - 71AEAFADD1EBE8F4D9D7EA9C9AC7615FA4302C8900006B464796DBD8EAB5B2D5 - 201F802D2D8842429432328C00006D2B2B87D4D2E7C4C3DC2928861D1A8A312F - 72B8B7C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB - FBFBF2F2F2E9E9E9E1E1E1D8D8D8CECECEC6C6C6BEBEBEB5B5B6B2AFAEC79F7F - F89E5EFDC274FFF191FFF492FFEE8FFFF697FFFC9DFFFC9DFFFB9DFFF798FFEE - 8FFFF190FEED8EFEC878FFAA65CEA17EB1AEABAFB0B1B7B7B7C2C2C2CACACAD0 - D0D0D1D1D1D1D1D1D1D1D1D2D2D2D6D6D6D4D4D4CBCBCBBDBDBDB2B2B2A8A8A8 - A1A1A19B9B9B9797979595959393938B8B8B8686868080807777777171716B6B - 6B6464646666666C6C6C7171716E6E6E6767676363636767676F6F6F7474747C - 7C7C8383838A8A8A909090949494959595969696979797959595A2A4A5CBC5C0 - E0A87EFEA661F6A05EF7A15EF8A15EF8A15EF8A35FF8A460FAA460F9A560F9A4 - 60F9A561F9A561F9A560F9A661F9A461FAA561F9A660FAA460FAA360F9A460F9 - A460F8A35FF8A25FFFB77AEFE6DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFD2DDD754A580339D6E348F663289602579543393693BA0743FA57942AA7D44 - AE8042AB7D41A97B3BA2742E8B622C835B349066318E6635A6758CB9A3FBFDFC - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 - F5F88D8CAD9895BA4D4BA05755A1D8D5E7E6E5EFEDECF3F1F1F6EDEDF5E4E2EF - E1E0EDE4E2EFE8E6F27372B000006A464495DDD9EABBB8D91D1D7F00006A0000 - 6F00007100006E3B3A8ED5D3E7C4C3DC2728871F1D8A333172B8B8C7FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9 - F2F2F2EAEAEADFDFDFD5D5D5CFD0D0CCCDCDC4AA95F6A163FDB96DFFE88CFFF4 - 93FFEC8EFFF293FFFB9BFFFB9CFFFA9AFFFB9BFFFB9AFFF293FFEA8DFEED8FFE - E68BFFC171F8A665C5AA92C5C4C3C5C6C6CACACACFCFCFD0D0D0CECECED0D0D0 - D6D6D6D6D6D6C8C8C8B8B8B8AAAAAAA5A5A5A5A5A5A4A4A4A0A0A09A9A9A9595 - 959292928D8D8D8585857F7F7F7979797373736B6B6B6464645D5D5D5F5F5F65 - 65656A6A6A6969696161615D5D5D6161616868687070707777777C7C7C848484 - 8A8A8A8D8D8D8383838383838080807C7D7D7E8081A5A09BCF9D73FFAD65FAA4 - 60FBA561FCA762FCA762FCA762FCA763FDA864FCA863FCA863FCA863FCA964FD - A964FCA964FCA864FCA963FCA964FCA863FDA863FCA863FCA762FCA763FCA763 - FFB97DFAF2EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7EBE961A98837 - A7743491683D9C702D845B2A835B36986D399E723DA37741A87B40A97B3EA578 - 379C702D885E36916639986C3392693AAC79A4C4B4FEFEFEFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F88E8DAE9B98BB - 5553A55F5CA6E6E1ECCAC6E06F6DB16A68AD6968AE6462AB6462AAABABD1F2F3 - F8807DB700006F474698DEDCEBB7B5D714147A00006900007000006E0000652B - 2B87D3D1E7C4C3DC27278623218C373574B8B8C7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7 - F7F2F2F2F6F7F7D5C9BDF9B272FFB56AFDDD86FFF192FFEB8EFEEF91FFFA99FF - FD9CFFFB9AFFFA99FFFA99FFFC9AFFF998FFED91FEE78DFEED90FDDE85FFBA6D - F5AE71D5C3B2E4E4E3DEDFDFDBDBDBDADADADBDBDBD3D3D3BFBFBFA7A7A79E9E - 9EAFAFAFB0B0B0ABABABABABABA6A6A6A0A0A09B9B9B9595958F8F8F8A8A8A83 - 83837D7D7D7878787272726B6B6B6464645E5E5E5F5F5F6565656A6A6A686868 - 6262625E5E5E6060606767677070707676767B7B7B8181818A8A8A8888887272 - 72727272757575747475737577877E73D19A66FFAE64FCA862FCAA64FCAA63FC - AA63FDAB64FDAB65FDAB64FCAA63FDAB65FCAA64FCAB64FDAC65FDAC65FDAB64 - FCAA64FCAA64FCAB65FDAB65FCAB64FCAA63FCA963FDAA64FCB275FFEBD9FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89B39F39AF7834976D3D9C71 - 399569287F58308F66399E72399D723CA1763EA5783CA276329168318D633A9A - 6E35916938A6754CAE80D1DAD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F8908EB09D9CBE6461B06D6AB0EAE8 - F0C3C1DB4A479A3F3B94413E983B38943936919895C4F2F1F67F7DB70000764C - 4A9EDDDCEBC5C6DF5555A04140954644984544953F3D8F6160A4D9D8E9C4C2DC - 2C298827238F393777B8B8C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE5E0F8 - C28AFFB76CFDD480FFED90FEE98EFEEA8FFFF797FFFC9AFFFB98FFFA98FFFB99 - FFFA99FFFB99FFFB99FFF697FEE98EFEE58CFEE98FFED681FFB76BF9BD84E1D8 - CFEBECECDEDEDED2D2D2B3B3B39B9B9B8C8C8C8585858181819D9D9DB2B2B2AB - ABABA5A5A5A1A1A19D9D9D9898989393938E8E8E8A8A8A8383837D7D7D787878 - 7373736B6B6B6464645E5E5E5F5F5F6565656A6A6A6767676262625E5E5E6161 - 616868687070707575757B7B7B8282828A8A8A89898973737373737376767678 - 787976797D958573E3A164FFAE64FDAD67FCAD66FDAD66FDAD66FCAD66FCAD65 - FCAC65FCAC65FDAD65FCAC64FCAC64FDAD65FDAD66FDAC65FCAC65FDAD65FCAE - 65FCAC65FDAD65FCAD66FDAD66FCAD64FCB16EFEE0C7FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFCFD9D44FAD8039AB7837946B3B996E3590652F8B - 6137996E389A6E35956B37996E35966B3390643694683391683392693CB87F88 - B19CF6F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF6F5F89190B29F9DC06D69B57B77B7F2F0F3F3F2F3DFDDE8DD - DBE8DADBE9DAD9E8D9D6E6EBE7F0F9F5F77B79B50000723C3995DBD9E8F3F3F6 - DEDEECDDDDECDFDDECDEDEEBDCDAEADDDCEBF7F6FBC2C0DB2626862E2C913C3A - 77B8B8C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9F6F7C59AFFB167FDCA79FEE88F - FEE68DFEE88EFFF395FFFA99FFF998FFF898FFF798FFF898FFF998FFF898FFF8 - 98FFF898FFF193FEE48CFEE48DFEE68EFECA7AFFB76AE3BA92D2CEC9B2B4B599 - 9A9A8C8B8B8383838080807E7E7E7A7A7A7E7E7EA0A0A0AEAEAEA7A7A7A1A1A1 - 9E9E9E9999999393938F8F8F8A8A8A8484847C7C7C7878787171716B6B6B6363 - 635D5D5D5E5E5E6464646868686464645D5D5D5A5A5A5E5E5E6767676E6E6E76 - 76767C7C7C82828288888881818174747474747476767676767672757992816F - E3A265FFB46AFCB66EFDB66FFCB56EFCB56EFCB36EFDB46EFDB46EFDB46EFCB3 - 6DFDB26BFCB26AFCB26AFDB169FDB169FDAF67FCAE66FDAF67FCAE67FCAF66FC - AE67FCAE66FCAE66FDB473FEE4CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFDFDFD9BBBAA3FB47D39A673359565338D5F287B51277B4F287F5025 - 7B4E277E51287D522B7F5330895B31916339B17A59AD84D7DEDAFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 - F6F99190B3A3A0C17A76BA6661AEA39FCCA7A2CDA8A5CFA8A6CEA5A4CCA5A3CC - A2A0CC9A97C78583BB4A499D2A298C3938937370AF8C8ABE908EC1908FC18F8D - C18B8AC18B8BC08B8AC08583BC55539E14137E413E9C3E3C79B8B8C7FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFEFEFFDCB9FFB16BFDC073FEE48BFEE68EFEE48CFFEF92FFF8 - 98FFF898FFF697FFF697FFF698FFF697FFF597FFF697FFF596FFF497FFF496FE - EB92FEE18BFEE38DFEE08BFFC576FAB36CC7A8868B8D8D808588838483828282 - 7F7F7F7F7F7F7D7D7D797979848484A4A4A4ABABABA2A2A29D9D9D9898989191 - 918C8C8C8686867F7F7F7575756F6F6F6868685F5F5F5555554E4E4E4F4F4F57 - 57575C5C5C5B5B5B5858585656565D5D5D6565656D6D6D7171717E7E7E838383 - 8484847E7E7E74747476767676767676777773767A918270E3A265FFB970FDBB - 77FDBB75FDBC75FDBB75FCBA75FDBB75FCBA75FDBB75FDBA73FDBA73FDBA73FD - B973FCB771FDB971FCB870FDB56EFCB56EFDB46BFDB168FCAF67FDB067FDB067 - FCB571FEE2C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 - FAF986B89F39A9742B8B661D5E761B5A7F27667A336F7236726E31707725657E - 1A577F1F656C319E6C4DAA7CC2D5CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F99391B6A8A5C4 - 8B87C34B46A44844A148449F4943A047439F44409D3F3B9A3B3799322D952926 - 8F6763ACA19ECAA6A3CC3F3C98120E8117158214128016148016148115128012 - 0C8007037B00007611117F4F4DA2424179B7B7C7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE2 - C9FCB371FCBB71FDDD88FEE58DFEE18CFEE990FFF396FFF498FFF497FFF397FF - F397FFF598FFF397FFF297FFF296FFF297FFF296FEF297FFF196FEE78FFEDE8B - FEE28DFDDA87FFC272F0AE69AB93777F82847F81838180807F7F7F7F7F7F7F7F - 7F7D7D7D777777888888A4A4A4A1A1A19898989191918A8A8A8585858787878A - 8A8A8F8F8F9090908A8A8A8F8F8F9595958F8F8F9292929191919E9E9EC2C2C2 - C3C3C3BDBDBDB1B1B1ACACACA3A3A39595959494949999999898987F7F7F7272 - 7275757578787879797971767A998670EAA965FFBC73FCBE7AFDBD77FCBE78FD - BE78FCBD77FDBE77FCBE77FCBD77FCBD77FCBD77FDBD77FDBD76FDBC76FDBD76 - FCBD76FCBC75FDBC75FDBB73FCB972FCB66EFDB46BFDB269FCB169FED7B4FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEFEE5E8FA4 - 368AAE286AA4215E9F2660A0356BA23E71A53168A2235E9F2160A22D75A63892 - B089A2AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F99492B8A9A6C6918CC56661B0908C - C4A9A6D0AFADD4B4B2D6B3AFD5ABA6D2AFABD49C98C9544FA58784BEB5B2D390 - 8CBF403C994F4BA09290C29693C39391C39A98C69896C48F8BC07E7AB64F4E9E - 1D1C86514FA449467BB8B7C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDDCFDBC7FFDB76CFED482FE - E38DFEDF8BFEE58EFEEE94FFF396FFF296FFF196FFF196FFF196FFF297FFF196 - FFF096FEF096FFF196FFF196FFEF95FEEF95FEED94FEE28DFEDB89FEDF8CFED3 - 82FFBF6EE3AB6A998C7A7A7F858081828080807F7F7F7F7F7F7D7D7D78787875 - 75758A8A8AA1A1A1A7A7A7B4B4B4C0C0C0C6C6C6CECECED4D4D4DEDEDEE3E3E3 - E3E3E3ECECECF6F6F6F3F3F3F5F5F5F2F2F2F3F3F3FFFFFFFFFFFFFFFFFFFBFB - FBF8F8F8F5F5F5F0F0F0E3E3E3D5D5D5C1C1C18B8B8B73737375757577777777 - 787870747AA58B70F5B067FFBE76FDC17EFDC07BFDC07BFDC17BFDC07BFDC17B - FDC17AFDC07AFDC07AFCC079FCC079FDC079FDC079FDBF79FDBF78FDBF78FCBF - 78FDBF77FDBE77FDBE76FCBC74FCB66DFDB369FDD7B0FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF678BA63797DC3C9CD94299 - CF4597CC4697CD4797CF4597CC4397CC4199CE3D9FE03488CC90A2AEFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF6F6F99594B9A8A4C89F99CCB9B6D8EFEEF6F0F0F7EFF0F7EF - F0F6EFEFF5F8F7F9FAF9FBAFACD34642A0736FB6AAA6CE5654A41B18883F3B98 - BEBDD9FCFAF9EEEAF3E8E5EFE9E5EFE8E5EFEBE8F0DDD9E86965AC524EA34C49 - 7EB8B8C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFF7EFFDC692FCB36AFDCF7FFEDF8CFEDE8BFDE08BFFEC93 - FEEF95FFF096FFF096FFF096FEF095FEF095FEF096FEEF95FEEF95FFEE95FFEF - 96FFEF95FEED95FFED95FFEE95FEE892FEDC8BFEDA8AFEDD8AFFCD7DFFBC6DCF - A36F87857F7B7F838180807E7F7E7C7C7C7A7A7A7E7E7E878787979797C2C2C2 - E5E5E5F2F2F2FBFBFBFEFEFEFEFEFEFEFEFEFBFBFBFDFDFDFBFBFBF4F4F4F3F3 - F3F4F4F4F2F2F2F2F2F2F3F3F3F2F2F2EAEAEAE2E2E2E9E9E9F0F0F0FAFAFAFD - FDFDFCFCFCFBFBFBF1F1F0B0B0B09A9A9A8E8E8E82828279797971757BA68D70 - F6B169FFC07AFDC380FDC37EFDC47EFDC47EFDC47EFDC47EFDC37EFDC37DFDC3 - 7DFDC37DFDC37DFCC27CFCC27BFCC17BFDC17CFDC27BFDC27BFDC17AFDC17AFD - C07AFCC17AFDBF76FDB86CFDD8B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF7F8F7A8B9B9397BA02E8FD9369AE547A5E75BB2EB65B9EB66 - BBE962B7EB54AEEA41A2E43499E82980C63778909FB2ACF2F4F3FDFDFDFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 - F6F99695BBA9A4CAADA8D3D9D5E7FAF6FAEFEBF4EBE8F3EBE9F3F1F0F7EDEEF5 - ADABD35E59AB6763B1716DB66D69B55B57AA5450A42D29913C3999B3B2D4F2F0 - F4E7E5EEE0DDEBDFDCEAE4E2EDF6F3F68F8CC15B58A84F4E7EB7B8C7FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF6 - FED2A6FDB36AFDC979FEDE8BFEDC8BFEDC8BFEE790FEED94FFEE95FEED95FEED - 95FFEE95FEED95FEED95FEED95FFEE96FFEE96FEEC95FEEC95FEEC95FFEC95FF - EB94FEEA94FFEA95FEE390FEDA8AFEDA8BFED889FFC879FABC6BBB9C737F8081 - 7C7F828180808B8B8B9797979F9F9FA9A9A9B0B0B0C3C3C3EBEBEBF4F4F4E5E5 - E5E1E1E1D8D8D8D3D3D3D0D0D0D1D1D1D0D0D0CACACAC9C9C9C8C8C8C8C8C8C8 - C8C8C8C8C8C3C3C3C1C1C1BDBDBDBEBEBEC0C0C0C2C2C2C5C5C5CDCDCDD9D9DA - DBDBDDA9AAACA2A3A4A2A3A49E9FA09394967E838AA89175F5B46CFFC57EFDC6 - 82FDC681FDC782FDC782FDC781FDC781FDC782FDC680FDC680FDC680FDC680FD - C57FFDC67FFDC67FFDC47FFDC57EFDC57EFDC47DFDC47DFDC47DFDC47CFDC27B - FDBB71FED4A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF2F08E - AA993D8D893391C53189AC308797338B9B469DB863B4DF6AB9E858ABD33D95AB - 3189992E889A328AB73593BF398772A1B4A8FCFDFCFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F99896BDADA9CC - AAA6D2B8B5D7F3EFF6F6F2F6F2EDF5F7F3F8EAE7F1A7A2CF615CAD7D77BAD1CF - E49C9ACB514DA6605BAEBDBCDBA3A1CD2B2790302D93A3A0CAE6E5EEE9EAF0E4 - E2ECEDEDF2D4D2E45B59A7615FAC565482B8B8C7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFDD8B7FCB56CFDC275FED8 - 89FEDB8BFED989FEE18FFFEB94FEEB94FFEB94FFEC95FEEB94FEEB95FFEC94FF - EC95FFEC95FEEB95FEEB96FEEB95FEEA95FFEB95FEE994FFEA94FEE794FEE894 - FEE893FEDF8EFDD789FDD889FDD486FFC776F6B86AAD9879888B8F969799A2A2 - A1AAAAAAABABABA7A7A79E9E9E959595A3A3A3C2C2C2C3C3C3BFBFBFBABABAB8 - B8B8BBBBBBB9B9B9BBBBBBBBBBBBBBBBBBBABABABABABABBBBBBBDBDBDBABABA - A9A9A99D9D9D9A9A9A9999999898989696969293958F92958E8F8E8585858B8C - 8B9192919798989798988C9297B89E7FF8BB70FFCA82FDCA86FDCA86FDC985FD - CA86FDC985FDCA85FDCA85FDC984FDC984FDC984FDC984FDC983FDC983FDC882 - FDC882FDC882FDC882FDC681FDC781FDC881FDC780FCC57FFDBF74FED19EFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8E1DC4B9A732F986B2B8362 - 298057258251248856298A612B8C77348F832A8C6E2689592183532881532B82 - 5C2C87642D9867779C8AE9EDEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FA9997C0AFACCEAFA9D48D88C1C6C2 - DEEBE8F2F2EDF4E1DFEEA8A3CF736CB38983BEDBD7E9FDF8F9A5A0CE655FAE6A - 63B0C6C2DEFCFCFEA7A5CF393396332D938B88BFD4D4E5E3E3ECCFCEE17773B5 - 28248F726EB65A5884B7B7C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFEE8CFFCBB76FDBE72FED284FED98AFED889FEDE8DFE - E793FEE893FEE894FEE894FEE994FFEA95FEEA94FFEA95FFEA95FEEA95FEE995 - FFE995FEE894FEE994FEE894FEE894FEE793FEE793FEE693FEE693FEE592FDDB - 8CFDD588FED78AFECF84FFC472EAB56FAC9E8C989CA19A9A9C9393938C8C8C8A - 8A8A898989858585858585A2A2A2BDBDBDBCBCBCBCBCBCBDBDBDBDBDBDBCBCBC - BCBCBCBBBBBBBBBBBBBABABABABABAB9B9B9BDBDBDADADAD9090909090909090 - 908F8F8F8D8D8D8A8B8B8A89869E8E7AB09573B19470AE9574AD9473AC9372B4 - 9B79B7A181DCAD76FFC477FECC88FDCD8AFECC89FDCC88FDCC89FDCB87FECC88 - FDCB87FDCA87FDCC87FDCC87FDCC87FDCC87FECC86FECB86FDCB85FDCC85FDCB - 85FDCA84FECA84FDCA83FDC983FDCA82FDC379FDC88BFEE7CBFEE4C7FEE4C6FE - E3C6FEE2C5FEE2C4FEECD8FFEEDBFEF2E4FFFEFDFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFDEE3E04F95742D95642A83572683572A93637EC2 - A19ED4B540A5761C925D76BF98A2D5B84FA97F2287592982572A81562C93643E - 986C9CB4A8F5F7F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF7F6FA9C99C1B1AED0B6B0D68A85BF8F8BC2A5A1CDAEA9D19A - 95C87F79BB938FC5D8D4E7FDFAFBF3EFF5ACA6D0746EB57772B7C5C1DEF9F5FA - FAF7FBB0ABD3504BA43F3C9C5F5CAA6E69B14D48A02B278F2E2B927E78BB5D5B - 88B7B8C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - F3E6FDC68AFDBC70FECE80FDD78AFDD689FDD98BFEE492FEE794FEE693FEE694 - FEE793FEE793FEE794FFE795FFE795FEE794FEE894FEE794FEE794FEE694FEE6 - 94FEE695FEE693FEE594FEE594FEE494FDE492FEE593FEE190FED68AFDD388FE - D58BFECD7FFFC371DEB275918C817C7F848282838181818383838787878A8A8A - 8A8A8A979797B6B6B6BEBEBEBDBDBDBDBDBDBCBCBCBBBBBBB9B9B9B8B8B8B8B8 - B8B9B9B9B7B7B7B6B6B6BABABAA6A6A68B8B8B8F8F8F8F8F8F8D8D8D8B8C8D86 - 898BBB9D78F5C887FCD59CFBC57FFAB665FAB668F9B869FAB96AFBBA6BFCB769 - FEC379FECF8CFECF8DFDCE8BFDCE8BFDCE8BFDCF8BFDCE8AFDCF8BFECE8AFDCE - 8AFECE8AFECE8AFDCE89FDCE89FDCE89FDCD89FDCE88FDCD87FDCD87FDCD86FD - CC86FDCC87FECC86FDC77DFDC073FDC176FDC076FDBF74FDBF75FDBF74FDBA6C - FDC482FECE98FCC88CFEE0C0FFFDFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFDBE0DE4D8A6D2D906429845C248B5E6CBA95F4F0DDFFF8E2B4D7B779 - BF96EDEED6FFFBE9BBDBC1369C712181572C835C2D96675F9A7CCCD7D1FAFBFB - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 - F7FA9D9AC1B2ADD0B9B3D89490C3928EC28E89C08C87C08984BF9691C5D6D1E7 - F9F5F9F5F1F6EFEDF4B2AED5817CBB8581BCCCC9E2F3EFF7F8F3F9F9F3F7B2AE - D56D68B35752A84742A03F3A9D3A35983A3698837EC060608CB8B8C9FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF5FDD1A0FCBB6EFDCB7F - FED589FDD488FDD78AFEE190FEE493FEE493FEE493FEE594FEE593FEE693FEE6 - 94FFE595FFE694FEE594FEE694FEE694FEE594FEE594FEE594FEE494FEE494FE - E394FEE394FEE293FDE292FEE192FEE394FEDE90FDD489FED289FED28AFECA7D - FFC56FC3A16F7D7C7A7B7E818382838585858686868787878787878C8C8CA8A8 - A8B9B9B9B5B5B5B5B5B5B3B3B3B1B1B1B1B1B1B0B0B0AFAFAFAFAFAFAEAEAEAE - AEAEB2B2B2A1A1A18989898C8C8C8B8B8B888888858788848383E3AF71FFEABD - FFF5DFFFEAC5FFCA83FFC174FFC57AFFC57AFFC57AFDC277FDCA85FED291FED2 - 90FDD18FFDD290FDD28FFDD18FFDD18EFDD28EFED28EFDD28EFDD18DFDD18DFD - D08CFDD08CFDD18CFDD08CFDD08BFDCF8AFDD08AFDD08AFDD08AFDCF8AFECF89 - FDCE86FDCC84FDCC84FDCB83FDC980FDC77FFDC67BFDC880FFECD1FFFDFBFDE8 - C5FDC685FFF7EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE8DB09E30 - 9C6B2D8D632482582C9869BEE0C5F5E4C99A8A77C6BAA5EEE3C8A59683BDAA94 - F5F5DC6AB7931A85572C855D2D93654C9370BAC9C1FCFDFCFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F6FA9D9AC1B1ADCF - BCB8D89A95C39C96C49C97C59894C4948FC3BFBADAF8F5F9F0EDF5F3EFF6EFEC - F4B3AFD48983BF8C87C0CCC8E1F4F1F7EFEBF4F7F2F7EAE7F19996C87C76B87D - 78B97771B76762AF5C56AC9491C864628DB9B8C9FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFEFDFEE0BCFDBB6DFDC576FDD185FDD185FED286FEDC - 8CFEE291FEE190FEE292FDE392FEE393FEE494FEE494FEE494FEE494FEE593FE - E493FEE495FEE494FEE494FEE494FEE394FEE393FEE294FEE293FEE193FEE192 - FEE193FDDF90FEDE8FFEDF90FED88BFDCF86FDCF85FDCD82FFC875FBC36FAF99 - 767D7F808081828484848585858484848484848484849E9E9EB4B4B4B0B0B0B1 - B1B1B1B1B1B1B1B1B2B2B2B2B2B2B0B0B0B1B1B1B0B0B0AFAFAFB2B2B29B9B9B - 7E7E7E8484848484848484848283857F7E7EE2B070FFDEA6FFEFD6FFF5E1FEEC - CAFED69AFDD495FDD496FDD596FDD696FED594FED392FED493FED493FED593FE - D593FDD492FED592FDD491FDD491FDD491FDD390FDD390FDD490FDD38FFED38F - FED390FDD38EFDD28EFDD28DFED28DFDD28DFED18CFDD08CFDD08BFDD08BFDD0 - 8BFED18CFDD08AFDCE87FDCF8BFEE9C5FFFEFBFFFEFCFEE3B9FDC683FFF6ECFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDF0EE70A78A34A46F2D8E6324855A - 349D70D8EBD5E3DECD555452A4A299F0ECDC6464618B887FFFFFEB80C19F1A88 - 5A2B855D2E94673F976D9FB7ABF2F4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F6FA9C99C1B0ADCFC0BBDCA09AC8A09B - C9A19CC89B97C59B98C5D2CFE4F9F9FAEDEDF4F3F3F7ECEBF4B2AFD28D87C08F - 88C0C9C4E0F3EFF6EFEBF4F1EDF5F4F0F6B2AFD3837DBC8782BE8882BF827DBC - 827CBCAAA6D1676390B9B8CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFEEDD9FDC37EFEC378FED48FFDD592FED490FEDB93FEE196FEE295FEE49AFD - E193FEE193FEE194FEE193FEE194FEE294FEE295FEE495FEE394FEE294FEE294 - FEE294FEE294FEE194FEE194FEE094FDE093FDDF93FEDF92FEE094FEE099FEE2 - 9DFEE29DFFE19CFED997FED394FED494FED290FFCE7CE7BB728D867A7B7C7F80 - 80808080808080808181818080809A9A9AACACACA6A6A6A3A3A3A1A1A19C9C9C - 9999999696969292929090909090909393939797978282826A6A6A7272727575 - 7577777777787A77787BE2B170FFD187FDE6C1FEF0D5FEF1DCFFE5BCFDD596FD - D494FDD697FDD697FED696FED696FED696FDD695FED695FED796FED795FDD795 - FDD694FED794FDD794FED694FED694FDD693FED692FED592FDD693FDD591FDD4 - 91FED591FDD490FDD490FDD38FFDD38FFDD38FFED28EFED28EFDD18DFDD18CFD - CE85FEE3B5FFFAF0FFFFFDFFFBF3FDD69AFDC57EFFF7EDFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFF3F6F4A6BAAF3F8E692F946825865C319D6ECFE7D4FAF2 - E4C5BFB7E0DFDBFCFAF9CAC8C3D9D2C6FDFCEE7BC09F1887582B815C309A6B43 - 966ED4DBD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF7F6FA9D99C1B2ADD0C4BEDEA49ECDA5A1CFA6A0CDA29DCB9F - 99C8C7C4DEF8F8F9F0EFF5F5F5F9E9E8F1AEAACF928DC0918DC2C0BEDBF2F1F6 - F2EFF5F4F2F6EFEAF3A8A4CE8C87C1918CC3918AC38C85C18E88C2B5B0D66B69 - 94BABACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF5FED6A6FDC47AFE - DA9FFFE5B7FEE4B7FEE8BBFEEDC0FEEFC3FEEFC6FEEBB4FDE29BFEE093FEE094 - FEE093FEE194FEE094FEE295FDE295FDE194FEE094FEE095FDE095FEE094FEE1 - 94FEE093FEE094FEDF94FDDF93FEDF91FEE09AFEE7ADFFEDB7FFEEB7FFEEB7FF - EBB4FFE3B0FEDEACFEDFB0FFD898F9CB79AA967178787778787A7B7B7B7B7B7B - 7A7A7A7878788C8C8C9A9A9A9191918989898383837878787070706868686262 - 625B5B5B5C5C5C6363636969696767676060606161616565656969696B6C6D6C - 6D6FD3A86EFFCB7CFEDBA3FEE9C5FEEFD5FFF1DBFEE3B7FDD798FDD899FED89B - FDD899FED899FED999FDD898FED899FDD999FED998FDD998FDD897FED997FED9 - 98FED998FED998FDD996FED896FED896FDD896FDD795FED894FED895FED794FD - D693FDD792FDD692FDD692FED591FED491FDD490FDD289FDDEA9FFF8EBFFFDF7 - FFFCF4FFF7E8FDD292FDC986FFF8F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFCED7D146A17636B47C2A8D6228956697CBB0FFFCF7FFFFFFFFFFFFFE - FBFBFFFFFFFFFFFFDCEBDE50AB841F8B5C319B6D37BD80589B7AE0E5E2FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 - F6F99A97C0B4AED0C7C2DFA8A3CDAAA6CFA9A5CFA9A3CFA29DCCAFA9D1E0DEEC - F5F5F8FBFCFCDDDAE9A6A1CB9B96C59994C3B2AFD1EDEDF3FBFBFBF3F3F8C9C6 - DF9892C4948FC39591C5948FC3928DC4948FC6BCB7DA6E6B96B9B8CBFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E9FDCD8EFDCC87FEE3B2FFE8C0FFECC8 - FFF3D4FFF7DFFFFAECFFFDF3FEE9B6FEDE94FEDF93FEDF93FEDF94FEDF94FEE0 - 94FEDF94FDDF94FDE094FEE094FEE095FDE095FEE094FEDF94FDDF93FEDE94FE - DE94FDDE93FEDC91FDE29AFCE2A7F3CC9AF1C795F4CF9AF7D5A0FAD8A2FBD8A4 - FDDAA7FFD397FBC677BFA26D7C7B7777797B7B7B7B7979797676767373738484 - 849191918989898282827C7C7C7777777171716969696262625C5C5C5D5D5D62 - 62626B6B6B6B6B6B6363636464646868686C6C6C6D6D6F6C6E70C5A06BFFC879 - FED694FEE0AAFFEBC7FFF1D6FFF1D9FEE3B2FDDA9AFEDC9EFDDB9DFDDB9DFEDB - 9DFDDB9CFEDB9DFDDB9CFDDB9CFEDB9CFDDB9BFDDB9BFEDB9AFEDC9BFEDC9BFD - DB9AFEDB9AFEDB9AFDDC9AFEDA98FEDA98FDDA98FEDA97FED997FDD995FDD995 - FDD895FED895FED895FDD58FFDDCA0FEF5E0FFFCF5FFF9ECFFF9EAFFF4E0FDD0 - 8EFED095FFFAF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCED7D35D - A17F3BB77C34AE792A986A3BA0749AC7B0CCE4D7A1CCB882BCA1BFDCCFC1DDCD - 6DB4932B9A6B2FA9743DAD7740B77D88AD9BF4F6F5FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F9908DB8A7A2C8 - D7D4E8AFAACFABA5CEADA8CFABA6CEA9A3CEA59FCAB4AFD2D2D1E5DBD9E8BAB5 - D7A09BCAA09CCA9E9AC8A19DCAC4C1DCDBD9EAC6C2DC9E99C69793C29895C396 - 91C49692C38D8ABEA29DCCC2BFDD5E5C88B5B3C6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF4E7FDC888FCC179FDD090FDDAA3FEE6B6FFEDC5FFF4D6FFF9 - ECFFFCF6FDDD9CFDD681FEDD94FEDD94FEDD94FDDD94FEDE94FEDE95FEDE95FE - DE95FDDE94FEDE95FEDE95FEDE94FEDE95FEDD95FEDC94FDDC94FEDC94FEDC94 - FFDF96F9D387E9A469E49762EAA76CF0B374F6BF7BF9C681FCC480FEBE76FBBB - 6DC3A77383827E7C7D7F7C7C7C7B7B7B7878787373738686869393938A8A8A84 - 84847D7D7D7979797373736A6A6A6464645D5D5D5E5E5E6565656C6C6C6D6D6D - 6565656565656969696C6C6C6D6D6E6D6E71CAA56DFFCA79FED693FDD897FDE2 - B0FEEECBFFF1D6FFEFD3FEE1AAFEDC9EFDDD9FFDDD9FFEDD9FFEDD9FFEDE9FFE - DE9FFEDD9EFEDD9EFEDD9EFDDD9DFEDD9DFEDE9DFEDE9DFEDE9DFEDD9CFEDD9C - FEDE9CFDDC9BFDDC9AFDDC9AFEDC9AFDDB99FEDC99FEDB98FDDA98FDDA97FDD9 - 93FEDC9DFFEFD0FFFAF1FFF8ECFFF6E4FEF4E0FFF2DCFECC85FED193FFFAF3FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E9E8CCDCD4B9D1C452AA81 - 37C08529A671309A6B4AA67B33A37225A16C44A57941A176289B6B33B87F46B0 - 7EA8CEBBC1D4CAD4DBD7FAFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBDB8C77770A1D3D2EBDAD6EABEB8 - D7B9B4D5B9B4D5B9B4D5B6B1D3B0ADD2B3AFD3B4AFD3AFA9D2AFAAD3B1ABD3B0 - AAD2ABA6D1AAA5D1ADA9D3A8A2CFA6A1CDA9A4CFA8A3CDA6A0CBA4A0CAADA8D1 - D5D1EB9C9BC0636186DFDEE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 - E7FDC688FCB96FFDC47AFDD590FEE2A7FFE9B7FFF0CCFFF7E7FFFBF3FDD58DFD - D17DFDDE96FDDD95FDDC94FDDC94FEDC94FDDD94FDDD94FEDE95FEDE96FEDC94 - FEDC94FEDC95FDDD95FDDD95FEDB95FEDB95FDDB93FDDB96FFDD94FBCC78ECA2 - 5DE69256EB9F5DF0AA62F5B568F9BE6EFCBC6CFEB467FBB369C4A4738585807D - 7E7F7C7C7C7B7B7B7979797474748585859292928A8A8A8484847E7E7E797979 - 7373736B6B6B6464645D5D5D5F5F5F6565656C6C6C7272726969696363636A6A - 6A6D6D6D6E6F706D6E71BE9D6DFDC978FFD793FED894FEDA99FDE6B5FFEECBFF - F3D8FFEFCCFEE2A9FEDEA2FEE1A3FDE0A4FDE0A2FEE1A3FEE0A2FDE0A2FEE0A2 - FEDFA2FDDFA1FEDFA1FEE0A0FEE0A0FEE0A1FEDFA0FEDFA0FEDF9FFEDF9FFDDE - 9EFDDE9DFEDE9EFDDE9DFEDE9DFDDD9CFEDD9CFDDC98FDDC99FEECC6FFF9ECFF - F8EAFFF5E2FFF2D7FFF4DBFFF1D9FDCB83FDDAA6FFFCF8FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8D2CD63AC8938BF822FAC - 782698692C9D6F30A072289B6B289B6C35B98144B280ADCABCFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF7F6F7A5A0BA7876ADBEBCD9D5D3E8D3D0E7D1CFE6D1 - CFE7D1CEE6D1CEE6CDCAE3CCC8E4CECCE5D0CDE5D1CCE5D1CCE6D0CBE6CCC7E4 - C7C5E1C9C8E3CECBE5CDCAE5CDC9E3CCC8E1CBC7DFCAC7DF9795BB5B5686C4C2 - CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E7FDC587FCB96FFE - C980FEDA95FEE1A8FFE7B9FFEDCCFFF8E6FFFCF3FDD48EFED07DFDDC96FEDC95 - FEDC95FDDC94FEDC94FDDB94FDDB94FEDC95FEDC96FEDC94FEDC94FEDC95FEDB - 95FDDB95FEDB96FEDB95FDDA94FEDB97FEDB93FCCB7AEFA762E69459EB9D5EF0 - A963F5B36AF9BF71FCC373FEB86BFBB067C4A0718483807D7E807C7C7C7A7A7A - 7878787777778888889393938A8A8A8484847E7E7E7979797272726A6A6A6363 - 635C5C5C5E5E5E6464646A6A6A7474747171716767676969696D6D6D6F6F706D - 6F72A48F6DF5C475FFD78EFDD893FED892FEDC9AFFE7B6FFEFCAFFF3D9FEEDC8 - FEE2A9FEE3A6FEE2A8FEE2A6FEE2A6FEE2A6FEE2A6FEE2A5FEE1A5FDE1A4FEE1 - A5FEE2A4FEE2A4FEE2A5FEE2A4FEE2A3FEE2A2FEE2A2FDE2A1FDE1A2FEE1A1FE - E1A1FEDFA0FDE0A0FEDF9FFDDE9BFDE9BBFEF8E9FFF7E7FFF5E0FFF1D3FFEFCF - FFF3D7FFF0D0FDCF85FEECD2FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3EBE77CB89B3BC48835AC7B33986F32 - 986E339C7137B88240B380A7C4B6FDFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFF8F8FAB3AFC97A73A46D69A0746EA1726DA1726DA1726DA1736DA1 - 736EA1736EA1736EA1726DA1716CA0706CA0706A9D6F699C6C699C6B67996A65 - 96686496666294656292676191575483706B93CDCBD8FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E7FDC585FDBB70FDCC81FDD794FEDEA6 - FEE5B7FFEECCFFF8E6FFFBF2FDD28DFDCD7CFEDB95FDD995FDD994FEDA95FEDA - 96FDDA95FDDA95FDDA95FDDA96FEDA96FEDA95FDDA96FDDA96FEDA96FED996FD - D995FED995FDD999FED994FBC879EEA561E59256EB9A5CF1A663F6B069FABC6E - FDC272FFBF70FAB268C4A1708685817E7F817E7D7D7C7C7C7979797C7C7C8B8B - 8B9090908888888181817A7A7A7575756F6F6F6767676161615A5A5A5C5C5C61 - 61616767676F6F6F7575756E6E6E6666666A6A6A6F6F6F6C70727C7872DB9E63 - FBB36EF9C183FBC686FCC786FDCF94FEE0B5FEE8C8FFEED5FEE7C0FDDAA2FDDA - A3FDDBA4FEDCA4FEDDA5FDDDA4FDDDA4FEDDA4FEDDA3FEDEA4FDDFA4FEDFA4FE - DFA3FDE0A3FEE0A3FDE0A3FEE1A3FEE1A3FEE0A3FEE1A3FDE1A2FEE1A3FEE1A3 - FEDF9EFFE6B2FFF6E2FFF8E8FFF5DEFFF2D2FFEFCAFFF0CFFFF2D4FFE2A6FDD7 - 93FFFAF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFD5DDD956A6803ACC8D37B58133A47637B68237C587 - 75A78FF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FEFEFED5D3DF8F8AAB746D927871967872977872977872977871977871977871 - 97787297787197767195767093766F92756E92736C91716B8E706B8C70698B6E - 698A686384847D95D9D8E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF3E7FDC385FCBA6FFDCD82FDD694FDDEA8FEE7BAFEEFD0FEFA - EDFFFEF9FDD18EFDCC7CFDDA97FDD996FDD995FDD995FDD996FED996FDD996FD - D996FDD996FED996FED996FED996FED996FDD996FED896FDD895FED896FED899 - FED895FCC879F0A661E69056EB995BF0A561F5AE67F9BA6DFCBF70FFBF70FBB3 - 69D1AE7BA09E9B98999B9696969191918C8C8C8E8E8E9090908D8D8D8C8C8C86 - 86868383837E7E7E7F7F7F8C8C8C8B8B8B8585858787878B8B8B8989898D8D8D - 8F8F8F8F8F8F9090908585857A7A7A7375767073769D7D66E88E51F6A366F6B5 - 7BF8B97EFABA7EFDCA94FEDEB6FFE5C5FEEBD3FEDEB5FDD49FFDD5A2FDD6A3FD - D7A3FED8A4FDD9A3FDD9A3FEDAA4FDDAA3FEDCA4FEDCA4FEDCA4FEDDA4FEDDA4 - FDDDA5FDDEA4FEDFA4FEDFA4FEDFA4FEE0A4FEE0A4FDDF9FFEE3AAFFF2D7FFF8 - E6FFF5DEFEF1D2FFEEC6FFEEC7FFF1CFFEE6B1FDD283FEEDCCFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFBAC5BF46A87B3EC88D38C78B36C689609D81E0E4E2FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F3 - F6EDECF0EEEDF1EEEDF1EEEDF1EEEDF1EEEDF1EEEDF1EEEDF1EEEDF1EEEDF1ED - EDF1EDECF0EDECF0EDECF0EDECF0EDECF0EDECF0EDECEFECECEFEBEAEEF2F1F3 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 - E5FDBD80FCB76DFDC87FFDD18EFDD99FFEE1B0FEE8C3FEF2DAFFF6E5FDCB87FD - C97BFED897FED796FED796FDD896FDD896FDD796FDD796FDD796FED797FDD896 - FDD896FED897FED797FDD796FED796FED796FED695FED899FED494FEC678F4AC - 64E78F56EA9659F1A25FF5AD67FAB86CFDBB6FFFBB6DFCAF65D9AB7CADAAA7A6 - A7A9A7A7A7A8A8A8A6A6A6AEAEAEBCBCBCC4C4C4D6D6D6E0E0E0E8E8E8EAEAEA - EAEAEAF0F0F0F0F0F0EFEFEFF0F0F0F0F0F0EFEFEFEEEEEEEEEEEEEFEFEFEFEF - EFCFCFCFBCBCBCBDBDBDAAABAC9B9B9ABF9170EC8F54F4A569F5B279F8B479FB - B87BFCCB98FFDDB6FEE5C7FEE8D0FDDBB0FDD5A1FDD6A4FED7A5FDD8A5FDD7A5 - FED9A5FDDAA5FDDAA6FEDBA5FEDBA5FEDCA6FEDDA5FEDDA5FDDDA6FEDEA5FDDE - A5FEDEA6FEDFA5FDDFA6FDDFA2FDE1A9FEEECDFFF6E2FFF3DBFFF0D0FEEAC0FE - EAC1FEECC6FFE8B8FED286FEDDA9FFFDF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB - FACBD3CFABC1B768B39063A384DCDFDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E8FDBC84FDB067FC - B66CFCBA70FDBB74FCBD76FDC17AFDC37FFDC381FDB96FFDC47EFED194FDD093 - FED092FDD093FED193FDD093FDD193FDD193FDD093FDD193FDD193FDD193FDD0 - 93FDD093FED093FDD093FDCF92FED196FDCE91FDBB72F7A762F29858F59B59F9 - A25EFCAA62FFAF65FFB065FFAC60FCA55ED7AC83B6B5B2B9BBBCCACACADCDCDC - EFEFEFF7F7F7FBFBFBFCFCFCFCFCFCFDFDFDFAFAFAF9F9F9F9F9F9F4F4F4F3F3 - F3F4F4F4F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F1F1F1EDEDEDE3E3E3CACACAC2 - C2C2BFC0C0BABDBFB7B6B4D69A71EF9153F2A66BF5AF75F8B275F9B87BFCCD9B - FEDCB4FEE6CAFEE7CBFEDAADFDD6A5FED8A8FED9A8FDD8A8FED9A7FEDAA8FEDA - A8FDDBA7FDDBA7FEDCA8FDDCA7FDDCA7FEDEA8FDDEA7FEDEA8FEDEA7FDDFA7FE - DFA6FEE0A7FEEBC6FFF3E0FFF2D7FFEFCDFEE8BDFEE8B9FEEAC0FEE6B7FDD38B - FDD394FFF7ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 - F6F3F1F5F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9FEDCBFFDBC84FCB67AFCB67AFCB67B - FCB77BFCB97AFCB87AFDB06AFCAF66FDC384FDCC92FDCB90FDCA8FFDCA90FECB - 91FDCB91FDCB91FDCC91FDCB91FDCB91FDCC91FDCB91FDCB91FDCA90FDCA90FD - CA90FDCA90FDCD95FDC88EFDB16AF9A862EFA766EAA667EBA466EAA365E8A062 - E79F62EEA465F0B37FDBCDBFE1E3E3F3F3F3F6F6F6F3F3F3F3F3F3EFEFEFE7E7 - E7E2E2E2DBDBDBD4D4D4CCCCCCCACACAC8C8C8BFBFBFBEBEBEBFBFBFBFBFBFBF - BFBFC0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3B2B2B2A0A0A0A4A4A3AAAAAA - ADB2B5B7ABA1DD905DF39456F1A76DF4AD73F7B074F8BA7DFDCF9FFEDCB5FEE6 - CAFEE5C6FED9ABFED7A9FDD9AAFED9AAFED9AAFEDAAAFEDBAAFDDBA9FDDBA9FE - DBA9FEDCAAFEDCAAFEDDAAFEDDA9FEDEA9FDDEA8FEDEA8FEDCA5FEE6BDFFF3DD - FFEFD4FFEDCDFFE8BBFEE4B3FEE6B9FEE8B9FED490FDCD83FFF0DDFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFDFCFFF8F3FFF2E8FFF2E7FFF3E8FFF3E8FFF4EBFFF2 - E8FEC797FCAC65FDC283FDCC93FECB92FDCA90FDCA92FDCB92FECB92FECA92FE - CB93FDCB92FECB93FECB93FDCB93FDCB92FDCB92FDCA92FDCA91FDC891FDCC96 - FDC88FFFB069EDA462B397779A90859B90829B8F829D9183A19487BFB5AAE2E5 - E5EBEDF0E8E8E8E4E4E4DCDCDCD3D3D3CACACABFBFBFBBBBBBBCBCBCBCBCBCBC - BCBCBCBCBCBBBBBBBBBBBBBCBCBCBDBDBDBBBBBBBBBBBBBCBCBCBBBBBBBBBBBB - BCBCBCBBBBBBBDBDBDBEBEBEBDBDBDA8A8A89292929090908F90908E9295A690 - 80E08853F1955AF2A56CF5AC71F5AD70F8BA80FCD0A3FDDAB5FEE6CBFEE3C3FD - D8ABFDD8ABFDDAACFDDAACFEDAACFDDBACFEDCACFEDCACFEDCACFDDDACFDDDAC - FDDDACFEDDABFEDDABFEDDABFDDDA8FFE3B6FFF0D7FEEFD3FEEBCAFEE5BBFEE0 - ACFEE3B0FDE5B5FDD799FDC87EFEE9CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCA3FDAA65FD - C184FDCB94FEC992FDC992FDC992FDCA92FEC992FECA92FECA92FDCA92FDCA93 - FDCA93FDCA92FDC992FDC992FDC892FDC993FDC791FDC996FBC58EFFAC65E99E - 5FA1907E838A90878C908D9296989CA09BA0A4B3B7BBD0D2D6D1D2D3C5C5C5B7 - B7B7B4B4B4B7B7B7B9B9B9BABABABCBCBCBCBCBCBCBCBCBCBCBCBBBBBBBBBBBB - BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBABABAB9B9B9BABABABBBBBBBBBB - BBBBBBBBBEBEBEBCBCBC9F9F9F8D8D8D8C8C8C898A8C84898BA68570E3864FF0 - 955BF0A26AF2A76BF4A96BF8BA82FBD0A3FCDBB4FDE8D0FDE1BEFDD9ACFDDAAE - FDDAAFFEDAAFFDDBAFFDDCAFFDDCAFFEDCAEFDDCAEFDDCAFFEDDAEFEDDAEFEDD - AEFEDEACFEE1B3FFF0D4FFEED2FEEAC7FEE3B9FEDCA6FEDEA9FEE1AEFDD89CFD - C478FEDFB8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFC9C8C8BCBCBCBCBCBCBCBCBCBABABA - D0D0D0FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFBF7C79EFDA662FCBD80FDC891FDC58F - FCC58FFDC790FDC78FFDC690FDC790FDC790FDC690FDC690FDC890FCC690FCC5 - 90FCC690FCC58FFBC48FFBC38EFAC593F8BF8BFDA560E9975BA28F7C898C8F92 - 92939999999898989090919A9A9AACACACAFAFAFB0B0B0B4B4B4B7B7B7B8B8B8 - BABABABABABABABABABABABAB9B9B9B8B8B8B6B6B6B6B6B6B7B7B7B5B5B5B4B4 - B4B5B5B5B5B5B5B4B4B4B4B4B4B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B8B8B8BB - BBBBB3B3B39797978D8D8D8C8B8B86888B858686B18365E9864EEE965DEF9F66 - F1A267F3A86BF7BC86FBCEA0FCDAB6FEE7CEFEDFBBFDD9AFFEDBB1FEDBB1FEDB - B1FEDCB1FEDCB1FDDCB0FEDDB0FEDDB0FEDDB0FDDDAFFEDEAEFEE0B2FEEBCCFF - EDD2FFE6C3FEE1B7FED9A3FDD8A1FDDCA9FED89EFDC47BFDD19CFFF9F2FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFEBEBEBA6A6A6A5A6A6A8A3A6ABA3A7AAA2A7A7A5A6A0A1A1C2C2C2FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFEFCFBF5C29BF79F5EF9B77CF9C48EFAC18CF9C18BF9C28CF9C2 - 8CFAC28DFAC38DFAC38DF9C28CF9C28CFAC28CF9C28DF9C28CF8C28CF8C08BF7 - BF8BF8BF8AF7C18FF5BB87FA9F5FE691579F8B78898C8E8D8D8D888888838383 - 7A7A7A838383A8A8A8B4B4B4B4B4B4B6B6B6B7B7B7B8B8B8B8B8B8B7B7B7B7B7 - B7B5B5B5B5B5B5B5B5B5B4B4B4B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0B0 - B0B0AFAFAFADADADAEAEAEB0B0B0B1B1B1B0B0B0B0B0B0B2B2B2B4B4B4A7A7A7 - 8D8D8D86868687868682858788847FC1815AEC884CEC955DEE9D65F0A167F3A8 - 6CF7BC89FBCEA2FDDCBAFEE8CFFDDDB9FEDAB2FEDCB4FEDCB4FDDCB3FDDCB3FE - DDB3FEDDB2FEDDB2FEDEB3FEDEB2FEDEB2FFE8C8FEECD1FDE5C1FEE1B6FDD79F - FDD49AFED7A2FED7A0FCC57FFDC383FFF2E4FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDDEDEDED2D2D2DCDCDCFFFFFFBFBFBFB9BA - BACDCCCDC1C9C5B9CDC2BACAC2C6C7C6CAC9C9AAAAAAFAFAFAF0F0F0D4D4D4D5 - D5D5EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFC - FBF2BB97F3995AF5B078F5BD89F6BC88F6BC88F6BC87F6BB87F7BD89F7BC88F6 - BC88F7BD89F5BD89F6BB89F5BB88F6BC89F6BB89F4BA88F5BB89F4B886F4BB8B - F3B584F6985AE28B54988572797D807978797575757878787C7C7C878787A9A9 - A9B3B3B3B0B0B0B2B2B2B2B2B2B1B1B1B0B0B0B1B1B1B0B0B0AFAFAFB0B0B0B0 - B0B0AEAEAEAEAEAEACACACADADADACACACACACACABABABACACACAAAAAAA9A9A9 - AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE9E9E9E8787878282 - 828483837B82868C8075D07E50EB864DEA935CED9960EF9B62F1A46AF6BB8AFA - CCA1FBDEBEFEE6CEFDDCB8FDDAB5FEDDB7FDDCB5FDDCB5FEDDB6FEDEB6FEDEB6 - FEDEB5FEDEB4FFE6C4FFECD2FEE3BEFDDFB5FED59EFDCF93FDD299FED49BFDC5 - 82FCBF7BFEEBD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFE2E2E2A1A1A1AFAFAFA6A6A6F2F2F2B4B4B4C5C2C4BEC0BF91D2B06E - D9A376D6A4AAC8B8CBC4C7AAAAAAF5F5F5C3C3C3AFAFAFAAAAABADADAEFEFEFE - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFBF1B895EF9356F2 - AB75F4B786F3B584F4B784F4B884F4B784F4B786F4B684F4B784F3B785F3B885 - F3B785F3B684F4B685F3B585F3B685F2B685F2B382F1B787EEAF80F39256DC82 - 4F887463686C6E7070707979787D7D7D7E7E7E878787A5A5A5ACACACAAAAAAAD - ADADACACACAAAAAAA8A8A8A8A8A8A9A9A9A8A8A8A9A9A9A8A8A8A6A6A6A5A5A5 - A3A3A3A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A2A2A2A3A3A3A4A4A4A4A4A4A5A5 - A5A6A6A6A5A5A5A5A5A5A5A5A5A6A6A6A7A7A79292927E7E7E7E7E7E7D7E7E76 - 7C7E947A69D47B4CE9844EE89059EB935DEC955CF0A269F6BD8CF9C99DFADEC1 - FCE6CCFCDCB8FCDCB8FDDDB9FDDDB8FEDDB8FEDFB9FDDFB7FDDEB6FEE3C1FFEA - D1FFE1BCFEDCAFFDD29DFDCA8CFDCC91FDCE94FDC583FDB974FEE3C8FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDBE - BEBED9D9D9B5B5B5F0F0F0AEAEAED0C7CBB2BFB968D09D44D9914DD89490C9AC - CCC4C8B0AFAFEAEAEAC3C3C3D1D1D1D5D5D6AAAAAAFBFBFBFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFBEFB694EB8C53EFA772F2B483F1B181 - F2B281F2B281F1B281F1B282F1B281F2B281F1B281F1B281F3B181F2B181F1B1 - 81F1B181F0B081F0B081EFAF7FEFB284ECAA7DF18D54D77B49836D5D6A6E7075 - 75767A7A797B7B7B7979798181819E9E9EA5A5A5A1A1A1A3A3A3A3A3A3A2A2A2 - A1A1A1A1A1A1A1A1A1A0A0A09F9F9F9A9A9A9696969090908C8C8C8A8A8A8686 - 868383838383838686868989898888888787878A8A8A8F8F8F9393939898989B - 9B9B9C9C9C9B9B9B9C9C9C999999838383757575787878747677737576A0765E - DC7947E8844EE78B57E99059EA945BEFA56FF5BC8EF7C79FFBE0C6FCE4C9FADB - BAFCDCBBFDDCBAFDDDBAFEDEBBFEDEB8FEE0BEFEE9D0FEE1BEFEDAACFDD19DFD - C688FDC88AFDCB8EFDC686FDB56DFED1A7FFFDFBFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFDFDFDE5E5E5DDDDDDDFDFDFE1E1E1E3E3E3AEAEAEC3C3C4CCCCCDAFAFAF - F6F6F6AAAAAAD8CCD2A6BFB254CD9039D0853DCF877AC8A0CAC5C7BDB8BAD8D8 - D8D8D8D8BDBDBDCACACAAAAAAAD8D8D8F9F9F9EEEEEEEDEDEDEDEDEDFAFAFAFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFEFCFBEDB392E6844FEBA06EEDAD7FEEAC7DEEAB7CEEAB7CEEAB - 7CEEAB7DEEAB7DEEAC7DEFAD7DEEAC7CEFAC7DEEAB7DEDAB7DEEAB7DECAA7CED - A97CECA87BECAB7FE9A477EC8650D577488871616D7173737374757575767676 - 7474747B7B7B9595959B9B9B9898989A9A9A9B9B9B9A9A9A9B9B9B9A9A9A9797 - 979393938D8D8D8686867F7F7F7979797272726B6B6B6666665F5F5F60606067 - 67676969696B6B6B7474747B7B7B8181818888888E8E8E9595959999999D9D9D - 9E9E9E9F9F9F9696967A7A7A7070707170706E6F726F7070AA7254E47945E481 - 4EE48854E88B57EA9059EEA470F4BB8DF7CAA3FBE4CDFBE0C6FBDBBCFBDCBEFC - DDBDFDDDBDFDDFBFFDE8CFFEE1C0FED6A8FECF9BFDC385FDC183FDC588FCC283 - FDB36EFEC28CFFF5ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFF1EFEDCBC1BAB1A095AE978AB29989B2998AAC9689B4A49ADDD6D1FEFE - FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9BEBEBEACACAC - ABABABA6A6A6A5A5A5A7A7A7B4B4B4C7C7C9CBCBCEB3B3B3EAEAEAADADADDBCE - D593BDA642C58039C77D39C77D61C28DC6C6C7C7C0C4C5C6C5E9E9E9B6B6B6CF - CFD0BABABCA8A8A8A4A4A4A3A3A3A2A2A2A7A7A8A7A7A7ECECECFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB - FAEBAC8FE2804BE89A6BEAA77AEBA578EBA677EBA678EBA577EBA478EBA578EB - A578EBA679EBA678EBA678E9A577EAA578E9A478E9A277E9A277E9A276E9A57B - E69E73E77D4BD27145866F606B6E706F70717272727171716D6D6D7676769393 - 939C9C9C9E9E9EA1A1A1A2A2A29F9F9F9C9C9C9797979393938E8E8E89898982 - 82827A7A7A7777777070706767676161615A5A5A5C5C5C636363636363666666 - 7676767E7E7E8484848989898D8D8D9393939999999E9E9EA2A2A2A5A5A5A8A8 - A89C9C9C8080807373726C6B6B62686B6B6764B36E4BE17644E17D4CE38350E5 - 8752E68C55EBA26EF2B789F6CBA8FAE4CFFADFC5FADBBFFADDBFFBDDBEFCE7CF - FCE0C3FBD0A2FBCA97FCBD81FBB97AFBBD80FDBF80FCB26DFCB57AFFEEE2FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E2DFAD9B9090715F7E59 - 3E76492A794A2A7B4C2B7A4C2B774B2A784C2D86634BA89385E9E4E1FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E5E5AEAEAEE5E5E5E2E2E2E2E2E4E2E2 - E2E2E2E2D8D8D9CECECFC8C8C9CCCCCCE4E4E4B0B0B0D5C9D088BC9D41C0793F - C1793FC27958BE84BEC6C2C8C1C5BEBFBEF5F5F5B6B6B6D9D9D9D0D0D1E1E1E1 - E0E0E1E0E0E0DCDCDCE0E0E2C3C3C3D0D0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFAE9A78CDE7A48E5 - 9465E8A074E89D72E8A073E8A073E89F73E89E72E79F72E79E72E89F73E89E73 - E89E73E79F74E79D73E79E73E69C72E69C72E69B71E59F76E3986EE47748CD6B - 42816A5C66696A6868686868686B6B6B6E6E6E7D7D7DA0A0A0AFAFAFACACACAA - AAAAA6A6A6A2A2A29D9D9D9898989393938E8E8E8B8B8B8484847D7D7D797979 - 7272726B6B6B6464645D5D5D5F5F5F6666666767676868687676767E7E7E8484 - 848989898F8F8F9393939999999E9E9EA2A2A2A5A5A5ABABABAFAFAF9F9F9F85 - 85847F7F7F7B7A7A636A6D726359C26A44E07242DE7948E07E4CE2814DE58854 - ECA271F0B488F5CCADFAE4D2F9DEC6FADCC0FBE5CFFBE0C6F9C99EF9C493F8B8 - 7FF7B072F9B477F9B779FAAF6DF9AC6DFDE6D5FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFEFEFEC8BCB483624D774A2C7B4D2B7F4F2D81512F80502E7D - 502D7E502D7F512E81512E7D4F2C754829947563EAE5E1FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFD1D1D1B3B3B3F2F2F2CACACAC6C6C7CACACAC4C4C4B8B8B9E6 - E6E6D8D8D7D2D2D1D2D3D3BCBBBCCDC7CA8ABE9E5DC8875CC9885FC98963C38A - B5C4BBCCC5CAB9B9B9F8F8F8BBBBBBF0F0F0CECECEBEBEBECBCBCCC9C9C9C2C2 - C2E4E4E4E0E0E1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFAE3A68BDC7244E18B5DE4976CE4956A - E3956BE5966BE4956BE5956AE3956BE4966BE5966AE4956BE3956BE4966CE495 - 6AE3946BE2946BE29369E29269E1956DDF8E66E07044C9643E7B64565D616263 - 63647171707C7C7C858585929292AEAEAEB4B4B4ADADADA9A9A9A5A5A5A1A1A1 - 9D9D9D9898989393938E8E8E8B8B8B8484847D7D7D7979797373736B6B6B6565 - 655E5E5E5F5F5F6767676666666767677777777E7E7E8484848989898E8E8E93 - 93939999999D9D9DA1A1A1A5A5A5A9A9A9ADADADAFAFAF9A9A9A878787898989 - 868687767A7C8B6D5ECB6940E06E3FDC7546DE7949DF7C49E38855EBA475EFB1 - 86F5D0B4FAE5D3FAE1CEF9E1CCF6C9A1F5BC8DF4B17CF3A66BF3A96CF5AC71F5 - A86AF5A365FAD7BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFCB8 - A79D7D563B7D4E2C80502E7E502C7F52318A6143A07E65AF927DAE917C9F7D63 - 875D3E7D4F2C80522E7A4A2AAA9485FEFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 - C4C4C0C0C0FEFEFEB2B2B2C2C2C2CFCFCFC6C6C6ABABABF7F7F7D6D6D6E1E1E1 - BDBDBDCCC8CBC1C4C293C6A57DD59D76D19879D39972CB93A5C1AFD5CFD3B0B0 - B0FCFCFCBCBCBCFFFFFFCFCFCFB1B1B1D0D0D0CECECEAEAEAEDCDCDCF8F8F8B7 - B7B7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFDFBFAE0A389D76C42E08C63E39872E3966FE3966FE2976FE196 - 6FE2976FE19670E29670E3976FE29670E29670E29670E3966FE2966FE1956FE1 - 956EE0936FE19773DE906BDE6E43C35D3A7A60556B6E707B7C7D8C8C8C929292 - 8F8F8F949494AEAEAEB2B2B2ACACACAAAAAAA6A6A6A2A2A29E9E9E9999999494 - 949090908A8A8A8383837C7C7C7777777171716868686161615A5A5A5C5C5C63 - 63636464646767677676767D7D7D8383838888888E8E8E9494949A9A9A9E9E9E - A1A1A1A5A5A5A9A9A9ACACACB2B2B2AFAFAF9696968787878C8C8C8A8B8D8488 - 89A57A66D36A3EDA6B3DD97143DA7545DC7645E28755E9A072EDAF85F5D7C0FB - E7D9F4C6A4F0B284F0AB78ED9C63EE9C62EFA066F0A065F0965BF5BF9AFFFBF9 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFAFABAA89C7B503480512D7E502D - 8054339A765BCBB8ABE7DED7F1ECE8F7F4F1F7F4F1F2EDE9E4D9D2B0937E8255 - 347E502D8F6A50DCD1CAF2EDEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBDBDBDD0D0D0FFFFFF - E3E3E4D5D5D5D3D3D3D5D5D5E6E6E6FFFFFFCDCDCDF1F1F1B2B2B2DBD4D8B2BE - B694CCA8A0E4B897DFB096DFB083D4A290B99FD9D3D7B4B3B3FDFDFDC2C2C2FF - FFFFF8F8F8DBDBDBD3D3D3D3D3D3D8D8D8F4F4F4FFFFFFB8B8B8F5F5F5FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFB - FADFA088D36B43E29A78E5A789E4A485E4A485E4A485E4A485E4A585E4A585E4 - A585E5A585E4A585E4A585E4A384E4A485E3A485E3A384E4A385E3A183E3A788 - E0A081DC734CC35B398F73688B8E909495969494949191918E8E8E939393ADAD - ADB3B3B3ADADADAAAAAAA6A6A6A2A2A29D9D9D9898989191918D8D8D8686867F - 7F7F7878787272726B6B6B6363635A5A5A5454545555555C5C5C606060686868 - 7474747B7B7B8282828787878B8B8B9090909797979C9C9CA1A1A1A5A5A5A9A9 - A9ADADADB0B0B0B6B6B6AEAEAE9393938787878B8B8B8B8D8E898D8EB1765BD3 - 663BD66A3ED66D40D86F41DA7242E08354E7A074F0C3A4F5D5BCEEB791EA9F6E - E8915BE88E57EA945DEB965DEA8E56EEA67BFDF1E9FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFD3C7C07A503580502D7E502D8A6142C2AD9DF1EBE7FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F4F2B79D8A7C4F2C895F42B8 - A090D7CAC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFCBCBCBF1F1F1F4F4F4F8F8F8F8F8 - F8F8F8F8F5F5F5F1F1F1C3C3C3F9F9F9ADAEAEE3DFE2B4BAB57DB49381C59D88 - C59F82C39B68B58989AD97DDD8DBC0BFC0ECECECD3D3D3E8E8E8F3F3F3F7F7F7 - F8F8F8F8F8F8F7F7F7F1F1F1F0F0F0B9B9B9F4F4F4FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFADD9883D06741E0 - 9B7DE5AC90E4A88BE4A78BE4A78BE4A88BE6A78BE5A88BE4A78BE4A88BE4A88B - E4A88BE4A78AE3A68BE2A68BE3A58AE3A58AE2A388E4A88FE1A388D7704DC45A - 39A184799497999193929190909090908D8D8D979797B0B0B0B3B3B3ACACACA8 - A8A8A2A2A29C9C9C9797979191918B8B8B8787878C8C8C8F8F8F939393959595 - 9191919999999C9C9C9797979A9A9A9D9D9D9999999C9C9CA1A1A1A0A0A0A7A7 - A7A9A9A99E9E9E9999999D9D9D9E9E9E9F9F9F9F9F9FA5A5A5AAAAAAAFAFAFB4 - B4B4B9B9B9ABABAB8E8E8E8888888C8C8C898D908F8986BA6D4ED36036D4663C - D56A3FD66B40D76C3DE08A60EFC1A4F3D0B7ECB18CE28451E2804DE58753E48A - 56E58650F39665F9E6DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1EE - EB9576627D4F2D7D4F2D8D6648D8CABFFFFFFFFFFFFFFEFEFEEAE6E2CAC0B8B4 - A49AB5A59BCDC4BFF8F7F6FFFFFFF0EBE7967155845838B09580D0C0B4FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFE6E6E6CDCDCDC6C6C6C6C6C6C7C7C7C7C7C7C6C6C6C5C5C5CA - CACAE6E6E6EBEBEBB0B0B0E3E5E4CBC8C9BAB9BAB1B6B3B3B6B4B4B8B5B7B9B9 - CCC7CAE3E3E3C9CAC9D7D7D7FAFAFAD3D3D3C4C4C4C5C5C5C6C6C6C6C6C6C6C6 - C6C5C5C5C9C9C9DCDCDCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFADC9581CB5B37D67E5CDB8C6CDA8868 - DA8867DA8868DA8868DB8969DA8A68DA8968DA8868DA8868DA8868D98868D987 - 68D88768D88667D78767D78466D8876AD68366CF5B3AC054379D827891969792 - 93939392929191918C8C8C999999AFAFAFAEAEAEA8A8A8A5A5A5A1A1A1A4A4A4 - AEAEAEB9B9B9C5C5C5CBCBCBD6D6D6DCDCDCE4E4E4E8E8E8EAEAEAF3F3F3F7F7 - F7F6F6F6F8F8F8F8F8F8F7F7F7F8F8F8F7F7F7F8F8F8F9F9F9F8F8F8F6F6F6ED - EDEDE0E0E0CCCCCCBDBDBDAFAFAFACACACADADADADADADB0B0B0B5B5B5BBBBBB - A5A5A58C8C8C8C8C8C8C8C8C878E8F96837AC26442D15C33D1623BD2663DD364 - 39D7764BE8AC8BEFC3A9E39670DB6E3EDD7949DE7D4CE27D4AEC8B5BECD1C4FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEC1B77F53357F502D89 - 5F41D4C5B9FFFFFFFFFFFFECE8E5AA988D7F5D46774F32794E2F784E2F764E33 - A18C7DF5F2F0FEFEFDB89F8D845838B79E8BD9CCC2FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFDFDFDFFFFFFD9D9D9 - B9B9B9E8E7E8D5D6D5C8CFCBC3CDC7C6CDC9C9CFCBCAD1CDD6D9D6EBEBEBD5D5 - D4C4C4C4FFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFDFBFADA917EC75131CA603ECD6C4ACF6B4ACF6C4ACF6B4ACF6B - 4ACF6C4BCE6D4ACE6C4ACF6C4ACF6C4BCF6C4BCD6C4ACF6A4ACE6A4ACD6949CD - 6A49CD6849CC684AC96244C74729BD4D349980778C93949091918F8F8F8D8D8D - 8A8A8A9F9F9FB0B0B0AFAFAFB7B7B7C4C4C4D4D4D4E0E0E0EAEAEAF6F6F6FEFE - FEFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCF5F5F5F1F1F1F2F2F2F1F1F1F2 - F2F2F3F3F3F2F2F2F2F2F2F2F2F2F3F3F3F5F5F5F6F6F6F9F9F9FBFBFBFAFAFA - FAFAFAF5F5F5DFDFDFCCCCCCBFBFBFB8B8B8B5B5B5B8B8B8BBBBBBA1A1A18C8C - 8C8C8B8B8B8C8D8A8E8F9B7E72C35C3BCE5833CD5F38CE5F37D36E46DF926EE3 - 9F7CDC8159D5673AD76F43DB7143E37A4AD8B2A0FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFCFBFAA98E7B7D4F2D7E4F2EBAA18FFEFEFDFFFFFF - E1DBD78E725F794B2C80512D80502E80502D7F502D81512D7A4E2DBCAA9DFFFF - FFB9A1918A6142D7C8BEF0EBE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDC7C7C7F3EAF1ABCE - BA70CD9974D4A070D09C73D19D6FD09A81C79FE8E9E8E3DEE1BDBDBDFEFEFEFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFB - FAD89180C14B2DC65738CA6547CA6547CB6547CB6647CB6647CB6647CA6546CA - 6546CB6647CB6647CB6647CB6547CB6546CA6446C96446C96245C86345C96347 - C45A3DC04125B847309D80779498999495959292929595959B9B9BB2B2B2CACA - CADADADAE5E5E5EFEFEFF8F8F8FBFBFBF8F8F8EEEEEEE5E5E5E0E0E0D7D7D7D3 - D3D3D1D1D1D1D1D1D0D0D0CCCCCCCACACACACACACBCBCBCBCBCBCBCBCBCBCBCB - CBCBCBCBCBCBCBCBCBCACACACCCCCCD0D0D0D8D8D8E0E0E0EAEAEAEDEDEDEFEF - EFF1F1F1EEEEEEDDDDDDC9C9C9C0C0C0C0C0C0B7B7B79999998B8B8B8C8C8C8C - 8E8F8A8E8FA27464C75331CD5733C95732D06B46E09979E5A789DA825ED06136 - D3673DDE6E40D7997BDCD5D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFF6F3F197745A7D4F2D8F6649E6DDD7FFFFFFF0ECE99579667A4C2B8252 - 2F7E4F2D7E502D80502E8154337E4F2D7E4F2DA0816BF6F3F19979659C785EF8 - F6F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFC1C1C1DBD9DAEDE7EA8BCBA869DCA085E7B57B - E2AD82E6B27DE6AF69CE97D7E1DBEFE7EBB9BAB9FBFBFBFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFCDBA297C24D31C1 - 4D32C65D41C65F42C85E42C85E42C85E42C85F42C75D41C75D41C75E41C75D42 - C65D42C75D42C75D41C65D41C55C41C55B40C55A40C65A40C15137BA381FB947 - 33B89D95B8BDBDB5B6B6B3B3B3BABABAC9C9C9DBDBDBE7E7E7EEEEEEEFEFEFE5 - E5E5D7D7D7D0D0D0CBCBCBC8C8C8C5C5C5C4C4C4C1C1C1C0C0C0C2C2C2C3C3C3 - C4C4C4C4C4C4C6C6C6C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5 - C5C6C6C6C6C6C6C4C4C4C1C1C1BFBFBFBEBEBEC5C5C5D0D0D0D8D8D8DFDFDFE3 - E3E3E7E7E7DDDDDDCDCDCDC5C5C5B5B5B59696968C8C8C8E8E8E8C90918D8D8D - AD664FC64927C64E2CCE6847E0A085E6B198D88363CC5931D45F37C16A47D9CB - C3D2D4D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2EEEB916C - 507C4D2CA17F67F8F6F4FFFFFFCABAAF7C4F317F502D7C4E2C7F52319D7A61BF - A999C5B0A0A5846D805230A4856DD5C9C1835C40CCB9ABFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFB7B7B7F1ECEFE3E3E27CCCA15CDA9A7CE2AD8DE5B789E5B66DDFA5 - 5BCE92C7DECFFDF5F8AFAFAFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEE0B5AFC24D35BC4329C05238C05339 - C25339C25339C15439C15339C15339C15339C15338C05239C15239C05338C050 - 37C05037BF5037C04F37BF5139C04F37BA412AB3220CB74737C6BBB9C7CFD0C6 - C5C5CFCFCFDBDBDBE1E1E1E2E2E2D8D8D8CDCDCDC5C5C5BFBFBFBEBEBEBCBCBC - BDBDBDC0C0C0C2C2C2C4C4C4C6C6C6C9C9C9C8C8C8C9C9C9CACACAC9C9C9CBCB - CBCACACACACACACBCBCBCCCCCCCCCCCCCBCBCBCACACAC9C9C9CACACAC9C9C9C7 - C7C7C3C3C3C3C3C3C0C0C0BDBDBDB9B9B9B7B7B7BABABAC6C6C6D1D1D1D6D6D6 - D9D9D9D4D4D4CCCCCCB2B2B29292928C8C8C8F8E8E878E8F908987C06850C040 - 1FCB6547E3AB95E9BFABD8886CCC4C25BB56377C6257BCC1C2D1D1D1FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F4F19B765A7E4F2CAA8C75FE - FEFEFEFEFDB59B887C4E2D7C4F2C825635B79D8AF4F0EDFFFFFFFFFFFFF4F0ED - A18066987A65937664AC8F79F8F5F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9B1B2B1 - FFFBFFD5DED86BC99650D69155D5955DD69958D5954ED4904ECD89B0D4BEFFF7 - FDB5B5B5F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFF1DEDBC5614EB53822B93F29B93F29B83F29B83F2ABF3F - 28C53C23BC341CBC341EC23A22BF3720BB331EB62F1AB52C17B42C17B32B18B4 - 2B18B42B18B32916B12D17B22D19B8685AC1C0C0C4C9CACBCACAD1D1D1CECECE - C7C7C7BDBDBDB6B6B6B6B6B6B6B6B6B9B9B9C0C0C0C2C2C2C5C5C5C8C8C8C8C8 - C8CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCC - CCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBC9C9C9C9C9C9C8C8C8C7C7C7 - C5C5C5C3C3C3BFBFBFBCBCBCB8B8B8B2B2B2B0B0B0B5B5B5BFBFBFC7C7C7CACA - CAC8C8C8ABABAB9090908A89898F8F8FA9B0B2C9B5B0BF583FC45134E2AC99EC - C7B7D5765BC14B2A8F685A5F6466A4A6A6D0D0D0FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFB9A18E7F512DA17F67FAF9F8FFFFFFBBA08B - 7E4F2E7B4E2CAC8C76F7F4F2FFFFFFFFFFFFFFFFFFFFFFFFA28573714B34A586 - 72F0EAE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3B3B4B4FFFFFFC6D8CE59C5 - 8A4AD28B49CE8A3FCB8340C98243CC854ACB869CCBB0FFF7FCC7C6C7E5E5E5FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFEFDFDE3B8B1CE8175CA7466CA7365CB7365CD7365C27569B77E74C17D71B4 - 5A4C9E3F2FA64739AD4C3EB65549BB5B4EBA5A4DB8594CB6594CB65649B8574C - BB6A5CB77E72B7A19CBDBEBFC2C2C3C3C3C2BABABAADADADACACACAFAFAFB4B4 - B4B9B9B9BEBEBEC2C2C2C4C4C4C6C6C6C8C8C8C8C8C8C9C9C9CBCBCBCDCDCDCD - CDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCFCECECECECECECECECE - CECECECECECECECECECDCDCDCBCBCBCBCBCBCBCBCBC9C9C9C7C7C7C6C6C6C4C4 - C4C0C0C0BDBDBDB9B9B9B4B4B4AEAEAEA8A8A8AAAAAAB2B2B2BABABABCBCBCA7 - A7A79B9B9BB1B1B1CBCDCECDD0D1C6A197BE4D34C95F46D0735CC85234AC6F5D - 8A8C8A6567689D9C9CD3D3D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F0EEDED6D2 - D3C9C3CDC4BEB4A3957E5D478F7161DED9D5FFFFFFD6C8BE865C3D7D4E2CBCA6 - 97FFFFFFFFFFFFFFFFFFFFFFFFBBADA3744B30A48671EFE8E4FFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFDDDDDDB8B9B9FFFFFFB9D3C356C38640C77F34BE7532 - BC7330BA7030BB7059CB8B91C5A7FAF4F6D7D5D6D6D6D6FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC - F9F8F9F0EEF9EFEEF9EFEEFAEFEEF6F0EFF6F5F4E9E5E4ADACAB615C5A858080 - AAA5A3C9C3C1D2CECCCECAC8CCC8C6CBC8C5CFCBC8CDC8C5BAB9B9B2B3B3B4B6 - B7B2B3B3ABABABA3A3A3A2A2A2A8A8A8AFAFAFB5B5B5BCBCBCBEBEBEC2C2C2C4 - C4C4C6C6C6C7C7C7C9C9C9C9C9C9CACACACCCCCCCDCDCDCECECECFCFCFCFCFCF - CFCFCFD0D0D0D0D0D0CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0 - D0CECECECDCDCDCCCCCCCBCBCBCACACAC8C8C8C6C6C6C4C4C4C2C2C2BEBEBEBD - BDBDB9B9B9B5B5B5AEAEAEA5A5A59D9D9D9E9E9EA7A7A7AFAFAFAEAEAEB0B0B0 - C0C0BFD3D4D5CFD1D1C79E94BC5D48BC543DC98A7BB7B3B2989D9F6D6D6D8B8B - 8BCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFEFEFED5CCC6AC9B8F957B6986624C7E573F7A543A7E5B - 407A573F7B56408A6D59A18C7DA99488835F46804F2D89664FC4B7B0E3DDDAD0 - C5BFA894888E6E59BEA896F5F2EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB - EBEBA3A3A3E2E2E2FDF9FDABCFB973CE985FCB8C49C07C5FC88C6BCC947BD49E - 86D8A673B690ECEAEBDFDEDEC8C8C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF0F0EFA6ADAF5E6466969DA0C5CDCFD5DDDED4DC - DDD0D9DAD1D8DAD5DDDECCD4D5B0B8BAA2A8AAA4A8A8A0A1A19797979797979D - 9D9DA8A8A8B2B2B2B6B6B6BABABABDBDBDC0C0C0C3C3C3C5C5C5C7C7C7C9C9C9 - C9C9C9CBCBCBCCCCCCCDCDCDCDCDCDCECECED0D0D0D1D1D1D1D1D1D1D1D1D1D1 - D1D2D2D2D2D2D2D1D1D1D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1CFCFCFCDCDCDCC - CCCCCBCBCBCBCBCBC9C9C9C7C7C7C5C5C5C3C3C3BFBFBFBDBDBDBBBBBBB8B8B8 - B3B3B3ADADADA6A6A69B9B9B9191919393939C9C9C9999999A9A9AB4B2B2D0D3 - D3D1D6D7CDC2BECCBBB5D2D3D3D3D8DAB0AFAF777878818181CDCDCDFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDED7 - D3A08A7B825D447649297D4E2C7E4F2D7E4F2C80502D7F502D80512E7F512E7F - 502E7C4C2A714627754A2A7E4F2D7A4C2C7A5339957865A38876BCA697E0D4CB - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCACACABCBCBCF9F8F9 - F4F1F28EC2A386D5A5A8E5BE89D5A683CF9F7AC99876C39463B4847EB093F4F1 - F3E2E1E2C3C3C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFECECEC9E9D9C6D6C6CB5B4B4D6D5D5D3D2D2CFCECED0CFCFD5D4D4C3 - C2C29F9E9E908F8F9190908F8E8E8B8B8B9393939F9F9FA7A7A7AFAFAFB3B3B3 - B6B6B6BABABABEBEBEC0C0C0C3C3C3C5C5C5C7C7C7C9C9C9CBCBCBCCCCCCCDCD - CDCECECECFCFCFD0D0D0D2D2D2D2D2D2D1D1D1D3D3D3D2D2D2D3D3D3D3D3D3D3 - D3D3D3D3D3D3D3D3D2D2D2D1D1D1D1D1D1D0D0D0CFCFCFCECECECDCDCDCBCBCB - C9C9C9C8C8C8C6C6C6C4C4C4C1C1C1BDBDBDBBBBBBB7B7B7B2B2B2AFAFAFACAC - ACA7A7A79B9B9B8B8B8B8585858A8A8A8B8B8B898989A5A5A5CCCCCCD3D7D8D2 - D7D8D1D3D3D6D5D5C6C6C68C8C8C888888CECECEFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFBBFB0A7815E47774A29804F2D81 - 512D7E4F2D7F5230946F52A78872B89F8CBFA7969476647B5D4CB59D8DC5AE9D - BFA897C3AE9EC8B5A6D0BEB1D7C9BFE6DED8FFFEFEFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B8B8C6C6C6F9FBFAF6F0F491B3A059A8 - 7A7AB99482B9988CBC9F9DC4ADAECCBCC0D4CAE6E9E8FFFFFFE2E2E2C6C5C5FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB9E - 9E9E7B7B7BCBCBCBD8D8D8D0D0D0D2D2D2DADADABEBFBF8D8D8D818181828282 - 7D7D7D8282829292929F9F9FA6A6A6A9A9A9AFAFAFB3B3B3B6B6B6BABABABFBF - BFC0C0C0C2C2C2C5C5C5C8C8C8CACACACBCBCBCDCDCDCECECED0D0D0D0D0D0D0 - D0D0D2D2D2D2D2D2D2D2D2D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2 - D2D2D2D2D2D2D1D1D1D0D0D0CFCFCFCFCFCFCECECECCCCCCCACACAC7C7C7C5C5 - C5C4C4C4C1C1C1BDBDBDBABABAB7B7B7B4B4B4AFAFAFAAAAAAA6A6A6A3A3A399 - 99998A8A8A7A7A7A7A7A7A7C7C7C7676769C9B9BD1D1D1D4D3D3D0D0D0D3D3D3 - D5D5D59E9E9E888888CDCDCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFEFDFDBCABA27950347E4F2D80512D7D4E2C875C3CAD907AD6C6BB - EBE4DEF6F2F0FEFEFDFFFFFFC6B4A7754D36CFC0B6FFFFFFFEFEFEFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFDFDFDACACACD7D8D7FFFFFFFDFBFDDFE0E0C2CEC8CCDCD3DCE6E1EA - F0ECFBFAFBFFFCFFFBFAFAF8F7F8ECECECBDBDBDE6E6E6FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAA4A4A4929292D6D6D6 - D6D6D6D1D1D1DBDBDBBCBCBC7F7F7F6C6C6C7171717171717F7F7F9090909B9B - 9BA2A2A2A7A7A7AAAAAAAEAEAEB3B3B3B7B7B7BBBBBBBFBFBFC1C1C1C4C4C4C6 - C6C6C8C8C8CACACACCCCCCCDCDCDCECECECFCFCFD1D1D1D1D1D1D3D3D3D3D3D3 - D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2 - D2D1D1D1D0D0D0CFCFCFCECECECCCCCCCACACAC8C8C8C5C5C5C4C4C4C1C1C1BE - BEBEBABABAB7B7B7B4B4B4AFAFAFABABABA6A6A6A2A2A29D9D9D979797898989 - 7474746C6C6C6A6A6A646464959595D0D0D0D2D2D2D2D2D2D6D6D6B5B5B58F8F - 8FD4D4D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEC2BA - 7D53397F512E7E502E7E512FA5856DDED2C9F7F4F2FFFFFFFEFEFEFAF8F7F6F4 - F2FCFBFAEBE4DF8F6546A58976FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7AA - AAAAE3E3E3FFFFFFFFFFFFFFFFFFFFFFFFFEFBFDFAF9FAEEEDEDDDDCDDCCCCCC - C1C2C1CBCBCBD2D2D2EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFECECECB6B6B6B3B3B3DBDBDBD1D1D1D9D9D9C4C4 - C47C7C7C5C5C5C6161616666667979798F8F8F9696969A9A9AA1A1A1A6A6A6A9 - A9A9AFAFAFB3B3B3B7B7B7BABABABDBDBDC0C0C0C4C4C4C6C6C6C9C9C9CACACA - CCCCCCCDCDCDCECECED0D0D0D2D2D2D1D1D1D2D2D2D3D3D3D4D4D4D3D3D3D5D5 - D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D1D1D1D0D0D0CF - CFCFCDCDCDCBCBCBC9C9C9C8C8C8C5C5C5C4C4C4C0C0C0BDBDBDBBBBBBB8B8B8 - B4B4B4AEAEAEAAAAAAA6A6A6A2A2A29C9C9C9797979292928585856C6C6C5E5E - 5E5A5A5A606060A0A0A0D4D4D4D4D4D4D3D3D3D1D1D1A6A6A6D8D8D8FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDE9E68D6C567F502D7E502D7D4F - 2DB29783F3EFEBFFFFFFFEFEFEDCD4CFA9968A9279688B6F5BA08C7DD1C6BEA3 - 8672946F55F7F4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDB3B3B3E7E7E7E0E0E0 - E5E5E5D9D9D9D1D1D1C1C1C1C9C9C9D2D2D2E5E5E5F7F7F7FBFBFBFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF1F1F1CDCDCDC7C7C7D7D7D7D8D8D8CACACA8989895B5B5B5454545C - 5C5C7474748989899090909595959A9A9AA1A1A1A7A7A7AAAAAAADADADB2B2B2 - B6B6B6BABABABDBDBDC0C0C0C2C2C2C6C6C6C9C9C9CACACACBCBCBCECECECECE - CED0D0D0D0D0D0D2D2D2D3D3D3D3D3D3D4D4D4D3D3D3D4D4D4D3D3D3D4D4D4D4 - D4D4D4D4D4D4D4D4D4D4D4D3D3D3D2D2D2D1D1D1D0D0D0CFCFCFCECECECCCCCC - CACACAC8C8C8C4C4C4C3C3C3C1C1C1BDBDBDBBBBBBB7B7B7B3B3B3AFAFAFABAB - ABA6A6A6A0A0A09B9B9B9696969090908B8B8B80808067676753535359595969 - 6969AEAEAEDADADAD3D3D3D9D9D9CBCBCBDADADAFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFEFEFEC6B5AA794A2C7F502D7D4E2CA38169F4EFECFFFFFFFB - FAF9B4A2987B563D794B2B7B4D2B7C4D2C794B2A7D583F7A563F947055EEE8E4 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCACACAF1F1F1ACACACDFDFDFE9E9E9F6F6 - F6F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFF3F3F3C9 - C9C9DEDEDED8D8D8D2D2D29A9A9A6060605353535757576D6D6D8282828B8B8B - 8F8F8F9494949C9C9CA1A1A1A6A6A6AAAAAAADADADB2B2B2B6B6B6BABABABDBD - BDC1C1C1C2C2C2C4C4C4C8C8C8C9C9C9CBCBCBCECECECECECED0D0D0D1D1D1D1 - D1D1D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D4D4D4D5D5D5D5D5D5D4D4D4D4D4D4 - D4D4D4D2D2D2D2D2D2D2D2D2D0D0D0CFCFCFCDCDCDCCCCCCCACACAC7C7C7C5C5 - C5C3C3C3C0C0C0BCBCBCBABABAB7B7B7B2B2B2AEAEAEAAAAAAA5A5A5A0A0A09B - 9B9B9696969090908989898484847A7A7A6161615555555A5A5A767676C1C1C1 - D9D9D9D7D7D7D8D8D8D9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 - F2F0A88D7A7C4E2C7D4E2C8E6648DDD1C7FFFFFFF9F8F6AF9A8D784D317F512D - 7F502D7E4F2D7E502D7F4F2D7D4E2C7B4C2B977258EBE3DEFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFCBCBCBE3E3E3EEEEEEB5B5B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFF5F5F5C5C5C5E8E8E8DADADA - B0B0B06969695353535959596F6F6F7F7F7F8181818787878E8E8E9393939999 - 999F9F9FA5A5A5A9A9A9ADADADB1B1B1B4B4B4B9B9B9BCBCBCC0C0C0C2C2C2C4 - C4C4C7C7C7C9C9C9CACACACDCDCDCECECECFCFCFD1D1D1D1D1D1D2D2D2D3D3D3 - D2D2D2D3D3D3D4D4D4D5D5D5D5D5D5D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D1D1 - D1D0D0D0CFCFCFCECECECBCBCBCACACAC9C9C9C6C6C6C4C4C4C1C1C1BFBFBFBC - BCBCB8B8B8B5B5B5B1B1B1ACACACA9A9A9A4A4A49F9F9F9A9A9A9595958E8E8E - 8787878282828181817C7C7C626262575757565656909090D2D2D2DADADADCDC - DCDADADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEAE69C7A617D4F2D - 7C4E2CB09580FDFCFCFFFFFFCBBDB37E52367F502D7E502D7C4E2C8F6649A98B - 75B195809873577F502D99745AF0EBE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCACACAE8 - E8E8DADADAC9C9C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFEFEFEFFFFFFF2F2F2CDCDCDE7E7E7C9C9C97E7E7E5555555959 - 597171718383838282828181818787878D8D8D9393939797979E9E9EA3A3A3A8 - A8A8ACACACB0B0B0B3B3B3B8B8B8BCBCBCBFBFBFC2C2C2C4C4C4C7C7C7C8C8C8 - C9C9C9CBCBCBCDCDCDCFCFCFD0D0D0D0D0D0D2D2D2D3D3D3D2D2D2D3D3D3D4D4 - D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D1D1D1D0D0D0CFCFCFCFCFCFCD - CDCDCCCCCCCACACAC7C7C7C5C5C5C3C3C3C1C1C1BDBDBDBBBBBBB8B8B8B5B5B5 - B1B1B1ACACACA8A8A8A4A4A49F9F9F9898989494948E8E8E8888888282828383 - 838585857F7F7F646464545454656565B4B4B4DEDEDEDFDFDFD5D5D5FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1ECE9A280677D4F2C7D4E2CC8B3A4FFFF - FFFEFEFDA98E7C7D4D2C7E4F2C7C4E2CA4846DE6DCD6FCFCFBFEFDFDECE5E096 - 70559C795FFAF8F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6C1C1C1BCBCBCE9E9E9 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF1F1F1E8E8E8D6D6D6A8A8A85F5F5F5555556F6F6F85858587878785 - 85858585858787878C8C8C9292929696969D9D9DA3A3A3A6A6A6AAAAAAAFAFAF - B3B3B3B7B7B7BBBBBBBEBEBEC1C1C1C3C3C3C6C6C6C7C7C7C9C9C9CBCBCBCCCC - CCCECECECFCFCFD0D0D0D1D1D1D0D0D0D1D1D1D3D3D3D3D3D3D1D1D1D3D3D3D3 - D3D3D1D1D1D2D2D2D1D1D1D1D1D1D0D0D0CDCDCDCECECECDCDCDCACACAC8C8C8 - C6C6C6C4C4C4C2C2C2C0C0C0BCBCBCBABABAB6B6B6B2B2B2AEAEAEABABABA7A7 - A7A1A1A19E9E9E9999999393938D8D8D8888888686868787878787878A8A8A7C - 7C7C5E5E5E5454548F8F8FD5D5D5E1E1E1D0D0D0FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFF9F7F6B69C8A7E502D7B4C2CBBA596FFFFFFFCFBFAA889737D - 4E2C7C4D2B9B765BEDE6E1FFFFFFFFFFFFFFFFFFFAF9F8A58875B79D89FEFEFD - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9DCDCDCDEDEDEFDFDFDFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDED - EDEDC8C8C87C7C7C5050506666668585858B8B8B888888888888878787888888 - 8B8B8B9292929696969B9B9BA1A1A1A6A6A6ABABABAEAEAEB2B2B2B6B6B6B9B9 - B9BCBCBCBFBFBFC1C1C1C4C4C4C5C5C5C7C7C7CACACACBCBCBCCCCCCCCCCCCCF - CFCFCFCFCFD0D0D0D1D1D1D2D2D2D1D1D1D2D2D2D0D0D0D2D2D2D2D2D2D0D0D0 - D0D0D0CFCFCFCECECECDCDCDCCCCCCCBCBCBC8C8C8C8C8C8C6C6C6C3C3C3C1C1 - C1BDBDBDBABABAB8B8B8B5B5B5B2B2B2AEAEAEAAAAAAA5A5A5A1A1A19C9C9C96 - 96969191918C8C8C8A8A8A8A8A8A8989898A8A8A8A8A8A8D8D8D767676585858 - 646464BEBEBEDFDFDFCDCDCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFDCD0C7865B3C7C4D2D977762F4F2F0FFFFFFB79C887D4E2C7C4E2CBCA697 - FFFFFFFFFFFFFFFFFFFFFFFFCBBEB69C7D69E6DDD6FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEE9E9E9A9A9A9606060 - 5959598181819090908C8C8C8C8C8C8C8C8C8B8B8B8C8C8C8C8C8C9090909494 - 949B9B9BA0A0A0A3A3A3A9A9A9ACACACB0B0B0B4B4B4B7B7B7BBBBBBBDBDBDC0 - C0C0C3C3C3C4C4C4C6C6C6C9C9C9C9C9C9CBCBCBCCCCCCCECECECFCFCFD0D0D0 - D0D0D0D0D0D0D0D0D0D1D1D1D0D0D0D1D1D1D1D1D1CFCFCFCFCFCFCECECECDCD - CDCDCDCDCBCBCBC9C9C9C8C8C8C7C7C7C5C5C5C2C2C2BEBEBEBCBCBCB9B9B9B6 - B6B6B3B3B3B0B0B0ADADADA9A9A9A4A4A49F9F9F9A9A9A9494949090908E8E8E - 8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8E8E8E8E8E8E6A6A6A5454549A9A9AD7D7 - D7CDCDCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFBFAC0A999 - 80512F774A29AB988DFEFEFEEAE2DC9B755984532F927460D9D2CDF7F6F5E4E0 - DCBCAFA69B7F6ED4C4B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFBFBFBCACACAAEADADA09E9EAEADADD6D6D6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEE6E6E68686865555557070709090909191 - 918E8E8E8F8F8F8E8E8E8F8F8F8E8E8E8F8F8F8F8F8F9292929898989F9F9FA2 - A2A2A6A6A6A9A9A9AEAEAEB2B2B2B6B6B6B8B8B8BBBBBBBFBFBFC0C0C0C2C2C2 - C4C4C4C7C7C7C8C8C8CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECECECECFCF - CFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCCCCCCCBCBCBCCCCCCCACACAC7 - C7C7C7C7C7C3C3C3C1C1C1C0C0C0BEBEBEBBBBBBB8B8B8B4B4B4B1B1B1AEAEAE - AAAAAAA5A5A5A1A1A19E9E9E9898989393939090909090909191919191919191 - 918F8F8F8F8F8F9090909595957F7F7F5F5F5F757575C5C5C5D8D8D8FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F5F3C1AA9A8E64457448 - 2A9B8575D3C8C1B8A6987B563B7045277F5C4596806F9E8674A98F7ED8CBC2FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7777676282626 - 0A09090100000A0909383535919191F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFEEEEEEDDDDDD6F6F6F58585889898997979791919191919192929292 - 92929292929292929292929292929393939797979D9D9DA1A1A1A6A6A6A9A9A9 - ABABABB0B0B0B4B4B4B8B8B8BABABABCBCBCBFBFBFC1C1C1C3C3C3C4C4C4C5C5 - C5C7C7C7C9C9C9CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCD - CDCDCCCCCCCACACACACACACACACAC9C9C9C8C8C8C7C7C7C5C5C5C4C4C4C2C2C2 - C0C0C0BEBEBEBCBCBCB9B9B9B6B6B6B2B2B2AFAFAFADADADA9A9A9A4A4A4A0A0 - A09B9B9B96969694949493939393939393939394949493939392929292929293 - 93939494949494946D6D6D616161B1B1B1E1E1E1FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDED2C9BA9F8C99775E957763A6 - 908197806F9A7A62A6856EB29885CEBEB2F4F0EDFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0646363040000092014226B452986581A53 - 36060B08090606838383F5F5F5FFFFFFF1F1F1B9B9B9A3A2A2C8C8C8FCFCFCFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEC8 - C8C86565656E6E6E9898989A9A9A969696979797979797969696979797969696 - 9797979797979696969696969A9A9A9F9F9FA3A3A3A6A6A6AAAAAAAFAFAFB2B2 - B2B5B5B5B7B7B7BBBBBBBCBCBCBEBEBEC0C0C0C3C3C3C3C3C3C5C5C5C7C7C7C8 - C8C8C9C9C9C9C9C9CACACACBCBCBCACACACCCCCCCCCCCCCCCCCCCCCCCCCCCCCC - CBCBCBC9C9C9C7C7C7C6C6C6C4C4C4C4C4C4C1C1C1C0C0C0BEBEBEBBBBBBB8B8 - B8B7B7B7B4B4B4B2B2B2ADADADAAAAAAA7A7A7A3A3A39F9F9F99999997979798 - 98989898989898989999999797979898989898989898989898989999999D9D9D - 7F7F7F6363639D9D9DD9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3EEEBE0D4CBDACDC5E2D8D2EEE8E4 - F9F6F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFDFDFDA5A4A4090606153C283DC78043F59B47FFA33FE794339C670C201418 - 1515C6C6C6D9D9D95E5C5E201D1D0F0C0C2C28288C8C8CFCFCFCFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDBABABA606060858585 - 9E9E9E9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9B9B9B9B9B9B9A9A9A9B9B9B9A9A - 9A9999999A9A9A9D9D9DA0A0A0A3A3A3A7A7A7ACACACB0B0B0B3B3B3B6B6B6B9 - B9B9BABABABDBDBDC0C0C0C3C3C3C4C4C4C6C6C6C8C8C8C9C9C9CACACACBCBCB - CDCDCDCFCFCFCECECECECECECECECECECECECFCFCFCFCFCFCDCDCDCCCCCCCBCB - CBCBCBCBC9C9C9C7C7C7C5C5C5C3C3C3C0C0C0BDBDBDB9B9B9B6B6B6B2B2B2AE - AEAEAAAAAAA7A7A7A4A4A4A0A0A09D9D9D9B9B9B9C9C9C9C9C9C9B9B9B9C9C9C - 9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9393936B6B6B9191 - 91E3E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEE59575805 - 0D082E986345FFA83CFE9B3BFA993EFF9E46FFA42B885B070A084A48493B393A - 0200001030201A513508110D181515B1B1B0FFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEB4B4B4656565939393A4A4A49C9C9C9D9D - 9D9D9D9D9D9D9D9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C - 9C9C9F9F9FA1A1A1A5A5A5ACACACB1B1B1B6B6B6BABABABDBDBDC2C2C2C3C3C3 - C5C5C5C7C7C7C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D0D0 - D0D0D0D0CFCFCFD0D0D0D0D0D0CECECECECECECECECECECECECDCDCDCBCBCBCA - CACAC8C8C8C5C5C5C4C4C4C2C2C2BFBFBFBCBCBCBABABAB5B5B5AFAFAFA9A9A9 - A4A4A49F9F9F9E9E9E9E9E9E9E9E9E9D9D9D9E9E9E9F9F9F9F9F9F9E9E9E9F9F - 9F9E9E9E9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0717171868686E6E6E6FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E1E12D2B2B0D2D1C40D88A3FFFA1 - 39F59539F5953AF6953FFFA333BB7A0D2015030000020000205F3E3DD08A40E7 - 97309562050C08575455FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF3F3F39C9C9C6A6A6A9F9F9FA7A7A7A1A1A1A2A2A2A1A1A1A2A2A2A2 - A2A2A2A2A2A2A2A2A0A0A09F9F9FA1A1A1A2A2A2A2A2A2A4A4A4A7A7A7AAAAAA - B0B0B0B4B4B4B8B8B8BABABABDBDBDC1C1C1C3C3C3C5C5C5C6C6C6C8C8C8C9C9 - C9CACACACBCBCBCCCCCCCDCDCDCCCCCCCECECECECECECFCFCFCECECECECECECE - CECECFCFCFCDCDCDCECECECCCCCCCBCBCBCBCBCBC9C9C9C8C8C8C7C7C7C5C5C5 - C4C4C4C2C2C2C0C0C0BEBEBEBDBDBDBABABAB5B5B5B2B2B2B0B0B0AFAFAFADAD - ADAAAAAAA6A6A6A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A2 - A2A2A2A2A2A3A3A3A6A6A67D7D7D7E7E7EE0E0E0FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFE6E5E53937370D281A3FCF863FFFA039F5953AF6963AF6 - 963DFFA02FBB760C22160200001731243ED38941FFA83FFFA539D788071C133C - 3A3AEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F398 - 9898727272A5A5A5A9A9A9A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A5A5A5A6A6A6 - A6A6A6A8A8A8AAAAAAAFAFAFB4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B9B9 - B9BBBBBBBDBDBDC0C0C0C2C2C2C3C3C3C5C5C5C6C6C6C7C7C7CACACAC9C9C9C9 - C9C9CBCBCBCBCBCBCECECECCCCCCCDCDCDCCCCCCCECECECDCDCDCDCDCDCDCDCD - CDCDCDCACACAC9C9C9C9C9C9C9C9C9C6C6C6C7C7C7C5C5C5C1C1C1C1C1C1BEBE - BEBCBCBCB9B9B9B8B8B8B8B8B8B7B7B7B8B8B8B9B9B9B8B8B8B6B6B6B6B6B6B5 - B5B5AFAFAFACACACA7A7A7A6A6A6A5A5A5A7A7A7A6A6A6A6A6A6A6A6A6A7A7A7 - A9A9A98B8B8B828282E0E0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFF5F5F56260600608062B8B5C43FFA539F7963AF5953AF5953EFF9F32B8750C - 20150402022D825640F99C3CFB9B3DFF9C36D484071B12454444F2F2F2E7E7E7 - BDBDBDBBBBBBE4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F49B9B9B808080ABABAB - AAAAAAA7A7A7A6A6A6A7A7A7A7A7A7A9A9A9ACACACAFAFAFB4B4B4B8B8B8B7B7 - B7B9B9B9BABABABBBBBBBABABABABABAB9B9B9B8B8B8B8B8B8B9B9B9BBBBBBBD - BDBDC0C0C0C1C1C1C3C3C3C4C4C4C6C6C6C8C8C8C8C8C8C8C8C8CACACACBCBCB - CBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCACACAC9C9C9C9C9C9C9C9C9C8C8 - C8C8C8C8C7C7C7C6C6C6C4C4C4C2C2C2C1C1C1BFBFBFBDBDBDBBBBBBBABABABA - BABABBBBBBBABABABBBBBBBBBBBBBABABABBBBBBBBBBBBBBBBBBBBBBBBBABABA - B8B8B8B3B3B3AEAEAEABABABA8A8A8A8A8A8A9A9A9AAAAAAABABAB9191918484 - 84DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F3F3F3B6B6B616 - 1414122E203FCF883EFF9F39F69639F5943FFFA039B777111E17070D0B35BB77 - 3EFF9F3BFB993FFFA235B071050F0A302E2E6B6B6B2F2D2D1714141714142C29 - 29838383EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF5F5F5A1A1A1848484AEAEAEADADADAAAAAAACAC - ACAEAEAEB2B2B2B8B8B8BBBBBBBCBCBCBCBCBCBDBDBDBCBCBCBCBCBCBBBBBBBB - BBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBBBBBBBBBBBBBCBCBCBFBFBFC0C0C0 - C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C9C9C9C9C9C9C9C9C9CACACACBCB - CBCBCBCBCBCBCBCACACAC8C8C8C8C8C8C8C8C8C7C7C7C7C7C7C7C7C7C5C5C5C4 - C4C4C3C3C3C1C1C1C0C0C0BEBEBEBEBEBEBDBDBDBDBDBDBEBEBEBEBEBEBEBEBE - BEBEBEBDBDBDBEBEBEBDBDBDBDBDBDBEBEBEBDBDBDBEBEBEBEBEBEBDBDBDBDBD - BDBBBBBBB6B6B6B0B0B0ACACACACACACADADAD909090898989E1E1E1FFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFE9E9E9A3A3A26F706D6566637374712626250200001F5339 - 3FE08E3FFF9E3AF7953FFFA03AA97210120F162B2139D4853DFF9E3DFF9F3EEA - 9321543B0402020704040503020B251720593E184D3408180F0B0707646464EF - EFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFF2F2F2ADADAD8C8C8CB0B0B0B4B4B4B6B6B6BBBBBBBEBEBEC1C1C1C1 - C1C1C2C2C2C0C0C0C0C0C0BFBFBFC0C0C0C0C0C0BFBFBFBFBFBFC0C0C0C0C0C0 - BFBFBFC1C1C1C0C0C0BFBFBFBFBFBFBFBFBFBFBFBFC1C1C1C2C2C2C2C2C2C3C3 - C3C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C8 - C8C8C7C7C7C7C7C7C8C8C8C6C6C6C6C6C6C6C6C6C4C4C4C3C3C3C3C3C3C1C1C1 - C1C1C1C1C1C1C2C2C2C1C1C1C2C2C2C2C2C2C2C2C2C1C1C1C2C2C2C2C2C2C2C2 - C2C1C1C1C1C1C1C1C1C1C2C2C2C1C1C1C2C2C2C1C1C1C3C3C3C2C2C2C2C2C2C2 - C2C2BFBFBFB7B7B7B2B2B2939393999999E7E7E7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECEC - 6565650C0C0706060605060B0B0B0A090B0504010005030325634341EF973EFF - 9F3FFF9E3292620C09092152383FE7923FFFA342F79C3083590906060200000A - 0B0A266A483DD48745F6A044F49B3AB8791436230300009D9D9DFDFDFDFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5B3 - B3B3909090B1B1B1BEBEBEC4C4C4C6C6C6C5C5C5C4C4C4C4C4C4C4C4C4C5C5C5 - C4C4C4C4C4C4C4C4C4C4C4C4C3C3C3C4C4C4C4C4C4C5C5C5C4C4C4C4C4C4C4C4 - C4C5C5C5C4C4C4C5C5C5C4C4C4C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5 - C5C5C6C6C6C6C6C6C7C7C7C6C6C6C8C8C8C8C8C8C8C8C8C7C7C7C6C6C6C6C6C6 - C7C7C7C6C6C6C6C6C6C6C6C6C4C4C4C5C5C5C5C5C5C4C4C4C5C5C5C5C5C5C4C4 - C4C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C4 - C4C4C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C4C4C4C5C5C5C5C5C5C7C7C7BFBFBF - B5B5B5929292A5A5A5ECECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9B9B10110E0D0729210E - 7328128B230F751D1344090A090300000A090930855B46F9A644FFAB28805406 - 0505226B4740FCA045FFA836A06A0E17140100000E17122F895C42F2993EFF9E - 3AFD993BFF9B44FFA936AA7008140C484646E4E3E3FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAC7C7C7929292ABABAB - C1C1C1C8C8C8C8C8C8C8C8C8C8C8C8C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8 - C8C8C8C8C7C7C7C8C8C8C7C7C7C7C7C7C8C8C8C7C7C7C8C8C8C8C8C8C7C7C7C7 - C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8 - C8C8C8C6C6C6C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C8C8 - C8C8C8C8C9C9C9C9C9C9C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9C8 - C8C8C9C9C9C9C9C9C8C8C8C8C8C8C8C8C8C9C9C9C8C8C8C7C7C7C9C9C9C8C8C8 - C8C8C8C8C8C8C9C9C9C8C8C8C8C8C8C8C8C8CACACAC0C0C0B8B8B8888888B2B2 - B2F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFEFEFE6566640205012918872B07E52401E62604E32F - 10D02718710B0D130000000F1914349A693DC7861444270000001D4D313ECE88 - 36A9710E1F1700000015291E349A6843F9A03CFF9C3AF69639F59539F6943DFF - 9E45EE9817452D1B1919D5D4D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDD9D9D9939393A6A6A6C5C5C5C9C9C9CCCC - CCCACACACACACAC9C9C9CACACAC9C9C9CACACACACACACACACACACACACACACACA - CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA - CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA - CACACACACACACACACACACACACACDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCC - CCCCCDCDCDCCCCCCCDCDCDCDCDCDCCCCCCCDCDCDCCCCCCCBCBCBCDCDCDCDCDCD - CDCDCDCCCCCCCDCDCDCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCC - CCCDCDCDCDCDCDCBCBCBCCCCCCC1C1C1BBBBBB8C8C8CC6C6C6FBFBFBFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFF7E7F7D0205001D10592E0DD42400EF2200E12200E72C0ADF27167D - 0B0B170100000B0D0B101A131524231B3E3E14252216271A0D1611030101193B - 283AB97843FFA43DFD9C39F4943AF5963AF69639F5953BFF9A47F89F194F3514 - 1212D3D2D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFE5E5E59F9F9FA9A9A9C5C5C5CBCBCBD0D0D0CECECECECECECD - CDCDCECECECDCDCDCECECECECECECECECECECECECDCDCDCECECECECECECECECE - CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE - CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE - CECECFCFCFD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0CFCFCF - D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFD0D0D0D0D0D0D0D0D0CFCFCFD0D0 - D0CFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFD0D0D0D0D0D0CF - CFCFCCCCCCC3C3C3B3B3B3A2A2A2DFDFDFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCC - 32322F05050422136B2D0FBF2A08DF2604EA2400EF2906E22816890B08130603 - 03224F523EB5B648DBDB3AADAF193D410301011B3D2C3FD08841FFA73DFF9E3B - F9973AF7963AF69539F59539F79541FFA73DC9840F2719343232DDDCDCFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 - F0F0BEBEBEA8A8A8BEBEBECDCDCDD3D3D3D3D3D3D2D2D2D1D1D1D2D2D2D1D1D1 - D2D2D2D2D2D2D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1 - D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D2D2D2D2D2D2D2 - D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 - D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2 - D2D3D3D3D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 - D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4CCCCCCC3C3C3 - A2A2A2BABABAF3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B2B21E201C0406 - 0218123E25157C28129F290EAE2E10D72E13AE0F0A1A194C4346E1E245FFFF41 - FFFF44FFFF43D5D51A32361C442C42E6943CF4993DF69943FF9F45FFA345FFA5 - 43FFA644FFA644E99C205F41030100767575F6F6F6FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAD6D6D6A1A1A1 - B7B7B7CECECED3D3D3D6D6D6D4D4D4D4D4D4D4D4D4D5D5D5D4D4D4D4D4D4D5D5 - D5D4D4D4D5D5D5D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4 - D4D4D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 - D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D6D6D6D6D6D6D5D5D5D5D5D5D5D5 - D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D5 - D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 - D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5CBCBCBC2C2C2A8A8A8CBCBCBF8F8 - F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFF8FBFDD3E8EEEDF5F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 - EEF3D4E7EEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD817F80201C1C0300000000000703030D - 0A0F1510291E165311073B0C0B0C319B9946FFFF40FDFF3EFBFC40FFFF49FFFF - 32878907100D1A4D321C5E3B2469452F855B36986736A26D35AA7133A06B205C - 3C0303022E2D2DD1D1D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAB5B5B5B7B7B7CBCBCBD3D3 - D3D9D9D9D8D8D8D8D8D8D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 - D8D8D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 - D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 - D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7 - D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 - D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 - D8D8D8D8D8D8D8D2D2D2CBCBCBB8B8B8BCBCBCE8E8E8FDFDFDFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEEF293CFDF93C8 - D8ECF4F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5E7ED70B4CD93C3D6 - EBF4F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA - FAFABCBCBD322F2F0300000A110D0F1C161016140B0808010101000000000000 - 0000000F0E0E37A3A343FFFF3EFCFD3EFBFC3FFDFE44FFFF359898080F100000 - 000000000503030806060C090A0D0C0C0B0E0C0A0A090C0A0A474545BEBEBEFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF9F9F9D6D6D6BABABAC6C6C6D0D0D0D9D9D9DCDCDCDC - DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC - DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC - DCDCDCDCDCDCDCDCDCDCDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC - DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDCDCDCDCDCDC - DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC - DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDADADACF - CFCFC7C7C7BABABAD2D2D2F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFCCE5EC85DAE876D4E4CAE2EAFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFE9FCEDD2FA1C96DAFC7DFEDF2FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B4B33F3D3E050504 - 23644336B47536BD7B3AAD73308E5E216F47276A472A5D421931240403032973 - 7547FBFC42FFFF40FFFF42FFFF48FEFE29656709140E0C23180F1C160E121108 - 0606010000020000020000040000333132CECECEFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFEAEAEAC2C2C2BEBEBECECECED7D7D7DFDFDFDFDFDFDEDEDEDFDFDF - DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE - DEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDE - DEDEDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE - DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDE - DEDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDF - DFDFDEDEDEDEDEDEDEDEDEDFDFDFDEDEDEDEDEDED7D7D7CFCFCFC2C2C2C5C5C5 - E9E9E9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFCFE5EC86DBE881EDF7A8D8E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF3F9FB6AC0DF31A6CD6FAEC4E6F0F5FFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5856560401011D583A42E69444FFA842FF - A342FFA240FF9E3BF89940F29743E6973DC7841A492F0E1B1D34929346EAEB48 - F9F943E5E52E8385080B0E1531243CC37F3ECE883BB0762C8F5C237B4E2A754E - 1E4431080B09151212656465DCDCDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB - DCDCDCC3C3C3CACACAD3D3D3DEDEDEE1E1E1E1E1E1E2E2E2E1E1E1E1E1E1E1E1 - E1E1E1E1E1E1E1E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 - E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 - E1E1E1E1E1E1E2E2E2E1E1E1E1E1E1E1E1E1E2E2E2E1E1E1E1E1E1E2E2E2E2E2 - E2E2E2E2E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E3E3E3E2E2E2E2 - E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E2E2E2E1E1E1E1E1E1E2E2E2E2E2E2 - E2E2E2E3E3E3E2E2E2DDDDDDD4D4D4CBCBCBC6C6C6DFDFDFFAFAFAFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7E8EF82D6E491FFFF - 8AD6E2EBF4F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECF5F6B3D7E0EEF6F8FFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFD6E8EFBBDAE2FBFDFDFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFCBE3EC45C0E635A5C978B1C6F1F7F9FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFF353333010202349E6845FFA43BFB993AF5943AF7963BFB993B - FB9B3DFF9D41FFA845F09D286747000000090F101D47492E6A6A1E4445090607 - 060A070A130F2A765044E49644FFA93EFF9E3DFA9B42F39B3EDA9136AC721841 - 2C0300005F5D5EEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4D5D5D5CACA - CAD3D3D3DADADAE1E1E1E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 - E4E4E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 - E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4 - E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E6E6E6E5E5E5E5E5E5E5E5E5E5 - E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5 - E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E2E2 - E2D9D9D9D0D0D0C5C5C5D3D3D3F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF1F7F994D0DE93FCFF85EFF79FD1DEFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFEFFFFA1D2DE6FC1D7E9F3F7FFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFBEDFE95EB7CFC2DEE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FCFC - 69C2DF37C0EB3EA1C1A3CBDAFDFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 - 4647010100297C5142FB9E3BFE9C39F59539F59439F4943BFC9940FFA23ED487 - 2661420C110D0501010B130F090B06070505030202205D3C389F6B1023190101 - 011D493439C98141FFA63CFF9D3CFC9A3DFF9F41FFA13ED38817412C080505AB - AAAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECD1D1D1D2D2D2D6D6D6DC - DCDCE5E5E5E8E8E8E6E6E6E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 - E6E6E6E7E7E7E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6 - E6E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E5E5E5E6E6E6E6E6E6E7 - E7E7E6E6E6E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E8E8E8E7E7E7E7E7E7E7E7E7 - E7E7E7E7E7E7E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8 - E8E7E7E7E8E8E8E8E8E8E7E7E7E7E7E7E8E8E8E4E4E4DADADAD7D7D7D2D2D2CF - CFCFE9E9E9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFC7E2EA88E6F093FDFF7CD7E6C3DFE7FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFDFEDF271D2E771CEE4ECF5F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4E2EC - 47BEDF78BDD3F4F9FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BCEDF3AC4F03BB9 - E063AEC8E1EEF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8988891B19190C2317 - 3BC58042FFA53EFF9F3EFF9E40FFA343F7A039B0731A39290502020000001839 - 2742BB7E2665450000000F1D1737C88045FFA935A16B0C0F0C0101011939283B - B97B43FDA33FFF9F3CFB9A3DFF9E46FFAE2C8B5E040101807E7FFAFAFAFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFDFDFDE8E8E8CDCDCDCBCBCBD9D9D9DFDFDFE7E7E7 - E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E8E8E8E8E8 - E8E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E8 - E8E8E8E8E8E7E7E7E8E8E8E8E8E8E7E7E7E7E7E7E8E8E8E8E8E8E7E7E7EAEAEA - EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEA - EAE9E9E9EAEAEAE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9EA - EAEAEAEAEAEAEAEAE8E8E8DFDFDFDBDBDBD6D6D6D2D2D2E7E7E7FDFDFDFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFDFDA1D4E290 - F6FB89F2FB7ECDDCE6F1F5FFFFFFFFFFFFFFFFFFFFFFFFF5F9FB8CCEDF6CE5F7 - 71D0E2EBF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3E4EB4DC9EA41B1D0A0C8 - D6FDFEFEFFFFFFFFFFFFFFFFFFFFFFFFC5E0EA42C1EA36C4F04CAFD1B5D5E3FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6777676060202112F2034A2693EDE - 8E41E5943CCF842C7D54101F16030101020000162E2239C17F45EE9A21533A02 - 01011E3B2E3DDB8B40FFA642F69C2D7E55090A0702010115281D32966441E493 - 3FF39C3DF39A42E0931C5A3C0200009B9B9AFEFEFEFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFDFDFDE8E8E8CFCFCFD6D6D6DEDEDEE2E2E2E9E9E9ECECECEBEB - EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEBEBEBEBEBEBEBEBEBEAEAEAEA - EAEAEAEAEAEBEBEBEAEAEAEAEAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEAEAEA - EBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEAEAEAEDEDEDECECECECECECECEC - ECECECECECECECECECECECECECECECECEDEDEDEDEDEDEBEBEBECECECEBEBEBEB - EBEBECECECEBEBEBEBEBEBEDEDEDEBEBEBECECECECECECECECECEBEBEBE8E8E8 - E3E3E3DEDEDED8D8D8D0D0D0E5E5E5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FAFC91DBE793F8FD80E9F479C6D5 - EFF6F8FFFFFFFFFFFFFFFFFFECF5F892D1E06DE1F370EAFD65CFE2D5EBEFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFA9DAE34BCFEF48CDED42A5C2AAD1DEF8FCFDFF - FFFFFFFFFFFFFFFFCFE5ED45C0E733C7F43CB6DE91CADCFEFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFEDEDED6867670B0808040805102E2018422E081A1204 - 010103000003000014231A39B17746FFAF32C57C10291C02010126503B40E290 - 3CFF9B3DFF9D42F299276847060303030000080A09153C2A19603D17603B143D - 280405043B3A3ADFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFEFEFEE9E9E9D0D0D0DADADAE3E3E3E7E7E7EAEAEAEDEDEDEEEEEEEDEDEDED - EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEDEDEDEDEDEDEDEDED - EEEEEEEEEEEEEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDED - EDEEEEEEEDEDEDEEEEEEEEEEEEEFEFEFEEEEEEEFEFEFEEEEEEEEEEEEEFEFEFEE - EEEEEEEEEEEEEEEEEEEEEEEFEFEFEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF - EEEEEEEEEEEEEFEFEFEEEEEEEFEFEFEEEEEEE9E9E9E4E4E4E2E2E2D8D8D8D2D2 - D2E7E7E7FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFF2FBFC96E3EC95F8FD7FE9F566C1D1C4DFE8FFFFFFFBFD - FEDFF0F588CDDF6EE3F473EEFE6BE7FA5FD2E7A7D2E0FDFEFEFFFFFFFFFFFFFF - FFFFF3F9FA82C9DF4DD4F54EDBFB42C5E4399EBE96C6D7E9F4F7FDFEFEFBFDFE - 9FCEDF3DC3ED32C6F437BDE886CBE0FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFF3F3F39A9A9A424041211E1E221E1E2B28282625250502020F1914 - 36A36C43FFA341FFA53AB77813241A010000265D4140EB943CFF9B39F5953FFF - 9F41DF8F1F47330200000A06071B1717171313130F0F181515403D3EC7C7C7FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEE - EEEED7D7D7D9D9D9E3E3E3E8E8E8ECECECF0F0F0F1F1F1F1F1F1EFEFEFF0F0F0 - F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFF0F0F0F0F0F0F0F0F0EFEFEFEFEFEFF0F0 - F0EFEFEFF0F0F0F0F0F0F0F0F0F0F0F0EFEFEFF0F0F0F0F0F0EFEFEFF0F0F0F0 - F0F0F1F1F1F1F1F1F0F0F0F1F1F1F0F0F0F0F0F0F1F1F1F1F1F1F0F0F0F1F1F1 - F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F1F1F1F1F1F1F0F0F0F2F2 - F2F2F2F2EFEFEFEBEBEBE9E9E9E2E2E2D5D5D5D1D1D1ECECECFEFEFEFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFF3FBFC9BE3EC9CF8FD83EFF96AD7E579C8DAAFDAE59DD5E376D2E575E9FA73 - EFFB6EDAE96BDEF264DCF276C7D6EDF5F8FFFFFFFFFFFFFFFFFFCEE7EE5AC7E3 - 4CD6F656CDE95AD8ED43C9E735AACC5DB3CE99CDDE95CDE04ABDE135C5F132C3 - F234BFEA85CEE4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FCFCFCECECECCCCCCCCCCCCCD4D4D45351510509062C875B43FA9F3CFE9E3EFF - 9F3198650E100F0200001F5F3E3CED943BFF9B39F4943AF89640FFA337B97A07 - 150F1D1A1B8C8C8CACACACA09F9FB3B2B2E7E7E7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4DADADA - D7D7D7E1E1E1E9E9E9EEEEEEF0F0F0F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 - F2F2F2F2F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F2F2F2F2 - F2F2F1F1F1F2F2F2F1F1F1F2F2F2F2F2F2F1F1F1F2F2F2F2F2F2F3F3F3F3F3F3 - F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3 - F3F3F3F3F3F3F3F2F2F2F2F2F2F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1EDEDEDE7 - E7E7DFDFDFD0D0D0DADADAF4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6FBFCA5DDE5B3 - FAFC95F4FD82EFFB7CEBFA7CE9F77AE9F87DF2FD77F2FC67CBE48DB7D378C7DE - 6EEAFA5DD3E595CDDBD6DFEDE0E1F1CDDDEB7ACDE050DAF74AD3F176B6D482B6 - D45CDAF04EDDF63AC4EB39BFE938C2EE34C4F031C0EF31C3F238C2E99CD3E4FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFD9D9D91E1C1C10362441E3913DFF9D3BFC9941FF9E23754C02010103 - 01011B623D39EF933CFF9C39F4943AF5953CFB9D40F49C256D47090606989898 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE4E4E4D5D5D5D9D9 - D9E9E9E9EFEFEFF1F1F1F3F3F3F3F3F3F4F4F4F5F5F5F5F5F5F4F4F4F5F5F5F4 - F4F4F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F5F5F5F4F4F4F5F5F5F4F4F4F5F5F5 - F5F5F5F4F4F4F4F4F4F5F5F5F5F5F5F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F6F6 - F6F6F6F6F5F5F5F5F5F5F5F5F5F4F4F4F5F5F5F6F6F6F5F5F5F5F5F5F5F5F5F5 - F5F5F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2EAEAEAE3E3E3D5D5D5CFCFCFE1E1E1 - FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FAFD97B3D9B0EBF3CDFFFFB2F9FD - 9FF7FE97FAFF90FAFE7CEDF561BCE26085D2767BCF70AAD97AECF766E3F755CC - E35EADD165A1D056B7DC50D6F24FDDF947C8E8698FD2787BD0639DDC6AD7EF5F - E7F74DDCF840D0F63BC9F339CAF236D0F43BA9DEAFC2E1FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3A2A207 - 05051A593B40FF9D3AF9963DFF9F3FE491204F36010000040101216E463AF295 - 3CFF9B3AF5963AF5963BF99844FFA236A66D030002726F70FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5DDDDDDD6D6D6E1E1E1EB - EBEBF3F3F3F6F6F6F5F5F5F5F5F5F7F7F7F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7 - F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F7F7F7F6F6 - F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 - F6F6F6F6F6F6F6F6F7F7F7F6F6F6F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F4F4F4 - F5F5F5EFEFEFE4E4E4D8D8D8CDCDCDD9D9D9F4F4F4FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFEFEFFA555FCF5D8CDFC0EEF7D7FFFCC7FFFDA8F3F886D7 - EF60A1DD5B74DA6F79E3818AE9799CE183DDEF84F3FD65E0F857DFF656E1F755 - DDF752DBF74BD9F357B5E27E94E38089EA6875E15F84DC6AB9E76DDEF263E4F5 - 5BE3F650DEF33AB7E82057CF8585D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F0503031D634140FFA3 - 3CFF9E44FFA834A56C0C120E020001020000246A463EF89A3CFF9D39F49539F4 - 953CF99942FFA23295630200016B696AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEDEDEDD8D8D8D6D6D6E2E2E2EFEFEF - F7F7F7FBFBFBF9F9F9F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F9F9 - F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F9F9F9F9 - F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8 - F9F9F9F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F3F3F3E8E8E8D7D7D7CACA - CAD3D3D3EBEBEBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFF4F5FB696ED2192CD14A70D577A0DE78A5E05D8DD64C6DD34E5CD75F69DC69 - 78DD7282DF7887DE73A7DC8EE6F394F7FF7CECFD6AE4F95FE0FA50DAF74DBAE1 - 6C93D87D88DF6F81DE6574DC5963DA4B5ED54978D55093DA4E9CDD418DD82A53 - D21E27CD969ADEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFBCBCBC0C0A0A113D2842E59545FFA73CC3801437 - 26070505575757282525102C1E3BCB8342FFA63DFF9D3BFF9A40FFA642E59519 - 48300603038F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDDBDBDBD8D8D8DBDBDBE8E8E8F5F5 - F5FDFDFDFDFDFDFAFAFAF8F8F8F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFA - FAFAF9F9F9F9F9F9F9F9F9FAFAFAFAFAFAF9F9F9FAFAFAFAFAFAFAFAFAFAFAFA - FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFAFAFAF9F9F9FAFAFAFBFB - FBFDFDFDFAFAFAEBEBEBDEDEDED2D2D2CACACAD4D4D4E9E9E9FDFDFDFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3ED8D - 90DD878BDD8C93DB9096DB9497DC9A9CDE9FA3DFA2A7DFA5AAE0A7ADE0ABAEE1 - AAB0DEA2C7DF94DFE88BE7F178DFF063D6EB74C8DF9FBBDDADAEE0AAAFE0A6AC - DFA3A9E0A1A6DF9DA1DF999ADD9697DC9396DB9193DC8C8CDD9DA0DFE4E5F4FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFEEEEEE4A49490609061D573A267B501430210200005C5C5CE6E6E77B - 7A7A04000018473037B87745F29C45F49A3CCE852875500504043D3C3CDDDDDD - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDD7D7D7D6D6D6DCDCDCE8E8E8F5 - F5F5FFFFFFFEFEFEFDFDFDFCFCFCFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB - FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFCFCFCFCFCFCFCFC - FCFCFCFCFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFF9F9F9E9E9E9DBDBDBD0D0D0C7 - C7C7CCCCCCD9D9D9EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAEE - F3C3EAF2BCE8F3C0E6EFE7F2F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF - C0BF3734350200000200000C08085E5E5DD9D9D9FFFFFFD7D7D74F4C4E020000 - 0B22151E623F1F6641113020030102252324B4B4B4FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFAFAFAE7E7E7D8D8D8D5D5D5D2D2D2D3D3D3DEDEDE - ECECECFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF7 - F7F7E7E7E7DADADAD2D2D2C6C6C6C1C1C1CCCCCCD3D3D3DEDEDEF8F8F8FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF959495 - 8C8A8BABAAABEBEBEBFFFFFFFFFFFFFFFFFFDDDDDD7D7B7C3331310908080908 - 08201D1D605E5EC0C1C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEADEDEDEDBDBDBCFCFCFCDCDCDC8C8 - C8CBCBCBD1D1D1D9D9D9DFDFDFECECECF3F3F3F0F0F0EFEFEFEFEFEFEFEFEFF2 - F2F2E7E7E7D4D4D4CFCFCFC4C4C4C8C8C8BFBFBFB7B7B7B5B5B5B9B9B9C7C7C7 - D7D7D7D6D6D6DFDFDFFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAD5D5D5B6B5B6B7B6B6C7C7C7EEEEEEFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9E1E1E1D9D9D9DCDCDCCF - CFCFC1C1C1C3C3C3B9B9B9AAAAAAA8A8A8A4A4A4A6A6A6AAAAAAA3A3A3A6A6A6 - B9B9B9B8B8B8C9C9C9D4D4D4D4D4D4D8D8D8E3E3E3FBFBFBFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFDFDFDF5F5F5F5F5F5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAF7F7F7F7F7F7EBEBEBDADADAD8D8D8 - C8C8C8B8B8B8B6B6B6B3B3B3B4B4B4B7B7B7B3B3B3BDBDBDD7D7D7DADADAEAEA - EAF6F6F6F7F7F7F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFE1A68CD68561E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9BCA9 - C75828C75828F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E45C75828E5B1 - 9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6FBF4F1FFFF - FFFFFFFFFFFFFFFBF4F1F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF4DED4F0D2C6FBF4F1FFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F4DED4FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2F0D2C6F8E9E2FFFFFFFFFFFFFFFF - FFFFFFFFF0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFBF4F1F0D2C6F0D2C6FB - F4F1FFFFFFFFFFFFFFFFFFF0D2C6F0D2C6FBF4F1FFFFFFFFFFFFF4DED4F0D2C6 - F8E9E2FFFFFFFFFFFFFFFFFFF8E9E2F0D2C6F4DED4FFFFFFFFFFFFFFFFFFFBF4 - F1F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFBF4F1F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFF4DED4 - F0D2C6F8E9E2FFFFFFFFFFFFF8E9E2F0D2C6F4DED4FFFFFFFFFFFFFFFFFFF8E9 - E2E5B19BE5B19BE5B19BE9BCA9FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 - BCA9E5B19BE5B19BE9BCA9FBF4F1FFFFFFFFFFFFFFFFFFECC7B7E5B19BE5B19B - E9BCA9FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFF4DED4F0D2C6F8E9E2FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9BCA9C75828CB6336FFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF8E9E2F0D2C6F0D2C6FFFFFFFFFFFFFFFFFFFBF4F1F0D2C6 - F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4E5B19BE5B1 - 9BE9BCA9FBF4F1F4DED4F0D2C6F8E9E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFCE6E45C75828E1A68CFFFFFFFFFFFFFFFFFFE1 - A68CC75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E45C75828 - E1A68CFFFFFFFFFFFFFFFFFFE1A68CC75828CB6336FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFDD9B7EC75828D27953FFFFFFFFFFFFFFFFFFECC7B7C75828C7 - 5828F4DED4FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828F0D2C6FFFFFFFFFFFF - FFFFFFC75828C75828F0D2C6FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - F0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFDD9B7EC75828C75828C75828C7 - 5828C75828CB6336E9BCA9FFFFFFFFFFFFFFFFFFD27953C75828C75828C75828 - C75828F0D2C6FFFFFFFBF4F1D27953C75828C75828C75828C75828CB6336F4DE - D4FFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFC75828C75828E9BCA9FFFFFFFFFFFFFFFFFFFFFFFF - E5B19BC75828C75828FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFE9BCA9C75828C75828C75828C75828CB6336CE - 6E45C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF4DED4C75828C75828CE6E45FFFFFFFFFFFFFFFFFFCE6E45C75828C75828 - F4DED4FFFFFFFFFFFFFFFFFFFFFFFFF4DED4C75828C75828CE6E45FFFFFFFFFF - FFFFFFFFCE6E45C75828C75828F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB - 6336C75828C75828F8E9E2FFFFFFFFFFFFDD9B7EC75828C75828E5B19BFFFFFF - FFFFFFFFFFFFF0D2C6C75828C75828F0D2C6FFFFFFFFFFFFFFFFFFC75828C758 - 28F0D2C6FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFE5B19BC7 - 5828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C758 - 28FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFE5B19BC7 - 5828D68561FFFFFFFFFFFFD68561CB6336E9BCA9FBF4F1FBF4F1E5B19BC75828 - CB6336FBF4F1FFFFFFECC7B7C75828C75828E5B19BF0D2C6E5B19BF8E9E2FFFF - FFD68561C75828CB6336E9BCA9ECC7B7D27953C75828CB6336FBF4F1FFFFFFFF - FFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - E9BCA9C75828C75828D27953FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828C758 - 28FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFCB6336C75828D27953F0D2C6E5B19BCE6E45C75828C75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828 - C75828C75828F4DED4FFFFFFF4DED4C75828C75828C75828E5B19BFFFFFFFFFF - FFFFFFFFFFFFFFE5B19BC75828C75828C75828F4DED4FFFFFFF4DED4C75828C7 - 5828C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFF4DED4C75828C75828C75828 - E5B19BFFFFFFFFFFFFCB6336C75828C75828DA9070FFFFFFFFFFFFFFFFFFF8E9 - E2E5B19BE5B19BF8E9E2FFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFFFFFF - FFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFF - FFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFF - FFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFE5B19BC75828D68561FFFFFF - FFFFFFE9BCA9FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFF - FFE5B19BC75828D27953FFFFFFFFFFFFFFFFFFFFFFFFF4DED4C75828C75828F0 - D2C6FFFFFFFFFFFFFBF4F1CB6336C75828E5B19BFFFFFFFFFFFFD68561C75828 - E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD27953C75828C758 - 28C75828F0D2C6FFFFFFFFFFFFFFFFFFF0D2C6E5B19BE5B19BFFFFFFFFFFFFFF - FFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828 - C75828F8E9E2FFFFFFFFFFFFFBF4F1D27953C75828E5B19BFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA9070C75828D27953C75828E1A6 - 8CFFFFFFE1A68CC75828D27953C75828DA9070FFFFFFFFFFFFFFFFFFFFFFFFDA - 9070C75828D27953C75828E1A68CFFFFFFE1A68CC75828D27953C75828DA9070 - FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828D27953C75828D27953FFFFFFECC7 - B7C75828D27953C75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFFFFFFFFFFD68561C75828 - E5B19BFFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFF0D2 - C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD68561 - C75828E5B19BFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFBF4F1ECC7B7DA9070C75828C75828F4DED4FFFFFFE5B19BC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828CE6E45FFFFFFFFFFFFFFFFFF - FFFFFFDD9B7EC75828DA9070FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828D68561C75828DD9B7EFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828 - C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFF - FFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFCB6336C75828ECC7B7C75828CE6E45FFFFFFCE6E45C7 - 5828ECC7B7C75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFCB6336C75828ECC7B7 - C75828CE6E45FFFFFFCE6E45C75828ECC7B7C75828CB6336FFFFFFFFFFFFFFFF - FFFFFFFFDA9070C75828E5B19BD27953C75828F8E9E2DD9B7EC75828E5B19BCE - 6E45C75828F4DED4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFC75828C75828F0D2C6FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FF - FFFFFFFFFFFFFFFFF0D2C6F0D2C6F0D2C6F0D2C6F0D2C6F0D2C6FFFFFFFFFFFF - F0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFE5B19BCE6E45C75828C7 - 5828C75828C75828DD9B7EFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFF - FFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC758 - 28D68561FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFDD9B7EC75828D68561F4DED4C75828C75828F8E9E2FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD6 - 8561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 - DED4C75828C75828FFFFFFDA9070C75828E9BCA9C75828CE6E45FFFFFFCB6336 - C75828F4DED4FFFFFFFFFFFFF4DED4C75828C75828FFFFFFDA9070C75828E9BC - A9C75828CE6E45FFFFFFCB6336C75828F4DED4FFFFFFFFFFFFFFFFFFCB6336C7 - 5828F0D2C6E5B19BC75828E5B19BCB6336C75828F8E9E2DA9070C75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC75828C758 - 28F0D2C6FFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFE5B19BC7 - 5828D68561FFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFF - C75828C75828C75828C75828C75828C75828FFFFFFFFFFFFF0D2C6C75828C758 - 28FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFE5B19BC7 - 5828D68561FFFFFFFFFFFFE5B19BC75828C75828CB6336D68561E5B19BF4DED4 - FFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFE5B1 - 9BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFF - FFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF4F1C75828 - C75828E9BCA9FFFFFFCE6E45C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19B - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828D68561 - FFFFFFE9BCA9C75828CB6336C75828E1A68CFFFFFFD68561C75828E5B19BFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFE9BCA9C75828CB6336C75828E1A68CFF - FFFFD68561C75828E5B19BFFFFFFFFFFFFF4DED4C75828C75828FFFFFFF8E9E2 - C75828CB6336C75828D27953FFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFFFFFF - FFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFF - FFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFE5B19BE5B19BE5B1 - 9BE5B19BE5B19BE5B19BFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFF - FFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFE5B19BC75828D68561FFFFFF - FFFFFFD68561C75828D68561FBF4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFECC7B7C75828C75828FB - F4F1FFFFFFFFFFFFFFFFFFD27953C75828E1A68CFFFFFFFFFFFFD68561C75828 - E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828CB6336FFFFFFFFFF - FFE5B19BC75828CB6336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828 - C75828FFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561C75828E1A68CFFFFFFF8E9E2C758 - 28C75828C75828F4DED4FFFFFFE5B19BC75828D68561FFFFFFFFFFFFD68561C7 - 5828E1A68CFFFFFFF8E9E2C75828C75828C75828F4DED4FFFFFFE5B19BC75828 - D68561FFFFFFFFFFFFE5B19BC75828D27953FFFFFFFFFFFFCE6E45C75828C758 - 28E5B19BFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFFFFFFFFFFD68561C75828 - CE6E45F0D2C6FFFFFFFFFFFFD27953C75828CB6336E5B19BFFFFFFFFFFFFE1A6 - 8CC75828CE6E45FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF0D2C6C75828C75828E1A68CFBF4F1FFFFFFF4DED4C75828 - C75828E9BCA9FFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFDA9070C758 - 28DD9B7EFFFFFFFFFFFFFFFFFFF0D2C6E1A68CFFFFFFFFFFFFE5B19BC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFFBF4F1CB6336C75828DD9B7EFFFFFFFFFFFF - E9BCA9C75828C75828F0D2C6FFFFFFFFFFFFD68561C75828C75828E5B19BFBF4 - F1FBF4F1F4DED4FFFFFFCE6E45C75828E1A68CFFFFFFFFFFFFFBF4F1C75828C7 - 5828E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828 - C75828D27953F0D2C6FFFFFFF4DED4FBF4F1F0D2C6C75828C75828FFFFFFFFFF - FFFFFFFFFFFFFFD68561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFC75828C75828ECC7B7FFFFFFFFFFFFD27953C75828CE6E45FF - FFFFFFFFFFECC7B7C75828C75828FFFFFFFFFFFFC75828C75828ECC7B7FFFFFF - FFFFFFD27953C75828CE6E45FFFFFFFFFFFFECC7B7C75828C75828FFFFFFFFFF - FFD68561C75828E1A68CFFFFFFFFFFFFE1A68CC75828C75828F8E9E2FFFFFFFB - F4F1C75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFC75828C75828F0D2C6FFFFFFFFFFFFD68561C75828C75828C75828D279 - 53CE6E45C75828C75828CE6E45C75828CE6E45D27953C75828C75828E1A68CFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - F0D2C6C75828C75828C75828C75828D68561CB6336C75828CB6336FBF4F1FFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFECC7B7C75828C75828DA9070E5 - B19BD27953C75828D68561FFFFFFE9BCA9CE6E45C75828CB6336D68561D68561 - D68561F4DED4FFFFFFE9BCA9C75828C75828CE6E45D27953C75828C75828DD9B - 7EFFFFFFFFFFFFFFFFFFD68561C75828CB6336C75828C75828C75828D68561E9 - BCA9C75828C75828F8E9E2FFFFFFFFFFFFFFFFFFDD9B7EC75828D27953FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828CB6336C758 - 28C75828C75828F0D2C6F0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFD6 - 8561C75828E5B19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4DED4D6 - 8561D68561F8E9E2FFFFFFFFFFFFE9BCA9D68561E5B19BFFFFFFFFFFFFF8E9E2 - D68561D68561F4DED4F4DED4D68561D68561F8E9E2FFFFFFFFFFFFE9BCA9D685 - 61E5B19BFFFFFFFFFFFFF8E9E2D68561D68561F4DED4FFFFFFD68561D68561EC - C7B7FFFFFFFFFFFFF4DED4D68561DD9B7EFFFFFFFFFFFFFFFFFFDA9070D68561 - E9BCA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD68561D685 - 61F4DED4FFFFFFFFFFFFE1A68CD68561E5B19BDD9B7ECB6336C75828CB6336E5 - B19BFBF4F1E1A68CCB6336C75828C75828DD9B7EFBF4F1FFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C758 - 28ECC7B7D27953C75828C75828D27953F4DED4FFFFFFFFFFFFFFFFFFE9BCA9D6 - 8561E1A68CFFFFFFFFFFFFFFFFFFECC7B7D27953C75828C75828C75828DA9070 - ECC7B7FFFFFFE9BCA9CE6E45C75828CB6336D68561D68561D68561F4DED4FFFF - FFFFFFFFECC7B7D27953C75828C75828CE6E45E5B19BFFFFFFFFFFFFFFFFFFFF - FFFFE1A68CD68561E9BCA9E9BCA9DA9070D68561E1A68CE5B19BD68561DD9B7E - FFFFFFFFFFFFFFFFFFFFFFFFF0D2C6D68561D68561F8E9E2FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFF4DED4D68561D68561F8E9E2E1A68CD68561D68561F4 - DED4F4DED4D68561D68561FFFFFFFFFFFFFFFFFFFFFFFFE1A68CD68561E9BCA9 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFC75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFF0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B19BC75828D6 - 8561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFC75828C75828F0D2C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - F0D2C6C75828C75828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFE5B19BC75828D68561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D2C6E5B19BE9BCA9FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E9E2E5B19BE5B1 - 9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} - WaterMark.Image.Alignment = iaCenter - WaterMark.Image.Layout = ilCenter - WaterMark.Width = 201 - end - object Page2: TJvWizardInteriorPage - Header.Height = 50 - Header.Title.Color = clNone - Header.Title.Text = #1052#1072#1089#1090#1077#1088' '#1101#1082#1089#1087#1086#1088#1090#1072' '#1080#1089#1090#1086#1088#1080#1080 - Header.Title.Anchors = [akLeft, akTop, akRight] - Header.Title.Font.Charset = DEFAULT_CHARSET - Header.Title.Font.Color = clWindowText - Header.Title.Font.Height = -16 - Header.Title.Font.Name = 'Tahoma' - Header.Title.Font.Style = [fsBold] - Header.Subtitle.Color = clNone - Header.Subtitle.Text = #1042#1099#1073#1077#1088#1080#1090#1077' '#1082#1086#1085#1090#1072#1082#1090#1099', '#1080#1089#1090#1086#1088#1080#1102' '#1082#1086#1090#1086#1088#1099#1093' '#1042#1099' '#1093#1086#1090#1080#1090#1077' '#1101#1082#1089#1087#1086#1088#1090#1080#1088#1086#1074#1072#1090#1100'.' - Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] - Header.Subtitle.Font.Charset = DEFAULT_CHARSET - Header.Subtitle.Font.Color = clWindowText - Header.Subtitle.Font.Height = -11 - Header.Subtitle.Font.Name = 'Tahoma' - Header.Subtitle.Font.Style = [] - EnabledButtons = [bkBack, bkNext, bkFinish, bkCancel] - ExplicitWidth = 0 - ExplicitHeight = 0 - object CBSelectAll: TCheckBox - Left = 16 - Top = 199 - Width = 97 - Height = 17 - Caption = #1042#1099#1073#1088#1072#1090#1100' '#1074#1089#1077#1093 - TabOrder = 0 - OnClick = CBSelectAllClick - end - object ContactList: TListView - Left = 16 - Top = 64 - Width = 529 - Height = 129 - Checkboxes = True - Columns = < - item - AutoSize = True - Caption = #1053#1080#1082 - end - item - Caption = #1055#1088#1086#1090#1086#1082#1086#1083 - Width = 100 - end - item - AutoSize = True - Caption = #1053#1086#1084#1077#1088 - end> - ColumnClick = False - RowSelect = True - TabOrder = 1 - ViewStyle = vsReport - OnChange = ContactListChange - OnChanging = ContactListChanging - end - end - object Page3: TJvWizardInteriorPage - Header.Height = 50 - Header.Title.Color = clNone - Header.Title.Text = #1052#1072#1089#1090#1077#1088' '#1101#1082#1089#1087#1086#1088#1090#1072' '#1080#1089#1090#1086#1088#1080#1080 - Header.Title.Anchors = [akLeft, akTop, akRight] - Header.Title.Font.Charset = DEFAULT_CHARSET - Header.Title.Font.Color = clWindowText - Header.Title.Font.Height = -16 - Header.Title.Font.Name = 'Tahoma' - Header.Title.Font.Style = [fsBold] - Header.Subtitle.Color = clNone - Header.Subtitle.Text = #1048#1076#1077#1090' '#1101#1082#1089#1087#1086#1088#1090' '#1080#1089#1090#1086#1088#1080#1080', '#1087#1086#1076#1086#1078#1076#1080#1090#1077'...' - Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] - Header.Subtitle.Font.Charset = DEFAULT_CHARSET - Header.Subtitle.Font.Color = clWindowText - Header.Subtitle.Font.Height = -11 - Header.Subtitle.Font.Name = 'Tahoma' - Header.Subtitle.Font.Style = [] - EnabledButtons = [bkBack, bkNext, bkFinish, bkCancel] - OnPage = Page3Page - ExplicitWidth = 0 - ExplicitHeight = 0 - object LExportDesc: TLabel - Left = 16 - Top = 77 - Width = 82 - Height = 13 - Caption = #1042#1099#1073#1088#1072#1085#1086' 0 '#1080#1079' 10' - end - object LExportDesc2: TLabel - Left = 16 - Top = 119 - Width = 63 - Height = 13 - Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1103 - end - object PBTotalExport: TProgressBar - Left = 16 - Top = 96 - Width = 529 - Height = 17 - TabOrder = 0 - end - end - object Page4: TJvWizardInteriorPage - Header.Height = 50 - Header.Title.Color = clNone - Header.Title.Text = #1052#1072#1089#1090#1077#1088' '#1101#1082#1089#1087#1086#1088#1090#1072' '#1080#1089#1090#1086#1088#1080#1080 - Header.Title.Anchors = [akLeft, akTop, akRight] - Header.Title.Font.Charset = DEFAULT_CHARSET - Header.Title.Font.Color = clWindowText - Header.Title.Font.Height = -16 - Header.Title.Font.Name = 'Tahoma' - Header.Title.Font.Style = [fsBold] - Header.Subtitle.Color = clNone - Header.Subtitle.Text = #1069#1082#1089#1087#1086#1088#1090' '#1080#1089#1090#1086#1088#1080#1080' '#1079#1072#1074#1077#1088#1096#1077#1085'.' - Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] - Header.Subtitle.Font.Charset = DEFAULT_CHARSET - Header.Subtitle.Font.Color = clWindowText - Header.Subtitle.Font.Height = -11 - Header.Subtitle.Font.Name = 'Tahoma' - Header.Subtitle.Font.Style = [] - EnabledButtons = [bkBack, bkFinish, bkCancel] - VisibleButtons = [bkFinish] - ExplicitWidth = 0 - ExplicitHeight = 0 - object LExportDone: TLabel - Left = 16 - Top = 72 - Width = 529 - Height = 42 - AutoSize = False - Caption = - #1069#1082#1089#1087#1086#1088#1090' '#1080#1089#1090#1086#1088#1080#1080' '#1079#1072#1074#1077#1088#1096#1077#1085'. '#1058#1077#1087#1077#1088#1100' '#1042#1099' '#1084#1086#1078#1077#1090#1077' '#1086#1090#1087#1088#1072#1074#1080#1090#1100' '#1079#1072#1087#1088#1086#1089' '#1085#1072' '#1089 + - #1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1102' '#1101#1082#1089#1087#1086#1088#1090#1080#1088#1086#1074#1072#1085#1085#1086#1081' '#1080#1089#1090#1086#1088#1080#1080' '#1089' '#1073#1072#1079#1086#1081' '#1076#1072#1085#1085#1099#1093'. '#1055#1088#1080' '#1073#1086#1083#1100#1096#1086 + - #1084' '#1086#1073#1098#1105#1084#1077' '#1101#1082#1089#1087#1086#1088#1090#1080#1088#1086#1074#1072#1085#1085#1086#1081' '#1080#1089#1090#1086#1088#1080#1080' '#1087#1088#1086#1094#1077#1076#1091#1088#1072' '#1089#1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1080' '#1084#1086#1078#1077#1090' ' + - #1074#1099#1087#1086#1083#1085#1103#1090#1100#1089#1103' '#1079#1085#1072#1095#1080#1090#1077#1083#1100#1085#1086#1077' '#1074#1088#1077#1084#1103'.' - WordWrap = True - end - object CBSyncRequest: TCheckBox - Left = 16 - Top = 120 - Width = 529 - Height = 17 - Caption = #1054#1090#1087#1088#1072#1074#1080#1090#1100' '#1079#1072#1087#1088#1086#1089' '#1085#1072' '#1089#1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1102 - TabOrder = 0 - end - end - end - object IMExportThread: TJvThread - Exclusive = True - MaxCount = 0 - RunOnCreate = True - FreeOnTerminate = True - OnExecute = IMExportThreadExecute - Left = 264 - Top = 216 - end -end diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.pas deleted file mode 100644 index a409a01091..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/MsgExport.pas +++ /dev/null @@ -1,452 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.5 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -unit MsgExport; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, JvWizard, JvExControls, JvWizardRouteMapNodes, ComCtrls, StdCtrls, - JvComponentBase, JvThread, JclStringConversions, Global, Contacts, m_api; - -type - TContactRecord = record - hContact: Cardinal; - ContactID: AnsiString; - ContactName: AnsiString; - ProtoName: AnsiString; - Selected: Boolean; - end; - TExportForm = class(TForm) - IMExportWizard: TJvWizard; - Page1: TJvWizardWelcomePage; - Page2: TJvWizardInteriorPage; - Page3: TJvWizardInteriorPage; - Page4: TJvWizardInteriorPage; - LExportDesc: TLabel; - IMExportThread: TJvThread; - CBSelectAll: TCheckBox; - ContactList: TListView; - PBTotalExport: TProgressBar; - LExportDesc2: TLabel; - CBSyncRequest: TCheckBox; - LExportDone: TLabel; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure Page3Page(Sender: TObject); - procedure IMExportWizardCancelButtonClick(Sender: TObject); - procedure IMExportWizardFinishButtonClick(Sender: TObject); - procedure IMExportThreadExecute(Sender: TObject; Params: Pointer); - procedure CBSelectAllClick(Sender: TObject); - procedure ContactListChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean); - procedure ContactListChange(Sender: TObject; Item: TListItem; Change: TItemChange); - procedure BringFormToFront(Form: TForm); - function CheckStopExportAndExit: Boolean; - private - { Private declarations } - StartExport: Boolean; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - procedure OnLanguageChanged(var Msg: TMessage); message WM_LANGUAGECHANGED; - procedure LoadLanguageStrings; - public - { Public declarations } - end; - -var - ExportForm: TExportForm; - ExportContactRecords: Array of TContactRecord; - -implementation - -{$R *.dfm} -{$R icons.res} - -procedure TExportForm.FormCreate(Sender: TObject); -begin - StartExport := False; - ExportFormDestroy := False; - // Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè - ExportFormHandle := Handle; - SetWindowLong(Handle, GWL_HWNDPARENT, 0); - SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); - // Çàãðóæàåì ÿçûê èíòåðôåéñà - LoadLanguageStrings; -end; - -procedure TExportForm.FormShow(Sender: TObject); -var - ListItem: TListItem; - hContact: Cardinal; - ContactProto, ContactID, ContactName: AnsiString; - Count: Integer; -begin - IMExportWizard.ActivePage := Page1; - StartExport := False; - // Ïîëó÷àåì ñïèñîê êîíòàêòîâ - hContact := db_find_first(); - ContactList.Columns[0].MaxWidth := 190; - ContactList.Columns[1].MaxWidth := 90; - ContactList.Columns[2].MaxWidth := 140; - ContactList.Items.BeginUpdate; - Count := 0; - while hContact <> 0 do - begin - ContactProto := GetContactProto(hContact); - ContactID := GetContactID(hContact, ContactProto); - ContactName := GetContactDisplayName(hContact, '', True); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - if ContactName = '' then - ContactName := 'NoContactName'; - if ContactID = '' then - ContactID := 'NoContactID'; - SetLength(ExportContactRecords, Count + 1); - ExportContactRecords[Count].hContact := hContact; - ExportContactRecords[Count].ContactID := ContactID; - ExportContactRecords[Count].ContactName := ContactName; - ExportContactRecords[Count].ProtoName := ContactProto; - ExportContactRecords[Count].Selected := False; - Inc(Count); - ListItem := ContactList.Items.Add; - ListItem.Caption := ContactName; - ListItem.SubItems.Add(ContactProto); - ListItem.SubItems.Add(ContactID); - {if StrContactProtoToInt(ContactProto) = 15 then // 15 - Unknown Proto - ListItem.Checked := False - else - ListItem.Checked := True;} - hContact := db_find_next(hContact); - end; - ContactList.Items.EndUpdate; -end; - -procedure TExportForm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - ExportFormDestroy := True; - Action := caFree; -end; - -procedure TExportForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); -begin - CanClose := CheckStopExportAndExit; -end; - -procedure TExportForm.IMExportWizardCancelButtonClick(Sender: TObject); -begin - Close; -end; - -procedure TExportForm.IMExportWizardFinishButtonClick(Sender: TObject); -begin - if IMExportWizard.ActivePage = Page4 then - begin - if CBSyncRequest.Checked then - OnSendMessageToAllComponent('002'); - Close; - end; -end; - -procedure TExportForm.Page3Page(Sender: TObject); -begin - StartExport := True; - Page3.EnabledButtons := [bkCancel]; - if not IMExportThread.Terminated then - begin - IMExportThread.Terminate; - while not (IMExportThread.Terminated) do - Sleep(1); - end; - IMExportThread.Execute(Self); -end; - -procedure TExportForm.IMExportThreadExecute(Sender: TObject; Params: Pointer); -var - I, J, K, ProtoType: Integer; - SelectedCount, BlobSize: Integer; - hDbEvent: Cardinal; - DBEventInfo: TDBEventInfo; - msgA: PAnsiChar; - msgW: PChar; - msgLen, LenW: Cardinal; - Msg_Date: TDateTime; - Msg_RcvrNick, Msg_RcvrAcc, Msg_SenderNick, Msg_SenderAcc, Msg_Text, MD5String: WideString; - Date_Str, MsgStatus: String; - ContactProto, ContactID, ContactName: AnsiString; - MyContactName, MyContactID: AnsiString; -begin - LExportDesc2.Caption := 'Export...'; - // Ïîäñ÷èòûâàåì êîëè÷åñòâî âûäåëåííûõ ýëåìåíòîâ - SelectedCount := 0; - for J := 0 to Length(ExportContactRecords) do - begin - if ExportContactRecords[J].Selected = True then - Inc(SelectedCount); - if IMExportThread.Terminated then // Âûõîä èç ïîòîêà â ñëó÷àå çàêðûòèÿ îêíà - Exit; - end; - LExportDesc.Caption := Format(GetLangStr('TotalSelect'), [IntToStr(SelectedCount), IntToStr(Length(ExportContactRecords))]); - // Íà÷èíàåì ïåðåáîð âñåõ ýëåìåíòîâ - PBTotalExport.Position := 0; - PBTotalExport.Max := SelectedCount; - SelectedCount := 0; - for I := 0 to Length(ExportContactRecords) do - begin - // Åñëè âûäåëåí, òî ýêñïîðòèðóåì åãî èñòîðèþ - if ExportContactRecords[I].Selected = True then - begin - LExportDesc2.Caption := Format(GetLangStr('ContactExport'), [ExportContactRecords[I].ContactName, ExportContactRecords[I].ContactID]); - Inc(SelectedCount); - PBTotalExport.Position := SelectedCount; - if IMExportThread.Terminated then // Âûõîä èç ïîòîêà â ñëó÷àå çàêðûòèÿ îêíà - Exit; - hDbEvent := CallService(MS_DB_EVENT_FINDFIRST, ExportContactRecords[I].hContact, 0); - while hDbEvent <> 0 do - begin - ZeroMemory(@DBEventInfo, SizeOf(DBEventInfo)); - DBEventInfo.cbSize := SizeOf(DBEventInfo); - DBEventInfo.pBlob := nil; - BlobSize := CallService(MS_DB_EVENT_GETBLOBSIZE, hDbEvent, 0); - GetMem(DBEventInfo.pBlob, BlobSize); - DBEventInfo.cbBlob := BlobSize; - if IMExportThread.Terminated then // Âûõîä èç ïîòîêà â ñëó÷àå çàêðûòèÿ îêíà - begin - if ImportLogOpened then - CloseLogFile(5); - Exit; - end; - if (CallService(MS_DB_EVENT_GET, hDbEvent, Integer(@DBEventInfo)) = 0) and (DBEventInfo.eventType = EVENTTYPE_MESSAGE and EVENTTYPE_URL) then - begin - // Ïîëó÷àåì òåêñò ñîîáùåíèÿ - msgA := PAnsiChar(DBEventInfo.pBlob); - msgW := nil; - msgLen := lstrlenA(PAnsiChar(DBEventInfo.pBlob)) + 1; - if msgLen > DBEventInfo.cbBlob then - msgLen := DBEventInfo.cbBlob; - if Boolean(DBEventInfo.flags and DBEF_UTF) then - begin - SetLength(Msg_Text, msgLen); - LenW := Utf8ToWideChar(PChar(Msg_Text), msgLen, msgA, msgLen - 1, CP_ACP); - if Integer(LenW) > 0 then - SetLength(Msg_Text, LenW - 1) - else - Msg_Text := AnsiToWideString(msgA, CP_ACP, msgLen - 1); - end - else - begin - LenW := 0; - if DBEventInfo.cbBlob >= msgLen * SizeOf(Char) then - begin - msgW := PChar(msgA + msgLen); - for K := 0 to ((DBEventInfo.cbBlob - msgLen) div SizeOf(Char)) - 1 do - if msgW[K] = #0 then - begin - LenW := K; - Break; - end; - end; - if (LenW > 0) and (LenW < msgLen) then - SetString(Msg_Text, msgW, LenW) - else - Msg_Text := AnsiToWideString(msgA, CP_ACP, msgLen - 1); - end; - // Òèï èñòîðèè - ContactProto := GetContactProto(ExportContactRecords[I].hContact); - // Äàííûå ñîáåñåäíèêà - ContactID := GetContactID(ExportContactRecords[I].hContact, ContactProto); - ContactName := GetContactDisplayName(ExportContactRecords[I].hContact, '', True); - // Ìîè äàííûå - MyContactName := GetMyContactDisplayName(ContactProto); - MyContactID := GetMyContactID(ContactProto); - // Äîï. ïðîâåðêà ïðîòîêîëà - if ContactProto = MyAccount then - ContactProto := 'ICQ'; - // Òèï èñòîðèè - ProtoType := StrContactProtoToInt(ContactProto); - if ContactID = '' then - ContactID := 'NoContactID'; - if ContactName = '' then - ContactName := 'NoContactName'; - if MyContactID = '' then - MyContactID := 'NoMyContactID'; - if MyContactName = '' then - MyContactName := 'NoMyContactName'; - // Ýêðàíèðîâàíèå, ïåðåêîäèðîâàíèå è ò.ï. - Msg_SenderNick := PrepareString(pWideChar(AnsiToWideString(MyContactName, CP_ACP))); - Msg_SenderAcc := PrepareString(pWideChar(AnsiToWideString(MyContactID, CP_ACP))); - Msg_SenderNick := WideStringToUTF8(Msg_SenderNick); - Msg_SenderAcc := WideStringToUTF8(Msg_SenderAcc); - Msg_RcvrNick := PrepareString(pWideChar(AnsiToWideString(ContactName, CP_ACP))); - Msg_RcvrAcc := PrepareString(pWideChar(AnsiToWideString(ContactID, CP_ACP))); - Msg_RcvrNick := WideStringToUTF8(Msg_RcvrNick); - Msg_RcvrAcc := WideStringToUTF8(Msg_RcvrAcc); - Msg_Text := WideStringToUTF8(PrepareString(pWideChar(Msg_Text))); - MD5String := Msg_RcvrAcc + FormatDateTime('YYYY-MM-DD HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + Msg_Text; - if (DBType = 'oracle') or (DBType = 'oracle-9i') then - Date_Str := FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) - else - Date_Str := FormatDateTime('YYYY-MM-DD HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)); - if MatchStrings(LowerCase(ContactProto), 'skype*') then - begin - // Îïðåäåëÿåì íàïðàâëåíèå îòïðàâêè (ìû îòïðàâèëè èëè íàì ïðèñëàëè) - if (DBEventInfo.flags and DBEF_SENT) = 0 then - MsgStatus := '0' // Âõîäÿùåå - else - MsgStatus := '1'; // Èñõîäÿùåå - // Ëîã îòëàäêè - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnEventAdded: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto + ' | My Contact ID: ' + MyContactID + ' | My Contact Name: ' + MyContactName + ' | Contact Proto = ' + ContactProto + ' | MsgStatus = ' + MsgStatus + ' | DateTime = ' + FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + ' | Message = ' + Msg_Text, 2); - if (MatchStrings(DBType, 'oracle*')) then // Åñëè Oracle, òî ïèøåì SQL-ëîã â ôîðìàòå CHAT_MSG_LOG_ORACLE - WriteInLog(ProfilePath, Format(CHAT_MSG_LOG_ORACLE, [DBUserName, MsgStatus, 'to_date('''+Date_Str+''', ''dd.mm.yyyy hh24:mi:ss'')', Msg_RcvrNick, 'Skype', Msg_RcvrNick+' ('+Msg_RcvrAcc+')', BoolToIntStr(True), BoolToIntStr(False), BoolToIntStr(False), Msg_Text, EncryptMD5(MD5String)]), 5) - else - WriteInLog(ProfilePath, Format(CHAT_MSG_LOG, [DBUserName, MsgStatus, Date_Str, Msg_RcvrNick, 'Skype', Msg_RcvrNick+' ('+Msg_RcvrAcc+')', BoolToIntStr(True), BoolToIntStr(False), BoolToIntStr(False), Msg_Text, EncryptMD5(MD5String)]), 5); - end - else - begin - // Îïðåäåëÿåì íàïðàâëåíèå îòïðàâêè (ìû îòïðàâèëè èëè íàì ïðèñëàëè) - if (DBEventInfo.flags and DBEF_SENT) = 0 then - MsgStatus := '1' // Âõîäÿùåå - else - MsgStatus := '0'; // Èñõîäÿùåå - // Ëîã îòëàäêè - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Ôóíêöèÿ OnEventAdded: ' + 'Contact ID: ' + ContactID + ' | Contact Name: ' + ContactName + ' | Proto: ' + ContactProto + ' | My Contact ID: ' + MyContactID + ' | My Contact Name: ' + MyContactName + ' | Contact Proto = ' + ContactProto + ' | MsgStatus = ' + MsgStatus + ' | DateTime = ' + FormatDateTime('DD.MM.YYYY HH:MM:SS', UnixToLocalTime(DBEventInfo.timestamp)) + ' | Message = ' + Msg_Text, 2); - if (MatchStrings(DBType, 'oracle*')) then // Åñëè Oracle, òî ïèøåì SQL-ëîã â ôîðìàòå MSG_LOG_ORACLE - WriteInLog(ProfilePath, Format(MSG_LOG_ORACLE, [DBUserName, IntToStr(ProtoType), Msg_SenderNick, Msg_SenderAcc, Msg_RcvrNick, Msg_RcvrAcc, MsgStatus, 'to_date('''+Date_Str+''', ''dd.mm.yyyy hh24:mi:ss'')', Msg_Text, EncryptMD5(MD5String)]), 5) - else - WriteInLog(ProfilePath, Format(MSG_LOG, [DBUserName, IntToStr(ProtoType), Msg_SenderNick, Msg_SenderAcc, Msg_RcvrNick, Msg_RcvrAcc, MsgStatus, Date_Str, Msg_Text, EncryptMD5(MD5String)]), 5); - end; - end; - hDbEvent := CallService(MS_DB_EVENT_FINDNEXT, hDbEvent, 0); - end; - end; - if IMExportThread.Terminated then // Âûõîä èç ïîòîêà â ñëó÷àå çàêðûòèÿ îêíà - Exit; - end; - Page3.EnabledButtons := [bkCancel,bkNext]; - StartExport := False; - if ImportLogOpened then - CloseLogFile(5); - LExportDesc2.Caption := GetLangStr('ExportDone'); -end; - -procedure TExportForm.BringFormToFront(Form: TForm); -begin - if Form.WindowState = wsMaximized then - ShowWindow(Form.Handle, SW_SHOWMAXIMIZED) - else - ShowWindow(Form.Handle, SW_SHOWNORMAL); - Form.BringToFront; -end; - -function TExportForm.CheckStopExportAndExit: Boolean; -begin - if StartExport then - begin - case MessageBox(Handle, pWideChar(GetLangStr('ExportAbort')), pWideChar(htdPluginShortName + ' - ' +GetLangStr('ExportAbortCaption')),36) of - 6: - begin - if not IMExportThread.Terminated then - begin - IMExportThread.Terminate; - while not (IMExportThread.Terminated) do - begin - Sleep(1); - Forms.Application.ProcessMessages; - end; - end; - Result := True; - end; - 7: - begin - Result := False; - Exit; - end; - end; - end - else - Result := True; -end; - -procedure TExportForm.ContactListChange(Sender: TObject; Item: TListItem; Change: TItemChange); -begin - if Item.Checked <> ExportContactRecords[Item.Index].Selected then // Þçåð èçìåíèë çíà÷åíèå Item.Checked - begin - ExportContactRecords[Item.Index].Selected := Item.Checked; // Èçìåíÿåì çíà÷åíèå ïåðåìåííîé íà íîâîå çíà÷åíèå - { Çäåñü ìîæíî äåëàòü ÷òî õîòèì....} - end; -end; - -procedure TExportForm.ContactListChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean); -begin - ExportContactRecords[Item.Index].Selected := Item.Checked; // Çàïîìèíàåì çíà÷åíèå Item.Checked, äî òîãî êàê þçåð íà íåå íàæàë - AllowChange := True; // Ðàçðåøàåì þçåðó íàæàòü :) -end; - -procedure TExportForm.CBSelectAllClick(Sender: TObject); -var - I: Integer; -begin - for I := 0 to ContactList.Items.Count-1 do - begin - ContactList.Items[I].Checked := CBSelectAll.Checked; - ExportContactRecords[I].Selected := CBSelectAll.Checked; - end; - //LExportDesc.Caption := IntToStr(Length(ExportContactRecords)) + ' - ' + IntToStr(ContactList.Items.Count); -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure TExportForm.OnLanguageChanged(var Msg: TMessage); -begin - LoadLanguageStrings; -end; - -// Äëÿ ìóëüòèÿçûêîâîé ïîääåðæêè -procedure TExportForm.LoadLanguageStrings; -var - ExportBitmap: TBitmap; -begin - Caption := htdPluginShortName + ' - ' + GetLangStr('ExortFormCaption'); - IMExportWizard.ButtonBack.Caption := '< ' + GetLangStr('ButtonBack'); - IMExportWizard.ButtonNext.Caption := GetLangStr('ButtonNext') + ' >'; - IMExportWizard.ButtonFinish.Caption := GetLangStr('ButtonFinish'); - IMExportWizard.ButtonCancel.Caption := GetLangStr('ButtonCancel'); - IMExportWizard.Pages.Items[0].Title.Text := GetLangStr('IMExportWizardPage0Title'); - IMExportWizard.Pages.Items[0].Subtitle.Text := Format(GetLangStr('IMExportWizardPage0SubTitle'), [htdIMClientName]); - IMExportWizard.Pages.Items[1].Title.Text := GetLangStr('IMExportWizardPage1Title'); - IMExportWizard.Pages.Items[1].Subtitle.Text := GetLangStr('IMExportWizardPage1SubTitle'); - IMExportWizard.Pages.Items[2].Title.Text := GetLangStr('IMExportWizardPage2Title'); - IMExportWizard.Pages.Items[2].Subtitle.Text := GetLangStr('IMExportWizardPage2SubTitle'); - IMExportWizard.Pages.Items[3].Title.Text := GetLangStr('IMExportWizardPage3Title'); - IMExportWizard.Pages.Items[3].Subtitle.Text := GetLangStr('IMExportWizardPage3SubTitle'); - CBSelectAll.Caption := GetLangStr('SelectAll'); - ContactList.Columns[0].Caption := GetLangStr('NickName'); - ContactList.Columns[1].Caption := GetLangStr('Protocol'); - ContactList.Columns[2].Caption := GetLangStr('Number'); - LExportDone.Caption := GetLangStr('ExportDoneDesc'); - CBSyncRequest.Caption := GetLangStr('SendSyncRequest'); - // Ãðóçèì áèòîâûé îáðàçû èç ôàéëà ðåñóðñîâ - if IMExportWizard.ActivePage = Page1 then - begin - ExportBitmap := TBitmap.Create; - try - if DefaultLanguage = 'Russian' then - ExportBitmap.LoadFromResourceName(HInstance, 'Export_Ru') - else - ExportBitmap.LoadFromResourceName(HInstance, 'Export_En'); - Page1.WaterMark.Image.Picture.Assign(ExportBitmap); - finally - ExportBitmap.Free; - end; - end; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/copy_langs.bat b/plugins/!Deprecated/MirandaNGHistoryToDB/copy_langs.bat deleted file mode 100644 index b1487eba92..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/copy_langs.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -if not exist .\..\..\bin10\Release\Plugins\langs ( - mkdir .\..\..\bin10\Release\Plugins\langs -) - -if not exist .\..\..\bin10\Release64\Plugins\langs ( - mkdir .\..\..\bin10\Release64\Plugins\langs -) - -copy /Y langs\Russian.xml .\..\..\bin10\Release\Plugins\langs -copy /Y langs\English.xml .\..\..\bin10\Release\Plugins\langs -copy /Y langs\Russian.xml .\..\..\bin10\Release64\Plugins\langs -copy /Y langs\English.xml .\..\..\bin10\Release64\Plugins\langs diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/icons.res b/plugins/!Deprecated/MirandaNGHistoryToDB/icons.res deleted file mode 100644 index 88c819c734..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/icons.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/jedi.inc b/plugins/!Deprecated/MirandaNGHistoryToDB/jedi.inc deleted file mode 100644 index c31a08c04a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/jedi.inc +++ /dev/null @@ -1,1430 +0,0 @@ -{$IFNDEF JEDI_INC} -{$DEFINE JEDI_INC} - -{**************************************************************************************************} -{ } -{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");} -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } -{ ANY KIND, either express or implied. See the License for the specific language governing rights } -{ and limitations under the License. } -{ } -{ The Original Code is: jedi.inc. } -{ The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org } -{ } -{ Alternatively, the contents of this file may be used under the terms of the GNU Lesser General } -{ Public License (the "LGPL License"), in which case the provisions of the LGPL License are } -{ applicable instead of those above. If you wish to allow use of your version of this file only } -{ under the terms of the LGPL License and not to allow others to use your version of this file } -{ under the MPL, indicate your decision by deleting the provisions above and replace them with } -{ the notice and other provisions required by the LGPL License. If you do not delete the } -{ provisions above, a recipient may use your version of this file under either the MPL or the } -{ LGPL License. } -{ } -{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } -{ } -{**************************************************************************************************} -{ } -{ This file defines various generic compiler directives used in different libraries, e.g. in the } -{ JEDI Code Library (JCL) and JEDI Visual Component Library Library (JVCL). The directives in } -{ this file are of generic nature and consist mostly of mappings from the VERXXX directives } -{ defined by Delphi, C++Builder and FPC to friendly names such as DELPHI5 and } -{ SUPPORTS_WIDESTRING. These friendly names are subsequently used in the libraries to test for } -{ compiler versions and/or whether the compiler supports certain features (such as widestrings or } -{ 64 bit integers. The libraries provide an additional, library specific, include file. For the } -{ JCL e.g. this is jcl.inc. These files should be included in source files instead of this file } -{ (which is pulled in automatically). } -{ } -{**************************************************************************************************} -{ } -{ Last modified: $Date:: 2012-09-04 16:01:38 +0200 (út, 04 9 2012) $ } -{ Revision: $Rev:: 161 $ } -{ Author: $Author:: outchy $ } -{ } -{**************************************************************************************************} - -(* - -- Development environment directives - - This file defines two directives to indicate which development environment the - library is being compiled with. Currently this can either be Delphi, Kylix, - C++Builder or FPC. - - Directive Description - ------------------------------------------------------------------------------ - DELPHI Defined if compiled with Delphi - KYLIX Defined if compiled with Kylix - DELPHICOMPILER Defined if compiled with Delphi or Kylix/Delphi - BCB Defined if compiled with C++Builder - CPPBUILDER Defined if compiled with C++Builder (alias for BCB) - BCBCOMPILER Defined if compiled with C++Builder or Kylix/C++ - DELPHILANGUAGE Defined if compiled with Delphi, Kylix or C++Builder - BORLAND Defined if compiled with Delphi, Kylix or C++Builder - FPC Defined if compiled with FPC - -- Platform Directives - - Platform directives are not all explicitly defined in this file, some are - defined by the compiler itself. They are listed here only for completeness. - - Directive Description - ------------------------------------------------------------------------------ - WIN32 Defined when target platform is 32 bit Windows - WIN64 Defined when target platform is 64 bit Windows - MSWINDOWS Defined when target platform is 32 bit Windows - LINUX Defined when target platform is Linux - UNIX Defined when target platform is Unix-like (including Linux) - CLR Defined when target platform is .NET - -- Architecture directives. These are auto-defined by FPC - CPU32 and CPU64 are mostly for generic pointer size dependant differences rather - than for a specific architecture. - - CPU386 Defined when target platform is native x86 (win32) - CPUx86_64 Defined when target platform is native x86_64 (win64) - CPU32 Defined when target is 32-bit - CPU64 Defined when target is 64-bit - CPUASM Defined when target assembler is available - -- Visual library Directives - - The following directives indicate for a visual library. In a Delphi/BCB - (Win32) application you need to define the VisualCLX symbol in the project - options, if you want to use the VisualCLX library. Alternatively you can use - the IDE expert, which is distributed with the JCL to do this automatically. - - Directive Description - ------------------------------------------------------------------------------ - VCL Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined - VisualCLX Defined for Kylix; needs to be defined for Delphi/BCB to - use JCL with VisualCLX applications. - - -- Other cross-platform related defines - - These symbols are intended to help in writing portable code. - - Directive Description - ------------------------------------------------------------------------------ - PUREPASCAL Code is machine-independent (as opposed to assembler code) - Win32API Code is specific for the Win32 API; - use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs - - -- Delphi Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Delphi (ie DELPHI is defined). - - Directive Description - ------------------------------------------------------------------------------ - DELPHI1 Defined when compiling with Delphi 1 (Codename WASABI/MANGO) - DELPHI2 Defined when compiling with Delphi 2 (Codename POLARIS) - DELPHI3 Defined when compiling with Delphi 3 (Codename IVORY) - DELPHI4 Defined when compiling with Delphi 4 (Codename ALLEGRO) - DELPHI5 Defined when compiling with Delphi 5 (Codename ARGUS) - DELPHI6 Defined when compiling with Delphi 6 (Codename ILLIAD) - DELPHI7 Defined when compiling with Delphi 7 (Codename AURORA) - DELPHI8 Defined when compiling with Delphi 8 (Codename OCTANE) - DELPHI2005 Defined when compiling with Delphi 2005 (Codename DIAMONDBACK) - DELPHI9 Alias for DELPHI2005 - DELPHI10 Defined when compiling with Delphi 2006 (Codename DEXTER) - DELPHI2006 Alias for DELPHI10 - DELPHI11 Defined when compiling with Delphi 2007 for Win32 (Codename SPACELY) - DELPHI2007 Alias for DELPHI11 - DELPHI12 Defined when compiling with Delphi 2009 for Win32 (Codename TIBURON) - DELPHI2009 Alias for DELPHI12 - DELPHI14 Defined when compiling with Delphi 2010 for Win32 (Codename WEAVER) - DELPHI2010 Alias for DELPHI14 - DELPHI15 Defined when compiling with Delphi XE for Win32 (Codename FULCRUM) - DELPHIXE Alias for DELPHI15 - DELPHI16 Defined when compiling with Delphi XE2 for Win32 (Codename PULSAR) - DELPHIXE2 Alias for DELPHI16 - DELPHI17 Defined when compiling with Delphi XE3 for Win32 (Codename WATERDRAGON) - DELPHIXE3 Alias for DELPHI17 - DELPHI1_UP Defined when compiling with Delphi 1 or higher - DELPHI2_UP Defined when compiling with Delphi 2 or higher - DELPHI3_UP Defined when compiling with Delphi 3 or higher - DELPHI4_UP Defined when compiling with Delphi 4 or higher - DELPHI5_UP Defined when compiling with Delphi 5 or higher - DELPHI6_UP Defined when compiling with Delphi 6 or higher - DELPHI7_UP Defined when compiling with Delphi 7 or higher - DELPHI8_UP Defined when compiling with Delphi 8 or higher - DELPHI2005_UP Defined when compiling with Delphi 2005 or higher - DELPHI9_UP Alias for DELPHI2005_UP - DELPHI10_UP Defined when compiling with Delphi 2006 or higher - DELPHI2006_UP Alias for DELPHI10_UP - DELPHI11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHI2007_UP Alias for DELPHI11_UP - DELPHI12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHI2009_UP Alias for DELPHI12_UP - DELPHI14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHI2010_UP Alias for DELPHI14_UP - DELPHI15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHIXE_UP Alias for DELPHI15_UP - DELPHI16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHIXE2_UP Alias for DELPHI16_UP - DELPHI17_UP Defined when compiling with Delphi XE3 for Win32 or higher - DELPHIXE3_UP Alias for DELPHI17_UP - - -- Kylix Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Kylix (ie KYLIX is defined). - - Directive Description - ------------------------------------------------------------------------------ - KYLIX1 Defined when compiling with Kylix 1 - KYLIX2 Defined when compiling with Kylix 2 - KYLIX3 Defined when compiling with Kylix 3 (Codename CORTEZ) - KYLIX1_UP Defined when compiling with Kylix 1 or higher - KYLIX2_UP Defined when compiling with Kylix 2 or higher - KYLIX3_UP Defined when compiling with Kylix 3 or higher - - -- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode) - - Directive Description - ------------------------------------------------------------------------------ - DELPHICOMPILER1 Defined when compiling with Delphi 1 - DELPHICOMPILER2 Defined when compiling with Delphi 2 - DELPHICOMPILER3 Defined when compiling with Delphi 3 - DELPHICOMPILER4 Defined when compiling with Delphi 4 - DELPHICOMPILER5 Defined when compiling with Delphi 5 - DELPHICOMPILER6 Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 - DELPHICOMPILER7 Defined when compiling with Delphi 7 - DELPHICOMPILER8 Defined when compiling with Delphi 8 - DELPHICOMPILER9 Defined when compiling with Delphi 2005 - DELPHICOMPILER10 Defined when compiling with Delphi Personality of BDS 4.0 - DELPHICOMPILER11 Defined when compiling with Delphi 2007 for Win32 - DELPHICOMPILER12 Defined when compiling with Delphi Personality of BDS 6.0 - DELPHICOMPILER14 Defined when compiling with Delphi Personality of BDS 7.0 - DELPHICOMPILER15 Defined when compiling with Delphi Personality of BDS 8.0 - DELPHICOMPILER16 Defined when compiling with Delphi Personality of BDS 9.0 - DELPHICOMPILER17 Defined when compiling with Delphi Personality of BDS 10.0 - DELPHICOMPILER1_UP Defined when compiling with Delphi 1 or higher - DELPHICOMPILER2_UP Defined when compiling with Delphi 2 or higher - DELPHICOMPILER3_UP Defined when compiling with Delphi 3 or higher - DELPHICOMPILER4_UP Defined when compiling with Delphi 4 or higher - DELPHICOMPILER5_UP Defined when compiling with Delphi 5 or higher - DELPHICOMPILER6_UP Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher - DELPHICOMPILER7_UP Defined when compiling with Delphi 7 or higher - DELPHICOMPILER8_UP Defined when compiling with Delphi 8 or higher - DELPHICOMPILER9_UP Defined when compiling with Delphi 2005 - DELPHICOMPILER10_UP Defined when compiling with Delphi 2006 or higher - DELPHICOMPILER11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHICOMPILER12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHICOMPILER14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHICOMPILER15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHICOMPILER16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHICOMPILER17_UP Defined when compiling with Delphi XE3 for Win32 or higher - - -- C++Builder Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is C++Builder (ie BCB is defined). - - Directive Description - ------------------------------------------------------------------------------ - BCB1 Defined when compiling with C++Builder 1 - BCB3 Defined when compiling with C++Builder 3 - BCB4 Defined when compiling with C++Builder 4 - BCB5 Defined when compiling with C++Builder 5 (Codename RAMPAGE) - BCB6 Defined when compiling with C++Builder 6 (Codename RIPTIDE) - BCB10 Defined when compiling with C++Builder Personality of BDS 4.0 (also known as C++Builder 2006) (Codename DEXTER) - BCB11 Defined when compiling with C++Builder Personality of RAD Studio 2007 (also known as C++Builder 2007) (Codename COGSWELL) - BCB12 Defined when compiling with C++Builder Personality of RAD Studio 2009 (also known as C++Builder 2009) (Codename TIBURON) - BCB14 Defined when compiling with C++Builder Personality of RAD Studio 2010 (also known as C++Builder 2010) (Codename WEAVER) - BCB15 Defined when compiling with C++Builder Personality of RAD Studio XE (also known as C++Builder XE) (Codename FULCRUM) - BCB16 Defined when compiling with C++Builder Personality of RAD Studio XE2 (also known as C++Builder XE2) (Codename PULSAR) - BCB17 Defined when compiling with C++Builder Personality of RAD Studio XE3 (also known as C++Builder XE3) (Codename WATERDRAGON) - BCB1_UP Defined when compiling with C++Builder 1 or higher - BCB3_UP Defined when compiling with C++Builder 3 or higher - BCB4_UP Defined when compiling with C++Builder 4 or higher - BCB5_UP Defined when compiling with C++Builder 5 or higher - BCB6_UP Defined when compiling with C++Builder 6 or higher - BCB10_UP Defined when compiling with C++Builder Personality of BDS 4.0 or higher - BCB11_UP Defined when compiling with C++Builder Personality of RAD Studio 2007 or higher - BCB12_UP Defined when compiling with C++Builder Personality of RAD Studio 2009 or higher - BCB14_UP Defined when compiling with C++Builder Personality of RAD Studio 2010 or higher - BCB15_UP Defined when compiling with C++Builder Personality of RAD Studio XE or higher - BCB16_UP Defined when compiling with C++Builder Personality of RAD Studio XE2 or higher - BCB17_UP Defined when compiling with C++Builder Personality of RAD Studio XE3 or higher - - -- RAD Studio / Borland Developer Studio Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated IDE. These directives are only defined if - the IDE is Borland Developer Studio Version 2 or above. - - Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006, - but those provide only different labels for identical content. - - Directive Description - ------------------------------------------------------------------------------ - BDS Defined when compiling with BDS version of dcc32.exe (Codename SIDEWINDER) - BDS2 Defined when compiling with BDS 2.0 (Delphi 8) (Codename OCTANE) - BDS3 Defined when compiling with BDS 3.0 (Delphi 2005) (Codename DIAMONDBACK) - BDS4 Defined when compiling with BDS 4.0 (Borland Developer Studio 2006) (Codename DEXTER) - BDS5 Defined when compiling with BDS 5.0 (CodeGear RAD Studio 2007) (Codename HIGHLANDER) - BDS6 Defined when compiling with BDS 6.0 (CodeGear RAD Studio 2009) (Codename TIBURON) - BDS7 Defined when compiling with BDS 7.0 (Embarcadero RAD Studio 2010) (Codename WEAVER) - BDS8 Defined when compiling with BDS 8.0 (Embarcadero RAD Studio XE) (Codename FULCRUM) - BDS9 Defined when compiling with BDS 9.0 (Embarcadero RAD Studio XE2) (Codename PULSAR) - BDS10 Defined when compiling with BDS 10.0 (Embarcadero RAD Studio XE3) (Codename WATERDRAGON) - BDS2_UP Defined when compiling with BDS 2.0 or higher - BDS3_UP Defined when compiling with BDS 3.0 or higher - BDS4_UP Defined when compiling with BDS 4.0 or higher - BDS5_UP Defined when compiling with BDS 5.0 or higher - BDS6_UP Defined when compiling with BDS 6.0 or higher - BDS7_UP Defined when compiling with BDS 7.0 or higher - BDS8_UP Defined when compiling with BDS 8.0 or higher - BDS9_UP Defined when compiling with BDS 9.0 or higher - BDS10_UP Defined when compiling with BDS 10.0 or higher - -- Compiler Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X - directives, these directives are indepedent of the development environment. - That is, they are defined regardless of whether compilation takes place using - Delphi or C++Builder. - - Directive Description - ------------------------------------------------------------------------------ - COMPILER1 Defined when compiling with Delphi 1 - COMPILER2 Defined when compiling with Delphi 2 or C++Builder 1 - COMPILER3 Defined when compiling with Delphi 3 - COMPILER35 Defined when compiling with C++Builder 3 - COMPILER4 Defined when compiling with Delphi 4 or C++Builder 4 - COMPILER5 Defined when compiling with Delphi 5 or C++Builder 5 - COMPILER6 Defined when compiling with Delphi 6 or C++Builder 6 - COMPILER7 Defined when compiling with Delphi 7 - COMPILER8 Defined when compiling with Delphi 8 - COMPILER9 Defined when compiling with Delphi 9 - COMPILER10 Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 - COMPILER11 Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 - COMPILER12 Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 - COMPILER14 Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 - COMPILER15 Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 - COMPILER16 Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 - COMPILER17 Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 - COMPILER1_UP Defined when compiling with Delphi 1 or higher - COMPILER2_UP Defined when compiling with Delphi 2 or C++Builder 1 or higher - COMPILER3_UP Defined when compiling with Delphi 3 or higher - COMPILER35_UP Defined when compiling with C++Builder 3 or higher - COMPILER4_UP Defined when compiling with Delphi 4 or C++Builder 4 or higher - COMPILER5_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - COMPILER6_UP Defined when compiling with Delphi 6 or C++Builder 6 or higher - COMPILER7_UP Defined when compiling with Delphi 7 - COMPILER8_UP Defined when compiling with Delphi 8 - COMPILER9_UP Defined when compiling with Delphi Personalities of BDS 3.0 - COMPILER10_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - COMPILER11_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - COMPILER12_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - COMPILER14_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - COMPILER15_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - COMPILER16_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - COMPILER17_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- RTL Versions - - Use e.g. following to determine the exact RTL version since version 14.0: - {$IFDEF CONDITIONALEXPRESSIONS} - {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)} - // code for Delphi 6.02 or higher, Kylix 2 or higher, C++Builder 6 or higher - ... - {$IFEND} - {$ENDIF} - - Directive Description - ------------------------------------------------------------------------------ - RTL80_UP Defined when compiling with Delphi 1 or higher - RTL90_UP Defined when compiling with Delphi 2 or higher - RTL93_UP Defined when compiling with C++Builder 1 or higher - RTL100_UP Defined when compiling with Delphi 3 or higher - RTL110_UP Defined when compiling with C++Builder 3 or higher - RTL120_UP Defined when compiling with Delphi 4 or higher - RTL125_UP Defined when compiling with C++Builder 4 or higher - RTL130_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - RTL140_UP Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++Builder 6 or higher - RTL150_UP Defined when compiling with Delphi 7 or higher - RTL160_UP Defined when compiling with Delphi 8 or higher - RTL170_UP Defined when compiling with Delphi Personalities of BDS 3.0 or higher - RTL180_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - RTL185_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - RTL190_UP Defined when compiling with Delphi.NET of BDS 5.0 or higher - RTL200_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - RTL210_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - RTL220_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - RTL230_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - RTL240_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- CLR Versions - - Directive Description - ------------------------------------------------------------------------------ - CLR Defined when compiling for .NET - CLR10 Defined when compiling for .NET 1.0 (may be overriden by FORCE_CLR10) - CLR10_UP Defined when compiling for .NET 1.0 or higher - CLR11 Defined when compiling for .NET 1.1 (may be overriden by FORCE_CLR11) - CLR11_UP Defined when compiling for .NET 1.1 or higher - CLR20 Defined when compiling for .NET 2.0 (may be overriden by FORCE_CLR20) - CLR20_UP Defined when compiling for .NET 2.0 or higher - - -- Feature Directives - - The features directives are used to test if the compiler supports specific - features, such as method overloading, and adjust the sources accordingly. Use - of these directives is preferred over the use of the DELPHI and COMPILER - directives. - - Directive Description - ------------------------------------------------------------------------------ - SUPPORTS_CONSTPARAMS Compiler supports const parameters (D1+) - SUPPORTS_SINGLE Compiler supports the Single type (D1+) - SUPPORTS_DOUBLE Compiler supports the Double type (D1+) - SUPPORTS_EXTENDED Compiler supports the Extended type (D1+) - SUPPORTS_CURRENCY Compiler supports the Currency type (D2+) - SUPPORTS_THREADVAR Compiler supports threadvar declarations (D2+) - SUPPORTS_OUTPARAMS Compiler supports out parameters (D3+) - SUPPORTS_VARIANT Compiler supports variant (D2+) - SUPPORTS_WIDECHAR Compiler supports the WideChar type (D2+) - SUPPORTS_WIDESTRING Compiler supports the WideString type (D3+/BCB3+) - SUPPORTS_INTERFACE Compiler supports interfaces (D3+/BCB3+) - SUPPORTS_DISPINTERFACE Compiler supports dispatch interfaces (D3+/BCB3+) - SUPPORTS_DISPID Compiler supports dispatch ids (D3+/BCB3+/FPC) - SUPPORTS_EXTSYM Compiler supports the $EXTERNALSYM directive (D4+/BCB3+) - SUPPORTS_NODEFINE Compiler supports the $NODEFINE directive (D4+/BCB3+) - SUPPORTS_LONGWORD Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+) - SUPPORTS_INT64 Compiler supports the Int64 type (D4+/BCB4+) - SUPPORTS_UINT64 Compiler supports the UInt64 type (D XE+ ?) - SUPPORTS_DYNAMICARRAYS Compiler supports dynamic arrays (D4+/BCB4+) - SUPPORTS_DEFAULTPARAMS Compiler supports default parameters (D4+/BCB4+) - SUPPORTS_OVERLOAD Compiler supports overloading (D4+/BCB4+) - SUPPORTS_IMPLEMENTS Compiler supports implements (D4+/BCB4+) - SUPPORTS_DEPRECATED Compiler supports the deprecated directive (D6+/BCB6+) - SUPPORTS_PLATFORM Compiler supports the platform directive (D6+/BCB6+) - SUPPORTS_LIBRARY Compiler supports the library directive (D6+/BCB6+/FPC) - SUPPORTS_LOCAL Compiler supports the local directive (D6+/BCB6+) - SUPPORTS_SETPEFLAGS Compiler supports the SetPEFlags directive (D6+/BCB6+) - SUPPORTS_EXPERIMENTAL_WARNINGS Compiler supports the WARN SYMBOL_EXPERIMENTAL and WARN UNIT_EXPERIMENTAL directives (D6+/BCB6+) - SUPPORTS_INLINE Compiler supports the inline directive (D9+/FPC) - SUPPORTS_FOR_IN Compiler supports for in loops (D9+) - SUPPORTS_NESTED_CONSTANTS Compiler supports nested constants (D9+) - SUPPORTS_NESTED_TYPES Compiler supports nested types (D9+) - SUPPORTS_REGION Compiler supports the REGION and ENDREGION directives (D9+) - SUPPORTS_ENHANCED_RECORDS Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+) - SUPPORTS_CLASS_FIELDS Compiler supports class fields (D9.NET, D10+) - SUPPORTS_CLASS_HELPERS Compiler supports class helpers (D9.NET, D10+) - SUPPORTS_CLASS_OPERATORS Compiler supports class operators (D9.NET, D10+) - SUPPORTS_CLASS_CTORDTORS Compiler supports class contructors/destructors (D14+) - SUPPORTS_STRICT Compiler supports strict keyword (D9.NET, D10+) - SUPPORTS_STATIC Compiler supports static keyword (D9.NET, D10+) - SUPPORTS_FINAL Compiler supports final keyword (D9.NET, D10+) - SUPPORTS_METHODINFO Compiler supports the METHODINFO directives (D10+) - SUPPORTS_GENERICS Compiler supports generic implementations (D11.NET, D12+) - SUPPORTS_DEPRECATED_DETAILS Compiler supports additional text for the deprecated directive (D11.NET, D12+) - ACCEPT_DEPRECATED Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC) - ACCEPT_PLATFORM Compiler supports or ignores the platform directive (D6+/BCB6+/FPC) - ACCEPT_LIBRARY Compiler supports or ignores the library directive (D6+/BCB6+) - SUPPORTS_CUSTOMVARIANTS Compiler supports custom variants (D6+/BCB6+) - SUPPORTS_VARARGS Compiler supports varargs (D6+/BCB6+) - SUPPORTS_ENUMVALUE Compiler supports assigning ordinalities to values of enums (D6+/BCB6+) - SUPPORTS_DEPRECATED_WARNINGS Compiler supports deprecated warnings (D6+/BCB6+) - SUPPORTS_LIBRARY_WARNINGS Compiler supports library warnings (D6+/BCB6+) - SUPPORTS_PLATFORM_WARNINGS Compiler supports platform warnings (D6+/BCB6+) - SUPPORTS_UNSAFE_WARNINGS Compiler supports unsafe warnings (D7) - SUPPORTS_WEAKPACKAGEUNIT Compiler supports the WEAKPACKAGEUNIT directive - SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive - SUPPORTS_PACKAGES Compiler supports Packages - HAS_UNIT_LIBC Unit Libc exists (Kylix, FPC on Linux/x86) - HAS_UNIT_RTLCONSTS Unit RTLConsts exists (D6+/BCB6+/FPC) - HAS_UNIT_TYPES Unit Types exists (D6+/BCB6+/FPC) - HAS_UNIT_VARIANTS Unit Variants exists (D6+/BCB6+/FPC) - HAS_UNIT_STRUTILS Unit StrUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_DATEUTILS Unit DateUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_CONTNRS Unit contnrs exists (D6+/BCB6+/FPC) - HAS_UNIT_HTTPPROD Unit HTTPProd exists (D9+) - HAS_UNIT_GIFIMG Unit GifImg exists (D11+) - HAS_UNIT_ANSISTRINGS Unit AnsiStrings exists (D12+) - HAS_UNIT_PNGIMAGE Unit PngImage exists (D12+) - HAS_UNIT_CHARACTER Unit Character exists (D12+) - XPLATFORM_RTL The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC) - SUPPORTS_UNICODE string type is aliased to an unicode string (WideString or UnicodeString) (DX.NET, D12+) - SUPPORTS_UNICODE_STRING Compiler supports UnicodeString (D12+) - SUPPORTS_INT_ALIASES Types Int8, Int16, Int32, UInt8, UInt16 and UInt32 are defined in the unit System (D12+) - HAS_UNIT_RTTI Unit RTTI is available (D14+) - SUPPORTS_CAST_INTERFACE_TO_OBJ The compiler supports casts from interfaces to objects (D14+) - SUPPORTS_DELAYED_LOADING The compiler generates stubs for delaying imported function loads (D14+) - HAS_UNIT_REGULAREXPRESSIONSAPI Unit RegularExpressionsAPI is available (D15+) - HAS_UNIT_SYSTEM_UITYPES Unit System.UITypes is available (D16+) - HAS_UNIT_SYSTEM_ACTIONS Unit System.Actions is available (D17+) - - -- Compiler Settings - - The compiler settings directives indicate whether a specific compiler setting - is in effect. This facilitates changing compiler settings locally in a more - compact and readible manner. - - Directive Description - ------------------------------------------------------------------------------ - ALIGN_ON Compiling in the A+ state (no alignment) - BOOLEVAL_ON Compiling in the B+ state (complete boolean evaluation) - ASSERTIONS_ON Compiling in the C+ state (assertions on) - DEBUGINFO_ON Compiling in the D+ state (debug info generation on) - IMPORTEDDATA_ON Compiling in the G+ state (creation of imported data references) - LONGSTRINGS_ON Compiling in the H+ state (string defined as AnsiString) - IOCHECKS_ON Compiling in the I+ state (I/O checking enabled) - WRITEABLECONST_ON Compiling in the J+ state (typed constants can be modified) - LOCALSYMBOLS Compiling in the L+ state (local symbol generation) - LOCALSYMBOLS_ON Alias of LOCALSYMBOLS - TYPEINFO_ON Compiling in the M+ state (RTTI generation on) - OPTIMIZATION_ON Compiling in the O+ state (code optimization on) - OPENSTRINGS_ON Compiling in the P+ state (variable string parameters are openstrings) - OVERFLOWCHECKS_ON Compiling in the Q+ state (overflow checing on) - RANGECHECKS_ON Compiling in the R+ state (range checking on) - TYPEDADDRESS_ON Compiling in the T+ state (pointers obtained using the @ operator are typed) - SAFEDIVIDE_ON Compiling in the U+ state (save FDIV instruction through RTL emulation) - VARSTRINGCHECKS_ON Compiling in the V+ state (type checking of shortstrings) - STACKFRAMES_ON Compiling in the W+ state (generation of stack frames) - EXTENDEDSYNTAX_ON Compiling in the X+ state (Delphi extended syntax enabled) -*) - -{$DEFINE BORLAND} - -{ Set FreePascal to Delphi mode } -{$IFDEF FPC} - {$MODE DELPHI} - {$ASMMODE Intel} - {$UNDEF BORLAND} - {$DEFINE CPUASM} - // FPC defines CPU32, CPU64 and Unix automatically -{$ENDIF} - -{$IFDEF BORLAND} - {$IFDEF LINUX} - {$DEFINE KYLIX} - {$ENDIF LINUX} - {$IFNDEF CLR} - {$IFNDEF CPUX86} - {$IFNDEF CPUX64} - {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default - {$DEFINE CPU32} // Assume Borland compilers are 32-bit (rather than 64-bit) - {$DEFINE CPUASM} - {$ELSE ~CPUX64} - {$DEFINE CPU64} - {$DEFINE CPUASM} - {$DEFINE DELPHI64_TEMPORARY} - {$ENDIF ~CPUX64} - {$ELSE ~CPUX86} - {$DEFINE CPU386} - {$DEFINE CPU32} - {$DEFINE CPUASM} - {$ENDIF ~CPUX86} - {$ENDIF ~CLR} -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ VERXXX to COMPILERX, DELPHIX and BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BORLAND} - {$IFDEF KYLIX} - {$I kylix.inc} // FPC incompatible stuff - {$ELSE ~KYLIX} - - {$DEFINE UNKNOWN_COMPILER_VERSION} - - {$IFDEF VER80} - {$DEFINE COMPILER1} - {$DEFINE DELPHI1} - {$DEFINE DELPHICOMPILER1} - {$DEFINE RTL80_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER90} - {$DEFINE COMPILER2} - {$DEFINE DELPHI2} - {$DEFINE DELPHICOMPILER2} - {$DEFINE RTL90_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER93} - {$DEFINE COMPILER2} - {$DEFINE BCB1} - {$DEFINE BCB} - {$DEFINE RTL93_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER100} - {$DEFINE COMPILER3} - {$DEFINE DELPHI3} - {$DEFINE DELPHICOMPILER3} - {$DEFINE RTL100_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER110} - {$DEFINE COMPILER35} - {$DEFINE BCB3} - {$DEFINE BCB} - {$DEFINE RTL110_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER120} - {$DEFINE COMPILER4} - {$DEFINE DELPHI4} - {$DEFINE DELPHICOMPILER4} - {$DEFINE RTL120_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER125} - {$DEFINE COMPILER4} - {$DEFINE BCB4} - {$DEFINE BCB} - {$DEFINE RTL125_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER130} - {$DEFINE COMPILER5} - {$IFDEF BCB} - {$DEFINE BCB5} - {$ELSE} - {$DEFINE DELPHI5} - {$DEFINE DELPHICOMPILER5} - {$ENDIF} - {$DEFINE RTL130_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER140} - {$DEFINE COMPILER6} - {$IFDEF BCB} - {$DEFINE BCB6} - {$ELSE} - {$DEFINE DELPHI6} - {$DEFINE DELPHICOMPILER6} - {$ENDIF} - {$DEFINE RTL140_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER150} - {$DEFINE COMPILER7} - {$DEFINE DELPHI7} - {$DEFINE DELPHICOMPILER7} - {$DEFINE RTL150_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER160} - {$DEFINE BDS2} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR10} - {$ENDIF CLR} - {$DEFINE COMPILER8} - {$DEFINE DELPHI8} - {$DEFINE DELPHICOMPILER8} - {$DEFINE RTL160_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER170} - {$DEFINE BDS3} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$DEFINE COMPILER9} - {$DEFINE DELPHI9} - {$DEFINE DELPHI2005} // synonym to DELPHI9 - {$DEFINE DELPHICOMPILER9} - {$DEFINE RTL170_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER180} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$IFDEF VER185} - {$DEFINE BDS5} - {$DEFINE COMPILER11} - {$IFDEF BCB} - {$DEFINE BCB11} - {$ELSE} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$ENDIF} - {$DEFINE RTL185_UP} - {$ELSE ~~VER185} - {$DEFINE BDS4} - {$DEFINE COMPILER10} - {$IFDEF BCB} - {$DEFINE BCB10} - {$ELSE} - {$DEFINE DELPHI10} - {$DEFINE DELPHI2006} // synonym to DELPHI10 - {$DEFINE DELPHICOMPILER10} - {$ENDIF} - {$DEFINE RTL180_UP} - {$ENDIF ~VER185} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER190} // Delphi 2007 for .NET - {$DEFINE BDS} - {$DEFINE BDS5} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER11} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$DEFINE RTL190_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER190} - - {$IFDEF VER200} // RAD Studio 2009 - {$DEFINE BDS} - {$DEFINE BDS6} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER12} - {$IFDEF BCB} - {$DEFINE BCB12} - {$ELSE} - {$DEFINE DELPHI12} - {$DEFINE DELPHI2009} // synonym to DELPHI12 - {$DEFINE DELPHICOMPILER12} - {$ENDIF BCB} - {$IFDEF CLR} - {$DEFINE RTL190_UP} - {$ELSE} - {$DEFINE RTL200_UP} - {$ENDIF} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER200} - - {$IFDEF VER210} // RAD Studio 2010 - {$DEFINE BDS} - {$DEFINE BDS7} - {$DEFINE COMPILER14} - {$IFDEF BCB} - {$DEFINE BCB14} - {$ELSE} - {$DEFINE DELPHI14} - {$DEFINE DELPHI2010} // synonym to DELPHI14 - {$DEFINE DELPHICOMPILER14} - {$ENDIF BCB} - {$DEFINE RTL210_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER210} - - {$IFDEF VER220} // RAD Studio XE - {$DEFINE BDS} - {$DEFINE BDS8} - {$DEFINE COMPILER15} - {$IFDEF BCB} - {$DEFINE BCB15} - {$ELSE} - {$DEFINE DELPHI15} - {$DEFINE DELPHIXE} // synonym to DELPHI15 - {$DEFINE DELPHICOMPILER15} - {$ENDIF BCB} - {$DEFINE RTL220_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER220} - - {$IFDEF VER230} // RAD Studio XE2 - {$DEFINE BDS} - {$DEFINE BDS9} - {$DEFINE COMPILER16} - {$IFDEF BCB} - {$DEFINE BCB16} - {$ELSE} - {$DEFINE DELPHI16} - {$DEFINE DELPHIXE2} // synonym to DELPHI16 - {$DEFINE DELPHICOMPILER16} - {$ENDIF BCB} - {$DEFINE RTL230_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER230} - - {$IFDEF VER240} // RAD Studio XE3 - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER240} - - {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version (always use latest version) - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$ENDIF ~KYLIX} - - {$IFDEF BCB} - {$DEFINE CPPBUILDER} - {$DEFINE BCBCOMPILER} - {$ELSE ~BCB} - {$DEFINE DELPHI} - {$DEFINE DELPHICOMPILER} - {$ENDIF ~BCB} - -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17} {$DEFINE DELPHI17_UP} {$ENDIF} -{$IFDEF DELPHI16} {$DEFINE DELPHI16_UP} {$ENDIF} -{$IFDEF DELPHI15} {$DEFINE DELPHI15_UP} {$ENDIF} -{$IFDEF DELPHI14} {$DEFINE DELPHI14_UP} {$ENDIF} -{$IFDEF DELPHI12} {$DEFINE DELPHI12_UP} {$ENDIF} -{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF} -{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF} -{$IFDEF DELPHI9} {$DEFINE DELPHI9_UP} {$ENDIF} -{$IFDEF DELPHI8} {$DEFINE DELPHI8_UP} {$ENDIF} -{$IFDEF DELPHI7} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI6} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI5} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI4} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI3} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI2} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI1} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17_UP} - {$DEFINE DELPHIXE3_UP} // synonym to DELPHI17_UP - {$DEFINE DELPHI16_UP} -{$ENDIF} - -{$IFDEF DELPHI16_UP} - {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP - {$DEFINE DELPHI15_UP} -{$ENDIF} - -{$IFDEF DELPHI15_UP} - {$DEFINE DELPHIXE_UP} // synonym to DELPHI15_UP - {$DEFINE DELPHI14_UP} -{$ENDIF} - -{$IFDEF DELPHI14_UP} - {$DEFINE DELPHI2010_UP} // synonym to DELPHI14_UP - {$DEFINE DELPHI12_UP} -{$ENDIF} - -{$IFDEF DELPHI12_UP} - {$DEFINE DELPHI2009_UP} // synonym to DELPHI12_UP - {$DEFINE DELPHI11_UP} -{$ENDIF} - -{$IFDEF DELPHI11_UP} - {$DEFINE DELPHI2007_UP} // synonym to DELPHI11_UP - {$DEFINE DELPHI10_UP} -{$ENDIF} - -{$IFDEF DELPHI10_UP} - {$DEFINE DELPHI2006_UP} // synonym to DELPHI10_UP - {$DEFINE DELPHI9_UP} -{$ENDIF} - -{$IFDEF DELPHI9_UP} - {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP - {$DEFINE DELPHI8_UP} -{$ENDIF} - -{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17} {$DEFINE BCB17_UP} {$ENDIF} -{$IFDEF BCB16} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB15} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB14} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB12} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB6} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB5} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB4} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB3} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB1} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17_UP} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB16_UP} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB15_UP} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB14_UP} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB12_UP} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB10_UP} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB6_UP} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB5_UP} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB4_UP} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB3_UP} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10} {$DEFINE BDS10_UP} {$ENDIF} -{$IFDEF BDS9} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS8} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS7} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS6} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10_UP} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS9_UP} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS8_UP} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS7_UP} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS6_UP} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17} {$DEFINE DELPHICOMPILER17_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER1} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17_UP} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16_UP} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15_UP} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14_UP} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12_UP} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9_UP} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7_UP} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6_UP} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5_UP} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4_UP} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3_UP} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2_UP} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17} {$DEFINE COMPILER17_UP} {$ENDIF} -{$IFDEF COMPILER16} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER15} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER14} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER12} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER9} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER8} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER7} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER6} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER5} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER4} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER3} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER2} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER1} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17_UP} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER16_UP} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER15_UP} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER14_UP} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER12_UP} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER9_UP} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER8_UP} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER7_UP} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER6_UP} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER5_UP} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER4_UP} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER3_UP} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER2_UP} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ RTLX_UP from RTLX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF RTL240_UP} {$DEFINE RTL230_UP} {$ENDIF} -{$IFDEF RTL230_UP} {$DEFINE RTL220_UP} {$ENDIF} -{$IFDEF RTL220_UP} {$DEFINE RTL210_UP} {$ENDIF} -{$IFDEF RTL210_UP} {$DEFINE RTL200_UP} {$ENDIF} -{$IFDEF RTL200_UP} {$DEFINE RTL190_UP} {$ENDIF} -{$IFDEF RTL190_UP} {$DEFINE RTL185_UP} {$ENDIF} -{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF} -{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF} -{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF} -{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF} -{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF} -{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF} -{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF} -{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF} -{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF} -{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF} -{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF} -{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF} -{$IFDEF RTL100_UP} {$DEFINE RTL93_UP} {$ENDIF} -{$IFDEF RTL93_UP} {$DEFINE RTL90_UP} {$ENDIF} -{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Check for CLR overrides of default detection } -{------------------------------------------------------------------------------} - -{$IFDEF CLR} - {$IFDEF FORCE_CLR10} - {$DEFINE CLR10} - {$UNDEF CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR10} - - {$IFDEF FORCE_CLR11} - {$UNDEF CLR10} - {$DEFINE CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR11} - - {$IFDEF FORCE_CLR20} - {$UNDEF CLR10} - {$UNDEF CLR11} - {$DEFINE CLR20} - {$ENDIF FORCE_CLR20} -{$ENDIF CLR} - -{------------------------------------------------------------------------------} -{ CLRX from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR10} {$DEFINE CLR10_UP} {$ENDIF} -{$IFDEF CLR11} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR20} {$DEFINE CLR20_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ CLRX_UP from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR20_UP} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR11_UP} {$DEFINE CLR10_UP} {$ENDIF} - -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{$IFDEF BCBCOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF} -{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Map COMPILERX_UP to friendly feature names } -{------------------------------------------------------------------------------} - -{$IFDEF FPC} - {$IFDEF VER1_0} - Please use FPC 2.0 or higher to compile this. - {$ELSE} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDECHAR} - {$DEFINE SUPPORTS_WIDESTRING} - {$IFDEF HASINTF} - {$DEFINE SUPPORTS_INTERFACE} - {$ENDIF} - {$IFDEF HASVARIANT} - {$DEFINE SUPPORTS_VARIANT} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_SINGLE} - {$DEFINE SUPPORTS_SINGLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_DOUBLE} - {$DEFINE SUPPORTS_DOUBLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_EXTENDED} - {$DEFINE SUPPORTS_EXTENDED} - {$ENDIF} - {$IFDEF HASCURRENCY} - {$DEFINE SUPPORTS_CURRENCY} - {$ENDIF} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE ACCEPT_DEPRECATED} // 2.2 also gives warnings - {$DEFINE ACCEPT_PLATFORM} // 2.2 also gives warnings - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} - - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_CONTNRS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE HAS_UNIT_RTLCONSTS} - - {$DEFINE XPLATFORM_RTL} - - {$IFDEF VER2_2} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_IMPLEMENTS} - {$DEFINE SUPPORTS_DISPID} - {$ELSE} - {$UNDEF SUPPORTS_DISPINTERFACE} - {$UNDEF SUPPORTS_IMPLEMENTS} - {$endif} - {$UNDEF SUPPORTS_UNSAFE_WARNINGS} - {$ENDIF} -{$ENDIF FPC} - -{$IFDEF CLR} - {$DEFINE SUPPORTS_UNICODE} -{$ENDIF CLR} - -{$IFDEF COMPILER1_UP} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_SINGLE} - {$DEFINE SUPPORTS_DOUBLE} - {$DEFINE SUPPORTS_EXTENDED} - {$DEFINE SUPPORTS_PACKAGES} -{$ENDIF COMPILER1_UP} - -{$IFDEF COMPILER2_UP} - {$DEFINE SUPPORTS_CURRENCY} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_VARIANT} - {$DEFINE SUPPORTS_WIDECHAR} -{$ENDIF COMPILER2_UP} - -{$IFDEF COMPILER3_UP} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDESTRING} - {$DEFINE SUPPORTS_INTERFACE} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_DISPID} - {$DEFINE SUPPORTS_WEAKPACKAGEUNIT} -{$ENDIF COMPILER3_UP} - -{$IFDEF COMPILER35_UP} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} -{$ENDIF COMPILER35_UP} - -{$IFDEF COMPILER4_UP} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE SUPPORTS_IMPLEMENTS} -{$ENDIF COMPILER4_UP} - -{$IFDEF COMPILER6_UP} - {$DEFINE SUPPORTS_DEPRECATED} - {$DEFINE SUPPORTS_LIBRARY} - {$DEFINE SUPPORTS_PLATFORM} - {$DEFINE SUPPORTS_LOCAL} - {$DEFINE SUPPORTS_SETPEFLAGS} - {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS} - {$DEFINE ACCEPT_DEPRECATED} - {$DEFINE ACCEPT_PLATFORM} - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_DEPRECATED_WARNINGS} - {$DEFINE SUPPORTS_LIBRARY_WARNINGS} - {$DEFINE SUPPORTS_PLATFORM_WARNINGS} - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$DEFINE SUPPORTS_COMPILETIME_MESSAGES} -{$ENDIF COMPILER6_UP} - -{$IFDEF COMPILER7_UP} - {$DEFINE SUPPORTS_UNSAFE_WARNINGS} -{$ENDIF COMPILER7_UP} - -{$IFDEF COMPILER9_UP} - {$DEFINE SUPPORTS_FOR_IN} - {$DEFINE SUPPORTS_INLINE} - {$DEFINE SUPPORTS_NESTED_CONSTANTS} - {$DEFINE SUPPORTS_NESTED_TYPES} - {$DEFINE SUPPORTS_REGION} - {$IFDEF CLR} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$ENDIF CLR} -{$ENDIF COMPILER9_UP} - -{$IFDEF COMPILER10_UP} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$DEFINE SUPPORTS_METHODINFO} -{$ENDIF COMPILER10_UP} - -{$IFDEF COMPILER11_UP} - {$IFDEF CLR} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$ENDIF CLR} -{$ENDIF COMPILER11_UP} - -{$IFDEF COMPILER12_UP} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$DEFINE SUPPORTS_INT_ALIASES} - {$IFNDEF CLR} - {$DEFINE SUPPORTS_UNICODE} - {$DEFINE SUPPORTS_UNICODE_STRING} - {$ENDIF CLR} -{$ENDIF COMPILER12_UP} - -{$IFDEF COMPILER14_UP} - {$DEFINE SUPPORTS_CLASS_CTORDTORS} - {$DEFINE HAS_UNIT_RTTI} - {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ} - {$DEFINE SUPPORTS_DELAYED_LOADING} -{$ENDIF COMPILER14_UP} - -{$IFDEF COMPILER16_UP} - {$DEFINE USE_64BIT_TYPES} -{$ENDIF COMPILER16_UP} - -{$IFDEF RTL130_UP} - {$DEFINE HAS_UNIT_CONTNRS} -{$ENDIF RTL130_UP} - -{$IFDEF RTL140_UP} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_RTLCONSTS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE XPLATFORM_RTL} -{$ENDIF RTL140_UP} - -{$IFDEF RTL170_UP} - {$DEFINE HAS_UNIT_HTTPPROD} -{$ENDIF RTL170_UP} - -{$IFDEF RTL185_UP} - {$DEFINE HAS_UNIT_GIFIMG} -{$ENDIF RTL185_UP} - -{$IFDEF RTL200_UP} - {$DEFINE HAS_UNIT_ANSISTRINGS} - {$DEFINE HAS_UNIT_PNGIMAGE} - {$DEFINE HAS_UNIT_CHARACTER} -{$ENDIF RTL200_UP} - -{$IFDEF RTL220_UP} - {$DEFINE SUPPORTS_UINT64} - {$DEFINE HAS_UNIT_REGULAREXPRESSIONSAPI} -{$ENDIF RTL220_UP} - -{$IFDEF RTL230_UP} - {$DEFINE HAS_UNITSCOPE} - {$DEFINE HAS_UNIT_SYSTEM_UITYPES} -{$ENDIF RTL230_UP} - -{$IFDEF RTL240_UP} - {$DEFINE HAS_UNIT_SYSTEM_ACTIONS} -{$ENDIF RTL240_UP} - -{------------------------------------------------------------------------------} -{ Cross-platform related defines } -{------------------------------------------------------------------------------} - -{$IFNDEF CPUASM} - {$DEFINE PUREPASCAL} -{$ENDIF ~CPUASM} - -{$IFDEF WIN32} - {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+ - {$DEFINE Win32API} -{$ENDIF} - -{$IFDEF DELPHILANGUAGE} - {$IFDEF LINUX} - {$DEFINE UNIX} - {$ENDIF} - - {$IFNDEF CONSOLE} - {$IFDEF LINUX} - {$DEFINE VisualCLX} - {$ENDIF} - {$IFNDEF VisualCLX} - {$DEFINE VCL} - {$ENDIF} - {$ENDIF ~CONSOLE} -{$ENDIF DELPHILANGUAGE} - -{------------------------------------------------------------------------------} -{ Compiler settings } -{------------------------------------------------------------------------------} - -{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF} -{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF} -{$ENDIF} -{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF} -{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF} -{$ENDIF} - -// Hints -{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF} -{$ENDIF} -{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$DEFINE LOCALSYMBOLS_ON} {$ENDIF} -{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF} -{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF} -{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF} -{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF} -{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF} - -// Real compatibility -{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF} -{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF} -{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF} -{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF} - -// Warnings -{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF} - -// for Delphi/BCB trial versions remove the point from the line below -{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT} - -{$ENDIF ~JEDI_INC} diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/langs/English.xml b/plugins/!Deprecated/MirandaNGHistoryToDB/langs/English.xml deleted file mode 100644 index b5fdedbc2b..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/langs/English.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - HistoryToDB - Search in the message window - Clear the message - Sync history - Import history - From the history of ICQ 7 and above - From the history of RnQ - From the history of QIP 2005 - From the history of QIP 2010/Infium/2012 - From the history of Miranda - From the history of qutIM - Settings - History of %s (%s) - History of chat "%s" (%s) - History of %s - History with - to - Show - Search - Search - No matches found. - Message history in %s - History of the chat messages in %s - Information - There is not one open tab. - There is no open tabs chat. - Message history - Chat history - Search contact - Refresh history - Save history - Delete history - Delete history of the current contact - Delete history - Not selected for removal of contact history - Select a contact search history - Select the contact to refresh history - Delete - History of the selected contact will be deleted. Are you sure? - History of all contacts and chat rooms will be deleted. Are you sure? - Copy - Select all - Unselect all - [%s] HistoryToDBSync sent a request to synchronize history - Show history for the day - Show history for the month - Show history for the year - Show history for the entire period - Loading, please wait... - Settings - Database - Synchronization - Interface - Events - Fonts and more - Encryption history - Hot keys - About - Database - Synchronization history - Events - Connecting method: - DB type: - DB address: - Schema: - DB port: - DB name: - TNS Name: - Login: - Password: - Check database connection - Directly - Synchronization method: - Synchronization interval: - Automatic - Manually - On schedule - Every 5 minutes - Every 10 minutes - Every 20 minutes - Every 30 minutes - When you exit the program - After 10 messages - After 20 messages - After 30 messages - Every N minutes - After N messages - User intervals - Interval of time (min.): - Interval of count message: - Enable encryption message history - Show pop-up messages - Write errors to a log file - Hide HistoryToDBSync icon from the tray - Number of recent messages to display in the window history of correspondence - Add the button plug-in to modules panel (for only IM-client QIP 2012 and RnQ) - Save settings - Close - Encryption keys - Key number - Key status - Encryption method - Get encryption keys - Create a new key - Update - Attention! - A new version of the program. - Please visit the official website for updates. - The structure of your database is outdated. - Program version: %s - Database version: %s - Table configuration is successfully read. - Connecting to the database is successfully established. - Error - Unable to verify the version of the plugin. - Unable to connect to the database. - Error SQL query. - Error SQLExec query. - Please enter "DB address" - Please enter "DB port" - Please enter "Password" - Please enter "Login" - Please enter "DB name" - Please enter "Schema" - Please enter "TNS Name" - Settings have been saved. - Unable to save the settings. - Unable to read the settings. - [%s] HistoryToDBSync sent a request to recalculate the MD5-hashes - [%s] HistoryToDBSync sent a request to recalculate the MD5-hashes and remove duplicate messages - Database service - Recalculate of all the MD5-hashes in the database - Recalculate of all the MD5-hashes in the database and remove duplicate messages - Add special-contact (for only IM-client QIP 2012) - Fonts - Spacing for the header - Spacing for text - Font header for incomming: - Font header for outgoing: - Font for incoming messages: - Font for outgoing messages: - Font for service messages: - Spacing before: - Spacing after: - Find - Find more... - Activate global keyboard shortcuts - Assign - Remove - Shortcuts - Failed to open file - Failed to open file %s - Try again? - File to take another program. - WARNING! This message is encrypted. Perhaps you entered an incorrect password or encryption key in the database is not found the right key to decrypt the message. - The maximum size of log file errors (Kbyte) - Rename - Merge - Delete - Save contact list - Update contact information in the DB - Check for updates - A list of contacts and protocols stored. - Error! Contact list and protocols are not saved or stored properly. - Sent a request to update the list of contacts in the database. - The file %s to update your contact list can not be found. Request for update is not sent. - Not in the list - Update contact information in the DB (Nickname и UserID) - Please wait, is removal of the history... - [%s] HistoryToDBSync sent a request to update the contact list from a file %s - [%s] File %s to update your contact list can not be found. Please, select 'Save contact list' in the context menu, Other contacts QIPHistoryToDB. - [%s] The file %s to update your contact list can not be found. Select 'Save contact list' in the context menu RnQHistoryToDB in the chat window. - [%s] The file %s to update your contact list can not be found. Select 'Save contact list' in the context menu plugin. - [%s] HistoryToDBSync sent a request to disable synchronization of the history of the file %s. - [%s] HistoryToDBSync sent a request to enable synchronization of the history of the file %s. - Message history %s (%s) in HistoryToDBViewer - History in HistoryToDBViewer - Do not write messages in the DB marked as spam (for only IM-client QIP 2012) - Error: Invalid password encryption key. Enter the correct password or reading encrypted messages will be impossible. - Transparency - Enable transparency windows - Thank you - Use the expanded name for private chat (ChatName / Nickname) - Total lines: - Time to all lines: - ms - Failed to delete file - Failed to delete file %s - Try again? - Additionally - Synchronize history when you close the IM-client - Enable support for Skype - Language - Language: - Enable debug logging - Export history - Export history - Back - Next - Exit - Cancel - Welcome to the export wizard history - This wizard helps you export the story of %s to the external database. Exports will be made to a file in sql-insert. When you synchronize the data will be transmitted to the database. - Export Wizard history - Select the contacts whose history you want to export. - Export Wizard history - There is a history of exporting, please wait... - Export Wizard history - Export of finished history. - Nickname - Protocol - UserID - Total selected %s contacts from %s - Export history of contact %s (%s) ... - Export of finished history. - Are you sure you want to cancel the export and exit the wizard? - Out of the Export Wizard - Export of finished histori. Now you can send a request to synchronize the history of the exported database. A high volume of exported history synchronization procedure can be done a long time. - Send a request to synchronize - Import messages from the database directly from the Miranda of the IM-client. - During the upgrade, contact list error. - During recalculation of MD5-hash error. - For additional information, see the log files. - Running the synchronization of messages... - [%s] We make %s attempts to reconnect to the database. - [%s] Failed to reconnect to the database. - Number of reconnection attempts: - Reconnect interval (ms): - Auto scrolling messages - HistoryToDBSync run at Windows startup - Start Skype with HistoryToDBSync - Shutdown Skype when you close HistoryToDBSync - Update server is down for maintenance.%sTry to start the procedure to check for updates later. - - About - About - Version: - License: - - [%s] Error: Unable to connect to the database. Error: %s - [%s] Error: Database on service mode. Saving messages in the database is impossible. - [%s] Error: Database on service mode. Saving of pending messages in the database is impossible. - [%s] Error: Unable to connect to the database. Error: %s - [%s] Error: Unable to perform operation. Database on service mode. - [%s] Write error messages from the log file to the database: %s - [%s] Error in query update: %s - [%s] The file %s found %s messages; Loaded in DB: %s; Bad: %s; Duplicate: %s; Encrypted: %s - Found %s messages; Loaded in DB: %s; Bad: %s; Duplicate: %s; Encrypted: %s - [%s] File pending message %s not found. - Message file %s not found. - [%s] Database connection is not established. - History viewer %s not found. - The history synchronization program %s not found. - Update program %s not found. - Wrong SDK version. To work needed QIP 2012 and above. - The history import program %s not found. - Unable to perform operation. Database on service mode. - - Show - Hide - Synchronization - Settings - About - Exit - Synchronization history - Synchronization status: - Synchronization is done - Start synchronization - Stop synchronization - Synchronization running - Synchronization stopped - File synchronization can not be found - Running time of report... (%s sec.) - Waiting for a synchronization request - Not specified - Unknown type IM-client. Updating the database is impossible. - Database successfully updated. - An error occurred when update the database. Look in the log file. - Total messages: - Added to database: - Total error adding: - Up time: - Time left: - Found dublicates: - Log-file - View the log file - Log-file name: - Delete the log file - Update - Total messages for the analysis: - MD5-hash error: - Fixed MD5-hash: - Found duplicates: - Removed duplicate: - Entering a password - Enter the encryption key password - Entering a password - Error: Wrong key password. Enter the correct password or encryption of messages is not available. - Error: Could not find the active key - Error: There is more than one active key - Key number: - Key password: - Enter - Cancel - Remember the password for this session - Save all passwords - Unknown error decrypting the encryption key. - Check the encryption key - Encrypt message: - Error: Not found the right encryption key. - Started updating the contact list... - Not found a file with a list of protocols and contacts. - List for contacts updated. - Launched recalculate MD5-hash... - Recalculation of the MD5-hash done. - View log-file - Skype status: - Disable - Request for authorization... - Connection is allowed - Connection rejected - Connection is broken - Skype API is available - Error creating an instance of Skype - Error deleting an instance of Skype - Error connecting to an instance of Skype - We are trying to run Skype... - Error when starting Skype - Error creating interface Skype - Most likely you have not installed Skype and its version below 5.0 - - Import history of QIP 2010/Infium/2012 - Import history of QIP 2005 - Import options - Load from directory - Upload a single file - Open history file - Select: - Select a directory: - Select file: - Unknown - Select - Choose a directory - Select file - Generate SQL-file - Preview history - Recipient: - Total messages: - My Nickname: - My UserID: - Status: - Processed messages: - Choose a directory - All QIP 2010/Infium/2012 history files (*.qhf;*.ahf) - QIP 2010/Infium/2012 history files (*.qhf) - QIP 2010/Infium/2012 archive history files (*.ahf) - QIP 2005 history files (*.txt) - Selected file %s - History file - Error reading file - Stop - Stopped (%s) - Done! - Select the file(s) to import - Proceed - Wait... - There is a record in SQL-file... - Import finished. After the next synchronization session, all information will be added to the database. - RnQ history files (*.*) - Import history of RnQ - Running import history from RnQ - Running import history from QIP 2005 - Running import history from QIP 2010/Infium/2012 - Total %s history files selected. - Processing the file %s - File %s processed. - Imported %s records. - Found %s records. - Import history of ICQ 7 - ICQ 7 history files (Messages.qdb) - Running import history from ICQ 7 - You are connected to the database %s - The database is locked. Close the client ICQ 7 and try again. - Found the history of the correspondence with the user %s - Imported %s entries. - - Creating an encryption key - Creating an encryption key - Status key: - Encryption algorithm: - Key length (characters): - Key password: - Encryption key: - (Encoded in BASE64) - Storage location key: - Generate and save - Enter a password for the encryption key. - Do you already have an active key, change the status of the old key and repeat the operation to generate a new key. - Your new key is generated and stored in No. %s - Your new key is generated and stored in the database as No. %s - Please remember the password and the key No. - An error occurred when saving the key in the database. Check the settings of the database and try again. - Active - Inactive - Locally - On the server DB - Change key status - Change key password - Delete key - The database already has an active key. Change the status of the active key, and then return to this operation. - Status key is changed. - Removing the encryption key - The database found messages encrypted with that key. Are you sure you want to delete this key? - The encryption key is deleted. - WARNING! You are about to delete the active key. Without the active key encryption of messages is impossible. - Changing the password encryption key - Entered an incorrect current password encryption key. - The new password and confirmation do not match, or blank. Please try again. - Password for the encryption key is changed. - Changing the password encryption key - Current password: - New password: - Repeat new password: - Change password - Other Colors... - Automatic - General settings - Connection settings - Logs - First, select the "DB type" and "IM-client." - Update - Stop - Settings - IM-client: - Use a proxy server - Proxy server: - Port: - Proxy server requires a password - User: - Password: - Update - Click the "Update" button to start the update process. - Amount: - Speed: - Filename: - Description: - File size: - Unknown - Language file is not found - Initializing download... - KB - Kbytes/sec - Initializing download from the URL - Invalid response header from the server. - Check the settings for connecting to the Internet. Maybe your proxy server blocks access to the site updates. - Header data: - Parse the header... - Error opening session. - Error when requesting the file. - An error occurred while reading the file. - Failed to query the data through a proxy server. - Loading... - Download stopped. - Close all the components plugin, IM clients and try to repeat the update. - Download successful. - Is the checksum file... - MD5 file in memory: - Filesize in memory: - Checksum and file size are confirmed. - Checksum file to disk and server are the same. - Not correct the checksum of the received data. - File is saved as - Can not save file - Not true size of the received data. - All updates are downloaded successfully. - All updates have been installed. - Step - The number of files to update - File to update - Update settings file not found - Start update localization file %s... - Update localization file %s completed. - Start update sql-file %s... - Update sql-file %s completed. - Start update file %s... - Update file %s completed. - File %s is not updated. - In the memory of the process found %s (PID: %s) - Send the command to the end of the program... - Re looking for process %s in the memory... - Trying to force terminated the process %s - Process %s forcibly terminated. - Process %s can not be forcibly terminated. - Set SeDebugPrivilege and try again to terminate the process %s - Process %s forcibly terminated when SeDebugPrivilege. - Process %s can not be forced to terminated in SeDebugPrivilege. - Process %s not found in memory. - We are trying to close the process %s - ЗапуÑкаем программу %s - Программа %s запущена. - Программа %s не запущена. - - \ No newline at end of file diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/langs/Russian.xml b/plugins/!Deprecated/MirandaNGHistoryToDB/langs/Russian.xml deleted file mode 100644 index a7933c774c..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/langs/Russian.xml +++ /dev/null @@ -1,506 +0,0 @@ - - - HistoryToDB - ПоиÑк в окне Ñообщений - ОчиÑтить окно Ñообщений - Синхронизировать иÑторию - Импорт иÑтории - Из иÑтории ICQ 7 и выше - Из иÑтории RnQ - Из иÑтории QIP 2005 - Из иÑтории QIP 2010/Infium/2012 - Из иÑтории Miranda - Из иÑтории qutIM - ÐаÑтройки - ПерепиÑка Ñ %s (%s) - ПерепиÑка чата "%s" (%s) - ПерепиÑка Ñ %s - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¸Ñки Ñ - по - Показать - ПоиÑк - ПоиÑк - ПоиÑк закончен. Совпадений не найдено. - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñообщений в %s - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‡Ð°Ñ‚-Ñообщений в %s - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - Ðет ни одной открытой вкладки Ñообщений. - Ðет ни одной открытой вкладки чата. - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñообщений - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‡Ð°Ñ‚Ð¾Ð² - Ðайти контакт - Перечитать иÑторию контакта - Сохранить иÑторию контакта - Удалить иÑторию контакта - Удалить иÑторию текущего контакта - Удалить вÑÑŽ иÑторию - Ðе выбран контакт Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтории - Выберите контакт Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка иÑтории - Выберите контакт Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ иÑтории - Удалить - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ контакта будет полноÑтью удалена из базы. Ð’Ñ‹ уверены? - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñех контактов и чатов будет полноÑтью удалена из базы. Ð’Ñ‹ уверены? - Копировать - Выбрать вÑе - СнÑÑ‚ÑŒ выбор Ñо вÑех - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ñинхронизацию иÑтории - Показать за день - Показать за меÑÑц - Показать за год - Показать за веÑÑŒ период - Подождите, идет загрузка... - ÐаÑтройки - База данных - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ - Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ - Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ - Шрифты и пр. - ГорÑчие клавиши - Шифрование иÑтории - О программе - База данных - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ñтории - Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ - Метод подкл-Ñ Ðº БД: - Тип БД: - ÐÐ´Ñ€ÐµÑ Ñервера БД: - Схема: - Порт Ñервера БД: - Ð˜Ð¼Ñ Ð‘Ð”: - TNS: - Логин: - Пароль: - Проверить Ñоединение Ñ Ð‘Ð” - ÐапрÑмую - Метод Ñинхронизации: - Интервал Ñинхронизации: - ÐвтоматичеÑкий - Вручную - По раÑпиÑанию - Каждые 5 минут - Каждые 10 минут - Каждые 20 минут - Каждые 30 минут - При выходе из программы - ПоÑле кажд. 10-го Ñооб-Ñ - ПоÑле кажд. 20-го Ñооб-Ñ - ПоÑле кажд. 30-го Ñооб-Ñ - Каждые N минут - ПоÑле кажд. N Ñооб-Ñ - Интервалы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ - Интервал по времени (мин.): - Интервал по кол. Ñообщений: - Включить шифрование иÑтории Ñообщений - Показывать вÑплывающие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - ПиÑать ошибки в лог-файл - Скрыть иконку HistoryToDBSync из Ñ‚Ñ€ÐµÑ - КоличеÑтво поÑледних Ñообщений Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° в окне иÑтории перепиÑки - Добавить кнопку плагина в панель модулей (только Ð´Ð»Ñ IM-клиента QIP 2012 и RnQ) - Сохранить наÑтройки - Закрыть - Ключи ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° Ñервере - Ðомер ключа - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÐºÐ»ÑŽÑ‡Ð° - Метод ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Получить ключи из БД - Создать новый ключ - Обновление - Внимание! - Вышла Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹. - ПожалуйÑта, поÑетите официальный Ñайт Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ. - Структура Вашей БД уÑтарела. - ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %s - ВерÑÐ¸Ñ Ð‘Ð”: %s - ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %s - Таблица конфигурации уÑпешно прочитана. - Подключение к БД уÑпешно уÑтановлено. - Ошибка - Ðе удаетÑÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ верÑию плагина. - Ðе удаетÑÑ ÑƒÑтановить подключение к БД. - Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ SQL запроÑа. - Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ SQLExec запроÑа. - Ðе заполнено поле "ÐÐ´Ñ€ÐµÑ Ñервера БД" - Ðе заполнено поле "Порт Ñервера БД" - Ðе заполнено поле "Пароль" - Ðе заполнено поле "Логин" - Ðе заполнено поле "Ð˜Ð¼Ñ Ð‘Ð”" - Ðе заполнено поле "Схема" - Ðе заполнено поле "TNS" - ÐаÑтройки Ñохранены. - Ðевозможно Ñохранить наÑтройки. - Ðевозможно прочитать наÑтройки. - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° перераÑчет MD5-хешей - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° перераÑчет MD5-хешей и удаление дубликатов Ñообщений - ОбÑлуживание БД - ПереÑчитать вÑе MD5-Ñ…Ñши в БД - ПереÑчитать вÑе MD5-Ñ…Ñши в БД и удалить дубликаты - Добавить Ñпец-контакт (только Ð´Ð»Ñ IM-клиента QIP 2012) - Шрифты - РаÑÑтоÑние Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° - РаÑÑтоÑние Ð´Ð»Ñ Ñ‚ÐµÐºÑта - Шрифт заголовка Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщих: - Шрифт заголовка Ð´Ð»Ñ Ð¸ÑходÑщих: - Шрифт Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщих Ñообщений: - Шрифт Ð´Ð»Ñ Ð¸ÑходÑщих Ñообщений: - Шрифт Ð´Ð»Ñ ÑервиÑных Ñообщений: - РаÑÑтоÑние перед: - РаÑÑтоÑние поÑле: - Ðайти - Ðайти далее... - Включить поддержку глобальных горÑчих клавиш - Ðазначить - Удалить - ГорÑчие клавиши - Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° - Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° %s - Возможно файл занÑÑ‚ÑŒ программой. Повторить попытку? - Возможно файл занÑÑ‚ÑŒ программой. - Ð’ÐИМÐÐИЕ! Это Ñообщение зашифровано. Возможно Ð’Ñ‹ ввели неправильный пароль ключа ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ в БД не найдено нужного ключа Ð´Ð»Ñ Ñ€Ð°Ñшифровки ÑообщениÑ. - МакÑимальный размер лог-файла ошибок (Кбайт) - Переименовать - Объединить - Удалить - Сохранить ÑпиÑок контактов - Обновить данные контактов в БД - Проверить наличие обновлений - СпиÑок контактов и протоколов Ñохранен. - Ошибка! СпиÑок контактов и протоколов не Ñохранен или Ñохранен чаÑтично. - Отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° обновление ÑпиÑка контактов в БД. - Файл %s Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка контактов не найден. Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° обновление не отправлен. - Ðе в ÑпиÑке - Обновить данные контактов в БД (Nickname и UserID) - Подождите, идет удаление иÑтории... - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° обновление ÑпиÑка контактов из файла %s - [%s] Файл %s Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка контактов не найден. Выберите пункт 'Сохранить ÑпиÑок контактов' в контекÑтном меню Ñпец-контакта QIPHistoryToDB. - [%s] Файл %s Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка контактов не найден. Выберите пункт 'Сохранить ÑпиÑок контактов' в контекÑтном меню RnQHistoryToDB в окне чата. - [%s] Файл %s Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка контактов не найден. Выберите пункт 'Сохранить ÑпиÑок контактов' в контекÑтном меню плагина. - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° запрет Ñинхронизации иÑтории из файла %s. - [%s] HistoryToDBSync отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° разрешение Ñинхронизации иÑтории из файла %s. - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñообщений %s (%s) в HistoryToDBViewer - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð² HistoryToDBViewer - Ðе запиÑывать в БД ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¼ÐµÑ‡ÐµÐ½Ñ‹Ðµ как Ñпам (только Ð´Ð»Ñ IM-клиента QIP 2012) - Ошибка: Ðеверный пароль ключа шифрованиÑ. Введите правильный пароль или чтение зашифрованных Ñообщений будет невозможно. - ПрозрачноÑÑ‚ÑŒ окон - Включить прозрачноÑÑ‚ÑŒ окон - БлагодарноÑти - ИÑпользовать раÑширенное Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ñ‹Ñ… чатов (Ð˜Ð¼Ñ Ñ‡Ð°Ñ‚Ð° / Ðик ÑобеÑедника) - Ð’Ñего Ñтрок: - Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸: - Ð¼Ñ - Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° - Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° %s - Возможно файл занÑÑ‚ другой программой. Повторить попытку? - Дополнительно - Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ñтории при выходе из IM-клиента - Включить поддержку Skype - Язык программы - Язык программы: - ВеÑти раÑширенный лог работы программы (Debug-режим) - ЭкÑпортировать иÑторию - ЭкÑпорт иÑтории - Ðазад - Далее - Выйти - Отмена - Добро пожаловать в маÑтер ÑкÑпорта иÑтории - Данный маÑтер поможет Вам ÑкÑпортировать иÑторию %s во внешнюю базу данных. ЭкÑпорт будет произведен в файл формата sql-insert. При Ñинхронизации Ñти данные будут переданы в базу данных. - МаÑтер ÑкÑпорта иÑтории - Выберите контакты, иÑторию которых Ð’Ñ‹ хотите ÑкÑпортировать. - МаÑтер ÑкÑпорта иÑтории - Идет ÑкÑпорт иÑтории, подождите... - МаÑтер ÑкÑпорта иÑтории - ЭкÑпорт иÑтории завершен. - Ðик - Протокол - Ðомер - Ð’Ñего выбрано %s контактов из %s - ЭкÑпорт иÑтории контакта %s (%s) ... - ЭкÑпорт иÑтории завершен. - Ð’Ñ‹ дейÑтвительно хотите прервать ÑкÑпорт и выйти из маÑтера? - Выход из маÑтера ÑкÑпорта - ЭкÑпорт иÑтории завершен. Теперь Ð’Ñ‹ можете отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ñинхронизацию ÑкÑпортированной иÑтории Ñ Ð±Ð°Ð·Ð¾Ð¹ данных. При большом объёме ÑкÑпортированной иÑтории процедура Ñинхронизации может выполнÑÑ‚ÑŒÑÑ Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ времÑ. - Отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ñинхронизацию - Импорт Ñообщений из базы Miranda оÑущеÑтвлÑетÑÑ Ð½ÐµÐ¿Ð¾ÑредÑтвенно из Ñамого IM-клиента. - Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка контактов произошла ошибка. - Во Ð²Ñ€ÐµÐ¼Ñ Ð¿ÐµÑ€ÐµÑ€Ð°Ñчета MD5-Ñ…Ñшей произошла ошибка. - Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿. информации Ñмотрите лог-файлы. - Запущена ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñообщений... - [%s] ВыполнÑем %s попытку Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº БД. - [%s] Ошибка Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº БД. - Кол. попыток переподключениÑ: - Интервал Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ (мÑек): - ÐвтоÑкроллинг Ñообщений - ЗапуÑкать HistoryToDBSync при загрузке Windows - ЗапуÑкать Skype при запуÑке HistoryToDBSync - Выходить из Skype при закрытии HistoryToDBSync - Сервер обновлений находитÑÑ Ð½Ð° ÑервиÑном обÑлуживании.%sПопробуйте запуÑтить процедуру проверки обновлений позже. - - О плагине - О плагине - ВерÑиÑ: - ЛицензиÑ: - - [%s] Ошибка: Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº БД. Ошибка: %s - [%s] Ошибка: БД на ÑервиÑном обÑлуживании. Сохранение Ñообщений в БД невозможно. - [%s] Ошибка: БД на ÑервиÑном обÑлуживании. Сохранение отложенных Ñообщений в БД невозможно. - [%s] Ошибка: Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº БД. Ошибка: %s - [%s] Ошибка: Ðевозможно выполнить операцию. БД на ÑервиÑном обÑлуживании. - [%s] Ошибка запиÑи Ñообщений из лог-файла в БД: %s - [%s] Ошибка при запроÑе обновлениÑ: %s - [%s] Ð’ файле %s найдено %s Ñообщений; Добавлено в базу %s; Ð’Ñего отбраковано %s; Ðайдено дубликатов %s; Зашифровано %s - Ð’Ñего Ñообщений %s; Добавлено в базу %s; Ð’Ñего отбраковано %s; Ðайдено дубликатов %s; Зашифровано %s - [%s] Файл отложенных Ñообщений %s не найден. - Файл Ñообщений %s не найден. - [%s] Соединение Ñ Ð‘Ð” не уÑтановлено. - ПроÑмотрщик иÑтории %s не найден. - Программа Ñинхронизации иÑтории %s не найден. - Программа проверки обновлений %s не найдена. - ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ SDK. Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ необходим QIP 2012 и выше. - Программа импорта иÑтории %s не найдена. - Ðевозможно выполнить операцию. База данных на ÑервиÑном обÑлуживании. - - Показать - Скрыть - Синхронизировать иÑторию - ÐаÑтройки - О программе - Выйти - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ñтории - СоÑтоÑние Ñинхронизации: - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð° - ЗапуÑтить Ñинхронизацию - ОÑтановить Ñинхронизацию - Идет ÑинхронизациÑ... - CÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñтановлена - Файл Ð´Ð»Ñ Ñинхронизации не найден - Запущен отчет времени... (%s Ñек.) - Ожидание запроÑа на Ñинхронизацию - Ðе задан - ÐеизвеÑтный тип IM-клиента. Обновление БД невозможно. - Произведено уÑпешное обновление БД. - Произошла ошибка при обновлений БД. Смотрите в лог-файл. - Ð’Ñего Ñообщений: - Добавлено в базу: - Ð’Ñего отбраковано: - С начала имп-а прошло: - До Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¾ÑталоÑÑŒ: - Ðайдено дубликатов: - Лог-файл - ПроÑмотр лог-файла - Ð˜Ð¼Ñ Ð»Ð¾Ð³-файла: - Удалить лог-файл - Обновить - Ð’Ñего Ñообщений Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°: - Ошибочных MD5-Ñ…Ñшей: - ИÑправлено MD5-Ñ…Ñшей: - Ðайдено дубликатов: - Удалено дубликатов: - Ввод Ð¿Ð°Ñ€Ð¾Ð»Ñ - Ввод Ð¿Ð°Ñ€Ð¾Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Ввод Ð¿Ð°Ñ€Ð¾Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Ошибка: Ðеверный пароль ключа шифрованиÑ. Введите правильный пароль или шифрование Ñообщений будет недоÑтупно. - Ошибка: Ðе найден активный ключ. - Ошибка: Ðайдено более 1 активного ключа. - Ðомер ключа: - Пароль ключа: - Ввод - Отмена - Запомнить пароль до выхода из программы - Сохранить вÑе пароли - ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° раÑшифровки ключа шифрованиÑ. - Проверка ключа ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Зашифровано Ñооб-й: - Ошибка: Ð’ БД не найдено нужного ключа шифрованиÑ. - Запущено обновление ÑпиÑка контактов... - Ðе найдены файл Ñо ÑпиÑком протоколов и контактов. - CпиÑк контактов обновлен. - Запущен перераÑчет MD5-Ñ…Ñшей... - ПерераÑчет MD5-Ñ…Ñшей завершен. - ПоÑмотреть лог-файлы - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Skype: - Отключено - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸... - Подключение разрешено - Подключение отклонено - Подключение отключено - Skype API доÑтупно - Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑкземплÑра Skype - Ошибка при удалении ÑкземплÑра Skype - Ошибка при подключении к ÑкземплÑру Skype - ПытаемÑÑ Ð·Ð°Ð¿ÑƒÑтить Skype... - Ошибка при запуÑке Skype - Ошибка при Ñоздании интерфейÑа Skype - Возможно на компьютере не уÑтановлен Skype или его верÑÐ¸Ñ Ð½Ð¸Ð¶Ðµ 5.0 - - Импорт иÑтории из QIP 2010/Infium/2012 - Импорт иÑтории из QIP 2005 - Параметры импорта иÑтории - Загрузить из директории - Загрузить из одного файла - Открыть файл иÑтории - Выберите: - Выберите директорию: - Выберите файл: - ÐеизвеÑтно - Выбрать - Выбрать директорию - Выбрать файл - Сформировать SQL-файл - ПредпроÑмотр иÑтории - Получатель: - Ð’Ñего Ñообщений: - Мои Nickname: - Мой UserID: - СтатуÑ: - Обработано Ñообщений: - Выберите каталог - Ð’Ñе файлы иÑтории QIP 2010/Infium/2012 (*.qhf;*.ahf) - Файлы иÑтории QIP 2010/Infium/2012 (*.qhf) - Ðрхивные файлы иÑтории QIP 2010/Infium/2012 (*.ahf) - Файлы иÑтории QIP 2005 (*.txt) - Выбран файл %s - Файл иÑтории - Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° - ОÑтановить - ОÑтановлено (%s) - Готово! - Выберите файл(Ñ‹) Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° - Продолжить - Ждите... - Идет запиÑÑŒ в SQL-файл... - Импорт закончен. ПоÑле очередного ÑеанÑа Ñинхронизации вÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ добавлена в БД. - Файлы иÑтории RnQ (*.*) - Импорт иÑтории из RnQ - Запущен импорт иÑтории из RnQ - Запущен импорт иÑтории из QIP 2005 - Запущен импорт иÑтории из QIP 2010/Infium/2012 - Ð’Ñего выбрано %s файлов иÑтории. - Идет обработка файла %s - Импортировано %s запиÑей. - Файл %s обработан. - Ð’Ñего найдено %s запиÑей. - Импорт иÑтории из ICQ 7 - Файлы иÑтории ICQ 7 (Messages.qdb) - Запущен импорт иÑтории из ICQ 7 - Ð’Ñ‹ подключены к БД %s - База данных заблокирована. Закройте клиента ICQ 7 и повторите попытку. - Ðайдена иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¸Ñки Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ %s - Импортировано %s запиÑей. - - Создание ключа ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Создание ключа ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÐºÐ»ÑŽÑ‡Ð°: - Ðлгоритм шифрованиÑ: - Длина ключа (Ñимволов): - Пароль ключа: - Ключ шифрованиÑ: - (Закодирован в BASE64) - МеÑто Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð°: - Сгенерировать и Ñохранить - Введите пароль Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ ключа шифрованиÑ. - У Ð’Ð°Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ один активный ключ, поменÑйте ÑÑ‚Ð°Ñ‚ÑƒÑ Ñтарого ключа и повторите операцию генерации нового ключа. - Ваш новый ключ Ñгенерирован и Ñохранен под номером %s - Ваш новый ключ Ñгенерирован и Ñохранен в БД под номером %s - ПожалуйÑта, запомните введенный пароль и номер ключа. - Произошла ошибка при Ñохранении ключа в БД. Проверьте наÑтройки БД и попробуйте еще раз. - Ðктивный - Ðеактивный - Локально - Ðа Ñервере в БД - Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ»ÑŽÑ‡Ð° - Изменить пароль ключа - Удалить ключ - Ð’ базе данных уже еÑÑ‚ÑŒ один активный ключ. Измените ÑÑ‚Ð°Ñ‚ÑƒÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ ключа, а потом вернитеÑÑŒ к Ñтой операции. - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÐºÐ»ÑŽÑ‡Ð° изменен. - Удаление ключа ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Ð’ базе данных найдены ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ðµ Ñтим ключом. Ð’Ñ‹ дейÑтвительно хотите удалить Ñтот ключ? - Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½. - Ð’ÐИМÐÐИЕ! Ð’Ñ‹ ÑобираетеÑÑŒ удалить активный ключ. Без активного ключа шифрование Ñообщений будет невозможно. - Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Введен неправильный текущий пароль ключа шифрованиÑ. - Введенные новые пароли и подтверждение не Ñовпадают или пуÑтые. Повторите попытку. - Пароль на ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½. - Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - Текущий пароль: - Ðовый пароль: - Повторите новый пароль: - Сменить пароль - Другой цвет... - Ðвто - Общие наÑтройки - ÐаÑтройки ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ - Лог работы - Вначале выберите "Тип БД" и "IM-клиент". - Обновить - ОÑтановить - ÐаÑтройки - IM-клиент: - ИÑпользовать прокÑи-Ñервер - ÐÐ´Ñ€ÐµÑ Ð¿Ñ€Ð¾ÐºÑи-Ñервера: - Порт: - ПрокÑи-Ñервер требует авторизацию - Пользователь: - Пароль: - Обновление - Ðажмите кнопку "Обновить" Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° процеÑÑа обновлениÑ. - Объем: - СкороÑÑ‚ÑŒ: - Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: - ОпиÑание: - Размер файла: - Ðе извеÑтно - Ðе найден файл локализации - Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑкачиваниÑ... - Кбайт - Кбайт/Ñек - Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ c URL - Ðеправильный заголовок ответа Ñ Ñервера. - Проверьте наÑтройки Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Интернет. Возможно Ваш прокÑи-Ñервер блокирует доÑтуп к Ñайту обновлениÑ. - Данные заголовка: - ПарÑим заголовок... - Ошибка при открытии ÑеÑÑии. - Ошибка при запрашивании файла. - Ошибка при чтении файла. - Ошибка при запроÑе данных через прокÑи-Ñервер. - Идет загрузка... - Скачивание оÑтановлено. - Завершите работу вÑех компонентов плагина вручную и попробуйте повторить обновление. - Скачивание уÑпешно завершено. - Идет подÑчёт контрольной Ñуммы файла... - MD5 файла в памÑти: - Размер файла в памÑти: - ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма и размер файла подтверждены. - ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма файла на диÑке и на Ñервере Ñовпадают. - Ðе ÑходитÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма принÑÑ‚Ñ‹Ñ… данных. - Файл Ñохранен под именем - Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° - Ðе ÑходитÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ принÑÑ‚Ñ‹Ñ… данных. - Ð’Ñе Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑпешно загружены. - Ð’Ñе Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑпешно уÑтановлены. - Шаг - ЧиÑло файлов Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ - Очередной файл Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ - Ðе найден файл наÑтроек Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ - Ðачинаем обновление файла локализации %s... - Обновление файла локализации %s выполнено. - Ðачинаем обновление sql-файла %s... - Обновление sql-файла %s выполнено. - Ðачинаем обновление файла %s... - Обновление файла %s выполнено. - Файл %s не обновлен. - Ð’ памÑти найден процеÑÑ %s (PID: %s) - ОтправлÑем команду завершениÑ... - Повторно ищем процеÑÑ %s в памÑти... - ПытаемÑÑ Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ завершить процеÑÑ %s - ПроцеÑÑ %s принудительно завершен. - ПроцеÑÑ %s не может быть принудительно завершен. - Повышаем Ñвои привилегии до SeDebugPrivilege и пробуем еще раз завершить процеÑÑ %s - ПроцеÑÑ %s принудительно завершен при SeDebugPrivilege. - ПроцеÑÑ %s не может быть принудительно завершен даже при SeDebugPrivilege. - ПроцеÑÑ %s не найден в памÑти. - ПытаемÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÑŒ процеÑÑ %s - ЗапуÑкаем программу %s - Программа %s запущена. - Программа %s не запущена. - - \ No newline at end of file diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/m_historytodb.inc b/plugins/!Deprecated/MirandaNGHistoryToDB/m_historytodb.inc deleted file mode 100644 index 07aa224029..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/m_historytodb.inc +++ /dev/null @@ -1,40 +0,0 @@ -{ ############################################################################ } -{ # # } -{ # MirandaNG HistoryToDB Plugin v2.4 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ############################################################################ } - -{$IFNDEF M_HISTORYTODB} -{$DEFINE M_HISTORYTODB} - -const - - // MS_MHTD_SHOWHISTORY - // (supported from 2.4.0) - // Open history - // wParam - zero - // lParam - zero - // Return - 0 - MS_MHTD_SHOWHISTORY = 'MirandaNGHistoryToDB/ShowHistory'; - - // MS_MHTD_SHOWCONTACTHISTORY - // (supported from 2.4.0) - // Open contact history - // wParam - hContact - // lParam - zero - // Return - 0 - MS_MHTD_SHOWCONTACTHISTORY = 'MirandaNGHistoryToDB/ShowContactHistory'; - - // MS_MHTD_GETVERSION - // (supported from 2.4.0) - // Get current MirandaNGHistoryToDB version - // wParam - zero - // lParam - zero - // Return - current version, via PLUGIN_MAKE_VERSION macro - MS_MHTD_GETVERSION = 'MirandaNGHistoryToDB/GetVersion'; - -{$ENDIF} diff --git a/plugins/!Deprecated/ShlExt/clean.bat b/plugins/!Deprecated/ShlExt/clean.bat deleted file mode 100644 index 575eed729c..0000000000 --- a/plugins/!Deprecated/ShlExt/clean.bat +++ /dev/null @@ -1 +0,0 @@ -del *.o *.ppu *.dll *.a fpc-res.res *.or \ No newline at end of file diff --git a/plugins/!Deprecated/ShlExt/docs/HowToBuild.txt b/plugins/!Deprecated/ShlExt/docs/HowToBuild.txt deleted file mode 100644 index 53b6738616..0000000000 --- a/plugins/!Deprecated/ShlExt/docs/HowToBuild.txt +++ /dev/null @@ -1,22 +0,0 @@ -shlext 2.0.0.9 - -Info -======================= - -This source code is based on shlext 1.0.6.6 with minor changes so that it works -with FreePascal 2.2.2. - -The included headers (inc dir) are from Miranda 0.3.3.1 SDK and so if you want newer APIs -then get the API headers from the latest SVN tree. - -Note: I have included v0.8.xx API changes for GUIDs within a new file (m_v8.inc) - - -How to build -======================= - -Make sure you have installed the FreePascal compiler ( http://freepascal.org ) -the latest version is 2.2.2 at the time of writing. - -Run "make.bat" in this directory, this contains all the command line switches -for the newer version should produce shlext.dll diff --git a/plugins/!Deprecated/ShlExt/docs/shlext release notes.txt b/plugins/!Deprecated/ShlExt/docs/shlext release notes.txt deleted file mode 100644 index 0e58edf9ff..0000000000 --- a/plugins/!Deprecated/ShlExt/docs/shlext release notes.txt +++ /dev/null @@ -1,344 +0,0 @@ -shlext 2.0.1.2 - -Contents: - - Introduction ``What is shlext?`` - Why so long? - What you need - New features - Features - Quirks - Important changes - But Miranda has drag'n'drop! - Installation - Upgrading/Removing - Translation - License - Contact/Bug reporting - Credits - - - - ---Introduction ``What is shlext?`` - - shlext is a Miranda and Explorer shell plugin, it allows you to use your - contact list under any file/directory from Windows. - - This means that you can right click on a file/folder, see "Miranda" and then - see your entire contact list! this is a feature that ICQ has built in. - - shlext is better of course. - - ---Why so long? - - A few people contacted me aeons ago about implementing a better file scanner - so that they could recreate directories whilst sending, etc, I said I would do - this as soon as I had time, that was several months ago. - - I had made several changes/bugfixes when I had time, because I'm a Miranda - dev too, I don't usually have lots of time for this plugin, however lately I needed - shlext to run again, since I was sending lots of docs/logs around with Miranda. - - So I fixed several things and improved lots of other stuff so that other users - could use shlext again (the XP bug was really annoying as soon as I got XP myself ;) - - - ---What you need - - (2008) You will need 0.7.xx or 0.8.x -- older versions will not work. - - shlext should work on all Window Explorer versions that support it, - certain features will not work on older Explorers, i.e. icons, but you will - still be able to use the main function of shlext, selection 'n' transfer. - - ---New Features (2.0.1.2) - - * shlext is now compiled with Free Pascal 2.2.4 - - * shlext now works with Windows Vista: - - 1. shlext cannot automatically register itself with Windows Explorer due to permissions issues in Vista, - therefore you will be UAC prompted if shlext detects you are running Vista and that shlext isn't registered - with Explorer. - - This is almost automatic, and you just have to press "OK". - - 2. The entire menu drawing was overhauled and now looks much better, new APIs are used so that Vista draws the menus - (with theme) but the status icons are still present. - - * added UAC button for "Remove" from the options dialog. - - * Removed GetMenuItemInfo() debug message box. - - * Note: Miranda is a 32bit application, 64bit editions of Windows require a 64bit extension DLL, this is not possible at present. - - ---New features (2.0.0.9+) - - * shlext is now compiled with Free Pascal 2.2.2 which is a newer compiler with better - optimisations so shlext should be faster. (2002 v.s. 2008) - - * shlext now works with Miranda 0.8.x UUID typing system and 0.8.xx plugin loading APIs, - 0.7.xx still works too however. - - * shlext now keeps track of recently used contacts and builds a "MRU" menu for quick - access within the menu system. This cannot be disabled, if you hate this feature, - please stick pins into a voodoo doll named "Christian", that is all. - - * The menu strings "Recently" and "Clear entries" are translate()able but MRU is not. - - ---New features (1.0.6.6+) - - * shlext will now use all your icons per protocol, **not** just the first iconset - it finds, it will also use everything properly (because it doesn't do the icon - extraction, it just asks Miranda [don't ask why it didn't do this before :P]) - - * shlext will now use a Translate()'d version of "Miranda" so that each menu - shown for a profile can be given a custom user string - - * reimplemented file/folder selection, finally! a work-as-expected version, it will - scan and add all files and folders you give it, producing a file list in the background - (scanning your drive) and then send the list to Miranda to send to your selected contact. - - * Added option for disabling status icons in menus, which means that you can use shlext - with shell variants/file managers that invoke the shlext interface, such as FAR, but - don't need/use the icons. - - * Added option about hiding offline users from the context menu, if this option is off - it will fall back onto syncing with your contact list's "hide offline users" - - * Added proper thread safety because Miranda 0.3 now has it. - - * Completely reimplemented group parsing, which means that all the old group bugs - can be expected to be gone, note that shlext will now even create menus for - subgroups of the same name, e.g. "Miranda\Miranda". - - * shlext will now not show a menu for a running Miranda fails the following checks: - - * not running shlext (duh) - * no non-offline contacts (or you have the setting 'hide offline users') - * and so on - - * shlext will now also completely ignore contacts on protocols who have no file transfer support - - - ---Features - - shlext can: - - * allow you to refer to your entire contact list from a file/folder context - menu, this includes multiple profiles! if you have Miranda running - different profiles, you'll see all your profiles as menu items as long - as you're running shlext as a Miranda plugin in that profile. - - * Group ability, see a faithful menu rendition of your group hierarchy. - This means you can go something like File->My Profile->Work->Friends->Dude... - - This feature can also be turned off, or enabled in sync with your contact - list option to "Disable groups", this is a per profile setting, i.e. setting - disable groups on one profile won't affect other profiles running shlext. - - * Multi protocol aware, shlext can send to anyone on your contact list - not just ICQ! - - * Each contact will be shown next to their status icon, as selected in your - profile(s) which means that you'll easily feel at home with the icons, - because they will be used as how they are set in each profile. - - * lots of files, shlext will now, if given a directory/folder go into that - folder and scan for files and sub directories/folders til it's added - everything. - - This means if you send c:\foobar, it will search c:\foobar\*.* for more - files to add, it will also add c:\foobar as a directory space to send. - Which means that if the other side hasn't got a 'foobar' directory, it will - be created! (Note: recreating directory trees depends on the protocol being used to send) - - - --Quirks - - * shlext displays all your users by default, if your contact list is set to - NOT show offline users, then shlext will not show them. - - * shlext doesn't use all your group settings, it will not ad here to - "hide offline users in here", however if a group has got offline users - it won't show them (per setting option!) - - - - ---Important changes - - Older versions of shlext did not go into folders more than one level, i.e. - if you added c:\foobar it would scan for c:\foobar\*.* and add all the files - but not go into each directory\folder deeper than that! - - shlext also now does background selection scanning, which means when you select - a group of files/folders/directories, it will let you get on with chating - until it's made a file list which you can send to the person you've selected. - - shlext will NOT send any file/folder/directory that is marked "hidden" - - Also, sometimes you will see "n files, 1 directory" when you say select something - e.g. c:\foobar, this is because shlext now also includes the top level directory so that the - remote side will know to create it, as well as sub directories. - - - - ---But Miranda has drag'n'drop! - - Yeah, that's okay when you can reach Miranda, but I have multiple profiles and - the "hide after NN seconds" option enabled, also I have groups! - - Miranda doesn't auto expand a group when someone is online unless you do that - yourself, which means drag 'n' drop has failed. Also, when you've selected a - large amount of files, Miranda will *freeze* completely whilst - it 1) scans all those files, 2) builds a copy of the given send list - - Whilst shlext only freezes Miranda for the latter, and that is seldom a "complete freeze". - - And of course, shlext uses Miranda 0.3's advanced threading services, which means - if you've asked shlext to build a massive send list, you can still exit Miranda safely - which you can't with drag 'n' drop! - - - - ---Installation - - If you've never installed shlext before, all you have to do is install it like - any other Miranda plugin, i.e. copy it to your plugins directory. - - That's it! you should goto Miranda->Options->Plugins->Shell Context Menus - to see if you'd like to set any of the options, however shlext works straight - out of the box and you don't really need to set anything up after that. - - If you want to use shlext with multiple profiles, you don't have to do any - special setting up either, just make sure that shlext is running with each Miranda - you want shlext to show a menu contact list for. - - Make sure ALL copies of shlext.dll are the same, i.e. 1.0.6.6, if they're not - then shlext will fail (this doesn't mean 'crash'). - - - ---Upgrading/Removing - - Upgrading shlext has always been a pain for users (and me!) this is because - shlext.dll runs in Windows and in Miranda (at the same time). - - So when you've shutdown Miranda, shlext.dll maybe kept in memory by Windows - to make things worse, clicking any file/folder will result in shlext.dll being - reloaded, so if you do shlext.dll->Delete, Windows will ask shlext.dll if - it wants to show any menus, nevermind the fact delete was selected! - - This happens also if you just press 'delete' whilst shlext.dll is selected. - - However! All is not lost, this is what you do: - - * goto M->Options->Plugins and disable shlext.dll as a Miranda plugin - * goto M->Options->Plugins->Shell context menus and click 'Remove'. - * Shutdown Miranda IM - - Advanced users only: ---------------------------------------------------- - - * Do all the above and then open a console window (Command prompt, etc) - * Make sure all applications have been shutdown - * Goto the directory where Miranda is, e.g. c:\, cd Miranda - * Goto Start->Shutdown, let the dialog come up and hold CTRL+ALT+SHIFT - and press cancel. - - This will shutdown Explorer but not Windows, you can now do: del shlext.dll - - * now run Explorer.exe usually in C:\Windows, shlext.dll will be removed. - - ---------------------------------------------------------------------------- - - The remove button will ask Windows not to load it anymore, by removing - all shlext registry entries, the button will also remove any settings from your - profile settings database that it may of made. - - You should now be able to delete shlext.dll! however if you still are unable - to, you may need to log out (if you're using XP/2000/NT) if you're using - 9x then you may have to restart Windows (pain I know, sorry!) - - You should now be free of old shlext copies and you can refer to "Installation" - above. - - If you were using shlext.dll with multiple profiles, the remove shlext - from each profile as stated above and then copy the newer shlext.dll to - your plugins folder. - - ---Translation - - I haven't been nice about translation strings in the past, but you - can pretty much translate everything shlext uses a string, even - "Miranda" which is shown in the menu. - - Note that some strings can't be translated, this is because some parts - of the plugin run within Explorer and that doesn't have access to Miranda's - langpacks, the "Miranda" string that appears in menus is a special exception - - ; - ; Translate()'able strings for shlext/2.0.0.9 - ; - - ;"Miranda" limited to 63characters! (exceed and it's chopped) - ;[Miranda] - ;[Problem, registration missing/deleted.] - ;[Successfully created shell registration.] - ;[Not Approved] - ;[Approved] - ;[Are you sure? this will remove all the settings stored in your database and all registry entries created for shlext to work with Explorer] - ;[Disable/Remove shlext] - ;[Shell context menus] - - ; new in 2.0.0.9, both these strings cannot be longer than 63 chracters - ;[Clear entries] - ;[Recently] - - ;IDD_SHLOPTS - ;[Menus] - ;[Display contacts in their assigned groups (if any)] - ;[Only if/when the contact list is using them] - ;[Display hidden, ignored or temporary contacts] - ;[Shell Status] - ;[Do not display the profile name in use] - ;[Contact Status] - ;[Show contacts that you have set privacy rules for] - ;[Remove] - ;[Do not show status icons in menus] - ;[Do not show contacts that are offline, even if my contact list does] - - - - - ---License - - Like Miranda, shlext is released under the GPL, you may find the full - FreePascal source-code on the CVS in plugins module 'shlext' - - You will need at least FreePascal/2.2.2, GNU make (if you want to use the makefile) - - Follow the CVS links from http://sf.net/projects/miranda-icq/ - - Note: All the tools used to build shlext are also under the GPL! - - - ---Contact/Bug reporting - - In the past shlext hasn't been as stable as it could be, but this was mainly - due to the problems of 0.2.0.0 and early 0.3.0.0 Miranda builds, I've taken - care to make sure things are stable as can be. - - If you have any problems/crashes, please contact me at: egodust at users.sf.net. - - Please include the following information: Windows version, service packs installed, - build version of Explorer, Miranda version, shlext version, a list of plugins - that you think maybe involved in crashes, steps to reproduce errors and so on. - - Note that shlext has been blamed for several bugs that were not shlext's fault, - for example the file xfer cancel bug was in ICQ and Miranda but not shlext ;) - - - ---Credits - - Tig-crash\d - Thanks for beta testing every version before this one ;) - Erik?, DD Of Borg - Thanks for beta testing 0.0.2.2/1.0.6.6 -- ideas and suggestions - as well what to exactly steal from ShellFileSend, heh.. \ No newline at end of file diff --git a/plugins/!Deprecated/ShlExt/make.bat b/plugins/!Deprecated/ShlExt/make.bat deleted file mode 100644 index cafec3c210..0000000000 --- a/plugins/!Deprecated/ShlExt/make.bat +++ /dev/null @@ -1,25 +0,0 @@ -@echo off -set p1=%1 -set p2=%2 -if "%p1%" == "" (echo "please specify target platform by adding 'fpc' or 'fpc64 parameter to command line!'"&&pause&&goto :EOF) -if "%p2%" == "" (echo "please specify target output directory by adding 10 for bin10 or 11 for bin11 or 12 for bin12 to command line!'"&&pause&&goto :EOF) -if /i '%1' == 'fpc' ( - set OUTDIR="..\..\bin%2\Release\Plugins" - set FPCBIN=fpc.exe -) else if /i '%1' == 'fpc64' ( - set OUTDIR="..\..\bin%2\Release64\Plugins" - set FPCBIN=ppcrossx64.exe -) -set PROJECT=ShlExt - -if not exist %OUTDIR% mkdir %OUTDIR% -md tmp - -%FPCBIN% @..\Utils.pas\fpc.cfg %PROJECT%.dpr %3 %4 %5 %6 %7 %8 %9 -if errorlevel 1 exit /b 1 - -move .\tmp\%PROJECT%.dll %OUTDIR% -move .\tmp\%PROJECT%.map . -del /Q tmp\* -rd tmp -exit /b 0 diff --git a/plugins/!Deprecated/ShlExt/resource.h b/plugins/!Deprecated/ShlExt/resource.h deleted file mode 100644 index c89660a88d..0000000000 --- a/plugins/!Deprecated/ShlExt/resource.h +++ /dev/null @@ -1,13 +0,0 @@ -#define IDD_SHLOPTS 101 -#define IDC_USEGROUPS 1014 -#define IDC_CLISTGROUPS 1015 -#define IDC_SHOWFULL 1016 -#define IDC_NOPROF 1020 -#define IDC_SHOWINVISIBLES 1021 -#define IDC_HIDEOFFLINE 1022 -#define IDC_STATUS 1023 -#define IDC_CAPMENUS 1025 -#define IDC_CAPSTATUS 1026 -#define IDC_CAPSHLSTATUS 1027 -#define IDC_REMOVE 1028 -#define IDC_USEOWNERDRAW 1029 diff --git a/plugins/!Deprecated/ShlExt/shlc.inc b/plugins/!Deprecated/ShlExt/shlc.inc deleted file mode 100644 index 2952de8c74..0000000000 --- a/plugins/!Deprecated/ShlExt/shlc.inc +++ /dev/null @@ -1,144 +0,0 @@ -{$IFDEF SHL_IDC} - -const - IDD_SHLOPTS = 101; - IDC_USEGROUPS = 1014; - IDC_CLISTGROUPS = 1015; - // Show "HIT" - IDC_SHOWFULL = 1016; - IDC_NOPROF = 1020; - IDC_SHOWINVISIBLES = 1021; - IDC_HIDEOFFLINE = 1022; - // only in the options dialog - IDC_STATUS = 1023; - IDC_CAPMENUS = 1025; - IDC_CAPSTATUS = 1026; - IDC_CAPSHLSTATUS = 1027; - IDC_REMOVE = 1028; - IDC_USEOWNERDRAW = 1029; -{$ENDIF} -{$IFDEF SHL_KEYS} - -const - SHLExt_Name: PChar = 'shlext15'; - SHLExt_MRU: PChar = 'MRU'; - SHLExt_UseGroups: PChar = 'UseGroups'; - SHLExt_UseCListSetting: PChar = 'UseCLGroups'; - SHLExt_UseHITContacts: PChar = 'UseHITContacts'; - // HIT2 contacts will get your messages but don't know your state - SHLExt_UseHIT2Contacts: PChar = 'UseHIT2Contacts'; - SHLExt_ShowNoProfile: PChar = 'ShowNoProfile'; - SHLExt_ShowNoIcons: PChar = 'ShowNoIcons'; - SHLExt_ShowNoOffline: PChar = 'ShowNoOffline'; -{$ENDIF} -{$IFDEF SHLCOM} - -const - - S_OK = 0; - S_FALSE = 1; - - E_UNEXPECTED = $8000FFFF; - E_NOTIMPL = $80004001; - E_INVALIDARG = $80070057; - - CLASS_E_NOAGGREGATION = $80040110; - CLASS_E_CLASSNOTAVAILABLE = $80040111; - - CLSCTX_INPROC_SERVER = $1; - - { for FORMATETC } - - TYMED_HGLOBAL = 1; - DVASPECT_CONTENT = 1; - -type - - PGUID = ^TGUID; - - TGUID = record - D1: Longword; - D2: Word; - D3: Word; - D4: array [0 .. 7] of Byte; - end; - - TIID = TGUID; - TCLSID = TGUID; - - TStgMedium = record - tymed: Longint; - case Integer of - 0: (hBitmap: hBitmap; unkForRelease: Pointer { IUnknown } ); - 1: (hMetaFilePict: THandle); - 2: (hEnhMetaFile: THandle); - 3: (hGlobal: hGlobal); - 4: (lpszFileName: Pointer { POleStr } ); - 5: (stm: Pointer { IUnknown } ); - 6: (stg: Pointer { IStorage } ); - end; - - PFormatEtc = ^TFormatEtc; - - TFormatEtc = record - cfFormat: Word; { TClipFormat; } - ptd: Pointer; { PDVTargetDevice; } - dwAspect: Longint; - lindex: Longint; - tymed: Longint; - end; - -{$ENDIF} -{$IFDEF COM_STRUCTS} - -const - - IID_IUnknown: TGUID = (D1: $00000000; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - - IID_IClassFactory: TGUID = (D1: $00000001; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - - IID_IShellExtInit: TGUID = (D1: $000214E8; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - - IID_IContextMenu: TGUID = (D1: $000214E4; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - - IID_IContextMenu2: TGUID = (D1: $000214F4; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - - IID_IContextMenu3: TGUID = (D1: $BCFCE0A0; D2: $EC17; D3: $11D0; - D4: ($8D, $10, $00, $A0, $C9, $0F, $27, $19)); - - IID_WICImagingFactory: TGUID = (D1: $EC5EC8A9; D2: $C395; D3: $4314; - D4: ($9C, $77, $54, $D7, $A9, $35, $FF, $70)); - - - // Vista+ only - - CLSID_WICImagingFactory: TGUID = (D1: $CACAF262; D2: $9370; D3: $4615; - D4: ($A1, $3B, $9F, $55, $39, $DA, $4C, $0A)); - - // anything before 0.0.1.5 was : {A321A032-7976-11d6-A310-ED893982BF28} - // changed to a new GUID to avoid older plugins - // {72013A26-A94C-11d6-8540-A5E62932711D} - // the IPC header now checks the plugin version given anyway. - - CLSID_ISHLCOM: TGUID = (D1: $72013A26; D2: $A94C; D3: $11D6; - D4: ($85, $40, $A5, $E6, $29, $32, $71, $1D);); -{$ENDIF} -{$IFDEF COMAPI} -function CoCreateInstance(const rclsid: TCLSID; pUnkOuter: Pointer; dwClsContext: DWORD; - const riid: TIID; var ppv): HResult; stdcall; external 'ole32.dll' name 'CoCreateInstance'; -procedure ReleaseStgMedium(var medium: TStgMedium); stdcall; - external 'ole32.dll' name 'ReleaseStgMedium'; -function IsEqualGUID(const guid1, guid2: TGUID): Boolean; stdcall; - external 'ole32.dll' name 'IsEqualGUID'; -function IsEqualIID(const iid1, iid2: TIID): Boolean; stdcall; - external 'ole32.dll' name 'IsEqualGUID'; -function IsEqualCLSID(const clsid1, clsid2: TCLSID): Boolean; stdcall; - external 'ole32.dll' name 'IsEqualGUID'; -function QueueUserAPC(pfnAPC: Pointer; hThread: THandle; dwData: DWORD): BOOL; stdcall; - external 'kernel32' name 'QueueUserAPC'; -{$ENDIF} diff --git a/plugins/!Deprecated/ShlExt/shlcom.pas b/plugins/!Deprecated/ShlExt/shlcom.pas deleted file mode 100644 index 93a5d27695..0000000000 --- a/plugins/!Deprecated/ShlExt/shlcom.pas +++ /dev/null @@ -1,2471 +0,0 @@ -unit shlcom; - -{$IFDEF FPC} -{$PACKRECORDS 4} -{$MODE Delphi} -{$ENDIF} - -interface - -uses - - Windows, m_api, shlipc, shlicons; - -{$DEFINE COM_STRUCTS} -{$DEFINE SHLCOM} -{$INCLUDE shlc.inc} -{$UNDEF SHLCOM} -{$UNDEF COM_STRUCTS} -function DllGetClassObject(const CLSID: TCLSID; const IID: TIID; var Obj): HResult; stdcall; -function DllCanUnloadNow: HResult; stdcall; - -procedure InvokeThreadServer; - -procedure CheckRegisterServer; - -procedure CheckUnregisterServer; - -function RemoveCOMRegistryEntries: HResult; - -function ExtractIcon(hInst: THandle; pszExe: PChar; nIndex: Integer): HICON; stdcall; - external 'shell32.dll' name 'ExtractIconA'; - -implementation - -var - dllpublic: record - FactoryCount: Integer; - ObjectCount: Integer; - end; - - VistaOrLater:Boolean; - -{$DEFINE COMAPI} -{$INCLUDE shlc.inc} -{$UNDEF COMAPI} - -const - - IPC_PACKET_SIZE = $1000 * 32; - // IPC_PACKET_NAME = 'm.mi.miranda.ipc'; // prior to 1.0.6.6 - // IPC_PACKET_NAME = 'mi.miranda.IPCServer'; // prior to 2.0.0.9 - IPC_PACKET_NAME = 'm.mi.miranda.ipc.server'; - -const - - { Flags returned by IContextMenu*:QueryContextMenu() } - - CMF_NORMAL = $00000000; - CMF_DEFAULTONLY = $00000001; - CMF_VERBSONLY = $00000002; - CMF_EXPLORE = $00000004; - CMF_NOVERBS = $00000008; - CMF_CANRENAME = $00000010; - CMF_NODEFAULT = $00000020; - CMF_INCLUDESTATIC = $00000040; - CMF_RESERVED = $FFFF0000; { view specific } - - { IContextMenu*:GetCommandString() uType flags } - - GCS_VERBA = $00000000; // canonical verb - GCS_HELPTEXTA = $00000001; // help text (for status bar) - GCS_VALIDATEA = $00000002; // validate command exists - GCS_VERBW = $00000004; // canonical verb (unicode) - GC_HELPTEXTW = $00000005; // help text (unicode version) - GCS_VALIDATEW = $00000006; // validate command exists (unicode) - GCS_UNICODE = $00000004; // for bit testing - Unicode string - GCS_VERB = GCS_VERBA; // - GCS_HELPTEXT = GCS_HELPTEXTA; - GCS_VALIDATE = GCS_VALIDATEA; - -type - - { this structure is returned by InvokeCommand() } - - PCMInvokeCommandInfo = ^TCMInvokeCommandInfo; - - TCMInvokeCommandInfo = packed record - cbSize: DWORD; - fMask: DWORD; - hwnd: hwnd; - lpVerb: PChar; { maybe index, type cast as Integer } - lpParams: PChar; - lpDir: PChar; - nShow: Integer; - dwHotkey: DWORD; - HICON: THandle; - end; - - { completely stolen from modules.c: 'NameHashFunction' modified slightly } - -function StrHash(const szStr: PChar): DWORD;// cdecl; -begin - result:=mir_hash(szStr,strlen(szStr)); -{ -asm - // esi content has to be preserved with basm - push esi - xor edx,edx - xor eax,eax - mov esi,szStr - mov al,[esi] - xor cl,cl -@@lph_top: // only 4 of 9 instructions in here don't use AL, so optimal pipe use is impossible - xor edx,eax - inc esi - xor eax,eax - and cl,31 - mov al,[esi] - add cl,5 - test al,al - rol eax,cl // rol is u-pipe only, but pairable - // rol doesn't touch z-flag - jnz @@lph_top // 5 clock tick loop. not bad. - xor eax,edx - pop esi -} -end; - -function CreateProcessUID(const pid: Cardinal): string; -var - pidrep: string[16]; -begin - str(pid, pidrep); - Result := Concat('mim.shlext.', pidrep, '$'); -end; - -function CreateUID: string; -var - pidrep, tidrep: string[16]; -begin - str(GetCurrentProcessId(), pidrep); - str(GetCurrentThreadId(), tidrep); - Result := Concat('mim.shlext.caller', pidrep, '$', tidrep); -end; - -// FPC doesn't support array[0..n] of Char extended syntax with Str() - -function wsprintf(lpOut, lpFmt: PChar; ArgInt: Integer): Integer; cdecl; - external 'user32.dll' name 'wsprintfA'; - -procedure str(i: Integer; S: PChar); -begin - i := wsprintf(S, '%d', i); - if i > 2 then - PChar(S)[i] := #0; -end; - -{ IShlCom } - -type - - PLResult = ^LResult; - - // bare minimum interface of IDataObject, since GetData() is only required. - - PVTable_IDataObject = ^TVTable_IDataObject; - - TVTable_IDataObject = record - { IUnknown } - QueryInterface: Pointer; - AddRef: function(Self: Pointer): Cardinal; stdcall; - Release: function(Self: Pointer): Cardinal; stdcall; - { IDataObject } - GetData: function(Self:Pointer; var formatetcIn:TFormatEtc; var medium:TStgMedium): HResult; stdcall; - GetDataHere: Pointer; - QueryGetData: Pointer; - GetCanonicalFormatEtc: Pointer; - SetData: Pointer; - EnumFormatEtc: Pointer; - DAdvise: Pointer; - DUnadvise: Pointer; - EnumDAdvise: Pointer; - end; - - PDataObject_Interface = ^TDataObject_Interface; - - TDataObject_Interface = record - ptrVTable: PVTable_IDataObject; - end; - - { TShlComRec inherits from different interfaces with different function tables - all "compiler magic" is lost in this case, but it's pretty easy to return - a different function table for each interface, IContextMenu is returned - as IContextMenu'3' since it inherits from '2' and '1' } - - PVTable_IShellExtInit = ^TVTable_IShellExtInit; - - TVTable_IShellExtInit = record - { IUnknown } - QueryInterface: Pointer; - AddRef: Pointer; - Release: Pointer; - { IShellExtInit } - Initialise: Pointer; - end; - - PShlComRec = ^TShlComRec; - PShellExtInit_Interface = ^TShellExtInit_Interface; - - TShellExtInit_Interface = record - { pointer to function table } - ptrVTable: PVTable_IShellExtInit; - { instance data } - ptrInstance: PShlComRec; - { function table itself } - vTable: TVTable_IShellExtInit; - end; - - PVTable_IContextMenu3 = ^TVTable_IContextMenu3; - - TVTable_IContextMenu3 = record - { IUnknown } - QueryInterface: Pointer; - AddRef: Pointer; - Release: Pointer; - { IContextMenu } - QueryContextMenu: Pointer; - InvokeCommand: Pointer; - GetCommandString: Pointer; - { IContextMenu2 } - HandleMenuMsg: Pointer; - { IContextMenu3 } - HandleMenuMsg2: Pointer; - end; - - PContextMenu3_Interface = ^TContextMenu3_Interface; - - TContextMenu3_Interface = record - ptrVTable: PVTable_IContextMenu3; - ptrInstance: PShlComRec; - vTable: TVTable_IContextMenu3; - end; - - PCommon_Interface = ^TCommon_Interface; - - TCommon_Interface = record - ptrVTable: Pointer; - ptrInstance: PShlComRec; - end; - - TShlComRec = record - ShellExtInit_Interface: TShellExtInit_Interface; - ContextMenu3_Interface: TContextMenu3_Interface; - { fields } - RefCount: LongInt; - // this is owned by the shell after items are added 'n' is used to - // grab menu information directly via id rather than array indexin' - hRootMenu: THandle; - idCmdFirst: Integer; - // most of the memory allocated is on this heap object so HeapDestroy() - // can do most of the cleanup, extremely lazy I know. - hDllHeap: THandle; - // This is a submenu that recently used contacts are inserted into - // the contact is inserted twice, once in its normal list (or group) and here - // Note: These variables are global data, but refered to locally by each instance - // Do not rely on these variables outside the process enumeration. - hRecentMenu: THandle; - RecentCount: Cardinal; // number of added items - // array of all the protocol icons, for every running instance! - ProtoIcons: ^TSlotProtoIconsArray; - ProtoIconsCount: Cardinal; - // maybe null, taken from IShellExtInit_Initalise() and AddRef()'d - // only used if a Miranda instance is actually running and a user - // is selected - pDataObject: PDataObject_Interface; - // DC is used for font metrics and saves on creating and destroying lots of DC handles - // during WM_MEASUREITEM - hMemDC: HDC; - end; - - { this is passed to the enumeration callback so it can process PID's with - main windows by the class name MIRANDANAME loaded with the plugin - and use the IPC stuff between enumerations -- } - - PEnumData = ^TEnumData; - - TEnumData = record - Self: PShlComRec; - // autodetected, don't hard code since shells that don't support it - // won't send WM_MEASUREITETM/WM_DRAWITEM at all. - bOwnerDrawSupported: LongBool; - // as per user setting (maybe of multiple Mirandas) - bShouldOwnerDraw: LongBool; - idCmdFirst: Integer; - ipch: PHeaderIPC; - // OpenEvent()'d handle to give each IPC server an object to set signalled - hWaitFor: THandle; - pid: DWORD; // sub-unique value used to make work object name - end; - -procedure FreeGroupTreeAndEmptyGroups(hParentMenu: THandle; pp, p: PGroupNode); -var - q: PGroupNode; -begin - while p <> nil do - begin - q := p^.Right; - if p^.Left <> nil then - begin - FreeGroupTreeAndEmptyGroups(p^.Left^.hMenu, p, p^.Left); - end; // if - if p^.dwItems = 0 then - begin - if pp <> nil then - begin - DeleteMenu(pp^.hMenu, p^.hMenuGroupID, MF_BYCOMMAND) - end - else - begin - DeleteMenu(hParentMenu, p^.hMenuGroupID, MF_BYCOMMAND); - end; // if - end - else - begin - // make sure this node's parent know's it exists - if pp <> nil then - inc(pp^.dwItems); - end; - Dispose(p); - p := q; - end; -end; - -procedure DecideMenuItemInfo(pct: PSlotIPC; pg: PGroupNode; var mii: TMenuItemInfo; lParam: PEnumData); -var - psd: PMenuDrawInfo; - hDllHeap: THandle; - c: Cardinal; - pp: ^TSlotProtoIconsArray; -begin - mii.wID := lParam^.idCmdFirst; - inc(lParam^.idCmdFirst); - // get the heap object - hDllHeap := lParam^.Self^.hDllHeap; - psd := HeapAlloc(hDllHeap, 0, sizeof(TMenuDrawInfo)); - if pct <> nil then - begin - psd^.cch := pct^.cbStrSection - 1; // no null; - psd^.szText := HeapAlloc(hDllHeap, 0, pct^.cbStrSection); - lstrcpya(psd^.szText, PChar(uint_ptr(pct) + sizeof(TSlotIPC))); - psd^.hContact := pct^.hContact; - psd^.fTypes := [dtContact]; - // find the protocol icon array to use and which status - c := lParam^.Self^.ProtoIconsCount; - pp := lParam^.Self^.ProtoIcons; - psd^.hStatusIcon := 0; - while c > 0 do - begin - dec(c); - if (pp[c].hProto = pct^.hProto) and (pp[c].pid = lParam^.pid) then - begin - psd^.hStatusIcon := pp[c].hIcons[pct^.Status - ID_STATUS_OFFLINE]; - psd^.hStatusBitmap := pp[c].hBitmaps[pct^.Status - ID_STATUS_OFFLINE]; - break; - end; - end; // while - psd^.pid := lParam^.pid; - end - else if pg <> nil then - begin - // store the given ID - pg^.hMenuGroupID := mii.wID; - // steal the pointer from the group node it should be on the heap - psd^.cch := pg^.cchGroup; - psd^.szText := pg^.szGroup; - psd^.fTypes := [dtGroup]; - end; // if - psd^.wID := mii.wID; - psd^.szProfile := nil; - // store - mii.dwItemData := uint_ptr(psd); - - if ((lParam^.bOwnerDrawSupported) and (lParam^.bShouldOwnerDraw)) then - begin - mii.fType := MFT_OWNERDRAW; - Pointer(mii.dwTypeData) := psd; - end - else - begin - // normal menu - mii.fType := MFT_STRING; - if pct <> nil then - begin - uint_ptr(mii.dwTypeData) := uint_ptr(pct) + sizeof(TSlotIPC); - end - else - begin - mii.dwTypeData := pg^.szGroup; - end; - { For Vista + let the system draw the theme and icons, pct = contact associated data } - if VistaOrLater and (pct <> nil) and (psd <> nil) then - begin - mii.fMask := MIIM_BITMAP or MIIM_FTYPE or MIIM_ID or MIIM_DATA or MIIM_STRING; - // BuildSkinIcons() built an array of bitmaps which we can use here - mii.hBmpItem := psd^.hStatusBitmap; - end; - end; // if -end; - -// must be called after DecideMenuItemInfo() -procedure BuildMRU(pct: PSlotIPC; var mii: TMenuItemInfo; lParam: PEnumData); -begin - if pct^.MRU > 0 then - begin - inc(lParam^.Self^.RecentCount); - // lParam^.Self == pointer to object data - InsertMenuitem(lParam^.Self^.hRecentMenu, $FFFFFFFF, True, mii); - end; -end; - -procedure BuildContactTree(group: PGroupNode; lParam: PEnumData); -label - grouploop; -var - pct: PSlotIPC; - pg, px: PGroupNode; - str: TStrTokRec; - sz: PChar; - Hash: Cardinal; - Depth: Cardinal; - mii: TMenuItemInfo; -begin - // set up the menu item - mii.cbSize := sizeof(TMenuItemInfo); - mii.fMask := MIIM_ID or MIIM_TYPE or MIIM_DATA; - // set up the scanner - str.szSet := ['\']; - str.bSetTerminator := False; - // go thru all the contacts - pct := lParam^.ipch^.ContactsBegin; - while (pct <> nil) and (pct^.cbSize = sizeof(TSlotIPC)) and (pct^.fType = REQUEST_CONTACTS) do - begin - if pct^.hGroup <> 0 then - begin - // at the end of the slot header is the contact's display name - // and after a double NULL char there is the group string, which has the full path of the group - // this must be tokenised at '\' and we must walk the in memory group tree til we find our group - // this is faster than the old version since we only ever walk one or at most two levels of the tree - // per tokenised section, and it doesn't matter if two levels use the same group name (which is valid) - // as the tokens processed is equatable to depth of the tree - str.szStr := PChar(uint_ptr(pct) + sizeof(TSlotIPC) + uint_ptr(pct^.cbStrSection) + 1); - sz := StrTok(str); - // restore the root - pg := group; - Depth := 0; - while sz <> nil do - begin - Hash := StrHash(sz); - // find this node within - while pg <> nil do - begin - // does this node have the right hash and the right depth? - if (Hash = pg^.Hash) and (Depth = pg^.Depth) then - break; - // each node may have a left pointer going to a sub tree - // the path syntax doesn't know if a group is a group at the same level - // or a nested one, which means the search node can be anywhere - px := pg^.Left; - if px <> nil then - begin - // keep searching this level - while px <> nil do - begin - if (Hash = px^.Hash) and (Depth = px^.Depth) then - begin - // found the node we're looking for at the next level to pg, px is now pq for next time - pg := px; - goto grouploop; - end; // if - px := px^.Right; - end; // if - end; // if - pg := pg^.Right; - end; // while - grouploop: - inc(Depth); - // process next token - sz := StrTok(str); - end; // while - // tokenisation finished, if pg <> nil then the group is found - if pg <> nil then - begin - DecideMenuItemInfo(pct, nil, mii, lParam); - BuildMRU(pct, mii, lParam); - InsertMenuitem(pg^.hMenu, $FFFFFFFF, True, mii); - inc(pg^.dwItems); - end; - end; // if - pct := pct^.Next; - end; // while -end; - -procedure BuildMenuGroupTree(p: PGroupNode; lParam: PEnumData; hLastMenu: hMenu); -var - mii: TMenuItemInfo; -begin - mii.cbSize := sizeof(TMenuItemInfo); - mii.fMask := MIIM_ID or MIIM_DATA or MIIM_TYPE or MIIM_SUBMENU; - // go thru each group and create a menu for it adding submenus too. - while p <> nil do - begin - mii.hSubMenu := CreatePopupMenu(); - if p^.Left <> nil then - BuildMenuGroupTree(p^.Left, lParam, mii.hSubMenu); - p^.hMenu := mii.hSubMenu; - DecideMenuItemInfo(nil, p, mii, lParam); - InsertMenuitem(hLastMenu, $FFFFFFFF, True, mii); - p := p^.Right; - end; // while -end; - -{ this callback is triggered by the menu code and IPC is already taking place, - just the transfer type+data needs to be setup } -function ClearMRUIPC(pipch: PHeaderIPC; // IPC header info, already mapped - hWorkThreadEvent: THandle; // event object being waited on on miranda thread - hAckEvent: THandle; // ack event object that has been created - psd: PMenuDrawInfo // command/draw info - ): Integer; stdcall; -begin - Result := S_OK; - ipcPrepareRequests(IPC_PACKET_SIZE, pipch, REQUEST_CLEARMRU); - ipcSendRequest(hWorkThreadEvent, hAckEvent, pipch, 100); -end; - -procedure RemoveCheckmarkSpace(hMenu: hMenu); -const - MIM_STYLE = $00000010; - MNS_CHECKORBMP = $4000000; -type - TMENUINFO = record - cbSize: DWORD; - fMask: DWORD; - dwStyle: DWORD; - cyMax: LongInt; - hbrBack: THandle; - dwContextHelpID: DWORD; - dwMenuData: Pointer; - end; -var - SetMenuInfo: function(hMenu: hMenu; var mi: TMENUINFO): Boolean; stdcall; - mi: TMENUINFO; -begin - if not VistaOrLater then - Exit; - SetMenuInfo := GetProcAddress(GetModuleHandle('user32'), 'SetMenuInfo'); - if @SetMenuInfo = nil then - Exit; - mi.cbSize := sizeof(mi); - mi.fMask := MIM_STYLE; - mi.dwStyle := MNS_CHECKORBMP; - SetMenuInfo(hMenu, mi); -end; - -procedure BuildMenus(lParam: PEnumData); -{$DEFINE SHL_IDC} -{$DEFINE SHL_KEYS} -{$INCLUDE shlc.inc} -{$UNDEF SHL_KEYS} -{$UNDEF SHL_IDC} -var - hBaseMenu: hMenu; - hGroupMenu: hMenu; - pg: PSlotIPC; - mii: TMenuItemInfo; - j: TGroupNodeList; - p, q: PGroupNode; - Depth, Hash: Cardinal; - Token: PChar; - tk: TStrTokRec; - hDllHeap: THandle; - psd: PMenuDrawInfo; - c: Cardinal; - pp: ^TSlotProtoIconsArray; -begin - ZeroMemory(@mii, sizeof(mii)); - hDllHeap := lParam^.Self^.hDllHeap; - hBaseMenu := lParam^.Self^.hRootMenu; - // build an in memory tree of the groups - pg := lParam^.ipch^.GroupsBegin; - tk.szSet := ['\']; - tk.bSetTerminator := False; - j.First := nil; - j.Last := nil; - while pg <> nil do - begin - if (pg^.cbSize <> sizeof(TSlotIPC)) or (pg^.fType <> REQUEST_GROUPS) then - break; - Depth := 0; - p := j.First; // start at root again - // get the group - uint_ptr(tk.szStr) := (uint_ptr(pg) + sizeof(TSlotIPC)); - // find each word between \ and create sub groups if needed. - Token := StrTok(tk); - while Token <> nil do - begin - Hash := StrHash(Token); - // if the (sub)group doesn't exist, create it. - q := FindGroupNode(p, Hash, Depth); - if q = nil then - begin - q := AllocGroupNode(@j, p, Depth); - q^.Depth := Depth; - // this is the hash of this group node, but it can be anywhere - // i.e. Foo\Foo this is because each node has a different depth - // trouble is contacts don't come with depths! - q^.Hash := Hash; - // don't assume that pg^.hGroup's hash is valid for this token - // since it maybe Miranda\Blah\Blah and we have created the first node - // which maybe Miranda, thus giving the wrong hash - // since "Miranda" can be a group of it's own and a full path - q^.cchGroup := lstrlena(Token); - q^.szGroup := HeapAlloc(hDllHeap, 0, q^.cchGroup + 1); - lstrcpya(q^.szGroup, Token); - q^.dwItems := 0; - end; - p := q; - inc(Depth); - Token := StrTok(tk); - end; // while - pg := pg^.Next; - end; // while - // build the menus inserting into hGroupMenu which will be a submenu of - // the instance menu item. e.g. Miranda -> [Groups ->] contacts - hGroupMenu := CreatePopupMenu(); - - // allocate MRU menu, this will be associated with the higher up menu - // so doesn't need to be freed (unless theres no MRUs items attached) - // This menu is per process but the handle is stored globally (like a stack) - lParam^.Self^.hRecentMenu := CreatePopupMenu(); - lParam^.Self^.RecentCount := 0; - // create group menus only if they exist! - if lParam^.ipch^.GroupsBegin <> nil then - begin - BuildMenuGroupTree(j.First, lParam, hGroupMenu); - // add contacts that have a group somewhere - BuildContactTree(j.First, lParam); - end; - // - mii.cbSize := sizeof(TMenuItemInfo); - mii.fMask := MIIM_ID or MIIM_TYPE or MIIM_DATA; - // add all the contacts that have no group (which maybe all of them) - pg := lParam^.ipch^.ContactsBegin; - while pg <> nil do - begin - if (pg^.cbSize <> sizeof(TSlotIPC)) or (pg^.fType <> REQUEST_CONTACTS) then - break; - if pg^.hGroup = 0 then - begin - DecideMenuItemInfo(pg, nil, mii, lParam); - BuildMRU(pg, mii, lParam); - InsertMenuitem(hGroupMenu, $FFFFFFFF, True, mii); - end; // if - pg := pg^.Next; - end; // while - - // insert MRU menu as a submenu of the contact menu only if - // the MRU list has been created, the menu popup will be deleted by itself - if lParam^.Self^.RecentCount > 0 then - begin - - // insert seperator and 'clear list' menu - mii.fType := MFT_SEPARATOR; - mii.fMask := MIIM_TYPE; - InsertMenuitem(lParam^.Self^.hRecentMenu, $FFFFFFFF, True, mii); - - // insert 'clear MRU' item and setup callback - mii.fMask := MIIM_TYPE or MIIM_ID or MIIM_DATA; - mii.wID := lParam^.idCmdFirst; - inc(lParam^.idCmdFirst); - mii.fType := MFT_STRING; - mii.dwTypeData := lParam^.ipch^.ClearEntries; // "Clear entries" - // allocate menu substructure - psd := HeapAlloc(hDllHeap, 0, sizeof(TMenuDrawInfo)); - psd^.fTypes := [dtCommand]; - psd^.MenuCommandCallback := @ClearMRUIPC; - psd^.wID := mii.wID; - // this is needed because there is a clear list command per each process. - psd^.pid := lParam^.pid; - Pointer(mii.dwItemData) := psd; - InsertMenuitem(lParam^.Self^.hRecentMenu, $FFFFFFFF, True, mii); - - // insert MRU submenu into group menu (with) ownerdraw support as needed - psd := HeapAlloc(hDllHeap, 0, sizeof(TMenuDrawInfo)); - psd^.szProfile := 'MRU'; - psd^.fTypes := [dtGroup]; - // the IPC string pointer wont be around forever, must make a copy - psd^.cch := strlen(lParam^.ipch^.MRUMenuName); - psd^.szText := HeapAlloc(hDllHeap, 0, psd^.cch + 1); - lstrcpyn(psd^.szText, lParam^.ipch^.MRUMenuName, sizeof(lParam^.ipch^.MRUMenuName) - 1); - - pointer(mii.dwItemData) := psd; - if (lParam^.bOwnerDrawSupported) and (lParam^.bShouldOwnerDraw) then - begin - mii.fType := MFT_OWNERDRAW; - Pointer(mii.dwTypeData) := psd; - end - else - begin - mii.dwTypeData := lParam^.ipch^.MRUMenuName; // 'Recent'; - end; - mii.wID := lParam^.idCmdFirst; - inc(lParam^.idCmdFirst); - mii.fMask := MIIM_TYPE or MIIM_SUBMENU or MIIM_DATA or MIIM_ID; - mii.hSubMenu := lParam^.Self^.hRecentMenu; - InsertMenuitem(hGroupMenu, 0, True, mii); - end - else - begin - // no items were attached to the MRU, delete the MRU menu - DestroyMenu(lParam^.Self^.hRecentMenu); - lParam^.Self^.hRecentMenu := 0; - end; - - // allocate display info/memory for "Miranda" string - - mii.cbSize := sizeof(TMenuItemInfo); - mii.fMask := MIIM_ID or MIIM_DATA or MIIM_TYPE or MIIM_SUBMENU; - if VistaOrLater then - begin - mii.fMask := MIIM_ID or MIIM_DATA or MIIM_FTYPE or MIIM_SUBMENU or MIIM_STRING or - MIIM_BITMAP; - end; - mii.hSubMenu := hGroupMenu; - - // by default, the menu will have space for icons and checkmarks (on Vista+) and we don't need this - RemoveCheckmarkSpace(hGroupMenu); - - psd := HeapAlloc(hDllHeap, 0, sizeof(TMenuDrawInfo)); - psd^.cch := strlen(lParam^.ipch^.MirandaName); - psd^.szText := HeapAlloc(hDllHeap, 0, psd^.cch + 1); - lstrcpyn(psd^.szText, lParam^.ipch^.MirandaName, sizeof(lParam^.ipch^.MirandaName) - 1); - // there may not be a profile name - pg := lParam^.ipch^.DataPtr; - psd^.szProfile := nil; - if ((pg <> nil) and (pg^.Status = STATUS_PROFILENAME)) then - begin - psd^.szProfile := HeapAlloc(hDllHeap, 0, pg^.cbStrSection); - lstrcpya(psd^.szProfile, PChar(uint_ptr(pg) + sizeof(TSlotIPC))); - end; // if - // owner draw menus need ID's - mii.wID := lParam^.idCmdFirst; - inc(lParam^.idCmdFirst); - psd^.fTypes := [dtEntry]; - psd^.wID := mii.wID; - psd^.hContact := 0; - // get Miranda's icon or bitmap - c := lParam^.Self^.ProtoIconsCount; - pp := lParam^.Self^.ProtoIcons; - while c > 0 do - begin - dec(c); - if (pp[c].pid = lParam^.pid) and (pp[c].hProto = 0) then - begin - // either of these can be 0 - psd^.hStatusIcon := pp[c].hIcons[0]; - mii.hBmpItem := pp[c].hBitmaps[0]; - break; - end; // if - end; // while - pointer(mii.dwItemData) := psd; - if ((lParam^.bOwnerDrawSupported) and (lParam^.bShouldOwnerDraw)) then - begin - mii.fType := MFT_OWNERDRAW; - Pointer(mii.dwTypeData) := psd; - end - else - begin - mii.fType := MFT_STRING; - mii.dwTypeData := lParam^.ipch^.MirandaName; - mii.cch := sizeof(lParam^.ipch^.MirandaName) - 1; - end; - // add it all - InsertMenuitem(hBaseMenu, 0, True, mii); - // free the group tree - FreeGroupTreeAndEmptyGroups(hGroupMenu, nil, j.First); -end; - -procedure BuildSkinIcons(lParam: PEnumData); -var - pct: PSlotIPC; - p, d: PSlotProtoIcons; - Self: PShlComRec; - j: Cardinal; - imageFactory: PImageFactory_Interface; -begin - pct := lParam^.ipch^.NewIconsBegin; - Self := lParam^.Self; - while (pct <> nil) do - begin - if (pct^.cbSize <> sizeof(TSlotIPC)) or (pct^.fType <> REQUEST_NEWICONS) then - break; - uint_ptr(p) := uint_ptr(pct) + sizeof(TSlotIPC); - ReAllocMem(Self^.ProtoIcons, (Self^.ProtoIconsCount + 1) * sizeof(TSlotProtoIcons)); - d := @Self^.ProtoIcons[Self^.ProtoIconsCount]; - CopyMemory(d, p, sizeof(TSlotProtoIcons)); - - { - If using Vista (or later), clone all the icons into bitmaps and keep these around, - if using anything older, just use the default code, the bitmaps (and or icons) will be freed - with the shell object. - } - - imageFactory := nil; - - for j := 0 to 9 do - begin - if imageFactory = nil then - imageFactory := ARGB_GetWorker(); - if VistaOrLater then - begin - d^.hBitmaps[j] := ARGB_BitmapFromIcon(imageFactory, Self^.hMemDC, p^.hIcons[j]); - d^.hIcons[j] := 0; - end - else - begin - d^.hBitmaps[j] := 0; - d^.hIcons[j] := CopyIcon(p^.hIcons[j]); - end; - end; - - if imageFactory <> nil then - begin - imageFactory^.ptrVTable^.Release(imageFactory); - imageFactory := nil; - end; - - inc(Self^.ProtoIconsCount); - pct := pct^.Next; - end; -end; - -function ProcessRequest(hwnd: hwnd; lParam: PEnumData): BOOL; stdcall; -var - pid: Integer; - hMirandaWorkEvent: THandle; - replyBits: Integer; - szBuf: array [0 .. MAX_PATH] of Char; -begin - Result := True; - pid := 0; - GetWindowThreadProcessId(hwnd, @pid); - If pid <> 0 then - begin - // old system would get a window's pid and the module handle that created it - // and try to OpenEvent() a event object name to it (prefixed with a string) - // this was fine for most Oses (not the best way) but now actually compares - // the class string (a bit slower) but should get rid of those bugs finally. - hMirandaWorkEvent := OpenEvent(EVENT_ALL_ACCESS, False, PChar(CreateProcessUID(pid))); - if (hMirandaWorkEvent <> 0) then - begin - GetClassName(hwnd, szBuf, sizeof(szBuf)); - if lstrcmp(szBuf, MirandaName) <> 0 then - begin - // opened but not valid. - CloseHandle(hMirandaWorkEvent); - Exit; - end; // if - end; // if - { If the event object exists, then a shlext.dll running in the instance must of created it. } - If hMirandaWorkEvent <> 0 then - begin - { prep the request } - ipcPrepareRequests(IPC_PACKET_SIZE, lParam^.ipch, REQUEST_ICONS or REQUEST_GROUPS or - REQUEST_CONTACTS or REQUEST_NEWICONS); - // slots will be in the order of icon data, groups then contacts, the first - // slot will contain the profile name - replyBits := ipcSendRequest(hMirandaWorkEvent, lParam^.hWaitFor, lParam^.ipch, 1000); - { replyBits will be REPLY_FAIL if the wait timed out, or it'll be the request - bits as sent or a series of *_NOTIMPL bits where the request bit were, if there are no - contacts to speak of, then don't bother showing this instance of Miranda } - if (replyBits <> REPLY_FAIL) and (lParam^.ipch^.ContactsBegin <> nil) then - begin - // load the address again, the server side will always overwrite it - lParam^.ipch^.pClientBaseAddress := lParam^.ipch; - // fixup all the pointers to be relative to the memory map - // the base pointer of the client side version of the mapped file - ipcFixupAddresses(False, lParam^.ipch); - // store the PID used to create the work event object - // that got replied to -- this is needed since each contact - // on the final menu maybe on a different instance and another OpenEvent() will be needed. - lParam^.pid := pid; - // check out the user options from the server - lParam^.bShouldOwnerDraw := (lParam^.ipch^.dwFlags and HIPC_NOICONS) = 0; - // process the icons - BuildSkinIcons(lParam); - // process other replies - BuildMenus(lParam); - end; - { close the work object } - CloseHandle(hMirandaWorkEvent); - end; // if - end; // if -end; - -function TShlComRec_QueryInterface(Self: PCommon_Interface; const IID: TIID; var Obj): HResult; stdcall; -begin - Pointer(Obj) := nil; - { IShellExtInit is given when the TShlRec is created } - if IsEqualIID(IID, IID_IContextMenu) or IsEqualIID(IID, IID_IContextMenu2) or - IsEqualIID(IID, IID_IContextMenu3) then - begin - with Self^.ptrInstance^ do - begin - Pointer(Obj) := @ContextMenu3_Interface; - inc(RefCount); - end; { with } - Result := S_OK; - end - else - begin - // under XP, it may ask for IShellExtInit again, this fixes the -double- click to see menus issue - // which was really just the object not being created - if IsEqualIID(IID, IID_IShellExtInit) then - begin - with Self^.ptrInstance^ do - begin - Pointer(Obj) := @ShellExtInit_Interface; - inc(RefCount); - end; // if - Result := S_OK; - end - else - begin - Result := CLASS_E_CLASSNOTAVAILABLE; - end; // if - end; // if -end; - -function TShlComRec_AddRef(Self: PCommon_Interface): LongInt; stdcall; -begin - with Self^.ptrInstance^ do - begin - inc(RefCount); - Result := RefCount; - end; { with } -end; - -function TShlComRec_Release(Self: PCommon_Interface): LongInt; stdcall; -var - j, c: Cardinal; -begin - with Self^.ptrInstance^ do - begin - dec(RefCount); - Result := RefCount; - If RefCount = 0 then - begin - // time to go byebye. - with Self^.ptrInstance^ do - begin - // Note MRU menu is associated with a window (indirectly) so windows will free it. - // free icons! - if ProtoIcons <> nil then - begin - c := ProtoIconsCount; - while c > 0 do - begin - dec(c); - for j := 0 to 9 do - begin - with ProtoIcons[c] do - begin - if hIcons[j] <> 0 then - DestroyIcon(hIcons[j]); - if hBitmaps[j] <> 0 then - DeleteObject(hBitmaps[j]); - end; - end; - end; - FreeMem(ProtoIcons); - ProtoIcons := nil; - end; // if - // free IDataObject reference if pointer exists - if pDataObject <> nil then - begin - pDataObject^.ptrVTable^.Release(pDataObject); - end; // if - pDataObject := nil; - // free the heap and any memory allocated on it - HeapDestroy(hDllHeap); - // destroy the DC - if hMemDC <> 0 then - DeleteDC(hMemDC); - end; // with - // free the instance (class record) created - Dispose(Self^.ptrInstance); - dec(dllpublic.ObjectCount); - end; { if } - end; { with } -end; - -function TShlComRec_Initialise(Self: PContextMenu3_Interface; pidLFolder: Pointer; - DObj: PDataObject_Interface; hKeyProdID: HKEY): HResult; stdcall; -begin - // DObj is a pointer to an instance of IDataObject which is a pointer itself - // it contains a pointer to a function table containing the function pointer - // address of GetData() - the instance data has to be passed explicitly since - // all compiler magic has gone. - with Self^.ptrInstance^ do - begin - if DObj <> nil then - begin - Result := S_OK; - // if an instance already exists, free it. - if pDataObject <> nil then - pDataObject^.ptrVTable^.Release(pDataObject); - // store the new one and AddRef() it - pDataObject := DObj; - pDataObject^.ptrVTable^.AddRef(pDataObject); - end - else - begin - Result := E_INVALIDARG; - end; // if - end; // if -end; - -function MAKE_HRESULT(Severity, Facility, Code: Integer): HResult; -{$IFDEF FPC} -inline; -{$ENDIF} -begin - Result := (Severity shl 31) or (Facility shl 16) or Code; -end; - -function TShlComRec_QueryContextMenu(Self: PContextMenu3_Interface; Menu: hMenu; - indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult; stdcall; -type - TDllVersionInfo = record - cbSize: DWORD; - dwMajorVersion: DWORD; - dwMinorVersion: DWORD; - dwBuildNumber: DWORD; - dwPlatformID: DWORD; - end; - - TDllGetVersionProc = function(var dv: TDllVersionInfo): HResult; stdcall; -var - hShellInst: THandle; - bMF_OWNERDRAW: Boolean; - DllGetVersionProc: TDllGetVersionProc; - dvi: TDllVersionInfo; - ed: TEnumData; - hMap: THandle; - pipch: PHeaderIPC; -begin - Result := 0; - if ((LOWORD(uFlags) and CMF_VERBSONLY) <> CMF_VERBSONLY) and - ((LOWORD(uFlags) and CMF_DEFAULTONLY) <> CMF_DEFAULTONLY) then - begin - bMF_OWNERDRAW := False; - // get the shell version - hShellInst := LoadLibrary('shell32.dll'); - if hShellInst <> 0 then - begin - DllGetVersionProc := GetProcAddress(hShellInst, 'DllGetVersion'); - if @DllGetVersionProc <> nil then - begin - dvi.cbSize := sizeof(TDllVersionInfo); - if DllGetVersionProc(dvi) >= 0 then - begin - // it's at least 4.00 - bMF_OWNERDRAW := (dvi.dwMajorVersion > 4) or (dvi.dwMinorVersion >= 71); - end; // if - end; // if - FreeLibrary(hShellInst); - end; // if - - // if we're using Vista (or later), then the ownerdraw code will be disabled, because the system draws the icons. - if VistaOrLater then - bMF_OWNERDRAW := False; - - hMap := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, IPC_PACKET_SIZE, - IPC_PACKET_NAME); - If (hMap <> 0) and (GetLastError <> ERROR_ALREADY_EXISTS) then - begin - { map the memory to this address space } - pipch := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); - If pipch <> nil then - begin - { let the callback have instance vars } - ed.Self := Self^.ptrInstance; - // not used 'ere - ed.Self^.hRootMenu := Menu; - // store the first ID to offset with index for InvokeCommand() - Self^.ptrInstance^.idCmdFirst := idCmdFirst; - // store the starting index to offset - Result := idCmdFirst; - ed.bOwnerDrawSupported := bMF_OWNERDRAW; - ed.bShouldOwnerDraw := True; - ed.idCmdFirst := idCmdFirst; - ed.ipch := pipch; - { allocate a wait object so the ST can signal us, it can't be anon - since it has to used by OpenEvent() } - lstrcpya(@pipch^.SignalEventName, PChar(CreateUID())); - { create the wait wait-for-wait object } - ed.hWaitFor := CreateEvent(nil, False, False, pipch^.SignalEventName); - If ed.hWaitFor <> 0 then - begin - { enumerate all the top level windows to find all loaded MIRANDANAME - classes -- } - EnumWindows(@ProcessRequest, lParam(@ed)); - { close the wait-for-reply object } - CloseHandle(ed.hWaitFor); - end; - { unmap the memory from this address space } - UnmapViewOfFile(pipch); - end; { if } - { close the mapping } - CloseHandle(hMap); - // use the MSDN recommended way, thou there ain't much difference - Result := MAKE_HRESULT(0, 0, (ed.idCmdFirst - Result) + 1); - end - else - begin - // the mapping file already exists, which is not good! - end; - end - else - begin - // same as giving a SEVERITY_SUCCESS, FACILITY_NULL, since that - // just clears the higher bits, which is done anyway - Result := MAKE_HRESULT(0, 0, 1); - end; // if -end; - -function TShlComRec_GetCommandString(Self: PContextMenu3_Interface; idCmd, uType: UINT; - pwReserved: PUINT; pszName: PChar; cchMax: UINT): HResult; stdcall; -begin - Result := E_NOTIMPL; -end; - -function ipcGetFiles(pipch: PHeaderIPC; pDataObject: PDataObject_Interface; const hContact: THandle): Integer; -type - TDragQueryFile = function(hDrop: THandle; fileIndex: Integer; FileName: PChar; - cbSize: Integer): Integer; stdcall; -var - fet: TFormatEtc; - stgm: TStgMedium; - pct: PSlotIPC; - iFile: Cardinal; - iFileMax: Cardinal; - hShell: THandle; - DragQueryFile: TDragQueryFile; - cbSize: Integer; - hDrop: THandle; -begin - Result := E_INVALIDARG; - hShell := LoadLibrary('shell32.dll'); - if hShell <> 0 then - begin - DragQueryFile := GetProcAddress(hShell, 'DragQueryFileA'); - if @DragQueryFile <> nil then - begin - fet.cfFormat := CF_HDROP; - fet.ptd := nil; - fet.dwAspect := DVASPECT_CONTENT; - fet.lindex := -1; - fet.tymed := TYMED_HGLOBAL; - Result := pDataObject^.ptrVTable^.GetData(pDataObject, fet, stgm); - if Result = S_OK then - begin - // FIX, actually lock the global object and get a pointer - Pointer(hDrop) := GlobalLock(stgm.hGlobal); - if hDrop <> 0 then - begin - // get the maximum number of files - iFileMax := DragQueryFile(stgm.hGlobal, $FFFFFFFF, nil, 0); - iFile := 0; - while iFile < iFileMax do - begin - // get the size of the file path - cbSize := DragQueryFile(stgm.hGlobal, iFile, nil, 0); - // get the buffer - pct := ipcAlloc(pipch, cbSize + 1); // including null term - // allocated? - if pct = nil then - break; - // store the hContact - pct^.hContact := hContact; - // copy it to the buffer - DragQueryFile(stgm.hGlobal, iFile, PChar(uint_ptr(pct) + sizeof(TSlotIPC)), pct^.cbStrSection); - // next file - inc(iFile); - end; // while - // store the number of files - pipch^.Slots := iFile; - GlobalUnlock(stgm.hGlobal); - end; // if hDrop check - // release the mediumn the lock may of failed - ReleaseStgMedium(stgm); - end; // if - end; // if - // free the dll - FreeLibrary(hShell); - end; // if -end; - -function RequestTransfer(Self: PShlComRec; idxCmd: Integer): Integer; -var - hMap: THandle; - pipch: PHeaderIPC; - mii: TMenuItemInfo; - hTransfer: THandle; - psd: PMenuDrawInfo; - hReply: THandle; - replyBits: Integer; -begin - Result := E_INVALIDARG; - // get the contact information - mii.cbSize := sizeof(TMenuItemInfo); - mii.fMask := MIIM_ID or MIIM_DATA; - if GetMenuItemInfo(Self^.hRootMenu, Self^.idCmdFirst + idxCmd, False, mii) then - begin - // get the pointer - uint_ptr(psd) := mii.dwItemData; - // the ID stored in the item pointer and the ID for the menu must match - if (psd = nil) or (psd^.wID <> mii.wID) then - begin - // MessageBox(0,'ptr assocated with menu is NULL','',MB_OK); - Exit; - end; // if - end - else - begin - // MessageBox(0,'GetMenuItemInfo failed?','',MB_OK); - // couldn't get the info, can't start the transfer - Result := E_INVALIDARG; - Exit; - end; // if - // is there an IDataObject instance? - if Self^.pDataObject <> nil then - begin - // OpenEvent() the work object to see if the instance is still around - hTransfer := OpenEvent(EVENT_ALL_ACCESS, False, PChar(CreateProcessUID(psd^.pid))); - if hTransfer <> 0 then - begin - // map the ipc file again - hMap := CreateFileMapping(INVALID_HANDLE_VALUE,nil,PAGE_READWRITE,0,IPC_PACKET_SIZE,IPC_PACKET_NAME); - if (hMap <> 0) and (GetLastError <> ERROR_ALREADY_EXISTS) then - begin - // map it to process - pipch := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); - if pipch <> nil then - begin - // create the name of the object to be signalled by the ST - lstrcpya(pipch^.SignalEventName, PChar(CreateUID())); - // create it - hReply := CreateEvent(nil, False, False, pipch^.SignalEventName); - if hReply <> 0 then - begin - if dtCommand in psd^.fTypes then - begin - if Assigned(psd^.MenuCommandCallback) then - Result := psd^.MenuCommandCallback(pipch, hTransfer, hReply, psd); - end - else - begin - - // prepare the buffer - ipcPrepareRequests(IPC_PACKET_SIZE, pipch, REQUEST_XFRFILES); - // get all the files into the packet - if ipcGetFiles(pipch, Self^.pDataObject, psd^.hContact) = S_OK then - begin - // need to wait for the ST to open the mapping object - // since if we close it before it's opened it the data it - // has will be undefined - replyBits := ipcSendRequest(hTransfer, hReply, pipch, 200); - if replyBits <> REPLY_FAIL then - begin - // they got the files! - Result := S_OK; - end; // if - end; - - end; - // close the work object name - CloseHandle(hReply); - end; // if - // unmap it from this process - UnmapViewOfFile(pipch); - end; // if - // close the map - CloseHandle(hMap); - end; // if - // close the handle to the ST object name - CloseHandle(hTransfer); - end; // if - end // if; -end; - -function TShlComRec_InvokeCommand(Self: PContextMenu3_Interface; - var lpici: TCMInvokeCommandInfo): HResult; stdcall; -begin - Result := RequestTransfer(Self^.ptrInstance, LOWORD(uint_ptr(lpici.lpVerb))); -end; - -function TShlComRec_HandleMenuMsgs(Self: PContextMenu3_Interface; uMsg: UINT; wParam: wParam; - lParam: lParam; pResult: PLResult): HResult; -const - WM_DRAWITEM = $002B; - WM_MEASUREITEM = $002C; -var - dwi: PDrawItemStruct; - msi: PMeasureItemStruct; - psd: PMenuDrawInfo; - ncm: TNonClientMetrics; - hOldFont: THandle; - hFont: THandle; - tS: TSize; - dx: Integer; - hBr: HBRUSH; - icorc: TRect; - hMemDC: HDC; -begin - pResult^ := Integer(True); - if (uMsg = WM_DRAWITEM) and (wParam = 0) then - begin - // either a main sub menu, a group menu or a contact - dwi := PDrawItemStruct(lParam); - uint_ptr(psd) := dwi^.itemData; - // don't fill - SetBkMode(dwi^.HDC, TRANSPARENT); - // where to draw the icon? - icorc.Left := 0; - // center it - with dwi^ do - icorc.Top := rcItem.Top + ((rcItem.Bottom - rcItem.Top) div 2) - (16 div 2); - icorc.Right := icorc.Left + 16; - icorc.Bottom := icorc.Top + 16; - // draw for groups - if (dtGroup in psd^.fTypes) or (dtEntry in psd^.fTypes) then - begin - hBr := GetSysColorBrush(COLOR_MENU); - FillRect(dwi^.HDC, dwi^.rcItem, hBr); - DeleteObject(hBr); - // - if (ODS_SELECTED and dwi^.itemState = ODS_SELECTED) then - begin - // only do this for entry menu types otherwise a black mask - // is drawn under groups - hBr := GetSysColorBrush(COLOR_HIGHLIGHT); - FillRect(dwi^.HDC, dwi^.rcItem, hBr); - DeleteObject(hBr); - SetTextColor(dwi^.HDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); - end; // if - // draw icon - with dwi^, icorc do - begin - if (ODS_SELECTED and dwi^.itemState) = ODS_SELECTED then - begin - hBr := GetSysColorBrush(COLOR_HIGHLIGHT); - end - else - begin - hBr := GetSysColorBrush(COLOR_MENU); - end; // if - DrawIconEx(HDC, Left + 1, Top, psd^.hStatusIcon, 16, 16, // width, height - 0, // step - hBr, // brush - DI_NORMAL); - DeleteObject(hBr); - end; // with - // draw the text - with dwi^ do - begin - inc(rcItem.Left, ((rcItem.Bottom - rcItem.Top) - 2)); - DrawText(HDC, psd^.szText, psd^.cch, rcItem, DT_NOCLIP or DT_NOPREFIX or - DT_SINGLELINE or DT_VCENTER); - // draw the name of the database text if it's there - if psd^.szProfile <> nil then - begin - GetTextExtentPoint32(dwi^.HDC, psd^.szText, psd^.cch, tS); - inc(rcItem.Left, tS.cx + 8); - SetTextColor(HDC, GetSysColor(COLOR_GRAYTEXT)); - DrawText(HDC, psd^.szProfile, lstrlena(psd^.szProfile), rcItem, - DT_NOCLIP or DT_NOPREFIX or DT_SINGLELINE or DT_VCENTER); - end; // if - end; // with - end - else - begin - // it's a contact! - hBr := GetSysColorBrush(COLOR_MENU); - FillRect(dwi^.HDC, dwi^.rcItem, hBr); - DeleteObject(hBr); - if ODS_SELECTED and dwi^.itemState = ODS_SELECTED then - begin - hBr := GetSysColorBrush(COLOR_HIGHLIGHT); - FillRect(dwi^.HDC, dwi^.rcItem, hBr); - DeleteObject(hBr); - SetTextColor(dwi^.HDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); - end; - // draw icon - with dwi^, icorc do - begin - if (ODS_SELECTED and dwi^.itemState) = ODS_SELECTED then - begin - hBr := GetSysColorBrush(COLOR_HIGHLIGHT); - end - else - begin - hBr := GetSysColorBrush(COLOR_MENU); - end; // if - DrawIconEx(HDC, Left + 2, Top, psd^.hStatusIcon, 16, 16, // width, height - 0, // step - hBr, // brush - DI_NORMAL); - DeleteObject(hBr); - end; // with - // draw the text - with dwi^ do - begin - inc(rcItem.Left, (rcItem.Bottom - rcItem.Top) + 1); - DrawText(HDC, psd^.szText, psd^.cch, rcItem, DT_NOCLIP or DT_NOPREFIX or - DT_SINGLELINE or DT_VCENTER); - end; // with - end; // if - end - else if (uMsg = WM_MEASUREITEM) then - begin - // don't check if it's really a menu - msi := PMeasureItemStruct(lParam); - uint_ptr(psd) := msi^.itemData; - ncm.cbSize := sizeof(TNonClientMetrics); - SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @ncm, 0); - // create the font used in menus, this font should be cached somewhere really -{$IFDEF FPC} - hFont := CreateFontIndirect(@ncm.lfMenuFont); -{$ELSE} - hFont := CreateFontIndirect(ncm.lfMenuFont); -{$ENDIF} - hMemDC := Self^.ptrInstance^.hMemDC; - // select in the font - hOldFont := SelectObject(hMemDC, hFont); - // default to an icon - dx := 16; - // get the size 'n' account for the icon - GetTextExtentPoint32(hMemDC, psd^.szText, psd^.cch, tS); - inc(dx, tS.cx); - // main menu item? - if psd^.szProfile <> nil then - begin - GetTextExtentPoint32(hMemDC, psd^.szProfile, lstrlena(psd^.szProfile), tS); - inc(dx, tS.cx); - end; - // store it - msi^.itemWidth := dx + Integer(ncm.iMenuWidth); - msi^.itemHeight := Integer(ncm.iMenuHeight) + 2; - if tS.cy > msi^.itemHeight then - inc(msi^.itemHeight, tS.cy - msi^.itemHeight); - // clean up - SelectObject(hMemDC, hOldFont); - DeleteObject(hFont); - end; - Result := S_OK; -end; - -function TShlComRec_HandleMenuMsg(Self: PContextMenu3_Interface; uMsg: UINT; wParam: wParam; - lParam: lParam): HResult; stdcall; -var - Dummy: HResult; -begin - Result := TShlComRec_HandleMenuMsgs(Self, uMsg, wParam, lParam, @Dummy); -end; - -function TShlComRec_HandleMenuMsg2(Self: PContextMenu3_Interface; uMsg: UINT; wParam: wParam; - lParam: lParam; PLResult: Pointer { ^LResult } ): HResult; stdcall; -var - Dummy: HResult; -begin - // this will be null if a return value isn't needed. - if PLResult = nil then - PLResult := @Dummy; - Result := TShlComRec_HandleMenuMsgs(Self, uMsg, wParam, lParam, PLResult); -end; - -function TShlComRec_Create: PShlComRec; -var - DC: HDC; -begin - New(Result); - { build all the function tables for interfaces } - with Result^.ShellExtInit_Interface do - begin - { this is only owned by us... } - ptrVTable := @vTable; - { IUnknown } - vTable.QueryInterface := @TShlComRec_QueryInterface; - vTable.AddRef := @TShlComRec_AddRef; - vTable.Release := @TShlComRec_Release; - { IShellExtInit } - vTable.Initialise := @TShlComRec_Initialise; - { instance of a TShlComRec } - ptrInstance := Result; - end; - with Result^.ContextMenu3_Interface do - begin - ptrVTable := @vTable; - { IUnknown } - vTable.QueryInterface := @TShlComRec_QueryInterface; - vTable.AddRef := @TShlComRec_AddRef; - vTable.Release := @TShlComRec_Release; - { IContextMenu } - vTable.QueryContextMenu := @TShlComRec_QueryContextMenu; - vTable.InvokeCommand := @TShlComRec_InvokeCommand; - vTable.GetCommandString := @TShlComRec_GetCommandString; - { IContextMenu2 } - vTable.HandleMenuMsg := @TShlComRec_HandleMenuMsg; - { IContextMenu3 } - vTable.HandleMenuMsg2 := @TShlComRec_HandleMenuMsg2; - { instance data } - ptrInstance := Result; - end; - { initalise variables } - Result^.RefCount := 1; - Result^.hDllHeap := HeapCreate(0, 0, 0); - Result^.hRootMenu := 0; - Result^.hRecentMenu := 0; - Result^.RecentCount := 0; - Result^.idCmdFirst := 0; - Result^.pDataObject := nil; - Result^.ProtoIcons := nil; - Result^.ProtoIconsCount := 0; - // create an inmemory DC - DC := GetDC(0); - Result^.hMemDC := CreateCompatibleDC(DC); - ReleaseDC(0, DC); - { keep count on the number of objects } - inc(dllpublic.ObjectCount); -end; - -{ IClassFactory } - -type - - PVTable_IClassFactory = ^TVTable_IClassFactory; - - TVTable_IClassFactory = record - { IUnknown } - QueryInterface: Pointer; - AddRef: Pointer; - Release: Pointer; - { IClassFactory } - CreateInstance: Pointer; - LockServer: Pointer; - end; - - PClassFactoryRec = ^TClassFactoryRec; - - TClassFactoryRec = record - ptrVTable: PVTable_IClassFactory; - vTable: TVTable_IClassFactory; - { fields } - RefCount: LongInt; - end; - -function TClassFactoryRec_QueryInterface(Self: PClassFactoryRec; const IID: TIID; var Obj): HResult; stdcall; -begin - Pointer(Obj) := nil; - Result := E_NOTIMPL; -end; - -function TClassFactoryRec_AddRef(Self: PClassFactoryRec): LongInt; stdcall; -begin - inc(Self^.RefCount); - Result := Self^.RefCount; -end; - -function TClassFactoryRec_Release(Self: PClassFactoryRec): LongInt; stdcall; -begin - dec(Self^.RefCount); - Result := Self^.RefCount; - if Result = 0 then - begin - Dispose(Self); - dec(dllpublic.FactoryCount); - end; { if } -end; - -function TClassFactoryRec_CreateInstance(Self: PClassFactoryRec; unkOuter: Pointer; - const IID: TIID; var Obj): HResult; stdcall; -var - ShlComRec: PShlComRec; -begin - Pointer(Obj) := nil; - Result := CLASS_E_NOAGGREGATION; - if unkOuter = nil then - begin - { Before Vista, the system queried for a IShell interface then queried for a context menu, Vista now - queries for a context menu (or a shell menu) then QI()'s the other interface } - if IsEqualIID(IID, IID_IContextMenu) then - begin - Result := S_OK; - ShlComRec := TShlComRec_Create; - Pointer(Obj) := @ShlComRec^.ContextMenu3_Interface; - end; - if IsEqualIID(IID, IID_IShellExtInit) then - begin - Result := S_OK; - ShlComRec := TShlComRec_Create; - Pointer(Obj) := @ShlComRec^.ShellExtInit_Interface; - end; // if - end; // if -end; - -function TClassFactoryRec_LockServer(Self: PClassFactoryRec; fLock: BOOL): HResult; stdcall; -begin - Result := E_NOTIMPL; -end; - -function TClassFactoryRec_Create: PClassFactoryRec; -begin - New(Result); - Result^.ptrVTable := @Result^.vTable; - { IUnknown } - Result^.vTable.QueryInterface := @TClassFactoryRec_QueryInterface; - Result^.vTable.AddRef := @TClassFactoryRec_AddRef; - Result^.vTable.Release := @TClassFactoryRec_Release; - { IClassFactory } - Result^.vTable.CreateInstance := @TClassFactoryRec_CreateInstance; - Result^.vTable.LockServer := @TClassFactoryRec_LockServer; - { inital the variables } - Result^.RefCount := 1; - { count the number of factories } - inc(dllpublic.FactoryCount); -end; - -// -// IPC part -// - -type - PFileList = ^TFileList; - TFileList = array [0 .. 0] of PChar; - PAddArgList = ^TAddArgList; - - TAddArgList = record - szFile: PChar; // file being processed - cch: Cardinal; // it's length (with space for NULL char) - count: Cardinal; // number we have so far - files: PFileList; - hContact: THandle; - hEvent: THandle; - end; - -function AddToList(var args: TAddArgList): LongBool; -var - attr: Cardinal; - p: Pointer; - hFind: THandle; - fd: TWIN32FINDDATA; - szBuf: array [0 .. MAX_PATH] of Char; - szThis: PChar; - cchThis: Cardinal; -begin - Result := False; - attr := GetFileAttributes(args.szFile); - if (attr <> $FFFFFFFF) and ((attr and FILE_ATTRIBUTE_HIDDEN) = 0) then - begin - if args.count mod 10 = 5 then - begin - if CallService(MS_SYSTEM_TERMINATED, 0, 0) <> 0 then - begin - Result := True; - Exit; - end; // if - end; - if attr and FILE_ATTRIBUTE_DIRECTORY <> 0 then - begin - // add the directory - lstrcpya(szBuf, args.szFile); - ReAllocMem(args.files, (args.count + 1) * sizeof(PChar)); - GetMem(p, strlen(szBuf) + 1); - lstrcpya(p, szBuf); - args.files^[args.count] := p; - inc(args.count); - // tack on ending search token - lstrcata(szBuf, '\*'); - hFind := FindFirstFile(szBuf, fd); - while True do - begin - if fd.cFileName[0] <> '.' then - begin - lstrcpya(szBuf, args.szFile); - lstrcata(szBuf, '\'); - lstrcata(szBuf, fd.cFileName); - // keep a copy of the current thing being processed - szThis := args.szFile; - args.szFile := szBuf; - cchThis := args.cch; - args.cch := strlen(szBuf) + 1; - // recurse - Result := AddToList(args); - // restore - args.szFile := szThis; - args.cch := cchThis; - if Result then - break; - end; // if - if not FindNextFile(hFind, fd) then - break; - end; // while - FindClose(hFind); - end - else - begin - // add the file - ReAllocMem(args.files, (args.count + 1) * sizeof(PChar)); - GetMem(p, args.cch); - lstrcpya(p, args.szFile); - args.files^[args.count] := p; - inc(args.count); - end; // if - end; -end; - -procedure MainThreadIssueTransfer(p: PAddArgList); stdcall; -{$DEFINE SHL_IDC} -{$DEFINE SHL_KEYS} -{$INCLUDE shlc.inc} -{$UNDEF SHL_KEYS} -{$UNDEF SHL_IDC} -begin - DBWriteContactSettingByte(p^.hContact, SHLExt_Name, SHLExt_MRU, 1); - CallService(MS_FILE_SENDSPECIFICFILES, p^.hContact, lParam(p^.files)); - SetEvent(p^.hEvent); -end; - -procedure IssueTransferThread(pipch: PHeaderIPC); cdecl; -var - szBuf: array [0 .. MAX_PATH] of Char; - pct: PSlotIPC; - args: TAddArgList; - bQuit: LongBool; - j, c: Cardinal; - p: Pointer; - hMainThread: THandle; -begin - hMainThread := THandle(pipch^.Param); - GetCurrentDirectory(sizeof(szBuf), szBuf); - args.count := 0; - args.files := nil; - pct := pipch^.DataPtr; - bQuit := False; - while pct <> nil do - begin - if (pct^.cbSize <> sizeof(TSlotIPC)) then - break; - args.szFile := PChar(uint_ptr(pct) + sizeof(TSlotIPC)); - args.hContact := pct^.hContact; - args.cch := pct^.cbStrSection + 1; - bQuit := AddToList(args); - if bQuit then - break; - pct := pct^.Next; - end; // while - if args.files <> nil then - begin - ReAllocMem(args.files, (args.count + 1) * sizeof(PChar)); - args.files^[args.count] := nil; - inc(args.count); - if (not bQuit) then - begin - args.hEvent := CreateEvent(nil, True, False, nil); - QueueUserAPC(@MainThreadIssueTransfer, hMainThread, uint_ptr(@args)); - while True do - begin - if WaitForSingleObjectEx(args.hEvent, INFINITE, True) <> WAIT_IO_COMPLETION then - break; - end; - CloseHandle(args.hEvent); - end; // if - c := args.count - 1; - for j := 0 to c do - begin - p := args.files^[j]; - if p <> nil then - FreeMem(p); - end; - FreeMem(args.files); - end; - SetCurrentDirectory(szBuf); - FreeMem(pipch); - CloseHandle(hMainThread); -end; - -type - - PSlotInfo = ^TSlotInfo; - - TSlotInfo = record - hContact: THandle; - hProto: Cardinal; - dwStatus: Integer; // will be aligned anyway - end; - - TSlotArray = array [0 .. $FFFFFF] of TSlotInfo; - PSlotArray = ^TSlotArray; - -function SortContact(var Item1, Item2: TSlotInfo): Integer; stdcall; -begin - Result := CallService(MS_CLIST_CONTACTSCOMPARE, Item1.hContact, Item2.hContact); -end; - -// from FP FCL - -procedure QuickSort(FList: PSlotArray; L, R: LongInt); -var - i, j: LongInt; - p, q: TSlotInfo; -begin - repeat - i := L; - j := R; - p := FList^[(L + R) div 2]; - repeat - while SortContact(p, FList^[i]) > 0 do - inc(i); - while SortContact(p, FList^[j]) < 0 do - dec(j); - if i <= j then - begin - q := FList^[i]; - FList^[i] := FList^[j]; - FList^[j] := q; - inc(i); - dec(j); - end; // if - until i > j; - if L < j then - QuickSort(FList, L, j); - L := i; - until i >= R; -end; - -{$DEFINE SHL_KEYS} -{$INCLUDE shlc.inc} -{$UNDEF SHL_KEYS} - -procedure ipcGetSkinIcons(ipch: PHeaderIPC); -var - protoCount: Integer; - pp: ^PPROTOCOLDESCRIPTOR; - spi: TSlotProtoIcons; - j: Cardinal; - pct: PSlotIPC; - szTmp: array [0 .. 63] of Char; - dwCaps: Cardinal; -begin - if (CallService(MS_PROTO_ENUMACCOUNTS, wParam(@protoCount), lParam(@pp)) = 0) and - (protoCount <> 0) then - begin - spi.pid := GetCurrentProcessId(); - while protoCount > 0 do - begin - lstrcpya(szTmp, pp^.szName); - lstrcata(szTmp, PS_GETCAPS); - dwCaps := CallService(szTmp, PFLAGNUM_1, 0); - if (dwCaps and PF1_FILESEND) <> 0 then - begin - pct := ipcAlloc(ipch, sizeof(TSlotProtoIcons)); - if pct <> nil then - begin - // capture all the icons! - spi.hProto := StrHash(pp^.szName); - for j := 0 to 9 do - begin - spi.hIcons[j] := LoadSkinnedProtoIcon(pp^.szName, ID_STATUS_OFFLINE + j); - end; // for - pct^.fType := REQUEST_NEWICONS; - CopyMemory(Pointer(uint_ptr(pct) + sizeof(TSlotIPC)), @spi, sizeof(TSlotProtoIcons)); - if ipch^.NewIconsBegin = nil then - ipch^.NewIconsBegin := pct; - end; // if - end; // if - inc(pp); - dec(protoCount); - end; // while - end; // if - // add Miranda icon - pct := ipcAlloc(ipch, sizeof(TSlotProtoIcons)); - if pct <> nil then - begin - ZeroMemory(@spi.hIcons, sizeof(spi.hIcons)); - spi.hProto := 0; // no protocol - spi.hIcons[0] := LoadSkinnedIcon(SKINICON_OTHER_MIRANDA); - pct^.fType := REQUEST_NEWICONS; - CopyMemory(Pointer(uint_ptr(pct) + sizeof(TSlotIPC)), @spi, sizeof(TSlotProtoIcons)); - if ipch^.NewIconsBegin = nil then - ipch^.NewIconsBegin := pct; - end; // if -end; - -function ipcGetSortedContacts(ipch: PHeaderIPC; pSlot: pint; bGroupMode: Boolean): Boolean; -var - dwContacts: Cardinal; - pContacts: PSlotArray; - hContact: THandle; - i: Integer; - dwOnline: Cardinal; - szProto: PChar; - dwStatus: Integer; - pct: PSlotIPC; - szContact: PChar; - dbv: TDBVariant; - bHideOffline: Boolean; - szTmp: array [0 .. 63] of Char; - dwCaps: Cardinal; - szSlot: PChar; - n, rc, cch: Cardinal; -begin - Result := False; - // hide offliners? - bHideOffline := DBGetContactSettingByte(0, 'CList', 'HideOffline', 0) = 1; - // do they wanna hide the offline people anyway? - if DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoOffline, 0) = 1 then - begin - // hide offline people - bHideOffline := True; - end; - // get the number of contacts - dwContacts := CallService(MS_DB_CONTACT_GETCOUNT, 0, 0); - if dwContacts = 0 then - Exit; - // get the contacts in the array to be sorted by status, trim out anyone - // who doesn't wanna be seen. - GetMem(pContacts, (dwContacts + 2) * sizeof(TSlotInfo)); - i := 0; - dwOnline := 0; - hContact := db_find_first(); - while (hContact <> 0) do - begin - if i >= dwContacts then - break; - (* do they have a running protocol? *) - uint_ptr(szProto) := CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0); - if szProto <> nil then - begin - (* does it support file sends? *) - lstrcpya(szTmp, szProto); - lstrcata(szTmp, PS_GETCAPS); - dwCaps := CallService(szTmp, PFLAGNUM_1, 0); - if (dwCaps and PF1_FILESEND) = 0 then - begin - hContact := db_find_next(hContact); - continue; - end; - dwStatus := DBGetContactSettingWord(hContact, szProto, 'Status', ID_STATUS_OFFLINE); - if dwStatus <> ID_STATUS_OFFLINE then - inc(dwOnline) - else if bHideOffline then - begin - hContact := db_find_next(hContact); - continue; - end; // if - // is HIT on? - if BST_UNCHECKED = DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseHITContacts, - BST_UNCHECKED) then - begin - // don't show people who are "Hidden" "NotOnList" or Ignored - if (DBGetContactSettingByte(hContact, 'CList', 'Hidden', 0) = 1) or - (DBGetContactSettingByte(hContact, 'CList', 'NotOnList', 0) = 1) or - (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_MESSAGE or - IGNOREEVENT_URL or IGNOREEVENT_FILE) <> 0) then - begin - hContact := db_find_next(hContact); - continue; - end; // if - end; // if - // is HIT2 off? - if BST_UNCHECKED = DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseHIT2Contacts, - BST_UNCHECKED) then - begin - if DBGetContactSettingWord(hContact, szProto, 'ApparentMode', 0) = ID_STATUS_OFFLINE - then - begin - hContact := db_find_next(hContact); - continue; - end; // if - end; // if - // store - pContacts^[i].hContact := hContact; - pContacts^[i].dwStatus := dwStatus; - pContacts^[i].hProto := StrHash(szProto); - inc(i); - end - else - begin - // contact has no protocol! - end; // if - hContact := db_find_next(hContact); - end; // while - // if no one is online and the CList isn't showing offliners, quit - if (dwOnline = 0) and (bHideOffline) then - begin - FreeMem(pContacts); - Exit; - end; // if - dwContacts := i; - i := 0; - // sort the array - QuickSort(pContacts, 0, dwContacts - 1); - // create an IPC slot for each contact and store display name, etc - while i < dwContacts do - begin - uint_ptr(szContact) := CallService(MS_CLIST_GETCONTACTDISPLAYNAME,pContacts^[i].hContact, 0); - if (szContact <> nil) then - begin - n := 0; - rc := 1; - if bGroupMode then - begin - rc := DBGetContactSetting(pContacts^[i].hContact, 'CList', 'Group', @dbv); - if rc = 0 then - begin - n := lstrlena(dbv.szVal.a) + 1; - end; - end; // if - cch := lstrlena(szContact) + 1; - pct := ipcAlloc(ipch, cch + 1 + n); - if pct = nil then - begin - DBFreeVariant(@dbv); - break; - end; - // lie about the actual size of the TSlotIPC - pct^.cbStrSection := cch; - szSlot := PChar(uint_ptr(pct) + sizeof(TSlotIPC)); - lstrcpya(szSlot, szContact); - pct^.fType := REQUEST_CONTACTS; - pct^.hContact := pContacts^[i].hContact; - pct^.Status := pContacts^[i].dwStatus; - pct^.hProto := pContacts^[i].hProto; - pct^.MRU := DBGetContactSettingByte(pct^.hContact, SHLExt_Name, SHLExt_MRU, 0); - if ipch^.ContactsBegin = nil then - ipch^.ContactsBegin := pct; - inc(szSlot, cch + 1); - if rc = 0 then - begin - pct^.hGroup := StrHash(dbv.szVal.a); - lstrcpya(szSlot, dbv.szVal.a); - DBFreeVariant(@dbv); - end - else - begin - pct^.hGroup := 0; - szSlot^ := #0; - end; - inc(pSlot^); - end; // if - inc(i); - end; // while - FreeMem(pContacts); - // - Result := True; -end; - -// worker thread to clear MRU, called by the IPC bridge -procedure ClearMRUThread(notused: Pointer); cdecl; -{$DEFINE SHL_IDC} -{$DEFINE SHL_KEYS} -{$INCLUDE shlc.inc} -{$UNDEF SHL_KEYS} -{$UNDEF SHL_IDC} -var - hContact: THandle; -begin - begin - hContact := db_find_first(); - while hContact <> 0 do - begin - if DBGetContactSettingByte(hContact, SHLExt_Name, SHLExt_MRU, 0) > 0 then - begin - DBWriteContactSettingByte(hContact, SHLExt_Name, SHLExt_MRU, 0); - end; - hContact := db_find_next(hContact); - end; - end; -end; - -// this function is called from an APC into the main thread -procedure ipcService(dwParam: DWORD); stdcall; -label - Reply; -var - hMap: THandle; - pMMT: PHeaderIPC; - hSignal: THandle; - pct: PSlotIPC; - szBuf: PChar; - iSlot: Integer; - szGroupStr: array [0 .. 31] of Char; - dbv: TDBVariant; - bits: pint; - bGroupMode: Boolean; - cloned: PHeaderIPC; - szMiranda: PChar; -begin - { try to open the file mapping object the caller must make sure no other - running instance is using this file } - hMap := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, IPC_PACKET_NAME); - If hMap <> 0 then - begin - { map the file to this process } - pMMT := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); - { if it fails the caller should of had some timeout in wait } - if (pMMT <> nil) and (pMMT^.cbSize = sizeof(THeaderIPC)) and - (pMMT^.dwVersion = PLUGIN_MAKE_VERSION(2, 0, 1, 2)) then - begin - // toggle the right bits - bits := @pMMT^.fRequests; - // jump right to a worker thread for file processing? - if (bits^ and REQUEST_XFRFILES) = REQUEST_XFRFILES then - begin - GetMem(cloned, IPC_PACKET_SIZE); - // translate from client space to cloned heap memory - pMMT^.pServerBaseAddress := pMMT^.pClientBaseAddress; - pMMT^.pClientBaseAddress := cloned; - CopyMemory(cloned, pMMT, IPC_PACKET_SIZE); - ipcFixupAddresses(True, cloned); - DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), - @cloned^.Param, THREAD_SET_CONTEXT, False, 0); - mir_forkThread(@IssueTransferThread, cloned); - goto Reply; - end; - // the request was to clear the MRU entries, we have no return data - if (bits^ and REQUEST_CLEARMRU) = REQUEST_CLEARMRU then - begin - mir_forkThread(@ClearMRUThread, nil); - goto Reply; - end; - // the IPC header may have pointers that need to be translated - // in either case the supplied data area pointers has to be - // translated to this address space. - // the server base address is always removed to get an offset - // to which the client base is added, this is what ipcFixupAddresses() does - pMMT^.pServerBaseAddress := pMMT^.pClientBaseAddress; - pMMT^.pClientBaseAddress := pMMT; - // translate to the server space map - ipcFixupAddresses(True, pMMT); - // store the address map offset so the caller can retranslate - pMMT^.pServerBaseAddress := pMMT; - // return some options to the client - if DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoIcons, 0) <> 0 then - begin - pMMT^.dwFlags := HIPC_NOICONS; - end; - // see if we have a custom string for 'Miranda' - szMiranda := Translate('Miranda'); - lstrcpyn(pMMT^.MirandaName, szMiranda, sizeof(pMMT^.MirandaName) - 1); - - // for the MRU menu - szBuf := Translate('Recently'); - lstrcpyn(pMMT^.MRUMenuName, szBuf, sizeof(pMMT^.MRUMenuName) - 1); - - // and a custom string for "clear entries" - szBuf := Translate('Clear entries'); - lstrcpyn(pMMT^.ClearEntries, szBuf, sizeof(pMMT^.ClearEntries) - 1); - - // if the group mode is on, check if they want the CList setting - bGroupMode := BST_CHECKED = DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseGroups, - BST_UNCHECKED); - if bGroupMode and (BST_CHECKED = DBGetContactSettingByte(0, SHLExt_Name, - SHLExt_UseCListSetting, BST_UNCHECKED)) then - begin - bGroupMode := 1 = DBGetContactSettingByte(0, 'CList', 'UseGroups', 0); - end; - iSlot := 0; - // return profile if set - if BST_UNCHECKED = DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoProfile, - BST_UNCHECKED) then - begin - pct := ipcAlloc(pMMT, 50); - if pct <> nil then - begin - // will actually return with .dat if there's space for it, not what the docs say - pct^.Status := STATUS_PROFILENAME; - CallService(MS_DB_GETPROFILENAME, 49, uint_ptr(pct) + sizeof(TSlotIPC)); - end; // if - end; // if - if (bits^ and REQUEST_NEWICONS) = REQUEST_NEWICONS then - begin - ipcGetSkinIcons(pMMT); - end; - if (bits^ and REQUEST_GROUPS = REQUEST_GROUPS) then - begin - // return contact's grouping if it's present - while bGroupMode do - begin - str(iSlot, szGroupStr); - if DBGetContactSetting(0, 'CListGroups', szGroupStr, @dbv) <> 0 then - break; - pct := ipcAlloc(pMMT, lstrlena(dbv.szVal.a + 1) + 1); - // first byte has flags, need null term - if pct <> nil then - begin - if pMMT^.GroupsBegin = nil then - pMMT^.GroupsBegin := pct; - pct^.fType := REQUEST_GROUPS; - pct^.hContact := 0; - uint_ptr(szBuf) := uint_ptr(pct) + sizeof(TSlotIPC); // get the end of the slot - lstrcpya(szBuf, dbv.szVal.a + 1); - pct^.hGroup := 0; - DBFreeVariant(@dbv); // free the string - end - else - begin - // outta space - DBFreeVariant(@dbv); - break; - end; // if - inc(iSlot); - end; { while } - // if there was no space left, it'll end on null - if pct = nil then - bits^ := (bits^ or GROUPS_NOTIMPL) and not REQUEST_GROUPS; - end; { if: group request } - // SHOULD check slot space. - if (bits^ and REQUEST_CONTACTS = REQUEST_CONTACTS) then - begin - if not ipcGetSortedContacts(pMMT, @iSlot, bGroupMode) then - begin - // fail if there were no contacts AT ALL - bits^ := (bits^ or CONTACTS_NOTIMPL) and not REQUEST_CONTACTS; - end; // if - end; // if:contact request - // store the number of slots allocated - pMMT^.Slots := iSlot; - Reply: - { get the handle the caller wants to be signalled on } - hSignal := OpenEvent(EVENT_ALL_ACCESS, False, pMMT^.SignalEventName); - { did it open? } - If hSignal <> 0 then - begin - { signal and close } - SetEvent(hSignal); - CloseHandle(hSignal); - end; - { unmap the shared memory from this process } - UnmapViewOfFile(pMMT); - end; - { close the map file } - CloseHandle(hMap); - end; { if } - // -end; - -procedure ThreadServer(hMainThread: Pointer); cdecl; -var - hEvent: THandle; - retVal: Cardinal; -begin - hEvent := CreateEvent(nil, False, False, PChar(CreateProcessUID(GetCurrentProcessId()))); - while True do - begin - retVal := WaitForSingleObjectEx(hEvent, INFINITE, True); - if retVal = WAIT_OBJECT_0 then - begin - QueueUserAPC(@ipcService, THandle(hMainThread), 0); - end; // if - if CallService(MS_SYSTEM_TERMINATED, 0, 0) = 1 then - break; - end; // while - CloseHandle(hEvent); - CloseHandle(THandle(hMainThread)); -end; - -procedure InvokeThreadServer; -var - hMainThread: THandle; -begin - hMainThread := 0; - DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), @hMainThread, - THREAD_SET_CONTEXT, False, 0); - if hMainThread <> 0 then - mir_forkThread(@ThreadServer, Pointer(hMainThread)); -end; - -{ exported functions } - -function DllGetClassObject(const CLSID: TCLSID; const IID: TIID; var Obj): HResult; stdcall; -begin - Pointer(Obj) := nil; - Result := CLASS_E_CLASSNOTAVAILABLE; - if (IsEqualCLSID(CLSID, CLSID_ISHLCOM)) and (IsEqualIID(IID, IID_IClassFactory)) and - (FindWindow(MirandaName, nil) <> 0) then - begin - Pointer(Obj) := TClassFactoryRec_Create; - Result := S_OK; - end; // if -end; - -function DllCanUnloadNow: HResult; -begin - if ((dllpublic.FactoryCount = 0) and (dllpublic.ObjectCount = 0)) then - begin - Result := S_OK; - end - else - begin - Result := S_FALSE; - end; // if -end; - -{ helper functions } - -type - - PSHELLEXECUTEINFO = ^TSHELLEXECUTEINFO; - - TSHELLEXECUTEINFO = record - cbSize: DWORD; - fMask: LongInt; - hwnd: THandle; - lpVerb: PChar; - lpFile: PChar; - lpParameters: PChar; - lpDirectory: PChar; - nShow: Integer; - hInstApp: THandle; - lpIDLIst: Pointer; - lpClass: PChar; - HKEY: THandle; - dwHotkey: DWORD; - HICON: THandle; // is union - hProcess: THandle; - end; - -function ShellExecuteEx(var se: TSHELLEXECUTEINFO): Boolean; stdcall; - external 'shell32.dll' name 'ShellExecuteExA'; - -function wsprintfs(lpOut, lpFmt: PChar; args: PChar): Integer; cdecl; - external 'user32.dll' name 'wsprintfA'; - -function RemoveCOMRegistryEntries: HResult; -var - hRootKey: HKEY; -begin - if RegOpenKeyEx(HKEY_CLASSES_ROOT, 'miranda.shlext', 0, KEY_READ, hRootKey) = ERROR_SUCCESS - then - begin - (* need to delete the subkey before the parent key is deleted under NT/2000/XP *) - RegDeleteKey(hRootKey, 'CLSID'); - (* close the key *) - RegCloseKey(hRootKey); - (* delete it *) - if RegDeleteKey(HKEY_CLASSES_ROOT, 'miranda.shlext') <> ERROR_SUCCESS then - begin - MessageBox(0, - 'Unable to delete registry key for "shlext COM", this key may already be deleted or you may need admin rights.', - 'Problem', MB_ICONERROR); - end; // if - end; // if - if RegOpenKeyEx(HKEY_CLASSES_ROOT, '\*\shellex\ContextMenuHandlers', 0, KEY_ALL_ACCESS, - hRootKey) = ERROR_SUCCESS then - begin - if RegDeleteKey(hRootKey, 'miranda.shlext') <> ERROR_SUCCESS then - begin - MessageBox(0, - 'Unable to delete registry key for "File context menu handlers", this key may already be deleted or you may need admin rights.', - 'Problem', MB_ICONERROR); - end; // if - RegCloseKey(hRootKey); - end; // if - if RegOpenKeyEx(HKEY_CLASSES_ROOT, 'Directory\shellex\ContextMenuHandlers', 0, KEY_ALL_ACCESS, - hRootKey) = ERROR_SUCCESS then - begin - if RegDeleteKey(hRootKey, 'miranda.shlext') <> ERROR_SUCCESS then - begin - MessageBox(0, - 'Unable to delete registry key for "Directory context menu handlers", this key may already be deleted or you may need admin rights.', - 'Problem', MB_ICONERROR); - end; // if - RegCloseKey(hRootKey); - end; // if - if ERROR_SUCCESS = RegOpenKeyEx(HKEY_LOCAL_MACHINE, - 'Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', 0, KEY_ALL_ACCESS, - hRootKey) then - begin - if RegDeleteValue(hRootKey, '{72013A26-A94C-11d6-8540-A5E62932711D}') <> ERROR_SUCCESS then - begin - MessageBox(0, - 'Unable to delete registry entry for "Approved context menu handlers", this key may already be deleted or you may need admin rights.', - 'Problem', MB_ICONERROR); - end; // if - RegCloseKey(hRootKey); - end; // if - Result := S_OK; -end; - -{ called by the options code to remove COM entries, and before that, get permission, if required. -} - -procedure CheckUnregisterServer; -var - sei: TSHELLEXECUTEINFO; - szBuf: array [0 .. MAX_PATH * 2] of Char; - szFileName: array [0 .. MAX_PATH] of Char; -begin - if not VistaOrLater then - begin - RemoveCOMRegistryEntries(); - Exit; - end; - // launches regsvr to remove the dll under admin. - GetModuleFileName(System.hInstance, szFileName, sizeof(szFileName)); - wsprintfs(szBuf, '/s /u "%s"', szFileName); - ZeroMemory(@sei, sizeof(sei)); - sei.cbSize := sizeof(sei); - sei.lpVerb := 'runas'; - sei.lpFile := 'regsvr32'; - sei.lpParameters := szBuf; - ShellExecuteEx(sei); - Sleep(1000); - RemoveCOMRegistryEntries(); -end; - -{ Wow, I can't believe there isn't a direct API for this - 'runas' will invoke the UAC and ask - for permission before installing the shell extension. note the filepath arg has to be quoted } -procedure CheckRegisterServer; -var - hRegKey: HKEY; - sei: TSHELLEXECUTEINFO; - szBuf: array [0 .. MAX_PATH * 2] of Char; - szFileName: array [0 .. MAX_PATH] of Char; -begin - if ERROR_SUCCESS = RegOpenKeyEx(HKEY_CLASSES_ROOT, 'miranda.shlext', 0, KEY_READ, hRegKey) - then - begin - RegCloseKey(hRegKey); - end - else - begin - if VistaOrLater then - begin - MessageBox(0, - 'Shell context menus requires your permission to register with Windows Explorer (one time only).', - 'Miranda IM - Shell context menus (shlext.dll)', MB_OK or MB_ICONINFORMATION); - // /s = silent - GetModuleFileName(System.hInstance, szFileName, sizeof(szFileName)); - wsprintfs(szBuf, '/s "%s"', szFileName); - ZeroMemory(@sei, sizeof(sei)); - sei.cbSize := sizeof(sei); - sei.lpVerb := 'runas'; - sei.lpFile := 'regsvr32'; - sei.lpParameters := szBuf; - ShellExecuteEx(sei); - end; - end; -end; - -initialization - -begin - FillChar(dllpublic, sizeof(dllpublic), 0); - IsMultiThread := True; - VistaOrLater := GetProcAddress(GetModuleHandle('kernel32'), 'GetProductInfo') <> nil; -end; - -end. diff --git a/plugins/!Deprecated/ShlExt/shldlgs.rc b/plugins/!Deprecated/ShlExt/shldlgs.rc deleted file mode 100644 index 0e9cd82b04..0000000000 --- a/plugins/!Deprecated/ShlExt/shldlgs.rc +++ /dev/null @@ -1,93 +0,0 @@ -#include "resource.h" -//#include "afxres.h" -#define WS_POPUP 0x80000000L -#define WS_CHILD 0x40000000L -#define BS_AUTOCHECKBOX 0x00000003L -#define WS_TABSTOP 0x00010000L -#define SS_ETCHEDHORZ 0x00000010L -#define WS_GROUP 0x00020000L -#ifndef IDC_STATIC -#define IDC_STATIC (-1) -#endif - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_SHLOPTS DIALOG DISCARDABLE 0, 0, 312, 238 -STYLE WS_POPUP -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "Display contacts in their assigned groups (if any)", - IDC_USEGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15, - 35,281,8 - CONTROL "Only if/when the contact list is using them", - IDC_CLISTGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29, - 50,267,8 - CONTROL "Display hidden, ignored or temporary contacts", - IDC_SHOWFULL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,65, - 281,8 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,26,21,192,1 - LTEXT "Menus",IDC_CAPMENUS,10,17,24,8 - LTEXT "",IDC_STATIC,214,16,10,11,NOT WS_GROUP - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,34,145,183,1 - LTEXT "Shell Status",IDC_CAPSHLSTATUS,10,141,43,8 - LTEXT "",IDC_STATIC,214,111,10,11,NOT WS_GROUP - LTEXT "...",IDC_STATUS,15,154,253,12 - GROUPBOX "Shell context menus",IDC_STATIC,0,0,311,238 - CONTROL "Do not display the profile name in use",IDC_NOPROF, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,80,285,8 - CONTROL "Show contacts that you have set privacy rules for", - IDC_SHOWINVISIBLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, - 15,110,290,8 - PUSHBUTTON "Remove",IDC_REMOVE,14,173,42,14 - CONTROL "Do not show status icons in menus",IDC_USEOWNERDRAW, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,95,290,8 - LTEXT "",IDC_STATIC,214,136,10,11,NOT WS_GROUP - CONTROL "Do not show contacts that are offline, even if my contact list does",IDC_HIDEOFFLINE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,125,290,8 -END - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,6,6 - PRODUCTVERSION 1,0,6,6 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080904b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", "\0" - VALUE "FileDescription", "'Click ''n'' send support from Explorer/Common dialogs/Desktop, Right click on a file/folder to be presented with all your Miranda contact lists and then select the profile/contact you want to send to.\0" - VALUE "FileVersion", "1, 0, 6, 6\0" - VALUE "InternalName", "shlext\0" - VALUE "LegalCopyright", "\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "shlext.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "\0" - VALUE "ProductVersion", "1, 0, 6, 6\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x809, 1200 - END -END - diff --git a/plugins/!Deprecated/ShlExt/shldlgs.res b/plugins/!Deprecated/ShlExt/shldlgs.res deleted file mode 100644 index 3de576e992..0000000000 Binary files a/plugins/!Deprecated/ShlExt/shldlgs.res and /dev/null differ diff --git a/plugins/!Deprecated/ShlExt/shlext.dpr b/plugins/!Deprecated/ShlExt/shlext.dpr deleted file mode 100644 index c23ee75f93..0000000000 --- a/plugins/!Deprecated/ShlExt/shlext.dpr +++ /dev/null @@ -1,379 +0,0 @@ -{$IFDEF FPC} -{$PACKRECORDS 4} -{$MODE Delphi} -{$ASMMODE intel} -{$INLINE ON} -{$MACRO ON} -{$APPTYPE GUI} -{$IMAGEBASE $49ac0000} -{$ELSE} -{$IMAGEBASE $49ac0000} // this is ignored with FPC, must be set via the command line -{$ENDIF} -library shlext; - -uses - Windows, shlcom, shlipc, m_api; - -// use the registry to store the COM information needed by the shell - -function DllRegisterServer: HResult; stdcall; -var - szData: PChar; - hRegKey: HKEY; -begin - -{$IFDEF INSTALLER_REGISTER} - Result := S_OK; -{$ELSE} - // progID - szData := 'shlext (1.0.6.6) - shell context menu support for Miranda v0.3.0.0+'; - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, 'miranda.shlext', REG_SZ, szData, Length(szData)) then - begin - // CLSID related to ProgID - szData := '{72013A26-A94C-11d6-8540-A5E62932711D}'; - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, 'miranda.shlext\CLSID', REG_SZ, szData, Length(szData)) then - begin - // CLSID link back to progID - szData := 'miranda.shlext'; - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, - 'CLSID\{72013A26-A94C-11d6-8540-A5E62932711D}', REG_SZ, szData, Length(szData)) then - begin - // CLSID link back to ProgID under \ProgID again? - szData := 'miranda.shlext'; - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, - 'CLSID\{72013A26-A94C-11d6-8540-A5E62932711D}\ProgID', REG_SZ, szData, Length(szData)) then - begin - GetMem(szData, MAX_PATH); - GetModuleFileName(hInstance, szData, MAX_PATH - 1); - Result := RegSetValue(HKEY_CLASSES_ROOT, - 'CLSID\{72013A26-A94C-11d6-8540-A5E62932711D}\InprocServer32', REG_SZ, szData, Length(szData)); - FreeMem(szData); - if Result = ERROR_SUCCESS then - begin - // have to add threading model - szData := 'CLSID\{72013A26-A94C-11d6-8540-A5E62932711D}\InprocServer32'; - Result := RegCreateKeyEx(HKEY_CLASSES_ROOT, szData, 0, nil, 0, - KEY_SET_VALUE or KEY_CREATE_SUB_KEY, nil, hRegKey, nil); - if Result = ERROR_SUCCESS then - begin - szData := 'Apartment'; - RegSetValueEx(hRegKey, 'ThreadingModel', 0, REG_SZ, PByte(szData), Length(szData) + 1); - RegCloseKey(hRegKey); - // write which file types to show under - szData := '{72013A26-A94C-11d6-8540-A5E62932711D}'; - // note that *\ should use AllFilesystemObjects for 4.71+ - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, - '*\shellex\ContextMenuHandlers\miranda.shlext', REG_SZ, szData, Length(szData)) then - begin - // don't support directories - if ERROR_SUCCESS = RegSetValue(HKEY_CLASSES_ROOT, - 'Directory\shellex\ContextMenuHandlers\miranda.shlext', REG_SZ, szData, - Length(szData)) then - begin - Result := S_OK; - // have to add to the approved list under NT/2000/XP with {CLSID}="" - szData := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved'; - Result := RegCreateKeyEx(HKEY_LOCAL_MACHINE, szData, 0, nil, 0, - KEY_SET_VALUE or KEY_CREATE_SUB_KEY, nil, hRegKey, nil); - if Result = ERROR_SUCCESS then - begin - szData := 'shlext (1.0.6.6) - context menu support for Miranda v0.3.0.0+'; - RegSetValueEx(hRegKey, '{72013A26-A94C-11d6-8540-A5E62932711D}', 0, REG_SZ, - PByte(szData), Length(szData) + 1); - RegCloseKey(hRegKey); - end; // if - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - end - else - Result := E_FAIL; - // -{$ENDIF} -end; - -function DllUnregisterServer: HResult; stdcall; -begin - Result := RemoveCOMRegistryEntries(); -end; - -// - miranda section ---- - -const - - COMREG_UNKNOWN = $00000000; - COMREG_OK = $00000001; - COMREG_APPROVED = $00000002; - -function IsCOMRegistered: Integer; -var - hRegKey: HKEY; - lpType: Integer; -begin - Result := 0; - // these arent the BEST checks in the world - if ERROR_SUCCESS = RegOpenKeyEx(HKEY_CLASSES_ROOT, 'miranda.shlext', 0, KEY_READ, hRegKey) - then - begin - Result := Result or COMREG_OK; - RegCloseKey(hRegKey); - end; // if - lpType := REG_SZ; - if ERROR_SUCCESS = RegOpenKeyEx(HKEY_LOCAL_MACHINE, - 'Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', 0, KEY_READ, hRegKey) - then - begin - if ERROR_SUCCESS = RegQueryValueEx(hRegKey, '{72013A26-A94C-11d6-8540-A5E62932711D}', nil, - @lpType, nil, nil) then - begin - Result := Result or COMREG_APPROVED; - end; // if - RegCloseKey(hRegKey); - end; // if -end; - -procedure AutoSize(hwnd: THandle); -var - szBuf: array [0 .. MAX_PATH] of Char; - DC: HDC; - tS: TSize; - i: Integer; - hFont, hOldFont: THandle; -begin - DC := GetDC(hwnd); - hFont := GetStockObject(DEFAULT_GUI_FONT); - hOldFont := SelectObject(DC, hFont); - i := GetWindowText(hwnd, szBuf, MAX_PATH); - GetTextExtentPoint32(DC, szBuf, i, tS); - SelectObject(DC, hOldFont); - DeleteObject(hFont); - ReleaseDC(hwnd, DC); - SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, tS.cx + 10, tS.cy, SWP_NOMOVE or SWP_FRAMECHANGED); -end; - -function OptDialogProc(hwndDlg: THandle; wMsg: Integer; wParam: wParam; lParam: lParam): BOOL; stdcall; -// don't wanna bring in CommCtrl just for a few constants -const -{$IFNDEF FPC} - WM_INITDIALOG = $0110; - WM_COMMAND = $0111; - WM_USER = $0400; - WM_NOTIFY = $004E; -{$ENDIF} - { propsheet notifications/msessages } - // PSN_APPLY = (-200) - 2; - PSM_CHANGED = WM_USER + 104; - { button styles } - BCM_SETSHIELD = ( { BCM_FIRST } $1600 + $000C); - { hotkey } - // bring in the IDC's and storage key names -{$DEFINE SHL_IDC} -{$DEFINE SHL_KEYS} -{$INCLUDE shlc.inc} -{$UNDEF SHL_KEYS} -{$UNDEF SHL_IDC} -const - COM_OKSTR: array [Boolean] of PChar = ('Problem, registration missing/deleted.', - 'Successfully created shell registration.'); - COM_APPROVEDSTR: array [Boolean] of PChar = ('Not Approved', 'Approved'); -var - comReg: Integer; - iCheck: Integer; - szBuf: array [0 .. MAX_PATH] of Char; -begin - Result := wMsg = WM_INITDIALOG; - case wMsg of - WM_NOTIFY: - begin - { * FP 2.2.2 seems to have a bug, 'Code' is supposed to be signed - but isn't signed, so when comparing -202 (=PSN_APPLY) It doesn't work - so here, -202 is converted into hex, what you are looking at is the - code == PSN_APPLY check. * } - if $FFFFFF36 = pNMHDR(lParam)^.code then - begin - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_UseGroups, - IsDlgButtonChecked(hwndDlg, IDC_USEGROUPS)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_UseCListSetting, - IsDlgButtonChecked(hwndDlg, IDC_CLISTGROUPS)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoProfile, - IsDlgButtonChecked(hwndDlg, IDC_NOPROF)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_UseHITContacts, - IsDlgButtonChecked(hwndDlg, IDC_SHOWFULL)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_UseHIT2Contacts, - IsDlgButtonChecked(hwndDlg, IDC_SHOWINVISIBLES)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoIcons, - IsDlgButtonChecked(hwndDlg, IDC_USEOWNERDRAW)); - DBWriteContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoOffline, - IsDlgButtonChecked(hwndDlg, IDC_HIDEOFFLINE)); - end; // if - end; - WM_INITDIALOG: - begin - TranslateDialogDefault(hwndDlg); - comReg := IsCOMRegistered(); - FillChar(szBuf, MAX_PATH, 0); - lstrcat(szBuf, Translate(COM_OKSTR[comReg and COMREG_OK = COMREG_OK])); - lstrcat(szBuf, ' ('); - lstrcat(szBuf, Translate(COM_APPROVEDSTR[comReg and - COMREG_APPROVED = COMREG_APPROVED])); - lstrcat(szBuf, ')'); - SetWindowText(GetDlgItem(hwndDlg, IDC_STATUS), szBuf); - // auto size the static windows to fit their text - // they're rendering in a font not selected into the DC. - AutoSize(GetDlgItem(hwndDlg, IDC_CAPMENUS)); - AutoSize(GetDlgItem(hwndDlg, IDC_CAPSTATUS)); - AutoSize(GetDlgItem(hwndDlg, IDC_CAPSHLSTATUS)); - // show all the options - iCheck := DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseGroups, BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_USEGROUPS, iCheck); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLISTGROUPS), iCheck = BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_CLISTGROUPS, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseCListSetting, BST_UNCHECKED)); - CheckDlgButton(hwndDlg, IDC_NOPROF, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoProfile, BST_UNCHECKED)); - CheckDlgButton(hwndDlg, IDC_SHOWFULL, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseHITContacts, BST_UNCHECKED)); - CheckDlgButton(hwndDlg, IDC_SHOWINVISIBLES, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_UseHIT2Contacts, BST_UNCHECKED)); - CheckDlgButton(hwndDlg, IDC_USEOWNERDRAW, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoIcons, BST_UNCHECKED)); - CheckDlgButton(hwndDlg, IDC_HIDEOFFLINE, - DBGetContactSettingByte(0, SHLExt_Name, SHLExt_ShowNoOffline, BST_UNCHECKED)); - // give the Remove button a Vista icon - SendMessage(GetDlgItem(hwndDlg, IDC_REMOVE), BCM_SETSHIELD, 0, 1); - end; - WM_COMMAND: - begin - // don't send the changed message if remove is clicked - if LOWORD(wParam) <> IDC_REMOVE then - begin - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - end; // if - case LOWORD(wParam) of - IDC_USEGROUPS: - begin - EnableWindow(GetDlgItem(hwndDlg, IDC_CLISTGROUPS), - BST_CHECKED = IsDlgButtonChecked(hwndDlg, IDC_USEGROUPS)); - end; // if - IDC_REMOVE: - begin - if IDYES = MessageBoxW(0, - TranslateW( - 'Are you sure? this will remove all the settings stored in your database and all registry entries created for shlext to work with Explorer'), - TranslateW('Disable/Remove shlext'), MB_YESNO or MB_ICONQUESTION) then - begin - db_unset(0, SHLExt_Name, SHLExt_UseGroups); - db_unset(0, SHLExt_Name, SHLExt_UseCListSetting); - db_unset(0, SHLExt_Name, SHLExt_UseHITContacts); - db_unset(0, SHLExt_Name, SHLExt_UseHIT2Contacts); - db_unset(0, SHLExt_Name, SHLExt_ShowNoProfile); - db_unset(0, SHLExt_Name, SHLExt_ShowNoIcons); - db_unset(0, SHLExt_Name, SHLExt_ShowNoOffline); - - (* remove from Explorer *) - // DllUnregisterServer(); - CheckUnregisterServer(); - (* show all the settings have gone... *) - SendMessage(hwndDlg, WM_INITDIALOG, 0, 0); - end; // if - end; // if - end; // case - // LOWORD(wParam) == IDC_* - end; { outercase } - end; // case -end; - -function InitialiseOptionPages(wParam: wParam; lParam: lParam): int; cdecl; -const - IDD_SHLOPTS = 101; -var - optDialog: TOPTIONSDIALOGPAGE; -begin - Result := 0; - FillChar(optDialog, sizeof(TOPTIONSDIALOGPAGE), 0); - optDialog.cbSize := sizeof(TOPTIONSDIALOGPAGE); - optDialog.flags := ODPF_BOLDGROUPS; - optDialog.groupPosition := 0; - optDialog.szGroup.a := 'Plugins'; - optDialog.position := -1066; - optDialog.szTitle.a := Translate('Shell context menus'); - optDialog.pszTemplate := MAKEINTRESOURCE(IDD_SHLOPTS); -{$IFDEF VER140} - optDialog.hInstance := hInstance; -{$ELSE} - optDialog.hInstance := System.hInstance; -{$ENDIF} - optDialog.pfnDlgProc := @OptDialogProc; - - Options_AddPage(wParam,@optDialog); -end; - -function MirandaPluginInfoEx(mirandaVersion: DWORD): PPLUGININFOEX; cdecl; -begin - Result := nil; - { fill in plugininfo } - PluginInfo.cbSize := sizeof(PluginInfo); - PluginInfo.shortName := 'Shell context menus for transfers'; - PluginInfo.version := PLUGIN_MAKE_VERSION(2, 0, 1, 2); -{$IFDEF FPC} - PluginInfo.description := - 'Click ''n'' send support from Explorer/Common dialogs/Desktop, Right click on a file/folder to be presented with all your Miranda contact lists and then select the profile/contact you want to send to.'; -{$ELSE} - PluginInfo.description := ''; -{$ENDIF} - PluginInfo.author := 'egoDust'; - PluginInfo.authorEmail := 'egodust@users.sourceforge.net'; - PluginInfo.copyright := '(c) 2009 Sam Kothari (egoDust)'; - PluginInfo.homePage := 'http://addons.miranda-im.org/details.php?action=viewfile&id=534'; - PluginInfo.flags := 0; - { This UUID is fetched twice } - CopyMemory(@PluginInfo.uuid, @CLSID_ISHLCOM, sizeof(TMUUID)); - { return info } - Result := @PluginInfo; -end; - -function Load(): int; cdecl; -begin - Result := 0; - InvokeThreadServer; - HookEvent(ME_OPT_INITIALISE, InitialiseOptionPages); - DllRegisterServer(); - CheckRegisterServer(); - // DisableThreadLibraryCalls(System.hInstance); -end; - -function Unload: int; cdecl; -begin - Result := 0; -end; - -{$R shldlgs.res} - -exports - MirandaPluginInfoEx, Load, Unload; - -exports - DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer; - -initialization - DisableThreadLibraryCalls(hInstance); - -end. diff --git a/plugins/!Deprecated/ShlExt/shlicons.pas b/plugins/!Deprecated/ShlExt/shlicons.pas deleted file mode 100644 index 195033ae8d..0000000000 --- a/plugins/!Deprecated/ShlExt/shlicons.pas +++ /dev/null @@ -1,168 +0,0 @@ -unit shlicons; - -interface - -uses - Windows; - -type - - PVTable_IWICBitmap = ^TVTable_IWICBitmap; - - TVTable_IWICBitmap = record - { IUnknown } - QueryInterface: Pointer; - AddRef: function(Self: Pointer): Cardinal; stdcall; - Release: function(Self: Pointer): Cardinal; stdcall; - { IWICBitmapSource } - GetSize: function(Self: Pointer; var Width, Height: LongInt): HResult; stdcall; - GetPixelFormat: Pointer; - GetResolution: Pointer; - CopyPalette: Pointer; - CopyPixels: function(Self: Pointer; prc: Pointer; cbStride, cbBufferSize: LongWord; - pbBuffer: PByte): HResult; stdcall; - { IWICBitmap } - // .... not used - - end; - - PWICBitmap_Interface = ^TWICBitmap_Interface; - - TWICBitmap_Interface = record - ptrVTable: PVTable_IWICBitmap; - end; - - // bare minmum interface to ImagingFactory - - PVTable_ImagingFactory = ^TVTable_ImagingFactory; - - TVTable_ImagingFactory = record - { IUnknown } - QueryInterface: Pointer; - AddRef: function(Self: Pointer): Cardinal; stdcall; - Release: function(Self: Pointer): Cardinal; stdcall; - { ImagingFactory } - CreateDecoderFromFilename: Pointer; - CreateDecoderFromStream: Pointer; - CreateDecoderFromFileHandle: Pointer; - CreateComponentInfo: Pointer; - CreateDecoder: Pointer; - CreateEncoder: Pointer; - CreatePalette: Pointer; - CreateFormatConverter: Pointer; - CreateBitmapScaler: Pointer; - CreateBitmapClipper: Pointer; - CreateBitmapFlipRotator: Pointer; - CreateStream: Pointer; - CreateColorContext: Pointer; - CreateColorTransformer: Pointer; - CreateBitmap: Pointer; - CreateBitmapFromSource: Pointer; - CreateBitmapFromSourceRect: Pointer; - CreateBitmapFromMemory: Pointer; - CreateBitmapFromHBITMAP: Pointer; - CreateBitmapFromHICON: function(Self: Pointer; hIcon: Windows.hIcon; var foo: Pointer) - : HResult; stdcall; - { rest ommited } - end; - - PImageFactory_Interface = ^TImageFactory_Interface; - - TImageFactory_Interface = record - ptrVTable: PVTable_ImagingFactory; - end; - -function ARGB_GetWorker: PImageFactory_Interface; - -function ARGB_BitmapFromIcon(Factory: PImageFactory_Interface; hdc: Windows.hdc; hIcon: hIcon): HBitmap; - -implementation - -{$DEFINE SHLCOM} -{$DEFINE COM_STRUCTS} -{$DEFINE COMAPI} -{$INCLUDE shlc.inc} -{$UNDEF SHLCOM} -{$UNDEF COM_STRUCTS} -{$UNDEF COMAPI} -{ - The following implementation has been ported from: - - http://web.archive.org/web/20080121112802/http://shellrevealed.com/blogs/shellblog/archive/2007/02/06/Vista-Style-Menus_2C00_-Part-1-_2D00_-Adding-icons-to-standard-menus.aspx - - It uses WIC (Windows Imaging Codec) to convert the given Icon into a bitmap in ARGB format, this is required - by Windows for use as an icon (but in bitmap format), so that Windows draws everything (including theme) - so we don't have to. - - Why didn't they just do this themselves? ... -} - -{ - The object returned from this function has to be released using the QI COM interface, don't forget. - Note this function won't work on anything where WIC isn't installed (XP can have it installed, but not by default) - anything less won't work. -} -function ARGB_GetWorker: PImageFactory_Interface; -var - hr: HResult; -begin - hr := CoCreateInstance(CLSID_WICImagingFactory, nil, CLSCTX_INPROC_SERVER, - IID_WICImagingFactory, Result); -end; - -function ARGB_BitmapFromIcon(Factory: PImageFactory_Interface; hdc: Windows.hdc; hIcon: hIcon): HBitmap; -var - bmi: BITMAPINFO; - hr: HResult; - bitmap: PWICBitmap_Interface; - cx, cy: LongInt; - pbBuffer: PByte; - hBmp: HBitmap; - cbStride, cbBuffer: LongInt; -begin - { This code gives an icon to WIC and gets a bitmap object in return, it then creates a DIB section - which is 32bits and the same H*W as the icon. It then asks the bitmap object to copy itself into the DIB } - Result := 0; - ZeroMemory(@bmi, sizeof(bmi)); - bmi.bmiHeader.biSize := sizeof(BITMAPINFOHEADER); - bmi.bmiHeader.biPlanes := 1; - bmi.bmiHeader.biCompression := BI_RGB; - - bmi.bmiHeader.biBitCount := 32; - - hr := Factory^.ptrVTable^.CreateBitmapFromHICON(Factory, hIcon, pointer(bitmap)); - if hr = S_OK then - begin - hr := bitmap^.ptrVTable^.GetSize(bitmap, cx, cy); - if hr = S_OK then - begin - - bmi.bmiHeader.biWidth := cx; - bmi.bmiHeader.biHeight := -cy; - - hBmp := CreateDIBSection(hdc, bmi, DIB_RGB_COLORS, pointer(pbBuffer), 0, 0); - if hBmp <> 0 then - begin - cbStride := cx * sizeof(DWORD); // ARGB = DWORD - cbBuffer := cy * cbStride; - // note: the pbBuffer memory is owned by the DIB and will be freed when the bitmap is released - hr := bitmap^.ptrVTable^.CopyPixels(bitmap, nil, cbStride, cbBuffer, pbBuffer); - if hr = S_OK then - begin - Result := hBmp; - end - else - begin - // the copy failed, delete the DIB - DeleteObject(hBmp); - end; - end; - end; - // release the bitmap object now - bitmap^.ptrVTable^.Release(bitmap); - bitmap := nil; - end; - -end; - -end. diff --git a/plugins/!Deprecated/ShlExt/shlipc.pas b/plugins/!Deprecated/ShlExt/shlipc.pas deleted file mode 100644 index 17ab511e52..0000000000 --- a/plugins/!Deprecated/ShlExt/shlipc.pas +++ /dev/null @@ -1,394 +0,0 @@ -unit shlIPC; - -interface - -uses - - m_api, Windows; - -const - - REPLY_FAIL = $88888888; - REPLY_OK = $00000000; - - REQUEST_ICONS = 1; - REQUEST_GROUPS = (REQUEST_ICONS) shl 1; - REQUEST_CONTACTS = (REQUEST_GROUPS) shl 1; - REQUEST_XFRFILES = (REQUEST_CONTACTS) shl 1; - REQUEST_NEWICONS = (REQUEST_XFRFILES) shl 1; - REQUEST_CLEARMRU = (REQUEST_NEWICONS) shl 1; - - ICONS_NOTIMPL = $00000008; - GROUPS_NOTIMPL = $00000080; - CONTACTS_NOTIMPL = $00000800; - - STATUS_PROFILENAME = 2; - - - // there maybe more than one reason why any request type wasn't returned - -type - - { this can be a group entry, if it is, hContact = - the string contains the full group path } - - PSlotIPC = ^TSlotIPC; - - TSlotIPC = packed record - cbSize: Byte; - fType: int; // a REQUEST_* type - Next: PSlotIPC; - hContact: THandle; - hProto: Cardinal; // hash of the protocol the user is on - hGroup: Cardinal; // hash of the entire path (not defined for REQUEST_GROUPS slots) - Status: Word; - // only used for contacts -- can be STATUS_PROFILENAME -- but that is because returning the profile name is optional - MRU: Byte; // if set, contact has been recently used - cbStrSection: int; - end; - - // if the slot contains a nickname, after the NULL, there is another NULL or a group path string - - PSlotProtoIcons = ^TSlotProtoIcons; - - TSlotProtoIcons = packed record - pid: Cardinal; // pid of Miranda this protocol was on - hProto: Cardinal; // hash of the protocol - hIcons: array [0 .. 9] of HICON; // each status in order of ID_STATUS_* - hBitmaps: array [0 .. 9] of HBITMAP; // each status "icon" as a bitmap - end; - - TSlotProtoIconsArray = array [0 .. 0] of TSlotProtoIcons; - // the process space the thread is running in WILL use a different mapping - // address than the client's process space, addresses need to be adjusted - // to the client's process space.. this is done by the following means : - - // - // new_addr := (old_address - serverbase) + client base - // - // this isn't the best of solutions, the link list should be a variant array - // without random access, which would mean each element's different - // size would need to be computed each time it is accessed or read past - - PHeaderIPC = ^THeaderIPC; - - THeaderIPC = record - cbSize: Cardinal; - dwVersion: Cardinal; - pServerBaseAddress: Pointer; - pClientBaseAddress: Pointer; - fRequests: Cardinal; - dwFlags: Cardinal; - Slots: Cardinal; - Param: Cardinal; - SignalEventName: array [0 .. 63] of Char; - // Translate() won't work via Explorer - MirandaName: array [0 .. 63] of Char; - MRUMenuName: array [0 .. 63] of Char; // for the MRU menu itself - ClearEntries: array [0 .. 63] of Char; // for the "clear entries" - IconsBegin: PSlotIPC; - ContactsBegin: PSlotIPC; - GroupsBegin: PSlotIPC; - NewIconsBegin: PSlotIPC; - // start of an flat memory stack, which is referenced as a linked list - DataSize: int; - DataPtr: PSlotIPC; - DataPtrEnd: PSlotIPC; - DataFramePtr: Pointer; - end; - -const - HIPC_NOICONS = 1; - -procedure ipcPrepareRequests(ipcPacketSize: int; pipch: PHeaderIPC; fRequests: Cardinal); -function ipcSendRequest(hSignal, hWaitFor: THandle; pipch: PHeaderIPC; dwTimeoutMsecs: DWORD): Cardinal; -function ipcAlloc(pipch: PHeaderIPC; nSize: Integer): PSlotIPC; -procedure ipcFixupAddresses(FromServer: LongBool; pipch: PHeaderIPC); - -type - - TStrTokRec = record - szStr: PChar; - szSet: set of Char; - // need a delimiter after the token too?, e.g. FOO^BAR^ if FOO^BAR - // is the string then only FOO^ is returned, could cause infinite loops - // if the condition isn't accounted for thou. - bSetTerminator: Boolean; - end; - -function StrTok(var strr: TStrTokRec): PChar; - -type - - PGroupNode = ^TGroupNode; - - TGroupNode = record - Left, Right, _prev, _next: PGroupNode; - Depth: Cardinal; - Hash: Cardinal; // hash of the group name alone - szGroup: PChar; - cchGroup: Integer; - hMenu: THandle; - hMenuGroupID: Integer; - dwItems: Cardinal; - end; - - PGroupNodeList = ^TGroupNodeList; - - TGroupNodeList = record - First, Last: PGroupNode; - end; - -function AllocGroupNode(list: PGroupNodeList; Root: PGroupNode; Depth: Integer): PGroupNode; -function FindGroupNode(P: PGroupNode; const Hash, Depth: dword): PGroupNode; - -type - - // a contact can never be a submenu too. - TSlotDrawType = (dtEntry, dtGroup, dtContact, dtCommand); - TSlotDrawTypes = set of TSlotDrawType; - - PMenuDrawInfo = ^TMenuDrawInfo; - - TMenuCommandCallback = function(pipch: PHeaderIPC; // IPC header info, already mapped - hWorkThreadEvent: THandle; // event object being waited on on miranda thread - hAckEvent: THandle; // ack event object that has been created - psd: PMenuDrawInfo // command/draw info - ): Integer; stdcall; - - TMenuDrawInfo = record - szText: PChar; - szProfile: PChar; - cch: Integer; - wID: Integer; // should be the same as the menu item's ID - fTypes: TSlotDrawTypes; - hContact: THandle; - hStatusIcon: THandle; - // HICON from Self^.ProtoIcons[index].hIcons[status]; Do not DestroyIcon() - hStatusBitmap: THandle; // HBITMAP, don't free. - pid: Integer; - MenuCommandCallback: TMenuCommandCallback; // dtCommand must be set also. - end; - -implementation - -function FindGroupNode(P: PGroupNode; const Hash, Depth: dword): PGroupNode; -begin - Result := P; - while Result <> nil do - begin - if (Result^.Hash = Hash) and (Result^.Depth = Depth) then - Exit; - If Result^.Left <> nil then - begin - P := Result; - Result := FindGroupNode(Result^.Left, Hash, Depth); - If Result <> nil then - Exit; - Result := P; - end; - Result := Result^.Right; - end; // while -end; - -function AllocGroupNode(list: PGroupNodeList; Root: PGroupNode; Depth: Integer): PGroupNode; -begin - New(Result); - Result^.Left := nil; - Result^.Right := nil; - Result^.Depth := Depth; - if Depth > 0 then - begin - if Root^.Left = nil then - Root^.Left := Result - else - begin - Root := Root^.Left; - while Root^.Right <> nil do - Root := Root^.Right; - Root^.Right := Result; - end; - end - else - begin - if list^.First = nil then - list^.First := Result; - if list^.Last <> nil then - list^.Last^.Right := Result; - list^.Last := Result; - end; // if -end; - -procedure ipcPrepareRequests(ipcPacketSize: int; pipch: PHeaderIPC; fRequests: Cardinal); -begin - // some fields may already have values like the event object name to open - pipch^.cbSize := sizeof(THeaderIPC); - pipch^.dwVersion := PLUGIN_MAKE_VERSION(2, 0, 1, 2); - pipch^.dwFlags := 0; - pipch^.pServerBaseAddress := nil; - pipch^.pClientBaseAddress := pipch; - pipch^.fRequests := fRequests; - pipch^.Slots := 0; - pipch^.IconsBegin := nil; - pipch^.ContactsBegin := nil; - pipch^.GroupsBegin := nil; - pipch^.NewIconsBegin := nil; - pipch^.DataSize := ipcPacketSize - pipch^.cbSize; - // the server side will adjust these pointers as soon as it opens - // the mapped file to it's base address, these are set 'ere because ipcAlloc() - // maybe used on the client side and are translated by the server side. - // ipcAlloc() is used on the client side when transferring filenames - // to the ST thread. - uint_ptr(pipch^.DataPtr) := uint_ptr(pipch) + sizeof(THeaderIPC); - uint_ptr(pipch^.DataPtrEnd) := uint_ptr(pipch^.DataPtr) + pipch^.DataSize; - pipch^.DataFramePtr := pipch^.DataPtr; - // fill the data area - FillChar(pipch^.DataPtr^, pipch^.DataSize, 0); -end; - -function ipcSendRequest(hSignal, hWaitFor: THandle; pipch: PHeaderIPC; dwTimeoutMsecs: DWORD): Cardinal; -begin - { signal ST to work } - SetEvent(hSignal); - { wait for reply, it should open a handle to hWaitFor... } - while True do - begin - Result := WaitForSingleObjectEx(hWaitFor, dwTimeoutMsecs, True); - if Result = WAIT_OBJECT_0 then - begin - Result := pipch^.fRequests; - break; - end - else if Result = WAIT_IO_COMPLETION then - begin - (* APC call... *) - end - else - begin - Result := REPLY_FAIL; - break; - end; // if - end; // while -end; - -function ipcAlloc(pipch: PHeaderIPC; nSize: Integer): PSlotIPC; -var - PSP: uint_ptr; -begin - Result := nil; - { nSize maybe zero, in that case there is no string section --- } - PSP := uint_ptr(pipch^.DataFramePtr) + sizeof(TSlotIPC) + nSize; - { is it past the end? } - If PSP >= uint_ptr(pipch^.DataPtrEnd) then - Exit; - { return the pointer } - Result := pipch^.DataFramePtr; - { set up the item } - Result^.cbSize := sizeof(TSlotIPC); - Result^.cbStrSection := nSize; - { update the frame ptr } - pipch^.DataFramePtr := Pointer(PSP); - { let this item jump to the next yet-to-be-allocated-item which should be null anyway } - Result^.Next := Pointer(PSP); -end; - -procedure ipcFixupAddresses(FromServer: LongBool; pipch: PHeaderIPC); -var - pct: PSlotIPC; - q: ^PSlotIPC; - iServerBase: int_ptr; - iClientBase: int_ptr; -begin - if pipch^.pServerBaseAddress = pipch^.pClientBaseAddress then - Exit; - iServerBase := int_ptr(pipch^.pServerBaseAddress); - iClientBase := int_ptr(pipch^.pClientBaseAddress); - // fix up all the pointers in the header - if pipch^.IconsBegin <> nil then - begin - uint_ptr(pipch^.IconsBegin) := (uint_ptr(pipch^.IconsBegin) - iServerBase) + iClientBase; - end; // if - - if pipch^.ContactsBegin <> nil then - begin - uint_ptr(pipch^.ContactsBegin) := (uint_ptr(pipch^.ContactsBegin) - iServerBase) + iClientBase; - end; // if - - if pipch^.GroupsBegin <> nil then - begin - uint_ptr(pipch^.GroupsBegin) := (uint_ptr(pipch^.GroupsBegin) - iServerBase) + iClientBase; - end; // if - - if pipch^.NewIconsBegin <> nil then - begin - uint_ptr(pipch^.NewIconsBegin) := (uint_ptr(pipch^.NewIconsBegin) - iServerBase) + - iClientBase; - end; - uint_ptr(pipch^.DataPtr) := (uint_ptr(pipch^.DataPtr) - iServerBase) + iClientBase; - uint_ptr(pipch^.DataPtrEnd) := (uint_ptr(pipch^.DataPtrEnd) - iServerBase) + iClientBase; - uint_ptr(pipch^.DataFramePtr) := (uint_ptr(pipch^.DataFramePtr) - iServerBase) + iClientBase; - // and the link list - pct := pipch^.DataPtr; - while (pct <> nil) do - begin - // the first pointer is already fixed up, have to get a pointer - // to the next pointer and modify where it jumps to - q := @pct^.Next; - if q^ <> nil then - begin - uint_ptr(q^) := (uint_ptr(q^) - iServerBase) + iClientBase; - end; // if - pct := q^; - end; // while -end; - -function StrTok(var strr: TStrTokRec): PChar; -begin - Result := nil; - { don't allow #0's in sets or null strings } - If (strr.szStr = nil) or (#0 in strr.szSet) then - Exit; - { strip any leading delimiters } - while strr.szStr^ in strr.szSet do - Inc(strr.szStr); - { end on null? full of delimiters } - If strr.szStr^ = #0 then - begin - // wipe out the pointer - strr.szStr := nil; - Exit; - end; - { store the start of the token } - Result := strr.szStr; - { process til start of another delim } - while not(strr.szStr^ in strr.szSet) do - begin - { don't process past the real null, is a delimter required to cap the token? } - If strr.szStr^ = #0 then - break; - Inc(strr.szStr); - end; - { if we end on a null stop reprocessin' } - If strr.szStr^ = #0 then - begin - // no more tokens can be read - strr.szStr := nil; - // is a ending delimiter required? - If strr.bSetTerminator then - begin - // rollback - strr.szStr := Result; - Result := nil; - end; - // - end - else - begin - { mark the end of the token, may AV if a constant pchar is passed } - strr.szStr^ := #0; - { skip past this fake null for next time } - Inc(strr.szStr); - end; -end; - -end. diff --git a/plugins/!Deprecated/Skype/Skype_10.vcxproj b/plugins/!Deprecated/Skype/Skype_10.vcxproj deleted file mode 100644 index 763fcd9f65..0000000000 --- a/plugins/!Deprecated/Skype/Skype_10.vcxproj +++ /dev/null @@ -1,284 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F5282DBC-756B-4071-B186-3E82C0E8E1F7} - Skype - - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - $(IntDir)\%(RelativeDir)\ - skype.h - Use - - - Windows - true - $(ProfileDir)..\..\bin10\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib\Debug - $(IntDir)$(TargetName).lib - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x86.lib;skypekit-cppwrapper_2_lib_x86.lib;%(AdditionalDependencies) - false - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - $(ProfileDir)..\..\bin10\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib\Debug - $(IntDir)$(TargetName).lib - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x64.lib;skypekit-cppwrapper_2_lib_x64.lib;%(AdditionalDependencies) - false - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - true - true - false - /PDBALTPATH:%_PDB% - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x86.lib;skypekit-cppwrapper_2_lib_x86.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin10\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib\Release - $(IntDir)$(TargetName).lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - true - true - false - /PDBALTPATH:%_PDB% - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x64.lib;skypekit-cppwrapper_2_lib_x64.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin10\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib\Release - $(IntDir)$(TargetName).lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - - - - - - - - - - - - - - - - - - - NotUsing - - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - - - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/Skype_10.vcxproj.filters b/plugins/!Deprecated/Skype/Skype_10.vcxproj.filters deleted file mode 100644 index f44a2b7302..0000000000 --- a/plugins/!Deprecated/Skype/Skype_10.vcxproj.filters +++ /dev/null @@ -1,219 +0,0 @@ - - - - - {13e9b105-554f-4080-b7de-8adf0f43b9f6} - - - {b14a0070-da9c-49e8-8a47-d93df5eed672} - - - {901463af-0f59-4125-b874-1662b095d403} - - - {092ce045-936d-405a-abaf-200a3abba159} - - - {f1aeb5a2-f105-4b8c-a656-08dbe6dc7b2e} - - - {a39a08d1-b79a-47eb-8433-1351f9f01401} - - - {171bef99-1ab9-424f-835d-9e47ab62365c} - - - - - 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\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - 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\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Resource Files\Bin - - - Resource Files\Bin - - - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/Skype_12.vcxproj b/plugins/!Deprecated/Skype/Skype_12.vcxproj deleted file mode 100644 index 2106fee3ae..0000000000 --- a/plugins/!Deprecated/Skype/Skype_12.vcxproj +++ /dev/null @@ -1,286 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F5282DBC-756B-4071-B186-3E82C0E8E1F7} - Skype - - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - false - true - Unicode - v120_xp - - - DynamicLibrary - false - true - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - $(IntDir)\%(RelativeDir)\ - skype.h - Use - - - Windows - true - $(ProfileDir)..\..\bin12\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib2013\Debug - $(IntDir)$(TargetName).lib - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x86.lib;skypekit-cppwrapper_2_lib_x86.lib;%(AdditionalDependencies) - false - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Disabled - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - false - true - 4996;%(DisableSpecificWarnings) - MultiThreadedDebugDLL - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - $(ProfileDir)..\..\bin12\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib2013\Debug - $(IntDir)$(TargetName).lib - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x64.lib;skypekit-cppwrapper_2_lib_x64.lib;%(AdditionalDependencies) - false - /PDBALTPATH:%_PDB% %(AdditionalOptions) - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - true - true - false - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x86.lib;skypekit-cppwrapper_2_lib_x86.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin12\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib2013\Release - $(IntDir)$(TargetName).lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - Level3 - Full - true - true - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - ..\..\include;..\..\plugins\ExternalAPI;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\api;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\ipc;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\types;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading;..\..\..\miranda-private-keys\SkypeKit\SDK\interfaces\skype\cpp_embedded\src\platform\threading\win;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\VideoBuffers;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\platform\se;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\include\openssl;..\..\..\miranda-private-keys\SkypeKit\SDK\ipc\cpp\ssl\cyassl\ctaocrypt\include;%(AdditionalIncludeDirectories) - 4996;%(DisableSpecificWarnings) - $(IntDir)\%(RelativeDir)\ - Use - skype.h - - - Windows - true - true - true - false - comctl32.lib;Shlwapi.lib;Ws2_32.lib;Advapi32.lib;skypekit-cyassl_lib_x64.lib;skypekit-cppwrapper_2_lib_x64.lib;%(AdditionalDependencies) - $(ProfileDir)..\..\bin12\lib;$(ProfileDir)..\..\..\miranda-private-keys\SkypeKit\SDK\lib2013\Release - $(IntDir)$(TargetName).lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - - - - - - - - - - - - - - - - - - - - - NotUsing - - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - ..\skype.h - - - - - - - - - - - - - - - - - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/Skype_12.vcxproj.filters b/plugins/!Deprecated/Skype/Skype_12.vcxproj.filters deleted file mode 100644 index f44a2b7302..0000000000 --- a/plugins/!Deprecated/Skype/Skype_12.vcxproj.filters +++ /dev/null @@ -1,219 +0,0 @@ - - - - - {13e9b105-554f-4080-b7de-8adf0f43b9f6} - - - {b14a0070-da9c-49e8-8a47-d93df5eed672} - - - {901463af-0f59-4125-b874-1662b095d403} - - - {092ce045-936d-405a-abaf-200a3abba159} - - - {f1aeb5a2-f105-4b8c-a656-08dbe6dc7b2e} - - - {a39a08d1-b79a-47eb-8433-1351f9f01401} - - - {171bef99-1ab9-424f-835d-9e47ab62365c} - - - - - 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\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - Source Files\skypekit - - - 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\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files\skypekit - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - Resource Files - - - - - Resource Files\Bin - - - Resource Files\Bin - - - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - Resource Files\Icons - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/docs/readme.txt b/plugins/!Deprecated/Skype/docs/readme.txt deleted file mode 100644 index 8a6e71cea5..0000000000 --- a/plugins/!Deprecated/Skype/docs/readme.txt +++ /dev/null @@ -1,44 +0,0 @@ -how to compile skypekit libs: -1) download skypekit from skype site. -2) create folders structure like this: - d:\MirandaNG - d:\SkypeKit - d:\SkypeKit\SDK -3) extract skypekit archive in d:\SkypeKit\SDK. You need have structure like this: - d:\SkypeKit\SDK\bin - d:\SkypeKit\SDK\buildfiles - d:\SkypeKit\SDK\examples - etc. -4) download and install cmake from here: http://www.cmake.org/ (Note: when installing cmake make sure that it registers in system PATH). -5) start d:\SkypeKit\SDK\build_all.bat and wait when it finished. Note: if you have more than one version of MSVC installed - cmake will use the one that was installed last. -You can specify the compiler by editing build_all.bat and adding '-G' key to command line (cmake -G "Visual Studio 10" - for MSVC 2010). -6) go to d:\SkypeKit\SDK\build_all_cmake\build_cmake\ and copy skypekit.sln to skypekit_libs.sln -7) run skypekit_libs.sln and remove all not needed projects, you need save only: - reference_opengl_lib - skypekit-avtransport - skypekit-cppwrapper_2_lib - skypekit-cyassl_lib - skypekit-ipccpp - skypekit-videobuffers - skypekit-voicepcm -8) edit each project: - 8.1) remove not needed configurations: - select solution skypekit_libs - open Configuration Manager - remove MinSizeRel and RelWithDebInfo configurations from solution and each projects - 8.2) add x64 platform: - add new platform x64 with coping settings from Win32 select item create new platform for projects - 8.3) change in each projects lib output name by adding _x86 or _x64 at the end. depends on selected platform - 8.3.1) need to copy Output directory from Win32 configuration and for Win32 add Intermediate directory _x86 and for x64 add _x64 - 8.3.2) for vc2012 need to set Platform Toolset to Visual Studio 2012 - Windows XP (v110_xp) - 8.3.3) for x64 platform edit Preprocessor by changing 32 to 64 - 8.3.4) edit C/C++-Output files- pdb file name. I set default for parent name -9) try to compile full solution - -you need to create Original_key.h with defining like that -#define MY_KEY "MY_KEY" -then you need create keypair.bin file. for this you need: -1) download keypair.crt from skype site and put in to d:\SkypeKit\keypair.crt -2) compile keypacker utility from here: d:\MNG orig\protocols\Skype\keypacker\. No difference debug or release. -3) copy keypacker.exe to d:\SkypeKit\ and run it. Utility create 3 files: keypair.bin and keypair.crt.decrypted and key.h -Now you can compile Skype protocol. \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/docs/todo_list.txt b/plugins/!Deprecated/Skype/docs/todo_list.txt deleted file mode 100644 index 581db42afa..0000000000 --- a/plugins/!Deprecated/Skype/docs/todo_list.txt +++ /dev/null @@ -1,4 +0,0 @@ -Features: -- voice -- video -- run skype runtime from resources directly \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/aes/aes.c b/plugins/!Deprecated/Skype/keypacker/aes/aes.c deleted file mode 100644 index 7e15f1547b..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/aes/aes.c +++ /dev/null @@ -1,765 +0,0 @@ -/* - * FIPS-197 compliant AES implementation - * - * Copyright (C) 2001-2004 Christophe Devine - * - * 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 "aes.h" - -/* uncomment the following line to run the test suite */ - -/* #define TEST */ - -/* uncomment the following line to use pre-computed tables */ -/* otherwise the tables will be generated at the first run */ - -/* #define FIXED_TABLES */ - -#ifndef FIXED_TABLES - -/* forward S-box & tables */ - -uint32 FSb[256]; -uint32 FT0[256]; -uint32 FT1[256]; -uint32 FT2[256]; -uint32 FT3[256]; - -/* reverse S-box & tables */ - -uint32 RSb[256]; -uint32 RT0[256]; -uint32 RT1[256]; -uint32 RT2[256]; -uint32 RT3[256]; - -/* round constants */ - -uint32 RCON[10]; - -/* tables generation flag */ - -int do_init = 1; - -/* tables generation routine */ - -#define ROTR8(x) ( ( ( x << 24 ) & 0xFFFFFFFF ) | \ - ( ( x & 0xFFFFFFFF ) >> 8 ) ) - -#define XTIME(x) ( ( x << 1 ) ^ ( ( x & 0x80 ) ? 0x1B : 0x00 ) ) -#define MUL(x,y) ( ( x && y ) ? pow[(log[x] + log[y]) % 255] : 0 ) - -void aes_gen_tables( void ) -{ - int i; - uint8 x, y; - uint8 pow[256]; - uint8 log[256]; - - /* compute pow and log tables over GF(2^8) */ - - for( i = 0, x = 1; i < 256; i++, x ^= XTIME( x ) ) - { - pow[i] = x; - log[x] = i; - } - - /* calculate the round constants */ - - for( i = 0, x = 1; i < 10; i++, x = XTIME( x ) ) - { - RCON[i] = (uint32) x << 24; - } - - /* generate the forward and reverse S-boxes */ - - FSb[0x00] = 0x63; - RSb[0x63] = 0x00; - - for( i = 1; i < 256; i++ ) - { - x = pow[255 - log[i]]; - - y = x; y = ( y << 1 ) | ( y >> 7 ); - x ^= y; y = ( y << 1 ) | ( y >> 7 ); - x ^= y; y = ( y << 1 ) | ( y >> 7 ); - x ^= y; y = ( y << 1 ) | ( y >> 7 ); - x ^= y ^ 0x63; - - FSb[i] = x; - RSb[x] = i; - } - - /* generate the forward and reverse tables */ - - for( i = 0; i < 256; i++ ) - { - x = (unsigned char) FSb[i]; y = XTIME( x ); - - FT0[i] = (uint32) ( x ^ y ) ^ - ( (uint32) x << 8 ) ^ - ( (uint32) x << 16 ) ^ - ( (uint32) y << 24 ); - - FT0[i] &= 0xFFFFFFFF; - - FT1[i] = ROTR8( FT0[i] ); - FT2[i] = ROTR8( FT1[i] ); - FT3[i] = ROTR8( FT2[i] ); - - y = (unsigned char) RSb[i]; - - RT0[i] = ( (uint32) MUL( 0x0B, y ) ) ^ - ( (uint32) MUL( 0x0D, y ) << 8 ) ^ - ( (uint32) MUL( 0x09, y ) << 16 ) ^ - ( (uint32) MUL( 0x0E, y ) << 24 ); - - RT0[i] &= 0xFFFFFFFF; - - RT1[i] = ROTR8( RT0[i] ); - RT2[i] = ROTR8( RT1[i] ); - RT3[i] = ROTR8( RT2[i] ); - } -} - -#else - -/* forward S-box */ - -static const uint32 FSb[256] = -{ - 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, - 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, - 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, - 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, - 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, - 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, - 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, - 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, - 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, - 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, - 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, - 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, - 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, - 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, - 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, - 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, - 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, - 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, - 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, - 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, - 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, - 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, - 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, - 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, - 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, - 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, - 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, - 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, - 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, - 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, - 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, - 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 -}; - -/* forward tables */ - -#define FT \ -\ - V(C6,63,63,A5), V(F8,7C,7C,84), V(EE,77,77,99), V(F6,7B,7B,8D), \ - V(FF,F2,F2,0D), V(D6,6B,6B,BD), V(DE,6F,6F,B1), V(91,C5,C5,54), \ - V(60,30,30,50), V(02,01,01,03), V(CE,67,67,A9), V(56,2B,2B,7D), \ - V(E7,FE,FE,19), V(B5,D7,D7,62), V(4D,AB,AB,E6), V(EC,76,76,9A), \ - V(8F,CA,CA,45), V(1F,82,82,9D), V(89,C9,C9,40), V(FA,7D,7D,87), \ - V(EF,FA,FA,15), V(B2,59,59,EB), V(8E,47,47,C9), V(FB,F0,F0,0B), \ - V(41,AD,AD,EC), V(B3,D4,D4,67), V(5F,A2,A2,FD), V(45,AF,AF,EA), \ - V(23,9C,9C,BF), V(53,A4,A4,F7), V(E4,72,72,96), V(9B,C0,C0,5B), \ - V(75,B7,B7,C2), V(E1,FD,FD,1C), V(3D,93,93,AE), V(4C,26,26,6A), \ - V(6C,36,36,5A), V(7E,3F,3F,41), V(F5,F7,F7,02), V(83,CC,CC,4F), \ - V(68,34,34,5C), V(51,A5,A5,F4), V(D1,E5,E5,34), V(F9,F1,F1,08), \ - V(E2,71,71,93), V(AB,D8,D8,73), V(62,31,31,53), V(2A,15,15,3F), \ - V(08,04,04,0C), V(95,C7,C7,52), V(46,23,23,65), V(9D,C3,C3,5E), \ - V(30,18,18,28), V(37,96,96,A1), V(0A,05,05,0F), V(2F,9A,9A,B5), \ - V(0E,07,07,09), V(24,12,12,36), V(1B,80,80,9B), V(DF,E2,E2,3D), \ - V(CD,EB,EB,26), V(4E,27,27,69), V(7F,B2,B2,CD), V(EA,75,75,9F), \ - V(12,09,09,1B), V(1D,83,83,9E), V(58,2C,2C,74), V(34,1A,1A,2E), \ - V(36,1B,1B,2D), V(DC,6E,6E,B2), V(B4,5A,5A,EE), V(5B,A0,A0,FB), \ - V(A4,52,52,F6), V(76,3B,3B,4D), V(B7,D6,D6,61), V(7D,B3,B3,CE), \ - V(52,29,29,7B), V(DD,E3,E3,3E), V(5E,2F,2F,71), V(13,84,84,97), \ - V(A6,53,53,F5), V(B9,D1,D1,68), V(00,00,00,00), V(C1,ED,ED,2C), \ - V(40,20,20,60), V(E3,FC,FC,1F), V(79,B1,B1,C8), V(B6,5B,5B,ED), \ - V(D4,6A,6A,BE), V(8D,CB,CB,46), V(67,BE,BE,D9), V(72,39,39,4B), \ - V(94,4A,4A,DE), V(98,4C,4C,D4), V(B0,58,58,E8), V(85,CF,CF,4A), \ - V(BB,D0,D0,6B), V(C5,EF,EF,2A), V(4F,AA,AA,E5), V(ED,FB,FB,16), \ - V(86,43,43,C5), V(9A,4D,4D,D7), V(66,33,33,55), V(11,85,85,94), \ - V(8A,45,45,CF), V(E9,F9,F9,10), V(04,02,02,06), V(FE,7F,7F,81), \ - V(A0,50,50,F0), V(78,3C,3C,44), V(25,9F,9F,BA), V(4B,A8,A8,E3), \ - V(A2,51,51,F3), V(5D,A3,A3,FE), V(80,40,40,C0), V(05,8F,8F,8A), \ - V(3F,92,92,AD), V(21,9D,9D,BC), V(70,38,38,48), V(F1,F5,F5,04), \ - V(63,BC,BC,DF), V(77,B6,B6,C1), V(AF,DA,DA,75), V(42,21,21,63), \ - V(20,10,10,30), V(E5,FF,FF,1A), V(FD,F3,F3,0E), V(BF,D2,D2,6D), \ - V(81,CD,CD,4C), V(18,0C,0C,14), V(26,13,13,35), V(C3,EC,EC,2F), \ - V(BE,5F,5F,E1), V(35,97,97,A2), V(88,44,44,CC), V(2E,17,17,39), \ - V(93,C4,C4,57), V(55,A7,A7,F2), V(FC,7E,7E,82), V(7A,3D,3D,47), \ - V(C8,64,64,AC), V(BA,5D,5D,E7), V(32,19,19,2B), V(E6,73,73,95), \ - V(C0,60,60,A0), V(19,81,81,98), V(9E,4F,4F,D1), V(A3,DC,DC,7F), \ - V(44,22,22,66), V(54,2A,2A,7E), V(3B,90,90,AB), V(0B,88,88,83), \ - V(8C,46,46,CA), V(C7,EE,EE,29), V(6B,B8,B8,D3), V(28,14,14,3C), \ - V(A7,DE,DE,79), V(BC,5E,5E,E2), V(16,0B,0B,1D), V(AD,DB,DB,76), \ - V(DB,E0,E0,3B), V(64,32,32,56), V(74,3A,3A,4E), V(14,0A,0A,1E), \ - V(92,49,49,DB), V(0C,06,06,0A), V(48,24,24,6C), V(B8,5C,5C,E4), \ - V(9F,C2,C2,5D), V(BD,D3,D3,6E), V(43,AC,AC,EF), V(C4,62,62,A6), \ - V(39,91,91,A8), V(31,95,95,A4), V(D3,E4,E4,37), V(F2,79,79,8B), \ - V(D5,E7,E7,32), V(8B,C8,C8,43), V(6E,37,37,59), V(DA,6D,6D,B7), \ - V(01,8D,8D,8C), V(B1,D5,D5,64), V(9C,4E,4E,D2), V(49,A9,A9,E0), \ - V(D8,6C,6C,B4), V(AC,56,56,FA), V(F3,F4,F4,07), V(CF,EA,EA,25), \ - V(CA,65,65,AF), V(F4,7A,7A,8E), V(47,AE,AE,E9), V(10,08,08,18), \ - V(6F,BA,BA,D5), V(F0,78,78,88), V(4A,25,25,6F), V(5C,2E,2E,72), \ - V(38,1C,1C,24), V(57,A6,A6,F1), V(73,B4,B4,C7), V(97,C6,C6,51), \ - V(CB,E8,E8,23), V(A1,DD,DD,7C), V(E8,74,74,9C), V(3E,1F,1F,21), \ - V(96,4B,4B,DD), V(61,BD,BD,DC), V(0D,8B,8B,86), V(0F,8A,8A,85), \ - V(E0,70,70,90), V(7C,3E,3E,42), V(71,B5,B5,C4), V(CC,66,66,AA), \ - V(90,48,48,D8), V(06,03,03,05), V(F7,F6,F6,01), V(1C,0E,0E,12), \ - V(C2,61,61,A3), V(6A,35,35,5F), V(AE,57,57,F9), V(69,B9,B9,D0), \ - V(17,86,86,91), V(99,C1,C1,58), V(3A,1D,1D,27), V(27,9E,9E,B9), \ - V(D9,E1,E1,38), V(EB,F8,F8,13), V(2B,98,98,B3), V(22,11,11,33), \ - V(D2,69,69,BB), V(A9,D9,D9,70), V(07,8E,8E,89), V(33,94,94,A7), \ - V(2D,9B,9B,B6), V(3C,1E,1E,22), V(15,87,87,92), V(C9,E9,E9,20), \ - V(87,CE,CE,49), V(AA,55,55,FF), V(50,28,28,78), V(A5,DF,DF,7A), \ - V(03,8C,8C,8F), V(59,A1,A1,F8), V(09,89,89,80), V(1A,0D,0D,17), \ - V(65,BF,BF,DA), V(D7,E6,E6,31), V(84,42,42,C6), V(D0,68,68,B8), \ - V(82,41,41,C3), V(29,99,99,B0), V(5A,2D,2D,77), V(1E,0F,0F,11), \ - V(7B,B0,B0,CB), V(A8,54,54,FC), V(6D,BB,BB,D6), V(2C,16,16,3A) - -#define V(a,b,c,d) 0x##a##b##c##d -static const uint32 FT0[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##d##a##b##c -static const uint32 FT1[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##c##d##a##b -static const uint32 FT2[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##b##c##d##a -static const uint32 FT3[256] = { FT }; -#undef V - -#undef FT - -/* reverse S-box */ - -static const uint32 RSb[256] = -{ - 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, - 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, - 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, - 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, - 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, - 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, - 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, - 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, - 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, - 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, - 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, - 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, - 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, - 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, - 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, - 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, - 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, - 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, - 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, - 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, - 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, - 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, - 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, - 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, - 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, - 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, - 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, - 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, - 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, - 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D -}; - -/* reverse tables */ - -#define RT \ -\ - V(51,F4,A7,50), V(7E,41,65,53), V(1A,17,A4,C3), V(3A,27,5E,96), \ - V(3B,AB,6B,CB), V(1F,9D,45,F1), V(AC,FA,58,AB), V(4B,E3,03,93), \ - V(20,30,FA,55), V(AD,76,6D,F6), V(88,CC,76,91), V(F5,02,4C,25), \ - V(4F,E5,D7,FC), V(C5,2A,CB,D7), V(26,35,44,80), V(B5,62,A3,8F), \ - V(DE,B1,5A,49), V(25,BA,1B,67), V(45,EA,0E,98), V(5D,FE,C0,E1), \ - V(C3,2F,75,02), V(81,4C,F0,12), V(8D,46,97,A3), V(6B,D3,F9,C6), \ - V(03,8F,5F,E7), V(15,92,9C,95), V(BF,6D,7A,EB), V(95,52,59,DA), \ - V(D4,BE,83,2D), V(58,74,21,D3), V(49,E0,69,29), V(8E,C9,C8,44), \ - V(75,C2,89,6A), V(F4,8E,79,78), V(99,58,3E,6B), V(27,B9,71,DD), \ - V(BE,E1,4F,B6), V(F0,88,AD,17), V(C9,20,AC,66), V(7D,CE,3A,B4), \ - V(63,DF,4A,18), V(E5,1A,31,82), V(97,51,33,60), V(62,53,7F,45), \ - V(B1,64,77,E0), V(BB,6B,AE,84), V(FE,81,A0,1C), V(F9,08,2B,94), \ - V(70,48,68,58), V(8F,45,FD,19), V(94,DE,6C,87), V(52,7B,F8,B7), \ - V(AB,73,D3,23), V(72,4B,02,E2), V(E3,1F,8F,57), V(66,55,AB,2A), \ - V(B2,EB,28,07), V(2F,B5,C2,03), V(86,C5,7B,9A), V(D3,37,08,A5), \ - V(30,28,87,F2), V(23,BF,A5,B2), V(02,03,6A,BA), V(ED,16,82,5C), \ - V(8A,CF,1C,2B), V(A7,79,B4,92), V(F3,07,F2,F0), V(4E,69,E2,A1), \ - V(65,DA,F4,CD), V(06,05,BE,D5), V(D1,34,62,1F), V(C4,A6,FE,8A), \ - V(34,2E,53,9D), V(A2,F3,55,A0), V(05,8A,E1,32), V(A4,F6,EB,75), \ - V(0B,83,EC,39), V(40,60,EF,AA), V(5E,71,9F,06), V(BD,6E,10,51), \ - V(3E,21,8A,F9), V(96,DD,06,3D), V(DD,3E,05,AE), V(4D,E6,BD,46), \ - V(91,54,8D,B5), V(71,C4,5D,05), V(04,06,D4,6F), V(60,50,15,FF), \ - V(19,98,FB,24), V(D6,BD,E9,97), V(89,40,43,CC), V(67,D9,9E,77), \ - V(B0,E8,42,BD), V(07,89,8B,88), V(E7,19,5B,38), V(79,C8,EE,DB), \ - V(A1,7C,0A,47), V(7C,42,0F,E9), V(F8,84,1E,C9), V(00,00,00,00), \ - V(09,80,86,83), V(32,2B,ED,48), V(1E,11,70,AC), V(6C,5A,72,4E), \ - V(FD,0E,FF,FB), V(0F,85,38,56), V(3D,AE,D5,1E), V(36,2D,39,27), \ - V(0A,0F,D9,64), V(68,5C,A6,21), V(9B,5B,54,D1), V(24,36,2E,3A), \ - V(0C,0A,67,B1), V(93,57,E7,0F), V(B4,EE,96,D2), V(1B,9B,91,9E), \ - V(80,C0,C5,4F), V(61,DC,20,A2), V(5A,77,4B,69), V(1C,12,1A,16), \ - V(E2,93,BA,0A), V(C0,A0,2A,E5), V(3C,22,E0,43), V(12,1B,17,1D), \ - V(0E,09,0D,0B), V(F2,8B,C7,AD), V(2D,B6,A8,B9), V(14,1E,A9,C8), \ - V(57,F1,19,85), V(AF,75,07,4C), V(EE,99,DD,BB), V(A3,7F,60,FD), \ - V(F7,01,26,9F), V(5C,72,F5,BC), V(44,66,3B,C5), V(5B,FB,7E,34), \ - V(8B,43,29,76), V(CB,23,C6,DC), V(B6,ED,FC,68), V(B8,E4,F1,63), \ - V(D7,31,DC,CA), V(42,63,85,10), V(13,97,22,40), V(84,C6,11,20), \ - V(85,4A,24,7D), V(D2,BB,3D,F8), V(AE,F9,32,11), V(C7,29,A1,6D), \ - V(1D,9E,2F,4B), V(DC,B2,30,F3), V(0D,86,52,EC), V(77,C1,E3,D0), \ - V(2B,B3,16,6C), V(A9,70,B9,99), V(11,94,48,FA), V(47,E9,64,22), \ - V(A8,FC,8C,C4), V(A0,F0,3F,1A), V(56,7D,2C,D8), V(22,33,90,EF), \ - V(87,49,4E,C7), V(D9,38,D1,C1), V(8C,CA,A2,FE), V(98,D4,0B,36), \ - V(A6,F5,81,CF), V(A5,7A,DE,28), V(DA,B7,8E,26), V(3F,AD,BF,A4), \ - V(2C,3A,9D,E4), V(50,78,92,0D), V(6A,5F,CC,9B), V(54,7E,46,62), \ - V(F6,8D,13,C2), V(90,D8,B8,E8), V(2E,39,F7,5E), V(82,C3,AF,F5), \ - V(9F,5D,80,BE), V(69,D0,93,7C), V(6F,D5,2D,A9), V(CF,25,12,B3), \ - V(C8,AC,99,3B), V(10,18,7D,A7), V(E8,9C,63,6E), V(DB,3B,BB,7B), \ - V(CD,26,78,09), V(6E,59,18,F4), V(EC,9A,B7,01), V(83,4F,9A,A8), \ - V(E6,95,6E,65), V(AA,FF,E6,7E), V(21,BC,CF,08), V(EF,15,E8,E6), \ - V(BA,E7,9B,D9), V(4A,6F,36,CE), V(EA,9F,09,D4), V(29,B0,7C,D6), \ - V(31,A4,B2,AF), V(2A,3F,23,31), V(C6,A5,94,30), V(35,A2,66,C0), \ - V(74,4E,BC,37), V(FC,82,CA,A6), V(E0,90,D0,B0), V(33,A7,D8,15), \ - V(F1,04,98,4A), V(41,EC,DA,F7), V(7F,CD,50,0E), V(17,91,F6,2F), \ - V(76,4D,D6,8D), V(43,EF,B0,4D), V(CC,AA,4D,54), V(E4,96,04,DF), \ - V(9E,D1,B5,E3), V(4C,6A,88,1B), V(C1,2C,1F,B8), V(46,65,51,7F), \ - V(9D,5E,EA,04), V(01,8C,35,5D), V(FA,87,74,73), V(FB,0B,41,2E), \ - V(B3,67,1D,5A), V(92,DB,D2,52), V(E9,10,56,33), V(6D,D6,47,13), \ - V(9A,D7,61,8C), V(37,A1,0C,7A), V(59,F8,14,8E), V(EB,13,3C,89), \ - V(CE,A9,27,EE), V(B7,61,C9,35), V(E1,1C,E5,ED), V(7A,47,B1,3C), \ - V(9C,D2,DF,59), V(55,F2,73,3F), V(18,14,CE,79), V(73,C7,37,BF), \ - V(53,F7,CD,EA), V(5F,FD,AA,5B), V(DF,3D,6F,14), V(78,44,DB,86), \ - V(CA,AF,F3,81), V(B9,68,C4,3E), V(38,24,34,2C), V(C2,A3,40,5F), \ - V(16,1D,C3,72), V(BC,E2,25,0C), V(28,3C,49,8B), V(FF,0D,95,41), \ - V(39,A8,01,71), V(08,0C,B3,DE), V(D8,B4,E4,9C), V(64,56,C1,90), \ - V(7B,CB,84,61), V(D5,32,B6,70), V(48,6C,5C,74), V(D0,B8,57,42) - -#define V(a,b,c,d) 0x##a##b##c##d -static const uint32 RT0[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##d##a##b##c -static const uint32 RT1[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##c##d##a##b -static const uint32 RT2[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##b##c##d##a -static const uint32 RT3[256] = { RT }; -#undef V - -#undef RT - -/* round constants */ - -static const uint32 RCON[10] = -{ - 0x01000000, 0x02000000, 0x04000000, 0x08000000, - 0x10000000, 0x20000000, 0x40000000, 0x80000000, - 0x1B000000, 0x36000000 -}; - -int do_init = 0; - -void aes_gen_tables( void ) -{ -} - -#endif - -/* platform-independant 32-bit integer manipulation macros */ - -#define GET_UINT32(n,b,i) \ -{ \ - (n) = ( (uint32) (b)[(i) ] << 24 ) \ - | ( (uint32) (b)[(i) + 1] << 16 ) \ - | ( (uint32) (b)[(i) + 2] << 8 ) \ - | ( (uint32) (b)[(i) + 3] ); \ -} - -#define PUT_UINT32(n,b,i) \ -{ \ - (b)[(i) ] = (uint8) ( (n) >> 24 ); \ - (b)[(i) + 1] = (uint8) ( (n) >> 16 ); \ - (b)[(i) + 2] = (uint8) ( (n) >> 8 ); \ - (b)[(i) + 3] = (uint8) ( (n) ); \ -} - -/* decryption key schedule tables */ - -int KT_init = 1; - -uint32 KT0[256]; -uint32 KT1[256]; -uint32 KT2[256]; -uint32 KT3[256]; - -/* AES key scheduling routine */ - -int aes_set_key( aes_context *ctx, uint8 *key, int nbits ) -{ - int i; - uint32 *RK, *SK; - - if( do_init ) - { - aes_gen_tables(); - - do_init = 0; - } - - switch( nbits ) - { - case 128: ctx->nr = 10; break; - case 192: ctx->nr = 12; break; - case 256: ctx->nr = 14; break; - default : return( 1 ); - } - - RK = ctx->erk; - - for( i = 0; i < (nbits >> 5); i++ ) - { - GET_UINT32( RK[i], key, i * 4 ); - } - - /* setup encryption round keys */ - - switch( nbits ) - { - case 128: - - for( i = 0; i < 10; i++, RK += 4 ) - { - RK[4] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[3] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[3] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[3] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[3] >> 24 ) ] ); - - RK[5] = RK[1] ^ RK[4]; - RK[6] = RK[2] ^ RK[5]; - RK[7] = RK[3] ^ RK[6]; - } - break; - - case 192: - - for( i = 0; i < 8; i++, RK += 6 ) - { - RK[6] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[5] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[5] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[5] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[5] >> 24 ) ] ); - - RK[7] = RK[1] ^ RK[6]; - RK[8] = RK[2] ^ RK[7]; - RK[9] = RK[3] ^ RK[8]; - RK[10] = RK[4] ^ RK[9]; - RK[11] = RK[5] ^ RK[10]; - } - break; - - case 256: - - for( i = 0; i < 7; i++, RK += 8 ) - { - RK[8] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[7] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[7] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[7] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[7] >> 24 ) ] ); - - RK[9] = RK[1] ^ RK[8]; - RK[10] = RK[2] ^ RK[9]; - RK[11] = RK[3] ^ RK[10]; - - RK[12] = RK[4] ^ - ( FSb[ (uint8) ( RK[11] >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[11] >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[11] >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[11] ) ] ); - - RK[13] = RK[5] ^ RK[12]; - RK[14] = RK[6] ^ RK[13]; - RK[15] = RK[7] ^ RK[14]; - } - break; - } - - /* setup decryption round keys */ - - if( KT_init ) - { - for( i = 0; i < 256; i++ ) - { - KT0[i] = RT0[ FSb[i] ]; - KT1[i] = RT1[ FSb[i] ]; - KT2[i] = RT2[ FSb[i] ]; - KT3[i] = RT3[ FSb[i] ]; - } - - KT_init = 0; - } - - SK = ctx->drk; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - for( i = 1; i < ctx->nr; i++ ) - { - RK -= 8; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - } - - RK -= 8; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - return( 0 ); -} - -/* AES 128-bit block encryption routine */ - -void aes_encrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ) -{ - uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->erk; - - GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; - GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; - GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; - GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; - -#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ FT0[ (uint8) ( Y0 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y1 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y2 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y3 ) ]; \ - \ - X1 = RK[1] ^ FT0[ (uint8) ( Y1 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y2 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y3 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y0 ) ]; \ - \ - X2 = RK[2] ^ FT0[ (uint8) ( Y2 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y3 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y0 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y1 ) ]; \ - \ - X3 = RK[3] ^ FT0[ (uint8) ( Y3 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y0 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y1 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y2 ) ]; \ -} - - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ - - if( ctx->nr > 10 ) - { - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ - } - - if( ctx->nr > 12 ) - { - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ ( FSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y3 ) ] ); - - X1 = RK[1] ^ ( FSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y0 ) ] ); - - X2 = RK[2] ^ ( FSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y1 ) ] ); - - X3 = RK[3] ^ ( FSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y2 ) ] ); - - PUT_UINT32( X0, output, 0 ); - PUT_UINT32( X1, output, 4 ); - PUT_UINT32( X2, output, 8 ); - PUT_UINT32( X3, output, 12 ); -} - -/* AES 128-bit block decryption routine */ - -void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ) -{ - uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->drk; - - GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; - GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; - GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; - GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; - -#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ RT0[ (uint8) ( Y0 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y3 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y2 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y1 ) ]; \ - \ - X1 = RK[1] ^ RT0[ (uint8) ( Y1 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y0 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y3 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y2 ) ]; \ - \ - X2 = RK[2] ^ RT0[ (uint8) ( Y2 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y1 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y0 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y3 ) ]; \ - \ - X3 = RK[3] ^ RT0[ (uint8) ( Y3 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y2 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y1 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y0 ) ]; \ -} - - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ - - if( ctx->nr > 10 ) - { - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ - } - - if( ctx->nr > 12 ) - { - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ ( RSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y1 ) ] ); - - X1 = RK[1] ^ ( RSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y2 ) ] ); - - X2 = RK[2] ^ ( RSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y3 ) ] ); - - X3 = RK[3] ^ ( RSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y0 ) ] ); - - PUT_UINT32( X0, output, 0 ); - PUT_UINT32( X1, output, 4 ); - PUT_UINT32( X2, output, 8 ); - PUT_UINT32( X3, output, 12 ); -} - diff --git a/plugins/!Deprecated/Skype/keypacker/aes/aes.h b/plugins/!Deprecated/Skype/keypacker/aes/aes.h deleted file mode 100644 index af81401a0f..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/aes/aes.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _AES_H -#define _AES_H - -#ifndef uint8 -#define uint8 unsigned char -#endif - -#ifndef uint32 -#define uint32 unsigned long int -#endif - -typedef struct -{ - uint32 erk[64]; /* encryption round keys */ - uint32 drk[64]; /* decryption round keys */ - int nr; /* number of rounds */ -} -aes_context; - -int aes_set_key( aes_context *ctx, uint8 *key, int nbits ); -void aes_encrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); -void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); - -#endif /* aes.h */ diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker.cpp b/plugins/!Deprecated/Skype/keypacker/keypacker.cpp deleted file mode 100644 index c9833a41ac..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker.cpp +++ /dev/null @@ -1,222 +0,0 @@ -#include "stdafx.h" - -void *buf; - -static const char base64Fillchar = '='; // used to mark partial words at the end - -// this lookup table defines the base64 encoding -char *base64EncodeTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -const unsigned char base64DecodeTable[] = { - 99, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, //00 -29 - 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 62, 98, 98, 98, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 98, 98, //30 -59 - 98, 96, 98, 98, 98, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //60 -89 - 25, 98, 98, 98, 98, 98, 98, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, //90 -119 - 49, 50, 51, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, //120 -149 - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, //150 -179 - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, //180 -209 - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, //210 -239 - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 //240 -255 -}; - -int encodeLength(int inlen, char formatted) -{ - unsigned int i = ((inlen-1)/3*4+4+1); - if (formatted) i+=inlen/54; - return i; -} - -char * encode(unsigned char *inbuf, unsigned int inlen, char formatted) -{ - int i = encodeLength(inlen, formatted), k = 17, eLen = inlen/3, j; - malloc(i); - char * curr = (char *)buf; - for (i=0;i>18 ]; - *(curr++) = base64EncodeTable[(j>>12)&0x3f]; - *(curr++) = base64EncodeTable[(j>> 6)&0x3f]; - *(curr++) = base64EncodeTable[(j)&0x3f]; - if (formatted) { if ( !k) { *(curr++) = '\n'; k = 18; } k--; } - } - eLen = inlen-eLen*3; // 0 - 2. - if (eLen == 1) - { - *(curr++) = base64EncodeTable[ inbuf[0]>>2 ]; - *(curr++) = base64EncodeTable[(inbuf[0]<<4)&0x3F]; - *(curr++) = base64Fillchar; - *(curr++) = base64Fillchar; - } else if (eLen == 2) - { - j = (inbuf[0]<<8)|inbuf[1]; - *(curr++) = base64EncodeTable[ j>>10 ]; - *(curr++) = base64EncodeTable[(j>> 4)&0x3f]; - *(curr++) = base64EncodeTable[(j<< 2)&0x3f]; - *(curr++) = base64Fillchar; - } - *(curr++) = 0; - return (char *)buf; -} - -unsigned int decodeSize(char * data) -{ - if ( !data) return 0; - int size = 0; - unsigned char c; - //skip any extra characters (e.g. newlines or spaces) - while (*data) - { - if (*data>255) { return 0; } - c = base64DecodeTable[(unsigned char)(*data)]; - if (c<97) size++; - else if (c == 98) { return 0; } - data++; - } - if (size == 0) return 0; - do { data--; size--; } while (*data == base64Fillchar); size++; - return (unsigned int)((size*3)/4); -} - -unsigned char decode(char * data, unsigned char *buf, int len) -{ - if ( !data) return 0; - int i=0, p = 0; - unsigned char d, c; - for (;;) - { - - #define BASE64DECODE_READ_NEXT_CHAR(c) \ - do { \ - if (data[i]>255) { c = 98; break; } \ - c = base64DecodeTable[(unsigned char)data[i++]]; \ - }while (c == 97); \ - if(c == 98) { return 0; } - - BASE64DECODE_READ_NEXT_CHAR(c) - if (c == 99) { return 2; } - if (c == 96) - { - if (p == (int)len) return 2; - return 1; - } - - BASE64DECODE_READ_NEXT_CHAR(d) - if ((d == 99) || (d == 96)) { return 1; } - if (p == (int)len) { return 0; } - buf[p++] = (unsigned char)((c<<2)|((d>>4)&0x3)); - - BASE64DECODE_READ_NEXT_CHAR(c) - if (c == 99) { return 1; } - if (p == (int)len) - { - if (c == 96) return 2; - return 0; - } - if (c == 96) { return 1; } - buf[p++] = (unsigned char)(((d<<4)&0xf0)|((c>>2)&0xf)); - - BASE64DECODE_READ_NEXT_CHAR(d) - if (d == 99) { return 1; } - if (p == (int)len) - { - if (d == 96) return 2; - return 0; - } - if (d == 96) { return 1; } - buf[p++] = (unsigned char)(((c<<6)&0xc0)|d); - } -} -#undef BASE64DECODE_READ_NEXT_CHAR - -unsigned char *decode(char * data, int *outlen) -{ - if ( !data) { *outlen = 0; return (unsigned char*)""; } - unsigned int len = decodeSize(data); - if (outlen) *outlen = len; - if ( !len) return NULL; - malloc(len+1); - if( !decode(data, (unsigned char*)buf, len)) { return NULL; } - return (unsigned char*)buf; -} - -int main() -{ - aes_context ctx; - FILE *fin, *fout; - - int t = strlen(MY_KEY); - int basecodedkey = encodeLength(strlen(MY_KEY), false); - buf = malloc(basecodedkey + 1); - unsigned char *tmpk = (unsigned char *)malloc(basecodedkey + 1); - tmpk = (unsigned char *)encode((unsigned char*)MY_KEY, strlen(MY_KEY), false); - tmpk[basecodedkey] = 0; - char *output = (char*)malloc(basecodedkey + 17); - strcpy(output, "#define MY_KEY \""); - strcat(output, (const char*)tmpk); - strcat(output, "\""); - fout = fopen("key.h", "wb"); - fputs((const char*)output, fout); - fclose(fout); - free(buf); - - aes_set_key( &ctx, (BYTE*)MY_KEY, 128); - - //encrypt - fin = fopen("keypair.crt", "rb"); - fseek(fin, 0, SEEK_END); - long fileSize = ftell(fin); - rewind (fin); - int needbyte = 16 - fileSize%16; - int corsize = fileSize + needbyte; - unsigned char *inBuf = (unsigned char*)malloc(corsize + 1); - unsigned char *locbuf = (unsigned char*)malloc(corsize + 1); - fread(inBuf, fileSize, 1, fin); - fclose(fin); - memset(inBuf+fileSize, 0, needbyte); - inBuf[corsize] = 0; - for (int i = 0; i < corsize; i+=16) { - aes_encrypt(&ctx, inBuf+i, locbuf+i); - } - free(inBuf); - locbuf[corsize] = 0; //cert should be null terminated - int basecoded = encodeLength(corsize, false); - buf = malloc(basecoded + 1); - unsigned char *tmp = (unsigned char *)malloc(basecoded + 1); - tmp = (unsigned char *)encode(locbuf, corsize, false); - tmp[basecoded] = 0; - free(locbuf); - fout = fopen("keypair.bin", "wb"); - fputs((const char*)tmp, fout); - fclose(fout); - free(buf); - //free(tmp); todo:fix - - //decrypt - fin = fopen("keypair.bin", "rb"); - fseek(fin, 0, SEEK_END); - long fileSizeD = ftell(fin); - rewind(fin); - unsigned char *inBufD = (unsigned char*)malloc(fileSizeD); - fread(inBufD, fileSizeD, 1, fin); - fclose(fin); - inBufD[fileSizeD] = 0; - int basedecoded = decodeSize((char*)inBufD); - unsigned char *bufD = (unsigned char*)malloc(basedecoded + 1); - unsigned char *tmpD = (unsigned char*)malloc(basedecoded + 1); - decode((char*)inBufD, tmpD, basedecoded); - for (int i = 0; i < basedecoded; i += 16) { - aes_decrypt(&ctx, tmpD+i, bufD+i); - } - bufD[basedecoded] = 0; //cert should be null terminated - //free(inBufD); todo:fix - free(tmpD); - fout = fopen("keypair.crt.decrypted", "wb"); - fputs((const char*)bufD, fout); - fclose(fout); - free(bufD); - - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_10.sln b/plugins/!Deprecated/Skype/keypacker/keypacker_10.sln deleted file mode 100644 index a84639cde2..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_10.sln +++ /dev/null @@ -1,23 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "keypacker", "keypacker_10.vcxproj", "{826A98BD-CDC2-4D4F-BC20-310F415F9FFB}" -EndProject -Global - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Debug|Win32.ActiveCfg = Debug|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Debug|Win32.Build.0 = Debug|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Release|Win32.ActiveCfg = Release|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj b/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj deleted file mode 100644 index 0db7de2c58..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj +++ /dev/null @@ -1,79 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB} - keypacker - - - - Application - true - Unicode - - - Application - false - true - Unicode - - - - - - - - - - - - - - - - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - - - Level3 - Full - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - Size - - - Console - true - true - true - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj.filters b/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj.filters deleted file mode 100644 index e2b466d4e0..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_10.vcxproj.filters +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Source Files - - - Source Files - - - - - {66b7c02a-1ddc-42a1-9979-8b109c0d5e39} - - - {22eb2a43-df72-4aa2-9503-cb25b3faf955} - - - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_11.sln b/plugins/!Deprecated/Skype/keypacker/keypacker_11.sln deleted file mode 100644 index 505fc4ea89..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_11.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "keypacker", "keypacker_11.vcxproj", "{826A98BD-CDC2-4D4F-BC20-310F415F9FFB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Debug|Win32.ActiveCfg = Debug|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Debug|Win32.Build.0 = Debug|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Release|Win32.ActiveCfg = Release|Win32 - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj b/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj deleted file mode 100644 index ee84077558..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {826A98BD-CDC2-4D4F-BC20-310F415F9FFB} - keypacker - - - - Application - true - Unicode - v120_xp - - - Application - false - true - Unicode - v120_xp - - - - - - - - - - - - - - - - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - - - Level3 - Full - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - Size - - - Console - true - true - true - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj.filters b/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj.filters deleted file mode 100644 index e2b466d4e0..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/keypacker_12.vcxproj.filters +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Source Files - - - Source Files - - - - - {66b7c02a-1ddc-42a1-9979-8b109c0d5e39} - - - {22eb2a43-df72-4aa2-9503-cb25b3faf955} - - - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/keypacker/stdafx.h b/plugins/!Deprecated/Skype/keypacker/stdafx.h deleted file mode 100644 index d63a19340e..0000000000 --- a/plugins/!Deprecated/Skype/keypacker/stdafx.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include - -extern "C" -{ -#include "..\src\aes\aes.h" -} -#include "..\..\..\..\SkypeKit\original_key.h" diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj b/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj deleted file mode 100644 index 6d2347b5fd..0000000000 --- a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj +++ /dev/null @@ -1,124 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Proto_conn_Skype - {A3A599DF-AE0F-DAFC-106D-7E3769E18E6D} - - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - false - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - true - false - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - true - false - Windows - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - true - false - Windows - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj.filters b/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj.filters deleted file mode 100644 index 876836c2da..0000000000 --- a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_10.vcxproj.filters +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj b/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj deleted file mode 100644 index 7a513c66d5..0000000000 --- a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj +++ /dev/null @@ -1,128 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - Proto_conn_Skype - {A3A599DF-AE0F-DAFC-106D-7E3769E18E6D} - - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - true - false - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - true - false - Windows - $(SolutionDir)\lib - - - ..\..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - true - false - Windows - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - true - false - Windows - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj.filters b/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj.filters deleted file mode 100644 index 876836c2da..0000000000 --- a/plugins/!Deprecated/Skype/proto_conn_skype/Proto_conn_Skype_12.vcxproj.filters +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/res/1.ico b/plugins/!Deprecated/Skype/proto_conn_skype/res/1.ico deleted file mode 100644 index 9175679a3d..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_conn_skype/res/1.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/res/2.ico b/plugins/!Deprecated/Skype/proto_conn_skype/res/2.ico deleted file mode 100644 index 41508e7829..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_conn_skype/res/2.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/res/3.ico b/plugins/!Deprecated/Skype/proto_conn_skype/res/3.ico deleted file mode 100644 index e87888acd8..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_conn_skype/res/3.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_conn_skype/res/resource.rc b/plugins/!Deprecated/Skype/proto_conn_skype/res/resource.rc deleted file mode 100644 index 649c7f7e9b..0000000000 --- a/plugins/!Deprecated/Skype/proto_conn_skype/res/resource.rc +++ /dev/null @@ -1,34 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -1 ICON "1.ico" -2 ICON "2.ico" -3 ICON "3.ico" - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj b/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj deleted file mode 100644 index 7a3e7f8208..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {DA3CD2B3-5DAC-4F6A-BC9F-05DE39EFF4C3} - Proto_Skype - - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj.filters b/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj.filters deleted file mode 100644 index 05bc2ab938..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_10.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj b/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj deleted file mode 100644 index f2afa9a94f..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {DA3CD2B3-5DAC-4F6A-BC9F-05DE39EFF4C3} - Proto_Skype - - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - false - Unicode - v120_xp - - - DynamicLibrary - false - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Icons\ - $(SolutionDir)$(Configuration)64\Icons\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - Windows - true - false - $(SolutionDir)\lib - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\..\include\msapi - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj.filters b/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj.filters deleted file mode 100644 index 05bc2ab938..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/Proto_Skype_12.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Away.ico b/plugins/!Deprecated/Skype/proto_skype/res/Away.ico deleted file mode 100644 index 3d53035e78..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/Away.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/DND.ico b/plugins/!Deprecated/Skype/proto_skype/res/DND.ico deleted file mode 100644 index 2646d9ba60..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/DND.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Invisible.ico b/plugins/!Deprecated/Skype/proto_skype/res/Invisible.ico deleted file mode 100644 index d76c3c0eb9..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/Invisible.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Offline.ico b/plugins/!Deprecated/Skype/proto_skype/res/Offline.ico deleted file mode 100644 index 09a98487a0..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/Offline.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Online.ico b/plugins/!Deprecated/Skype/proto_skype/res/Online.ico deleted file mode 100644 index 140b9704af..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/Online.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Phone.ico b/plugins/!Deprecated/Skype/proto_skype/res/Phone.ico deleted file mode 100644 index 8903209986..0000000000 Binary files a/plugins/!Deprecated/Skype/proto_skype/res/Phone.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/proto_skype/res/Proto_Skype.rc b/plugins/!Deprecated/Skype/proto_skype/res/Proto_Skype.rc deleted file mode 100644 index 3506f4708d..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/res/Proto_Skype.rc +++ /dev/null @@ -1,74 +0,0 @@ - // Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian (Russia) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON1 ICON "Offline.ico" -IDI_ICON2 ICON "Online.ico" -IDI_ICON3 ICON "DND.ico" -IDI_ICON4 ICON "Invisible.ico" -IDI_ICON5 ICON "Away.ico" -IDI_ICON6 ICON "Phone.ico" -#endif // Russian (Russia) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/Skype/proto_skype/src/resource.h b/plugins/!Deprecated/Skype/proto_skype/src/resource.h deleted file mode 100644 index e206585288..0000000000 --- a/plugins/!Deprecated/Skype/proto_skype/src/resource.h +++ /dev/null @@ -1,21 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Proto_NewsAggr.rc -// -#define IDI_ICON1 105 -#define IDI_ICON2 104 -#define IDI_ICON3 158 -#define IDI_ICON4 130 -#define IDI_ICON5 128 -#define IDI_ICON6 1002 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 103 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/Skype/res/Resource.rc b/plugins/!Deprecated/Skype/res/Resource.rc deleted file mode 100644 index 1b1e0bca3c..0000000000 --- a/plugins/!Deprecated/Skype/res/Resource.rc +++ /dev/null @@ -1,492 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Neutral (Default) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUD) -LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_SKYPE ICON "skype.ico" -IDI_CALL ICON "call.ico" -IDI_ADD_CONTACTS ICON "add_contacts.ico" -IDI_SEND_CONTACTS ICON "send_contacts.ico" -IDI_DELETE ICON "delete.ico" -IDI_BLOCK ICON "block.ico" -IDI_CONFERENCE ICON "conference.ico" -IDI_CONTACT ICON "contact.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// BIN -// - -IDR_RUNTIME BIN "..\\..\\..\\..\\miranda-private-keys\\SkypeKit\\SDK\\bin\\windows-x86\\windows-x86-skypekit.exe" -IDR_KEY BIN "..\\..\\..\\..\\miranda-private-keys\\SkypeKit\\keypair.bin" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CHATROOM_INVITE DIALOGEX 0, 0, 190, 179 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Invite contacts to conference" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "Skype name:",-1,7,128,43,9 - PUSHBUTTON "&Invite",IDOK,29,159,46,14 - PUSHBUTTON "&Cancel",IDCANCEL,112,159,45,14 - CONTROL "",IDC_CCLIST,"CListControl",WS_TABSTOP | 0x16f,7,4,174,119,WS_EX_CLIENTEDGE - EDITTEXT IDC_EDITSCR,7,138,121,12,ES_AUTOHSCROLL - PUSHBUTTON "Add",IDC_ADDSCR,133,136,49,14 -END - -IDD_CHATROOM_CREATE DIALOGEX 0, 0, 377, 229 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Create conference" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "Skype name:",IDC_STATIC,6,201,43,9 - PUSHBUTTON "&Create",IDOK,273,209,46,14 - PUSHBUTTON "&Cancel",IDCANCEL,323,209,45,14 - CONTROL "",IDC_CCLIST,"CListControl",WS_TABSTOP | 0x16f,7,4,174,192,WS_EX_CLIENTEDGE - EDITTEXT IDC_EDITSCR,6,211,121,12,ES_AUTOHSCROLL - PUSHBUTTON "Add",IDC_ADDSCR,132,209,49,14 - LTEXT "Topic:",IDC_STATIC,188,4,180,8 - EDITTEXT IDC_CHAT_TOPIC,188,14,180,14,ES_AUTOHSCROLL - LTEXT "Guideline:",IDC_STATIC,188,31,180,8 - EDITTEXT IDC_CHAT_GUIDLINE,188,41,180,14,ES_AUTOHSCROLL - CONTROL "Enable joining",IDC_CHAT_JOINING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,188,58,180,10 - LTEXT "New members join with role:",IDC_STATIC,188,73,180,8 - COMBOBOX IDC_CHAT_ROLES,188,83,180,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CONTROL "Create with password",IDC_CHAT_SECURED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,188,98,180,10 - LTEXT "Password:",IDC_STATIC,197,111,171,8 - EDITTEXT IDC_CHAT_PASSWORD,198,122,170,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Confirmation:",IDC_STATIC,197,139,171,8 - EDITTEXT IDC_CHAT_CONFIRMATION,198,150,170,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Password hint:",IDC_STATIC,198,166,170,8 - EDITTEXT IDC_CHAT_HINT,198,177,170,14,ES_AUTOHSCROLL | WS_DISABLED -END - -IDD_CHATROOM_CONFIG DIALOGEX 0, 0, 243, 316 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOPMOST -CAPTION "Configure conference" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - PUSHBUTTON "&OK",IDOK,141,296,46,14 - PUSHBUTTON "&Cancel",IDCANCEL,191,296,45,14 - LTEXT "Topic:",IDC_STATIC,5,13,74,8 - EDITTEXT IDC_CHAT_TOPIC,5,23,231,14,ES_AUTOHSCROLL - LTEXT "Guideline:",IDC_STATIC,5,44,73,8 - EDITTEXT IDC_CHAT_GUIDLINE,5,54,231,14,ES_AUTOHSCROLL - LTEXT "Password:",IDC_STATIC,16,131,62,8 - EDITTEXT IDC_CHAT_GUIDLINE2,84,128,152,14,ES_AUTOHSCROLL - CONTROL "Enable joining",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,72,231,10 - LTEXT "Join role:",IDC_STATIC,5,88,73,8 - COMBOBOX IDC_COMBO2,5,98,231,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CONTROL "Set password",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,114,231,10 - LTEXT "Confirmation:",IDC_STATIC,16,149,62,8 - EDITTEXT IDC_CHAT_GUIDLINE3,84,146,152,14,ES_AUTOHSCROLL - LTEXT "Hint:",IDC_STATIC,16,167,62,8 - EDITTEXT IDC_CHAT_GUIDLINE4,84,164,152,14,ES_AUTOHSCROLL -END - -IDD_PASSWORD_REQUEST DIALOGEX 0, 0, 157, 71 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Enter password" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "Enter password",IDC_INSTRUCTION,7,7,142,8 - EDITTEXT IDC_PASSWORD,17,16,122,14,ES_PASSWORD | ES_AUTOHSCROLL - CONTROL "Remember this session password",IDC_SAVEPASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,32,120,10 - DEFPUSHBUTTON "OK",IDOK,46,50,50,14 - PUSHBUTTON "Cancel",IDCANCEL,99,50,50,14 -END - -IDD_INFO_SKYPE DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "Skype name:",IDC_STATIC,5,5,71,8 - EDITTEXT IDC_SID,74,5,143,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - LTEXT "Status text:",IDC_STATIC,5,18,71,8 - EDITTEXT IDC_STATUSTEXT,74,18,74,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - LTEXT "Online since:",IDC_STATIC,5,31,71,8 - EDITTEXT IDC_ONLINESINCE,74,31,139,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - LTEXT "Last event date:",IDC_STATIC,5,44,71,8 - EDITTEXT IDC_LASTEVENTDATE,74,44,141,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - LTEXT "Last profile change:",IDC_STATIC,5,57,71,8 - EDITTEXT IDC_LASTPROFILECHANGE,74,57,142,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER -END - -IDD_OWNINFO_PERSONAL DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "Full name:",IDC_STATIC,6,7,54,8 - EDITTEXT IDC_FULLNAME,60,5,156,12,ES_AUTOHSCROLL - LTEXT "Date of birth:",IDC_STATIC,6,20,54,8 - COMBOBOX IDC_BIRTH_DAY,60,18,25,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_BIRTH_MONTH,84,18,25,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_BIRTH_YEAR,109,18,35,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Gender:",IDC_STATIC,6,34,54,8 - COMBOBOX IDC_GENDER,60,32,84,52,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Homepage:",IDC_STATIC,6,119,54,8 - EDITTEXT IDC_HOMEPAGE,60,117,156,12,ES_AUTOHSCROLL - LTEXT "Language:",IDC_STATIC,6,47,54,8 - COMBOBOX IDC_LANGUAGE,60,46,84,52,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "About:",IDC_STATIC,6,90,54,8 - EDITTEXT IDC_ABOUT,60,88,156,24,ES_MULTILINE | WS_VSCROLL - LTEXT "Mood:",IDC_STATIC,6,62,54,8 - EDITTEXT IDC_MOOD,60,61,156,24,ES_MULTILINE | WS_VSCROLL -END - -IDD_OWNINFO_CONTACT DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "E-mail 1:",IDC_STATIC,5,5,46,8 - EDITTEXT IDC_EMAIL1,77,2,126,14,ES_AUTOHSCROLL - LTEXT "E-mail 2:",IDC_STATIC,5,21,46,8 - EDITTEXT IDC_EMAIL2,77,17,126,14,ES_AUTOHSCROLL - LTEXT "E-mail 3:",IDC_STATIC,5,36,46,8 - EDITTEXT IDC_EMAIL3,77,32,126,14,ES_AUTOHSCROLL - LTEXT "Mobile phone:",IDC_STATIC,5,68,67,8 - EDITTEXT IDC_MOBPHONE,77,67,126,14,ES_AUTOHSCROLL - LTEXT "Home phone:",IDC_STATIC,5,83,67,8 - EDITTEXT IDC_HOMEPHONE,77,82,126,14,ES_AUTOHSCROLL - LTEXT "Office phone:",IDC_STATIC,5,99,67,8 - EDITTEXT IDC_OFFICEPHONE,77,97,126,14,ES_AUTOHSCROLL -END - -IDD_OWNINFO_HOME DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "City:",IDC_STATIC,5,6,59,8 - EDITTEXT IDC_CITY,67,4,75,12,ES_AUTOHSCROLL - LTEXT "State:",IDC_STATIC,5,20,59,8 - EDITTEXT IDC_STATE,67,18,75,12,ES_AUTOHSCROLL - LTEXT "Country:",IDC_STATIC,5,33,59,8 - COMBOBOX IDC_COUNTRY,67,31,143,172,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Timezone:",IDC_STATIC,6,47,59,8 - COMBOBOX IDC_TIMEZONE,68,44,142,172,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP -END - -IDD_OWNINFO_ACCOUNT DIALOGEX 0, 0, 222, 132 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "Skype credit:",IDC_STATIC,5,6,59,8 - EDITTEXT IDC_CREDITVALUE,67,4,10,12,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - EDITTEXT IDC_CREDITCURRENCY,78,4,10,12,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER -END - -IDD_PASSWORD_CHANGE DIALOGEX 0, 0, 201, 90 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Change password" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - LTEXT "Old password:",IDC_INSTRUCTION,7,9,75,8,0,WS_EX_RIGHT - EDITTEXT IDC_PASSWORD,88,7,105,14,ES_PASSWORD | ES_AUTOHSCROLL - LTEXT "New password:",IDC_INSTRUCTION2,7,27,75,8,0,WS_EX_RIGHT - EDITTEXT IDC_PASSWORD2,88,24,105,14,ES_PASSWORD | ES_AUTOHSCROLL - LTEXT "Confirmation:",IDC_INSTRUCTION3,7,44,75,8,0,WS_EX_RIGHT - EDITTEXT IDC_PASSWORD3,88,41,105,14,ES_PASSWORD | ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,88,69,50,14 - PUSHBUTTON "Cancel",IDCANCEL,142,69,51,14 -END - -IDD_ACCMGR DIALOGEX 0, 0, 199, 92 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - LTEXT "Skype name:",IDC_STATIC,12,8,54,12 - EDITTEXT IDC_SL,66,7,120,12,ES_AUTOHSCROLL - LTEXT "Password:",IDC_STATIC,12,24,54,12 - EDITTEXT IDC_PW,66,23,120,12,ES_PASSWORD | ES_AUTOHSCROLL - PUSHBUTTON "Register new account",IDC_REGISTER,66,39,120,14,WS_DISABLED -END - -IDD_OPT_MAIN DIALOGEX 0, 0, 305, 230 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Account",IDC_STATIC,7,7,291,60 - LTEXT "Skype name:",IDC_STATIC,15,19,63,8 - EDITTEXT IDC_SL,78,17,121,13,ES_AUTOHSCROLL - LTEXT "Password:",IDC_STATIC,15,35,63,8 - EDITTEXT IDC_PW,78,33,121,13,ES_PASSWORD | ES_AUTOHSCROLL - GROUPBOX "Connection",IDC_STATIC,7,69,291,47 - LTEXT "Use port",IDC_STATIC,15,81,63,8 - EDITTEXT IDC_PORT,78,79,30,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "for incoming connections",IDC_STATIC,115,81,176,8 - CONTROL "Use ports 80 and 443 as alternative incoming",IDC_USE_ALT_PORTS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,97,276,10 - PUSHBUTTON "Register new account",IDC_REGISTER,204,17,87,14,WS_DISABLED - PUSHBUTTON "Change password",IDC_CHANGE_PWD,204,33,87,14,WS_DISABLED - EDITTEXT IDC_GROUP,78,120,121,14,ES_AUTOHSCROLL - LTEXT "Default group:",IDC_STATIC,15,122,61,8 -END - -IDD_OPT_BLOCKED DIALOGEX 0, 0, 305, 230 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,7,291,194 - COMBOBOX IDC_CONTACTS,7,206,231,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Block",IDC_BLOCK,248,206,50,13,WS_DISABLED -END - -IDD_OPT_PRIVACY DIALOGEX 0, 0, 305, 230 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Allow IMs from...",IDC_STATIC,5,2,294,31 - CONTROL "Anyone",IDC_PRIVACY_IM_ANYONE,"Button",BS_AUTORADIOBUTTON,12,11,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_IM_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,21,250,10 - GROUPBOX "Allow calls from...",IDC_STATIC,5,33,294,31 - CONTROL "Anyone",IDC_PRIVACY_CALL_ANYONE,"Button",BS_AUTORADIOBUTTON,12,42,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_CALL_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,53,250,10 - GROUPBOX "Automatically receive video and share screens with...",IDC_STATIC,5,64,294,41 - CONTROL "Anyone",IDC_PRIVACY_SHARE_ANYONE,"Button",BS_AUTORADIOBUTTON,12,73,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_SHARE_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,83,250,10 - CONTROL "No one",IDC_PRIVACY_SHARE_NOONE,"Button",BS_AUTORADIOBUTTON,12,93,250,10 - GROUPBOX "Show avatars",IDC_STATIC,5,105,294,31 - CONTROL "Anyone",IDC_PRIVACY_AVATAR_ANYONE,"Button",BS_AUTORADIOBUTTON,12,114,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_AVATARS_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,124,250,10 - GROUPBOX "Contacts count",IDC_STATIC,5,136,294,31 - CONTROL "Anyone",IDC_PRIVACY_COUNT_ANYONE,"Button",BS_AUTORADIOBUTTON,12,145,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_COUNT_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,155,250,10 - GROUPBOX "Local time",IDC_STATIC,5,167,294,31 - CONTROL "Anyone",IDC_PRIVACY_TIME_ANYONE,"Button",BS_AUTORADIOBUTTON,12,176,250,10 - CONTROL "People in my Contact list only",IDC_PRIVACY_TIME_CONTACTLIST, - "Button",BS_AUTORADIOBUTTON,12,186,250,10 - CONTROL "Allow my online status to be shown on the web",IDC_PRIVACY_WEB, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,205,250,10 -END - -IDD_BLOCK DIALOGEX 0, 0, 295, 170 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Block this person" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "%s",IDC_HEADERBAR,"MHeaderbarCtrl",0x0,0,0,295,25 - LTEXT "",IDC_MESSAGE,6,32,282,27 - CONTROL "Remove from your Contact List",IDC_REMOVE_FROM_CL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,67,282,10 - GROUPBOX "Abuse",IDC_STATIC,6,84,282,40 - LTEXT "You can also report abuse from this user.",IDC_STATIC,12,96,270,8 - CONTROL "Report abuse",IDC_REPORT_ABUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,108,270,10 - DEFPUSHBUTTON "Cancel",IDCANCEL,238,147,50,14 - PUSHBUTTON "Block",IDOK,185,147,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_CHATROOM_INVITE, DIALOG - BEGIN - RIGHTMARGIN, 188 - TOPMARGIN, 4 - BOTTOMMARGIN, 173 - END - - IDD_CHATROOM_CREATE, DIALOG - BEGIN - RIGHTMARGIN, 375 - VERTGUIDE, 7 - VERTGUIDE, 181 - VERTGUIDE, 188 - VERTGUIDE, 198 - VERTGUIDE, 368 - TOPMARGIN, 4 - BOTTOMMARGIN, 223 - END - - IDD_CHATROOM_CONFIG, DIALOG - BEGIN - RIGHTMARGIN, 241 - VERTGUIDE, 5 - VERTGUIDE, 16 - VERTGUIDE, 78 - VERTGUIDE, 84 - VERTGUIDE, 236 - TOPMARGIN, 4 - BOTTOMMARGIN, 310 - END - - IDD_PASSWORD_REQUEST, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 149 - TOPMARGIN, 7 - BOTTOMMARGIN, 64 - END - - IDD_INFO_SKYPE, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 217 - VERTGUIDE, 61 - TOPMARGIN, 5 - BOTTOMMARGIN, 129 - HORZGUIDE, 22 - HORZGUIDE, 35 - HORZGUIDE, 48 - HORZGUIDE, 61 - HORZGUIDE, 74 - END - - IDD_OWNINFO_PERSONAL, DIALOG - BEGIN - VERTGUIDE, 6 - VERTGUIDE, 60 - VERTGUIDE, 144 - VERTGUIDE, 216 - END - - IDD_PASSWORD_CHANGE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 193 - VERTGUIDE, 82 - VERTGUIDE, 88 - VERTGUIDE, 138 - VERTGUIDE, 142 - TOPMARGIN, 7 - BOTTOMMARGIN, 83 - END - - IDD_ACCMGR, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 192 - VERTGUIDE, 12 - VERTGUIDE, 66 - VERTGUIDE, 186 - TOPMARGIN, 7 - BOTTOMMARGIN, 85 - END - - IDD_OPT_MAIN, DIALOG - BEGIN - LEFTMARGIN, 7 - VERTGUIDE, 15 - VERTGUIDE, 78 - VERTGUIDE, 108 - VERTGUIDE, 115 - VERTGUIDE, 199 - VERTGUIDE, 204 - VERTGUIDE, 291 - VERTGUIDE, 298 - TOPMARGIN, 7 - BOTTOMMARGIN, 223 - END - - IDD_OPT_BLOCKED, DIALOG - BEGIN - LEFTMARGIN, 7 - VERTGUIDE, 298 - TOPMARGIN, 7 - BOTTOMMARGIN, 223 - END - - IDD_BLOCK, DIALOG - BEGIN - RIGHTMARGIN, 293 - VERTGUIDE, 6 - VERTGUIDE, 12 - VERTGUIDE, 282 - VERTGUIDE, 288 - BOTTOMMARGIN, 169 - HORZGUIDE, 161 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Neutral (Default) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/Skype/res/Version.rc b/plugins/!Deprecated/Skype/res/Version.rc deleted file mode 100644 index d741488c4f..0000000000 --- a/plugins/!Deprecated/Skype/res/Version.rc +++ /dev/null @@ -1,42 +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" - -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#endif //_WIN32 - -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/!Deprecated/Skype/res/add_contacts.ico b/plugins/!Deprecated/Skype/res/add_contacts.ico deleted file mode 100644 index d2b5d6a477..0000000000 Binary files a/plugins/!Deprecated/Skype/res/add_contacts.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/block.ico b/plugins/!Deprecated/Skype/res/block.ico deleted file mode 100644 index e92c4d4bce..0000000000 Binary files a/plugins/!Deprecated/Skype/res/block.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/call.ico b/plugins/!Deprecated/Skype/res/call.ico deleted file mode 100644 index 41e984fc6b..0000000000 Binary files a/plugins/!Deprecated/Skype/res/call.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/conference.ico b/plugins/!Deprecated/Skype/res/conference.ico deleted file mode 100644 index 7d535835c0..0000000000 Binary files a/plugins/!Deprecated/Skype/res/conference.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/contact.ico b/plugins/!Deprecated/Skype/res/contact.ico deleted file mode 100644 index 241bb8a83b..0000000000 Binary files a/plugins/!Deprecated/Skype/res/contact.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/delete.ico b/plugins/!Deprecated/Skype/res/delete.ico deleted file mode 100644 index 81a38441b1..0000000000 Binary files a/plugins/!Deprecated/Skype/res/delete.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/send_contacts.ico b/plugins/!Deprecated/Skype/res/send_contacts.ico deleted file mode 100644 index c29ed475e0..0000000000 Binary files a/plugins/!Deprecated/Skype/res/send_contacts.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/res/skype.ico b/plugins/!Deprecated/Skype/res/skype.ico deleted file mode 100644 index 140b9704af..0000000000 Binary files a/plugins/!Deprecated/Skype/res/skype.ico and /dev/null differ diff --git a/plugins/!Deprecated/Skype/src/aes/aes.cpp b/plugins/!Deprecated/Skype/src/aes/aes.cpp deleted file mode 100644 index e3dfa1261f..0000000000 --- a/plugins/!Deprecated/Skype/src/aes/aes.cpp +++ /dev/null @@ -1,493 +0,0 @@ -/* -* FIPS-197 compliant AES implementation -* -* Copyright (C) 2001-2004 Christophe Devine -* -* 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 "aes.h" - -/* forward S-box & tables */ - -unsigned long int FSb[256]; -unsigned long int FT0[256]; -unsigned long int FT1[256]; -unsigned long int FT2[256]; -unsigned long int FT3[256]; - -/* reverse S-box & tables */ - -unsigned long int RSb[256]; -unsigned long int RT0[256]; -unsigned long int RT1[256]; -unsigned long int RT2[256]; -unsigned long int RT3[256]; - -/* round constants */ - -unsigned long int RCON[10]; - -/* tables generation flag */ - -int do_init = 1; - -/* tables generation routine */ - -#define ROTR8(x) (((x << 24) & 0xFFFFFFFF) | ((x & 0xFFFFFFFF) >> 8)) - -#define XTIME(x) ((x << 1) ^ ((x & 0x80) ? 0x1B : 0x00)) -#define MUL(x, y) ((x && y) ? pow[(log[x] + log[y]) % 255] : 0) - -void aes_gen_tables(void) -{ - int i; - unsigned char x, y; - unsigned char pow[256]; - unsigned char log[256]; - - /* compute pow and log tables over GF(2^8) */ - - for (i = 0, x = 1; i < 256; i++, x ^= XTIME(x)) - { - pow[i] = x; - log[x] = i; - } - - /* calculate the round constants */ - - for (i = 0, x = 1; i < 10; i++, x = XTIME(x)) - { - RCON[i] = (unsigned long int)x << 24; - } - - /* generate the forward and reverse S-boxes */ - - FSb[0x00] = 0x63; - RSb[0x63] = 0x00; - - for (i = 1; i < 256; i++) - { - x = pow[255 - log[i]]; - - y = x; - y = (y << 1) | (y >> 7); - x ^= y; - y = (y << 1) | (y >> 7); - x ^= y; - y = (y << 1) | (y >> 7); - x ^= y; - y = (y << 1) | (y >> 7); - x ^= y ^ 0x63; - - FSb[i] = x; - RSb[x] = i; - } - - /* generate the forward and reverse tables */ - - for (i = 0; i < 256; i++) - { - x = (unsigned char)FSb[i]; - y = XTIME(x); - - FT0[i] = (unsigned long int)(x ^ y) ^ - ((unsigned long int)x << 8) ^ - ((unsigned long int)x << 16) ^ - ((unsigned long int)y << 24); - - FT0[i] &= 0xFFFFFFFF; - - FT1[i] = ROTR8(FT0[i]); - FT2[i] = ROTR8(FT1[i]); - FT3[i] = ROTR8(FT2[i]); - - y = (unsigned char)RSb[i]; - - RT0[i] = ((unsigned long int)MUL(0x0B, y)) ^ - ((unsigned long int)MUL(0x0D, y) << 8) ^ - ((unsigned long int)MUL(0x09, y) << 16) ^ - ((unsigned long int)MUL(0x0E, y) << 24); - - RT0[i] &= 0xFFFFFFFF; - - RT1[i] = ROTR8(RT0[i]); - RT2[i] = ROTR8(RT1[i]); - RT3[i] = ROTR8(RT2[i]); - } -} - -/* platform-independant 32-bit integer manipulation macros */ - -#define GET_UINT32(n, b, i) \ -{ \ - (n) = ((unsigned long int)(b)[(i)] << 24) \ - | ((unsigned long int)(b)[(i) + 1] << 16) \ - | ((unsigned long int)(b)[(i) + 2] << 8) \ - | ((unsigned long int)(b)[(i) + 3]); \ -} - -#define PUT_UINT32(n, b, i) \ -{ \ - (b)[(i)] = (unsigned char)((n) >> 24); \ - (b)[(i) + 1] = (unsigned char)((n) >> 16); \ - (b)[(i) + 2] = (unsigned char)((n) >> 8); \ - (b)[(i) + 3] = (unsigned char)((n)); \ -} - -/* decryption key schedule tables */ - -int KT_init = 1; - -unsigned long int KT0[256]; -unsigned long int KT1[256]; -unsigned long int KT2[256]; -unsigned long int KT3[256]; - -/* AES key scheduling routine */ - -int aes_set_key(aes_context *ctx, unsigned char *key, int nbits) -{ - int i; - unsigned long int *RK, *SK; - - if (do_init) - { - aes_gen_tables(); - - do_init = 0; - } - - switch (nbits) - { - case 128: ctx->nr = 10; break; - case 192: ctx->nr = 12; break; - case 256: ctx->nr = 14; break; - default : return 1; - } - - RK = ctx->erk; - - for (i = 0; i < (nbits >> 5); i++) - { - GET_UINT32(RK[i], key, i * 4); - } - - /* setup encryption round keys */ - - switch (nbits) - { - case 128: - for (i = 0; i < 10; i++, RK += 4) - { - RK[4] = RK[0] ^ RCON[i] ^ - (FSb[(unsigned char)(RK[3] >> 16)] << 24) ^ - (FSb[(unsigned char)(RK[3] >> 8)] << 16) ^ - (FSb[(unsigned char)(RK[3])] << 8) ^ - (FSb[(unsigned char)(RK[3] >> 24)]); - - RK[5] = RK[1] ^ RK[4]; - RK[6] = RK[2] ^ RK[5]; - RK[7] = RK[3] ^ RK[6]; - } - break; - - case 192: - for (i = 0; i < 8; i++, RK += 6) - { - RK[6] = RK[0] ^ RCON[i] ^ - (FSb[(unsigned char)(RK[5] >> 16)] << 24) ^ - (FSb[(unsigned char)(RK[5] >> 8)] << 16) ^ - (FSb[(unsigned char)(RK[5])] << 8) ^ - (FSb[(unsigned char)(RK[5] >> 24)]); - - RK[7] = RK[1] ^ RK[6]; - RK[8] = RK[2] ^ RK[7]; - RK[9] = RK[3] ^ RK[8]; - RK[10] = RK[4] ^ RK[9]; - RK[11] = RK[5] ^ RK[10]; - } - break; - - case 256: - for (i = 0; i < 7; i++, RK += 8) - { - RK[8] = RK[0] ^ RCON[i] ^ - (FSb[(unsigned char)(RK[7] >> 16)] << 24) ^ - (FSb[(unsigned char)(RK[7] >> 8)] << 16) ^ - (FSb[(unsigned char)(RK[7])] << 8) ^ - (FSb[(unsigned char)(RK[7] >> 24)]); - - RK[9] = RK[1] ^ RK[8]; - RK[10] = RK[2] ^ RK[9]; - RK[11] = RK[3] ^ RK[10]; - - RK[12] = RK[4] ^ - (FSb[(unsigned char)(RK[11] >> 24)] << 24) ^ - (FSb[(unsigned char)(RK[11] >> 16)] << 16) ^ - (FSb[(unsigned char)(RK[11] >> 8)] << 8) ^ - (FSb[(unsigned char)(RK[11])]); - - RK[13] = RK[5] ^ RK[12]; - RK[14] = RK[6] ^ RK[13]; - RK[15] = RK[7] ^ RK[14]; - } - break; - } - - /* setup decryption round keys */ - - if (KT_init) - { - for (i = 0; i < 256; i++) - { - KT0[i] = RT0[FSb[i]]; - KT1[i] = RT1[FSb[i]]; - KT2[i] = RT2[FSb[i]]; - KT3[i] = RT3[FSb[i]]; - } - - KT_init = 0; - } - - SK = ctx->drk; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - for (i = 1; i < ctx->nr; i++) - { - RK -= 8; - - *SK++ = KT0[(unsigned char)(*RK >> 24)] ^ - KT1[(unsigned char)(*RK >> 16)] ^ - KT2[(unsigned char)(*RK >> 8)] ^ - KT3[(unsigned char)(*RK)]; - RK++; - - *SK++ = KT0[(unsigned char)(*RK >> 24)] ^ - KT1[(unsigned char)(*RK >> 16)] ^ - KT2[(unsigned char)(*RK >> 8)] ^ - KT3[(unsigned char)(*RK)]; - RK++; - - *SK++ = KT0[(unsigned char)(*RK >> 24)] ^ - KT1[(unsigned char)(*RK >> 16)] ^ - KT2[(unsigned char)(*RK >> 8)] ^ - KT3[(unsigned char)(*RK)]; - RK++; - - *SK++ = KT0[(unsigned char)(*RK >> 24)] ^ - KT1[(unsigned char)(*RK >> 16)] ^ - KT2[(unsigned char)(*RK >> 8)] ^ - KT3[(unsigned char)(*RK)]; - RK++; - } - - RK -= 8; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - return 0; -} - -/* AES 128-bit block encryption routine */ - -void aes_encrypt(aes_context *ctx, unsigned char input[16], unsigned char output[16]) -{ - unsigned long int *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->erk; - - GET_UINT32(X0, input, 0); X0 ^= RK[0]; - GET_UINT32(X1, input, 4); X1 ^= RK[1]; - GET_UINT32(X2, input, 8); X2 ^= RK[2]; - GET_UINT32(X3, input, 12); X3 ^= RK[3]; - -#define AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ FT0[(unsigned char)(Y0 >> 24)] ^ \ - FT1[(unsigned char)(Y1 >> 16)] ^ \ - FT2[(unsigned char)(Y2 >> 8)] ^ \ - FT3[(unsigned char)(Y3)]; \ - \ - X1 = RK[1] ^ FT0[(unsigned char)(Y1 >> 24)] ^ \ - FT1[(unsigned char)(Y2 >> 16)] ^ \ - FT2[(unsigned char)(Y3 >> 8)] ^ \ - FT3[(unsigned char)(Y0)]; \ - \ - X2 = RK[2] ^ FT0[(unsigned char)(Y2 >> 24)] ^ \ - FT1[(unsigned char)(Y3 >> 16)] ^ \ - FT2[(unsigned char)(Y0 >> 8)] ^ \ - FT3[(unsigned char)(Y1)]; \ - \ - X3 = RK[3] ^ FT0[(unsigned char)(Y3 >> 24)] ^ \ - FT1[(unsigned char)(Y0 >> 16)] ^ \ - FT2[(unsigned char)(Y1 >> 8)] ^ \ - FT3[(unsigned char)(Y2)]; \ -} - - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 1 */ - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 2 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 3 */ - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 4 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 5 */ - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 6 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 7 */ - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 8 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 9 */ - - if (ctx->nr > 10) - { - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 10 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 11 */ - } - - if (ctx->nr > 12) - { - AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 12 */ - AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ (FSb[(unsigned char)(Y0 >> 24)] << 24) ^ - (FSb[(unsigned char)(Y1 >> 16)] << 16) ^ - (FSb[(unsigned char)(Y2 >> 8)] << 8) ^ - (FSb[(unsigned char)(Y3)]); - - X1 = RK[1] ^ (FSb[(unsigned char)(Y1 >> 24)] << 24) ^ - (FSb[(unsigned char)(Y2 >> 16)] << 16) ^ - (FSb[(unsigned char)(Y3 >> 8)] << 8) ^ - (FSb[(unsigned char)(Y0)]); - - X2 = RK[2] ^ (FSb[(unsigned char)(Y2 >> 24)] << 24) ^ - (FSb[(unsigned char)(Y3 >> 16)] << 16) ^ - (FSb[(unsigned char)(Y0 >> 8)] << 8) ^ - (FSb[(unsigned char)(Y1)]); - - X3 = RK[3] ^ (FSb[(unsigned char)(Y3 >> 24)] << 24) ^ - (FSb[(unsigned char)(Y0 >> 16)] << 16) ^ - (FSb[(unsigned char)(Y1 >> 8)] << 8) ^ - (FSb[(unsigned char)(Y2)]); - - PUT_UINT32(X0, output, 0); - PUT_UINT32(X1, output, 4); - PUT_UINT32(X2, output, 8); - PUT_UINT32(X3, output, 12); -} - -/* AES 128-bit block decryption routine */ - -void aes_decrypt(aes_context *ctx, unsigned char input[16], unsigned char output[16]) -{ - unsigned long int *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->drk; - - GET_UINT32(X0, input, 0); - X0 ^= RK[0]; - GET_UINT32(X1, input, 4); - X1 ^= RK[1]; - GET_UINT32(X2, input, 8); - X2 ^= RK[2]; - GET_UINT32(X3, input, 12); - X3 ^= RK[3]; - -#define AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ RT0[(unsigned char)(Y0 >> 24)] ^ \ - RT1[(unsigned char)(Y3 >> 16)] ^ \ - RT2[(unsigned char)(Y2 >> 8)] ^ \ - RT3[(unsigned char)(Y1)]; \ - \ - X1 = RK[1] ^ RT0[(unsigned char)(Y1 >> 24)] ^ \ - RT1[(unsigned char)(Y0 >> 16)] ^ \ - RT2[(unsigned char)(Y3 >> 8)] ^ \ - RT3[(unsigned char)(Y2)]; \ - \ - X2 = RK[2] ^ RT0[(unsigned char)(Y2 >> 24)] ^ \ - RT1[(unsigned char)(Y1 >> 16)] ^ \ - RT2[(unsigned char)(Y0 >> 8)] ^ \ - RT3[(unsigned char)(Y3)]; \ - \ - X3 = RK[3] ^ RT0[(unsigned char)(Y3 >> 24)] ^ \ - RT1[(unsigned char)(Y2 >> 16)] ^ \ - RT2[(unsigned char)(Y1 >> 8)] ^ \ - RT3[(unsigned char)(Y0)]; \ -} - - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 1 */ - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 2 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 3 */ - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 4 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 5 */ - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 6 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 7 */ - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 8 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 9 */ - - if (ctx->nr > 10) - { - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 10 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 11 */ - } - - if (ctx->nr > 12) - { - AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 12 */ - AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ (RSb[(unsigned char)(Y0 >> 24)] << 24) ^ - (RSb[(unsigned char)(Y3 >> 16)] << 16) ^ - (RSb[(unsigned char)(Y2 >> 8)] << 8) ^ - (RSb[(unsigned char)(Y1)]); - - X1 = RK[1] ^ (RSb[(unsigned char)(Y1 >> 24)] << 24) ^ - (RSb[(unsigned char)(Y0 >> 16)] << 16) ^ - (RSb[(unsigned char)(Y3 >> 8)] << 8) ^ - (RSb[(unsigned char)(Y2)]); - - X2 = RK[2] ^ (RSb[(unsigned char)(Y2 >> 24)] << 24) ^ - (RSb[(unsigned char)(Y1 >> 16)] << 16) ^ - (RSb[(unsigned char)(Y0 >> 8)] << 8) ^ - (RSb[(unsigned char)(Y3)]); - - X3 = RK[3] ^ (RSb[(unsigned char)(Y3 >> 24)] << 24) ^ - (RSb[(unsigned char)(Y2 >> 16)] << 16) ^ - (RSb[(unsigned char)(Y1 >> 8)] << 8) ^ - (RSb[(unsigned char)(Y0)]); - - PUT_UINT32(X0, output, 0); - PUT_UINT32(X1, output, 4); - PUT_UINT32(X2, output, 8); - PUT_UINT32(X3, output, 12); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/aes/aes.h b/plugins/!Deprecated/Skype/src/aes/aes.h deleted file mode 100644 index 8bc958b410..0000000000 --- a/plugins/!Deprecated/Skype/src/aes/aes.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _AES_H -#define _AES_H - -typedef struct -{ - unsigned long int erk[64]; /* encryption round keys */ - unsigned long int drk[64]; /* decryption round keys */ - int nr; /* number of rounds */ -} aes_context; - -int aes_set_key(aes_context *ctx, unsigned char *key, int nbits); -void aes_encrypt(aes_context *ctx, unsigned char input[16], unsigned char output[16]); -void aes_decrypt(aes_context *ctx, unsigned char input[16], unsigned char output[16]); - -#endif /* aes.h */ diff --git a/plugins/!Deprecated/Skype/src/resource.h b/plugins/!Deprecated/Skype/src/resource.h deleted file mode 100644 index e155854f36..0000000000 --- a/plugins/!Deprecated/Skype/src/resource.h +++ /dev/null @@ -1,123 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by E:\Projects\C++\MirandaNG\protocols\Skype\res\Resource.rc -// -#define IDD_ACCMGR 9 -#define IDD_OPT_MAIN 10 -#define IDD_INFO_SKYPE 11 -#define IDD_OWNINFO_PERSONAL 12 -#define IDD_OWNINFO_HOME 13 -#define IDD_OWNINFO_CONTACT 14 -#define IDD_PASSWORD_CHANGE 15 -#define IDD_CHATROOM_INVITE 16 -#define IDD_PASSWORD_REQUEST 17 -#define IDD_CHATROOM_CREATE 18 -#define IDD_CHATROOM_CONFIG 19 -#define IDD_OPT_BLOCKED 20 -#define IDD_IGNORE_LIST 21 -#define IDD_BLOCK 22 -#define IDD_OWNINFO_ACCOUNT 23 -#define IDD_OPT_PRIVACY 24 -#define IDI_SKYPE 101 -#define IDR_RUNTIME 102 -#define IDR_KEY 107 -#define IDI_CALL 108 -#define IDI_ADD_CONTACTS 109 -#define IDI_SEND_CONTACTS 110 -#define IDI_DELETE 112 -#define IDI_BLOCK 115 -#define IDI_CONFERENCE 116 -#define IDI_CONTACT 117 -#define IDC_CCLIST 173 -#define IDC_EDITSCR 174 -#define IDC_ADDSCR 175 -#define IDC_SN 1001 -#define IDC_PW 1002 -#define IDC_SL 1003 -#define IDC_SAVEPASS 1004 -#define IDC_SAVEPASSWORD 1005 -#define IDC_PASSWORD 1006 -#define IDC_INSTRUCTION 1007 -#define IDC_INSTRUCTION2 1008 -#define IDC_INSTRUCTION3 1009 -#define IDC_SID 1010 -#define IDC_STATUSTEXT 1011 -#define IDC_ONLINESINCE 1012 -#define IDC_LASTEVENTDATE 1013 -#define IDC_PASSWORD3 1014 -#define IDC_LASTPROFILECHANGE 1015 -#define IDC_PORT 1016 -#define IDC_USE_ALT_PORTS 1017 -#define IDC_REGISTER 1018 -#define IDC_CHANGE_PWD 1019 -#define IDC_DEFAULT_GROUP 1020 -#define IDC_GROUP 1021 -#define IDC_PASSWORD2 1023 -#define IDC_FULLNAME 1025 -#define IDC_EMAIL1 1026 -#define IDC_EMAIL2 1027 -#define IDC_EMAIL3 1028 -#define IDC_BIRTH_DAY 1029 -#define IDC_BIRTH_MONTH 1030 -#define IDC_BIRTH_YEAR 1031 -#define IDC_MOBPHONE 1032 -#define IDC_GENDER 1033 -#define IDC_HOMEPHONE 1034 -#define IDC_HOMEPAGE 1035 -#define IDC_OFFICEPHONE 1036 -#define IDC_LANGUAGE 1037 -#define IDC_ABOUT 1038 -#define IDC_MOOD 1039 -#define IDC_CITY 1040 -#define IDC_STATE 1041 -#define IDC_COUNTRY 1042 -#define IDC_TIMEZONE 1043 -#define IDC_CHAT_TOPIC 1044 -#define IDC_CHAT_GUIDLINE 1045 -#define IDC_CHAT_JOINING 1046 -#define IDC_CHAT_GUIDLINE2 1047 -#define IDC_CHAT_ROLES 1048 -#define IDC_CHAT_GUIDLINE3 1049 -#define IDC_CONTACTS 1050 -#define IDC_CHAT_SECURED 1051 -#define IDC_CHAT_GUIDLINE4 1052 -#define IDC_CHAT_PASSWORD 1053 -#define IDC_CHAT_CONFIRMATION 1054 -#define IDC_CHAT_HINT 1055 -#define IDC_CHECK1 1056 -#define IDC_COMBO2 1057 -#define IDC_CHECK2 1058 -#define IDC_BLOCK 1059 -#define IDC_REPORT_ABUSE 1060 -#define IDC_REMOVE_FROM_CL 1061 -#define IDC_MESSAGE 1062 -#define IDC_HEADERBAR 1063 -#define IDC_BM_LIST 1064 -#define IDC_LIST 1065 -#define IDC_PRIVACY_IM_ANYONE 1066 -#define IDC_PRIVACY_IM_CONTACTLIST 1067 -#define IDC_PRIVACY_CALL_ANYONE 1068 -#define IDC_PRIVACY_CALL_CONTACTLIST 1069 -#define IDC_PRIVACY_SHARE_ANYONE 1070 -#define IDC_PRIVACY_SHARE_CONTACTLIST 1071 -#define IDC_PRIVACY_SHARE_NOONE 1072 -#define IDC_PRIVACY_WEB 1073 -#define IDC_CREDITVALUE 1074 -#define IDC_CREDITCURRENCY 1075 -#define IDC_PRIVACY_AVATAR_ANYONE 1076 -#define IDC_PRIVACY_AVATARS_CONTACTLIST 1077 -#define IDC_PRIVACY_COUNT_ANYONE 1078 -#define IDC_PRIVACY_COUNT_CONTACTLIST 1079 -#define IDC_PRIVACY_TIME_ANYONE 1080 -#define IDC_PRIVACY_TIME_CONTACTLIST 1081 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 118 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1082 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/Skype/src/skype.cpp b/plugins/!Deprecated/Skype/src/skype.cpp deleted file mode 100644 index 0416d8f473..0000000000 --- a/plugins/!Deprecated/Skype/src/skype.cpp +++ /dev/null @@ -1,213 +0,0 @@ -#include "skype.h" - -int hLangpack; -HINSTANCE g_hInstance; - -TIME_API tmi = {0}; - -int g_cbCountries; -struct CountryListEntry* g_countries; - -PLUGININFOEX pluginInfo = -{ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {9C448C61-FC3F-42F9-B9F0-4A30E1CF8671} - {0x9c448c61, 0xfc3f, 0x42f9, {0xb9, 0xf0, 0x4a, 0x30, 0xe1, 0xcf, 0x86, 0x71}} -}; - -DWORD WINAPI DllMain(HINSTANCE hInstance, DWORD, LPVOID) -{ - g_hInstance = hInstance; - - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_PROTOCOL, MIID_LAST}; - -// --- - -BOOL IsRunAsAdmin() -{ - BOOL fIsRunAsAdmin = FALSE; - DWORD dwError = ERROR_SUCCESS; - PSID pAdministratorsGroup = NULL; - - // Allocate and initialize a SID of the administrators group. - SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; - if ( !AllocateAndInitializeSid( - &NtAuthority, - 2, - SECURITY_BUILTIN_DOMAIN_RID, - DOMAIN_ALIAS_RID_ADMINS, - 0, 0, 0, 0, 0, 0, - &pAdministratorsGroup)) - { - dwError = GetLastError(); - goto Cleanup; - } - - // Determine whether the SID of administrators group is enabled in - // the primary access token of the process. - if ( !CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin)) - { - dwError = GetLastError(); - goto Cleanup; - } - -Cleanup: - // Centralized cleanup for all allocated resources. - if (pAdministratorsGroup) - { - FreeSid(pAdministratorsGroup); - pAdministratorsGroup = NULL; - } - - // Throw the error if something failed in the function. - if (ERROR_SUCCESS != dwError) - { - throw dwError; - } - - return fIsRunAsAdmin; -} - -int UnpackSkypeRuntime(HINSTANCE hInstance, const wchar_t *profileName) -{ - wchar_t fileName[MAX_PATH]; - ::GetModuleFileName(hInstance, fileName, MAX_PATH); - - wchar_t *skypeKitPath = ::wcsrchr(fileName, '\\'); - if (skypeKitPath != NULL) - *skypeKitPath = 0; - ::mir_snwprintf(fileName, SIZEOF(fileName), L"%s\\%s", fileName, L"SkypeKit.exe"); - if ( ::GetFileAttributes(fileName) == DWORD(-1)) - { - HRSRC hRes = ::FindResource(hInstance, MAKEINTRESOURCE(IDR_RUNTIME), L"BIN"); - if (hRes) - { - HGLOBAL hResource = ::LoadResource(hInstance, hRes); - if (hResource) - { - HANDLE hFile; - char *pData = (char *)LockResource(hResource); - DWORD dwSize = SizeofResource(hInstance, hRes), written = 0; - if ((hFile = ::CreateFile( - fileName, - GENERIC_WRITE, - 0, - NULL, - CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, - 0)) != INVALID_HANDLE_VALUE) - { - ::WriteFile(hFile, (void *)pData, dwSize, &written, NULL); - ::CloseHandle(hFile); - } - else - { - // Check the current process's "run as administrator" status. - // Elevate the process if it is not run as administrator. - if (!IsRunAsAdmin()) - { - wchar_t path[MAX_PATH], cmdLine[100]; - ::GetModuleFileName(NULL, path, ARRAYSIZE(path)); - - if (profileName) - ::mir_snwprintf( - cmdLine, - SIZEOF(cmdLine), - L" /restart:%d /profile=%s", - ::GetCurrentProcessId(), - profileName); - else - ::mir_snwprintf( - cmdLine, - SIZEOF(cmdLine), - L" /restart:%d", - ::GetCurrentProcessId()); - - // Launch itself as administrator. - SHELLEXECUTEINFO sei = { sizeof(sei) }; - sei.lpVerb = L"runas"; - sei.lpFile = path; - sei.lpParameters = cmdLine; - //sei.hwnd = hDlg; - sei.nShow = SW_NORMAL; - - if ( !::ShellExecuteEx(&sei)) - { - DWORD dwError = ::GetLastError(); - if (dwError == ERROR_CANCELLED) - { - // The user refused to allow privileges elevation. - // Do nothing ... - } - } - } - else - return 0; - } - } - else - return 0; - } - else - return 0; - } - - return 1; -} - -// --- - -extern "C" int __declspec(dllexport) Load(void) -{ - VARST profilename( _T("%miranda_profilename%")); - - if ( !UnpackSkypeRuntime(g_hInstance, (TCHAR *)profilename)) - { - ::MessageBox(NULL, TranslateT("Did not unpack SkypeKit.exe."), _T(MODULE), MB_OK | MB_ICONERROR); - return 1; - } - - mir_getTMI(&tmi); - mir_getLP(&pluginInfo); - - PROTOCOLDESCRIPTOR pd = { sizeof(pd) }; - pd.szName = "SKYPE"; - pd.type = PROTOTYPE_PROTOCOL; - pd.fnInit = (pfnInitProto)CSkypeProto::InitSkypeProto; - pd.fnUninit = (pfnUninitProto)CSkypeProto::UninitSkypeProto; - CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); - - CallService(MS_UTILS_GETCOUNTRYLIST, (WPARAM)&g_cbCountries, (LPARAM)&g_countries); - - CSkypeProto::InitIcons(); - CSkypeProto::InitMenus(); - CSkypeProto::InitHookList(); - CSkypeProto::InitLanguages(); - CSkypeProto::InitServiceList(); - - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - CSkypeProto::UninitIcons(); - CSkypeProto::UninitMenus(); - CSkypeProto::UninitInstances(); - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype.h b/plugins/!Deprecated/Skype/src/skype.h deleted file mode 100644 index d27c7564ab..0000000000 --- a/plugins/!Deprecated/Skype/src/skype.h +++ /dev/null @@ -1,101 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#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" - -#define MODULE "Skype" -#define SKYPE_SID_LIMIT 128 -#define SKYPE_PASSWORD_LIMIT 128 -#define SKYPE_GROUP_NAME_LIMIT 100 - -#define SKYPE_SETTINGS_STATUS "Status" -#define SKYPE_SETTINGS_SID "sid" -#define SKYPE_SETTINGS_PASSWORD "Password" -#define SKYPE_SETTINGS_DEF_GROUP "DefaultGroup" - -#define SKYPE_SEARCH_BYSID 1001 -#define SKYPE_SEARCH_BYEMAIL 1002 -#define SKYPE_SEARCH_BYNAMES 1003 - -#define BBB_ID_CONF_INVITE 2001 -#define BBB_ID_CONF_SPAWN 2002 - -#define SKYPE_DB_EVENT_TYPE_EMOTE 10001 -#define SKYPE_DB_EVENT_TYPE_CONTACTS 10002 -#define SKYPE_DB_EVENT_TYPE_CALL 10010 - -enum -{ - CMI_AUTH_REQUEST, - CMI_AUTH_GRANT, - CMI_AUTH_REVOKE, - CMI_BLOCK, - CMI_HISTORY, - CMI_MAX // this item shall be the last one -}; - -#define SMI_CHAT_CREATE 1 -#define SMI_IGNORE_LIST 2 - -#include "string_list.h" - -#include "skypekit\common.h" -#include "skypekit\group.h" -#include "skypekit\search.h" -#include "skypekit\account.h" -#include "skypekit\contact.h" -#include "skypekit\message.h" -#include "skypekit\transfer.h" -#include "skypekit\participant.h" -#include "skypekit\conversation.h" - -#include "skype_proto.h" - -extern HINSTANCE g_hInstance; - -extern int g_cbCountries; -extern struct CountryListEntry* g_countries; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_account.cpp b/plugins/!Deprecated/Skype/src/skype_account.cpp deleted file mode 100644 index d3729f317a..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_account.cpp +++ /dev/null @@ -1,354 +0,0 @@ -#include "skype.h" - -wchar_t *CSkypeProto::LogoutReasons[] = -{ - LPGENW("") /* --- */, - LPGENW("LOGOUT_CALLED") /* LOGOUT_CALLED */, - LPGENW("HTTPS proxy authentication failed") /* HTTPS_PROXY_AUTH_FAILED */, - LPGENW("SOCKS proxy authentication failed") /* SOCKS_PROXY_AUTH_FAILED */, - LPGENW("P2P connection failed") /* P2P_CONNECT_FAILED */, - LPGENW("Connection to server failed. SkypeKit has been deprecated by Microsoft.") /* SERVER_CONNECT_FAILED */, - LPGENW("Server is overloaded") /* SERVER_OVERLOADED */, - LPGENW("SkypeKit database already in use") /* DB_IN_USE */, - LPGENW("Invalid Skype name") /* INVALID_SKYPENAME */, - LPGENW("Invalid email") /* INVALID_EMAIL */, - LPGENW("Unacceptable password") /* UNACCEPTABLE_PASSWORD */, - LPGENW("Skype name is taken") /* SKYPENAME_TAKEN */, - LPGENW("REJECTED_AS_UNDERAGE") /* REJECTED_AS_UNDERAGE */, - LPGENW("NO_SUCH_IDENTITY") /* NO_SUCH_IDENTITY */, - LPGENW("Incorrect password") /* INCORRECT_PASSWORD */, - LPGENW("Too many login attempts") /* TOO_MANY_LOGIN_ATTEMPTS */, - LPGENW("Password has changed") /* PASSWORD_HAS_CHANGED */, - LPGENW("PERIODIC_UIC_UPDATE_FAILED") /* PERIODIC_UIC_UPDATE_FAILED */, - LPGENW("DB_DISK_FULL") /* DB_DISK_FULL */, - LPGENW("DB_IO_ERROR") /* DB_IO_ERROR */, - LPGENW("SkypeKit database is corrupt") /* DB_CORRUPT */, - LPGENW("DB_FAILURE") /* DB_FAILURE */, - LPGENW("Invalid application ID") /* INVALID_APP_ID */, - LPGENW("APP_ID_FAILURE") /* APP_ID_FAILURE */, - LPGENW("Version is unsupported") /* UNSUPPORTED_VERSION */, - LPGENW("Account blocked") /* ATO_BLOCKED */, - LPGENW("Logout from another instance") /* REMOTE_LOGOUT */, - LPGENW("ACCESS_TOKEN_RENEWAL_FAILED") /* ACCESS_TOKEN_RENEWAL_FAILED */ -}; - -wchar_t *CSkypeProto::PasswordChangeReasons[] = -{ - LPGENW("Password successfully changed") /* PWD_OK */, - LPGENW("Password changing") /* PWD_CHANGING */, - LPGENW("Old password was incorrect") /* PWD_INVALID_OLD_PASSWORD */, - LPGENW("Failed to verify password. No connection to server") /* PWD_SERVER_CONNECT_FAILED */, - LPGENW("Password was set but server didn't like it much") /* PWD_OK_BUT_CHANGE_SUGGESTED */, - LPGENW("New password was exactly the same as old one") /* PWD_MUST_DIFFER_FROM_OLD */, - LPGENW("The new password was unacceptable") /* PWD_INVALID_NEW_PWD */, - LPGENW("Account was currently not logged in") /* PWD_MUST_LOG_IN_TO_CHANGE */, -}; - -bool CSkypeProto::IsOnline() -{ - return this->m_iStatus > ID_STATUS_OFFLINE; -} - -bool CSkypeProto::PrepareLogin() -{ - this->login = ::db_get_wsa(NULL, this->m_szModuleName, SKYPE_SETTINGS_SID); - if ( !this->login || !::wcslen(this->login)) - { - this->m_iStatus = ID_STATUS_OFFLINE; - this->SendBroadcast(ACKTYPE_LOGIN, ACKRESULT_FAILED, NULL, LOGINERR_BADUSERID); - - wchar_t message[512]; - ::mir_sntprintf(message, SIZEOF(message), ::TranslateT("You have not entered a Skype name.\nConfigure this in Options->Network->%s and try again."), this->m_tszUserName); - this->ShowNotification(message); - return false; - } - - return true; -} - -bool CSkypeProto::PreparePassword() -{ - if ( !this->rememberPassword) - { - if (this->password) - { - ::mir_free(this->password); - this->password = NULL; - } - this->password = ::db_get_sa(NULL, this->m_szModuleName, SKYPE_SETTINGS_PASSWORD); - if ( !this->password || !::strlen(this->password)) - { - if (this->password) - { - ::mir_free(this->password); - this->password = NULL; - } - PasswordRequestBoxParam param(this->login); - if ( !this->RequestPassword(param)) - { - this->SetStatus(ID_STATUS_OFFLINE); - return false; - } - else - { - this->password = ::mir_strdup(param.password); - this->rememberPassword = param.rememberPassword; - } - } - } - - return true; -} - -bool CSkypeProto::LogIn() -{ - if (this->IsOnline() || !this->PrepareLogin()) - return false; - - if (this->GetAccount((char*)_T2A(this->login), this->account)) - { - if ( !this->PreparePassword()) - return false; - - this->account.fetch(); - - this->InitProxy(); - - this->SetAccountSettings(); - - this->debugLogW(L"Login in an account"); - this->account->LoginWithPassword(this->password, false, false); - } - - return true; -} - -void CSkypeProto::LogOut() -{ - if (this->IsOnline() || this->m_iStatus == ID_STATUS_CONNECTING) - { - this->account->SetAvailability(Contact::OFFLINE); - this->debugLogW(L"Logout from account"); - this->account->Logout(true); - } -} - -void CSkypeProto::SetAccountSettings() -{ - int port = this->getWord("Port", rand() % 10000 + 10000); - this->debugLogW(L"Setting port number to %d", port); - this->SetInt(SETUPKEY_PORT, port); - - bool useAlternativePorts = this->getByte("UseAlternativePorts", 1) > 0; - if (useAlternativePorts) - this->debugLogW(L"Setting listening of alternative ports (80, 443)"); - this->SetInt(SETUPKEY_DISABLE_PORT80, (int)!useAlternativePorts); - - // Create default group for new contacts - DBVARIANT dbv = {0}; - if ( !getTString(SKYPE_SETTINGS_DEF_GROUP, &dbv) && lstrlen(dbv.ptszVal) > 0) - { - this->debugLogW(L"Setting default group for new contacts"); - ::Clist_CreateGroup(0, dbv.ptszVal); - ::db_free(&dbv); - } -} - -void CSkypeProto::InitProxy() -{ - if (this->m_hNetlibUser) - { - NETLIBUSERSETTINGS nlus = { sizeof(NETLIBUSERSETTINGS) }; - ::CallService(MS_NETLIB_GETUSERSETTINGS, (WPARAM)this->m_hNetlibUser, (LPARAM)&nlus); - - if (nlus.useProxy) - { - char address[MAX_PATH]; - ::mir_snprintf(address, MAX_PATH, "%s:%d", nlus.szProxyServer, nlus.wProxyPort); - - switch (nlus.proxyType) - { - case PROXYTYPE_HTTP: - case PROXYTYPE_HTTPS: - this->debugLogW(L"Setting https user proxy config"); - this->SetInt(SETUPKEY_HTTPS_PROXY_ENABLE, 1); - this->SetInt(SETUPKEY_SOCKS_PROXY_ENABLE, 0); - this->SetStr(SETUPKEY_HTTPS_PROXY_ADDR, address); - if (nlus.useProxyAuth) - { - this->SetStr(SETUPKEY_HTTPS_PROXY_USER, nlus.szProxyAuthUser); - ptrA encodedPass(::mir_base64_encode((BYTE*)nlus.szProxyAuthPassword, ::lstrlenA(nlus.szProxyAuthPassword))); - this->SetStr(SETUPKEY_HTTPS_PROXY_PWD, (char*)encodedPass); - } - break; - - case PROXYTYPE_SOCKS4: - case PROXYTYPE_SOCKS5: - this->debugLogW(L"Setting socks user proxy config"); - this->SetInt(SETUPKEY_HTTPS_PROXY_ENABLE, 0); - this->SetInt(SETUPKEY_SOCKS_PROXY_ENABLE, 1); - this->SetStr(SETUPKEY_SOCKS_PROXY_ADDR, address); - if (nlus.useProxyAuth) - { - this->SetStr(SETUPKEY_SOCKS_PROXY_USER, nlus.szProxyAuthUser); - ptrA encodedPass(::mir_base64_encode((BYTE*)nlus.szProxyAuthPassword, ::lstrlenA(nlus.szProxyAuthPassword))); - this->SetStr(SETUPKEY_SOCKS_PROXY_PWD, (char*)encodedPass); - } - break; - - default: - this->debugLogW(L"Setting automatic proxy detection"); - this->Delete(SETUPKEY_HTTPS_PROXY_ENABLE); - this->Delete(SETUPKEY_HTTPS_PROXY_ADDR); - this->Delete(SETUPKEY_HTTPS_PROXY_USER); - this->Delete(SETUPKEY_HTTPS_PROXY_PWD); - this->Delete(SETUPKEY_SOCKS_PROXY_ENABLE); - this->Delete(SETUPKEY_SOCKS_PROXY_ADDR); - this->Delete(SETUPKEY_SOCKS_PROXY_USER); - this->Delete(SETUPKEY_SOCKS_PROXY_PWD); - break; - } - } - } -} - -void CSkypeProto::OnLoggedIn() -{ - if ( !this->rememberPassword) - { - ::mir_free(this->password); - this->password = NULL; - } - - this->SetServerStatus(this->m_iDesiredStatus); - - this->LoadOwnInfo(this); - this->LoadChatList(this); - this->LoadContactList(this); - this->LoadAuthWaitList(this); - - fetch(this->transferList); -} - -void CSkypeProto::SetServerStatus(int iNewStatus) -{ - if (!this->account) - return; - - // change status - if (m_iStatus == iNewStatus) - return; - - int oldStatus = m_iStatus; - m_iStatus = iNewStatus; - - CContact::AVAILABILITY availability = CSkypeProto::MirandaToSkypeStatus(iNewStatus); - if (availability != CContact::UNKNOWN) - { - this->debugLogW(L"Setting status to %d", iNewStatus); - this->account->SetAvailability(availability); - } - - this->SendBroadcast(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, this->m_iStatus); -} - -void CSkypeProto::OnCblUpdated() -{ - // reload our CL after skype CL fully synced - this->LoadContactList(NULL); -} - -void CSkypeProto::OnLoggedOut(CAccount::LOGOUTREASON reason) -{ - this->debugLogW(L"Failed to login: %s", CSkypeProto::LogoutReasons[reason]); - - if (this->m_iStatus == ID_STATUS_CONNECTING) - this->SendBroadcast( - ACKTYPE_LOGIN, ACKRESULT_FAILED, NULL, - CSkypeProto::SkypeToMirandaLoginError(reason)); - - this->SetStatus(ID_STATUS_OFFLINE); - this->ShowNotification(CSkypeProto::LogoutReasons[reason]); - - if (this->rememberPassword && reason == CAccount::INCORRECT_PASSWORD) - { - this->rememberPassword = false; - if (this->password) - { - ::mir_free(this->password); - this->password = NULL; - } - } -} - -void CSkypeProto::OnAccountChanged(int prop) -{ - switch(prop) - { - case CAccount::P_STATUS: - CAccount::STATUS loginStatus; - this->account->GetPropStatus(loginStatus); - - if (loginStatus == CAccount::LOGGED_IN) - { - //this->ForkThread(&CSkypeProto::SignInAsync, 0); - this->OnLoggedIn(); - } - - if (loginStatus == CAccount::LOGGED_OUT) - { - CAccount::LOGOUTREASON reason; - if (this->account->GetPropLogoutreason(reason)) - if (reason != CAccount::LOGOUT_CALLED) - this->OnLoggedOut(reason); - } - break; - - case CAccount::P_CBLSYNCSTATUS: - { - CAccount::CBLSYNCSTATUS status; - this->account->GetPropCblsyncstatus(status); - if (status == CAccount::CBL_IN_SYNC) - { - this->OnCblUpdated(); - } - } - break; - - case CAccount::P_PWDCHANGESTATUS: - { - CAccount::PWDCHANGESTATUS status; - this->account->GetPropPwdchangestatus(status); - if (status != CAccount::PWD_CHANGING) - { - this->debugLogW(L"Failed to chage password: %s", CSkypeProto::PasswordChangeReasons[status]); - this->ShowNotification(CSkypeProto::PasswordChangeReasons[status]); - } - } - break; - - //case CAccount::P_AVATAR_IMAGE: - case CAccount::P_AVATAR_TIMESTAMP: - this->UpdateProfileAvatar(this->account.fetch()); - break; - - //case CAccount::P_MOOD_TEXT: - case CAccount::P_MOOD_TIMESTAMP: - this->UpdateProfileStatusMessage(this->account.fetch()); - break; - - case CAccount::P_PROFILE_TIMESTAMP: - this->UpdateProfile(this->account.fetch()); - break; - -/* case Account::P_AVAILABILITY: - { - Contact::AVAILABILITY status; - this->account->GetPropAvailability(status); - int mir_status = this->SkypeToMirandaStatus(status); - if (mir_status != this->m_iStatus && mir_status >= ID_STATUS_OFFLINE) - this->SetStatus(mir_status); - } - break;*/ - } -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_avatars.cpp b/plugins/!Deprecated/Skype/src/skype_avatars.cpp deleted file mode 100644 index 25db2a32df..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_avatars.cpp +++ /dev/null @@ -1,196 +0,0 @@ -#include "skype.h" - -bool CSkypeProto::IsAvatarChanged(const SEBinary &avatar, MCONTACT hContact) -{ - bool result = false; - - BYTE digest[16]; - ::mir_md5_hash((PBYTE)avatar.data(), (int)avatar.size(), digest); - - DBVARIANT dbv; - ::db_get(hContact, this->m_szModuleName, "AvatarHash", &dbv); - if (dbv.type == DBVT_BLOB && dbv.pbVal && dbv.cpbVal == 16) - { - if (::memcmp(digest, dbv.pbVal, 16) == 0) - { - result = true; - } - } - ::db_free(&dbv); - - return result; -} - -wchar_t * CSkypeProto::GetContactAvatarFilePath(MCONTACT hContact) -{ - TCHAR path[MAX_PATH]; - ::mir_sntprintf(path, SIZEOF(path), _T("%s\\%S"), VARST(_T("%miranda_avatarcache%")), this->m_szModuleName); - - DWORD dwAttributes = GetFileAttributes(path); - if (dwAttributes == 0xffffffff || (dwAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) - CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)path); - - ptrW sid(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (hContact != NULL) - ::mir_sntprintf(path, MAX_PATH, _T("%s\\%s.jpg"), path, sid); - else if (sid != NULL) - ::mir_sntprintf(path, MAX_PATH, _T("%s\\%s avatar.jpg"), path, sid); - else - return NULL; - - return mir_wstrdup(path); -} - -INT_PTR __cdecl CSkypeProto::GetAvatarInfo(WPARAM, LPARAM lParam) -{ - PROTO_AVATAR_INFORMATIONW *pai = (PROTO_AVATAR_INFORMATIONW *)lParam; - - if (this->getDword(pai->hContact, "AvatarTS", 0)) - return GAIR_NOAVATAR; - - ptrW sid( ::db_get_wsa(pai->hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (sid) - { - ptrW path( this->GetContactAvatarFilePath(pai->hContact)); - if (path && !_waccess(path, 0)) - { - ::wcsncpy(pai->filename, path, SIZEOF(pai->filename)); - pai->format = PA_FORMAT_JPEG; - return GAIR_SUCCESS; - } - } - - return GAIR_NOAVATAR; -} - -INT_PTR __cdecl CSkypeProto::GetAvatarCaps(WPARAM wParam, LPARAM lParam) -{ - switch (wParam) - { - case AF_MAXSIZE: - { - POINT *size = (POINT *)lParam; - if (size) - { - size->x = 96; - size->y = 96; - } - } - break; - - case AF_PROPORTION: - return PIP_NONE; - - case AF_FORMATSUPPORTED: - return lParam == PA_FORMAT_JPEG; - - case AF_ENABLED: - return 1; - - case AF_DONTNEEDDELAYS: - return 1; - - case AF_MAXFILESIZE: - // server accepts images of 32000 bytees, not bigger - return 32000; - - case AF_DELAYAFTERFAIL: - // do not request avatar again if server gave an error - return 1;// * 60 * 60 * 1000; // one hour - - case AF_FETCHIFPROTONOTVISIBLE: - case AF_FETCHIFCONTACTOFFLINE: - // avatars can be fetched all the time (server only operation) - return 1; - } - - return 0; -} - -INT_PTR __cdecl CSkypeProto::GetMyAvatar(WPARAM wParam, LPARAM lParam) -{ - if (!wParam) - return -2; - - mir_ptr path( this->GetContactAvatarFilePath(NULL)); - if (path && CSkypeProto::FileExists(path)) - { - ::wcsncpy((wchar_t *)wParam, path, (int)lParam); - return 0; - } - - return -1; -} - -INT_PTR __cdecl CSkypeProto::SetMyAvatar(WPARAM, LPARAM lParam) -{ - wchar_t *path = (wchar_t *)lParam; - if (path) - { - ptrW avatarPath( this->GetContactAvatarFilePath(NULL)); - if ( !::wcscmp(path, avatarPath)) - { - this->debugLogW(L"New avatar path are same with old."); - return -1; - } - - SEBinary avatar = this->GetAvatarBinary(path); - if (avatar.size() == 0) - { - this->debugLogW(L"Failed to read avatar file."); - return -1; - } - - if (this->IsAvatarChanged(avatar)) - { - this->debugLogW(L"New avatar are same with old."); - return -1; - } - - if ( !::CopyFile(path, avatarPath, FALSE)) - { - this->debugLogW(L"Failed to copy new avatar to local storage."); - return -1; - } - - Skype::VALIDATERESULT result = Skype::NOT_VALIDATED; - if (!this->account->SetAvatar(avatar, result)) - { - this->debugLogW(CSkypeProto::ValidationReasons[result]); - return -1; - } - - uint newTS = this->account->GetUintProp(Account::P_AVATAR_IMAGE); - this->setDword("AvatarTS", newTS); - return 0; - } - - this->account->SetBinProperty(Account::P_AVATAR_IMAGE, SEBinary()); - this->delSetting("AvatarTS"); - return 0; -} - -SEBinary CSkypeProto::GetAvatarBinary(wchar_t *path) -{ - SEBinary avatar; - - if (CSkypeProto::FileExists(path)) - { - int len; - char *buffer; - FILE* fp = ::_wfopen(path, L"rb"); - if (fp) - { - ::fseek(fp, 0, SEEK_END); - len = ::ftell(fp); - ::fseek(fp, 0, SEEK_SET); - buffer = new char[len + 1]; - ::fread(buffer, len, 1, fp); - ::fclose(fp); - - avatar.set(buffer, len); - } - } - - return avatar; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_blocked.cpp b/plugins/!Deprecated/Skype/src/skype_blocked.cpp deleted file mode 100644 index b1a25dc4db..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_blocked.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include "skype.h" -#include "skype_chat.h" - -int CSkypeProto::BlockCommand(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = (MCONTACT)wParam; - if (hContact) - { - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - - ContactRef contact; - if ( !this->GetContact(sid, contact) || !contact) - return 0; - - bool isBlocked = false; - if (contact->IsMemberOfHardwiredGroup(ContactGroup::CONTACTS_BLOCKED_BY_ME, isBlocked) && !isBlocked) - { - BlockParam param(hContact, this); - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_BLOCK), NULL, CSkypeProto::SkypeBlockProc, (LPARAM)¶m) == IDOK) - { - if ( !contact->SetBlocked(true, param.abuse)) - return 0; - - if (param.remove) - { - contact->SetBuddyStatus(false); - this->contactList.remove_val(contact); - ::CallService(MS_DB_CONTACT_DELETE, wParam, 0); - } - else if (this->getByte(hContact, "IsSkypeOut", 0) > 0) - this->setWord(hContact, "Status", ID_STATUS_OFFLINE); - } - } - else - { - if (contact->SetBlocked(false)) - if (this->getByte(hContact, "IsSkypeOut", 0) > 0) - this->setWord(hContact, "Status", ID_STATUS_ONTHEPHONE); - } - } - - return 0; -} - -INT_PTR CSkypeProto::OpenBlockedListCommand(WPARAM, LPARAM) -{ - char *title = ::mir_t2a(this->m_tszUserName); - OPENOPTIONSDIALOG ood; - ood.cbSize = sizeof(OPENOPTIONSDIALOG); - ood.pszGroup = "Network"; - ood.pszPage = title; - ood.pszTab = "Blocked contacts"; - return ::Options_Open(&ood); - ::mir_free(title); -} - -INT_PTR CALLBACK CSkypeProto::SkypeBlockProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - BlockParam *param = (BlockParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - param = (BlockParam *)lParam; - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - ::TranslateDialogDefault(hwndDlg); - - wchar_t *nick = (wchar_t *)::CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)param->hContact, GCDNF_TCHAR); - - TCHAR oldTitle[256], newTitle[256]; - ::GetDlgItemText(hwndDlg, IDC_HEADERBAR, oldTitle, SIZEOF(oldTitle)); - ::mir_sntprintf(newTitle, SIZEOF(newTitle), ::TranslateTS(oldTitle), nick); - ::SetDlgItemText(hwndDlg, IDC_HEADERBAR, newTitle); - - ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)::Skin_GetIcon("Skype_block", ICON_BIG)); - ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)::Skin_GetIcon("Skype_block")); - - wchar_t text[1024]; - ::mir_sntprintf( - text, - SIZEOF(text), - ::TranslateT("Are you sure you want to block \"%s\" (%s)? They won't be able to contact you and won't appear in your Contact List."), - nick, - ptrW(::db_get_wsa(param->hContact, param->ppro->m_szModuleName, SKYPE_SETTINGS_SID))); - ::SetDlgItemText(hwndDlg, IDC_MESSAGE, text); - - ::Utils_RestoreWindowPosition(hwndDlg, 0, MODULE, "BlockWindow"); - } - break; - - case WM_COMMAND: - if (HIWORD( wParam ) == BN_CLICKED) - { - switch(LOWORD(wParam)) - { - case IDOK: - param->remove = ::IsDlgButtonChecked(hwndDlg, IDC_REMOVE_FROM_CL) > 0; - param->abuse = ::IsDlgButtonChecked(hwndDlg, IDC_REPORT_ABUSE) > 0; - - ::Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "BlockWindow"); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, 0)); - ::EndDialog(hwndDlg, IDOK); - break; - - case IDCANCEL: - ::Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "BlockWindow"); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, 0)); - ::EndDialog(hwndDlg, IDCANCEL); - break; - } - } - break; - } - return FALSE; -} - -static WNDPROC oldWndProc = NULL; - -LRESULT CALLBACK CSkypeProto::SkypeBlockedOptionsSubProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - if (msg == WM_LBUTTONDOWN) - { - LVHITTESTINFO hi; - hi.pt.x = LOWORD(lParam); hi.pt.y = HIWORD(lParam); - ListView_SubItemHitTest(hwnd, &hi); - if (hi.iSubItem == 1) - { - LVITEM lvi = {0}; - lvi.mask = LVIF_IMAGE | LVIF_PARAM; - lvi.stateMask = -1; - lvi.iItem = hi.iItem; - if (ListView_GetItem(hwnd, &lvi)) - { - ContactParam *param = (ContactParam *)lvi.lParam; - - if (param->contact->SetBlocked(false)) - { - SEString data; - param->contact->GetIdentity(data); - ptrW sid(::mir_utf8decodeW(data)); - - MCONTACT hContact = param->ppro->GetContactBySid(sid); - if (::db_get_b(hContact, param->ppro->m_szModuleName, "IsSkypeOut", 0) > 0) - ::db_set_w(hContact, param->ppro->m_szModuleName, "Status", ID_STATUS_ONTHEPHONE); - - ListView_DeleteItem(hwnd, lvi.iItem); - - int nItem = ::SendMessage(::GetDlgItem(GetParent(hwnd), IDC_CONTACTS), CB_ADDSTRING, 0, (LPARAM)sid); - ::SendMessage(::GetDlgItem(GetParent(hwnd), IDC_CONTACTS), CB_SETITEMDATA, nItem, hContact); - } - } - } - } - - return ::CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam); -} - -int ImageList_AddIconFromIconLib(HIMAGELIST hIml, const char *name) -{ - HICON icon = ::Skin_GetIconByHandle(::Skin_GetIconHandle(name)); - int res = ImageList_AddIcon(hIml, icon); - ::Skin_ReleaseIcon(icon); - return res; -} - -INT_PTR CALLBACK CSkypeProto::SkypeBlockedOptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - ppro = (CSkypeProto *)lParam; - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - ::TranslateDialogDefault(hwndDlg); - - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_LIST); - { // IDC_BM_LIST setup - oldWndProc = (WNDPROC)::SetWindowLongPtr(hwndList, GWLP_WNDPROC, (LONG_PTR)SkypeBlockedOptionsSubProc); - - HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0); - ImageList_AddIconFromIconLib(hIml, "Skype_contact"); - ImageList_AddIconFromIconLib(hIml, "Skype_delete"); - ListView_SetImageList(hwndList, hIml, LVSIL_SMALL); - /// - LVCOLUMN lvc = {0}; - lvc.mask = LVCF_WIDTH | LVCF_TEXT; - //lvc.fmt = LVCFMT_JUSTIFYMASK; - lvc.pszText = TranslateT("Name"); - lvc.cx = 220; // width of column in pixels - ListView_InsertColumn(hwndList, 0, &lvc); - //lvc.fmt = LVCFMT_RIGHT; - lvc.pszText = L""; - lvc.cx = 32 - GetSystemMetrics(SM_CXVSCROLL); // width of column in pixels - ListView_InsertColumn(hwndList, 1, &lvc); - /// - ::SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP); - - if ( !ppro->IsOnline()) - { - ::EnableWindow(hwndList, FALSE); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_CONTACTS), FALSE); - } - } - - if (ppro->IsOnline()) - { - SEString data; - ContactGroupRef blockedList; - ppro->GetHardwiredContactGroup(ContactGroup::CONTACTS_BLOCKED_BY_ME, blockedList); - - CContact::Refs contacts; - blockedList->GetContacts(contacts); - for (size_t i = 0; i < contacts.size(); i++) - { - auto contact = contacts[i]; - - ptrW sid(::mir_utf8decodeW(contact->GetSid())); - - LVITEM lvi = {0}; - lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; - lvi.iItem = (int)i; - lvi.iImage = 0; - lvi.lParam = (LPARAM)new ContactParam(contact, ppro); - lvi.pszText = sid; - int iRow = ListView_InsertItem(hwndList, &lvi); - - if (iRow != -1) - { - lvi.iItem = iRow; - lvi.mask = LVIF_IMAGE; - lvi.iSubItem = 1; - lvi.iImage = 1; - ListView_SetItem(hwndList, &lvi); - } - } - /// - int nItem = 0; - MCONTACT hContact = NULL; - - ::EnterCriticalSection(&ppro->contact_search_lock); - - for (hContact = ::db_find_first(ppro->m_szModuleName); hContact && !ppro->isChatRoom(hContact); hContact = ::db_find_next(hContact, ppro->m_szModuleName)) - { - ptrW sid(::db_get_wsa(hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID)); - - ContactRef contact; - ppro->GetContact((char *)_T2A(sid), contact); - if ( !contacts.contains(contact)) - { - nItem = ::SendMessage(::GetDlgItem(hwndDlg, IDC_CONTACTS), CB_ADDSTRING, 0, (LPARAM)sid); - ::SendMessage(::GetDlgItem(hwndDlg, IDC_CONTACTS), CB_SETITEMDATA, nItem, hContact); - } - } - - ::LeaveCriticalSection(&ppro->contact_search_lock); - } - - } - break; - - case WM_COMMAND: - { - switch(LOWORD(wParam)) - { - case IDC_CONTACTS: - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_BLOCK), TRUE); - break; - - case IDC_BLOCK: - { - int i = ::SendMessage(::GetDlgItem(hwndDlg, IDC_CONTACTS), CB_GETCURSEL, 0, 0); - - MCONTACT hContact = (MCONTACT)::SendMessage(GetDlgItem(hwndDlg, IDC_CONTACTS), CB_GETITEMDATA, i, 0); - if ( !hContact) - break; - - ptrW sid(::db_get_wsa(hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID)); - - SEString data; - ContactRef contact; - if (!ppro->GetContact((char *)_T2A(sid), contact) || !contact) - break; - - BlockParam param(hContact, ppro); - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_BLOCK), NULL, CSkypeProto::SkypeBlockProc, (LPARAM)¶m) != IDOK) - break; - - contact->SetBlocked(true, param.abuse); - if (::db_get_b(hContact, ppro->m_szModuleName, "IsSkypeOut", 0) > 0) - ::db_set_w(hContact, ppro->m_szModuleName, "Status", ID_STATUS_OFFLINE); - - if (param.remove) - { - contact->SetBuddyStatus(false); - ppro->contactList.remove_val(contact); - ::CallService(MS_DB_CONTACT_DELETE, wParam, 0); - } - - if (contact->SetBlocked(true)) - { - LVITEM lvi = {0}; - lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; - lvi.iItem = (int)i; - lvi.iImage = 0; - lvi.lParam = (LPARAM)new ContactParam(contact, ppro); - lvi.pszText = sid; - int iRow = ListView_InsertItem(::GetDlgItem(hwndDlg, IDC_LIST), &lvi); - - if (iRow != -1) - { - lvi.iItem = iRow; - lvi.mask = LVIF_IMAGE; - lvi.iSubItem = 1; - lvi.iImage = 1; - ListView_SetItem(::GetDlgItem(hwndDlg, IDC_LIST), &lvi); - } - ::SendMessage(::GetDlgItem(hwndDlg, IDC_CONTACTS), CB_DELETESTRING, i, 0); - } - } - break; - } - } - break; - - case WM_NOTIFY: - if (reinterpret_cast(lParam)->code == PSN_APPLY && !ppro->IsOnline()) - { - return TRUE; - } - break; - - switch(LOWORD(wParam)) - { - case IDC_LIST: - if (((LPNMHDR)lParam)->code == NM_DBLCLK) - { - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST); - int iItem = ListView_GetNextItem(hwndList, -1, LVNI_ALL | LVNI_SELECTED); - if (iItem < 0) break; - LVITEM lvi = {0}; - lvi.mask = LVIF_PARAM | LVIF_GROUPID; - lvi.stateMask = -1; - lvi.iItem = iItem; - if (ListView_GetItem(hwndList, &lvi)) - { - SEString data; - if (lvi.iGroupId == 1) - { - ContactParam *param = (ContactParam *)lvi.lParam; - - param->contact->GetIdentity(data); - ptrW sid(::mir_utf8decodeW(data)); - ::CallService(MS_MSG_SENDMESSAGE, (WPARAM)ppro->GetContactBySid(sid), 0); - } - } - } - } - break; - } - return FALSE; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_bookmarks.cpp b/plugins/!Deprecated/Skype/src/skype_bookmarks.cpp deleted file mode 100644 index 29f3cc89d4..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_bookmarks.cpp +++ /dev/null @@ -1,203 +0,0 @@ -#include "skype.h" -#include "skype_chat.h" - -int CSkypeProto::SetBookmarkCommand(WPARAM wParam, LPARAM) -{ - HANDLE hContact = (HANDLE)wParam; - if (this->IsOnline() && this->IsChatRoom(hContact)) - this->BookmarkChatRoom(hContact); - - return 0; -} - -static WNDPROC oldWndProc = NULL; - -static LRESULT CALLBACK BookmarkListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - if (msg == WM_LBUTTONDOWN) - { - LVHITTESTINFO hi; - hi.pt.x = LOWORD(lParam); hi.pt.y = HIWORD(lParam); - ListView_SubItemHitTest(hwnd, &hi); - if (hi.iSubItem == 1) - { - LVITEM lvi = {0}; - lvi.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_GROUPID; - lvi.stateMask = -1; - lvi.iItem = hi.iItem; - if (ListView_GetItem(hwnd, &lvi) && lvi.iGroupId == 1) - { - CConversation *convo = (CConversation *)lvi.lParam; - - if (convo->SetBookmark(false)) - ListView_DeleteItem(hwnd, lvi.iItem); - } - } - } - - return ::CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam); -} - -int ImageList_AddIconFromIconLib(HIMAGELIST hIml, const char *name) -{ - HICON icon = ::Skin_GetIconByHandle(::Skin_GetIconHandle(name)); - int res = ImageList_AddIcon(hIml, icon); - ::Skin_ReleaseIcon(icon); - return res; -} - -INT_PTR CALLBACK CSkypeProto::SkypeBookmarksProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)::Skin_GetIcon("Skype_bookmark", ICON_BIG)); - ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)::Skin_GetIcon("Skype_bookmark")); - - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST); - { // IDC_BM_LIST setup - oldWndProc = (WNDPROC)::SetWindowLongPtr(hwndList, GWLP_WNDPROC, (LONG_PTR)BookmarkListWndProc); - - HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0); - ImageList_AddIconFromIconLib(hIml, "Skype_bookmark"); - ImageList_AddIconFromIconLib(hIml, "Skype_delete"); - ListView_SetImageList(hwndList, hIml, LVSIL_SMALL); - - /// - LVCOLUMN lvc = {0}; - lvc.mask = LVCF_WIDTH | LVCF_TEXT; - - //lvc.fmt = LVCFMT_JUSTIFYMASK; - lvc.pszText = TranslateT("Name"); - lvc.cx = 220; // width of column in pixels - ListView_InsertColumn(hwndList, 0, &lvc); - - //lvc.fmt = LVCFMT_RIGHT; - lvc.pszText = L""; - lvc.cx = 32 - GetSystemMetrics(SM_CXVSCROLL); // width of column in pixels - ListView_InsertColumn(hwndList, 1, &lvc); - - /// - LVGROUP lvg; - lvg.cbSize = sizeof(LVGROUP); - lvg.mask = LVGF_HEADER | LVGF_GROUPID; - - lvg.pszHeader = ::TranslateT("Conferences"); - lvg.iGroupId = 1; - ListView_InsertGroup(hwndList, 0, &lvg); - - /*lvg.pszHeader = ::TranslateT("Contacts"); - lvg.iGroupId = 2; - ListView_InsertGroup(hwndList, 0, &lvg);*/ - - ListView_EnableGroupView(hwndList, TRUE); - - ::SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP); - - if ( !ppro->IsOnline()) - ::EnableWindow(hwndList, FALSE); - } - - SEString data; - ConversationRefs conversations; - ppro->GetConversationList(conversations, Conversation::BOOKMARKED_CONVERSATIONS); - for (size_t i = 0; i < conversations.size(); i++) - { - auto conversation = conversations[i]; - - uint type = conversation->GetUintProp(Conversation::P_TYPE); - if (type != Conversation::CONFERENCE) - continue; - - conversation->GetPropDisplayname(data); - ptrW name = ::mir_utf8decodeW(data); - - LVITEM lvi = {0}; - lvi.mask = LVIF_GROUPID | LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; - lvi.iItem = (int)i; - lvi.iGroupId = 1; - lvi.iImage = 0; - lvi.lParam = (LPARAM)conversation.fetch(); - lvi.pszText = name; - int iRow = ListView_InsertItem(hwndList, &lvi); - - if (iRow != -1) - { - lvi.iItem = iRow; - lvi.mask = LVIF_IMAGE; - lvi.iSubItem = 1; - lvi.iImage = 1; - ListView_SetItem(hwndList, &lvi); - } - }; - - ::Utils_RestoreWindowPosition(hwndDlg, 0, MODULE, "BookmarksWindow"); - } - break; - - case WM_NOTIFY: - switch(LOWORD(wParam)) - { - case IDC_BM_LIST: - if (((LPNMHDR)lParam)->code == NM_DBLCLK) - { - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST); - int iItem = ListView_GetNextItem(hwndList, -1, LVNI_ALL | LVNI_SELECTED); - if (iItem < 0) break; - LVITEM lvi = {0}; - lvi.mask = LVIF_PARAM; - lvi.stateMask = -1; - lvi.iItem = iItem; - if (ListView_GetItem(hwndList, &lvi)) - { - //ppro->FindChatRoom - - CConversation *conversation = (CConversation *)lvi.lParam; - - SEString data; - conversation->GetPropIdentity(data); - ptrW cid = ::mir_utf8decodeW(data); - CSkypeProto::ReplaceSpecialChars(cid); - - ChatRoom *room = ppro->FindChatRoom(cid); - if (room != NULL) - ::CallProtoService(ppro->m_szModuleName, PS_JOINCHAT, (WPARAM)room->GetContactHandle(), 0); - else - { - conversation->GetPropDisplayname(data); - ptrW name = ::mir_utf8decodeW(data); - - ChatRoom *room = new ChatRoom(cid, name, ppro); - room->Start(conversation->ref(), true); - } - } - } - } - break; - - case WM_COMMAND: - if (HIWORD( wParam ) == BN_CLICKED) - { - switch(LOWORD(wParam)) - { - case IDCANCEL: - ::Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "BookmarksWindow"); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, 0)); - ::DestroyWindow(hwndDlg); - return TRUE; - } - } - break; - } - return FALSE; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_chat.cpp b/plugins/!Deprecated/Skype/src/skype_chat.cpp deleted file mode 100644 index 2f2f166566..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_chat.cpp +++ /dev/null @@ -1,1735 +0,0 @@ -#include "skype.h" -#include "skype_chat.h" - -enum CHAT_LIST_MENU -{ - ICM_CANCEL, - - ICM_DETAILS, - ICM_AUTH_REQUEST, - ICM_CONF_INVITE, - ICM_ROLE, ICM_ROLE_ADMIN, ICM_ROLE_SPEAKER, ICM_ROLE_WRITER, ICM_ROLE_SPECTATOR, - ICM_ADD, ICM_KICK, ICM_BAN, - ICM_COPY_SID, ICM_COPY_URI -}; - -static struct gc_item crListItems[] = -{ - { LPGENT("&User details"), ICM_DETAILS, MENU_ITEM }, - { LPGENT("&Request auth"), ICM_AUTH_REQUEST, MENU_ITEM }, - { NULL, 0, MENU_SEPARATOR }, - { LPGENT("Invite to conference"), ICM_CONF_INVITE, MENU_ITEM }, - { NULL, 0, MENU_SEPARATOR }, - { LPGENT("Set &role"), ICM_ROLE, MENU_NEWPOPUP }, - { LPGENT("&Master"), ICM_ROLE_ADMIN, MENU_POPUPITEM }, - { LPGENT("&Helper"), ICM_ROLE_SPEAKER, MENU_POPUPITEM }, - { LPGENT("&User"), ICM_ROLE_WRITER, MENU_POPUPITEM }, - { LPGENT("&Listener"), ICM_ROLE_SPECTATOR, MENU_POPUPITEM }, - { NULL, 0, MENU_SEPARATOR }, - { LPGENT("&Add"), ICM_ADD, MENU_ITEM }, - { LPGENT("&Kick"), ICM_KICK, MENU_ITEM }, - { LPGENT("Outlaw (&ban)"), ICM_BAN, MENU_ITEM }, - { NULL, 0, MENU_SEPARATOR }, - { LPGENT("Copy &Skype name"), ICM_COPY_SID, MENU_ITEM }, - { LPGENT("Copy room &URI"), ICM_COPY_URI, MENU_ITEM } -}; - -static void CheckChatMenuItem(CHAT_LIST_MENU checkedId) -{ - for (int i = 0; i < SIZEOF(crListItems); i++) - { - if (crListItems[i].dwID == checkedId) - { - if (crListItems[i].uType == MENU_ITEM) - crListItems[i].uType = MENU_CHECK; - else if (crListItems[i].uType == MENU_POPUPITEM) - crListItems[i].uType = MENU_POPUPCHECK; - break; - } - } -} - -static void DisableChatMenuItem(CHAT_LIST_MENU disabledId) -{ - for (int i = 0; i < SIZEOF(crListItems); i++) - { - if (crListItems[i].dwID == disabledId) - { - crListItems[i].bDisabled = TRUE; - break; - } - } -} - -static void DisableChatMenuItems(CHAT_LIST_MENU disabledIds[]) -{ - for (int i = 0; i < SIZEOF(disabledIds); i++) - DisableChatMenuItem(disabledIds[i]); -} - -static void ResetChatMenuItem() -{ - for (int i = 0; i < SIZEOF(crListItems); i++) - { - crListItems[i].bDisabled = FALSE; - if (crListItems[i].uType == MENU_CHECK) - crListItems[i].uType = MENU_ITEM; - else if (crListItems[i].uType == MENU_POPUPCHECK) - crListItems[i].uType = MENU_POPUPITEM; - } -} - -void CSkypeProto::InitChatModule() -{ - GCREGISTER gcr = {0}; - gcr.cbSize = sizeof(gcr); - gcr.iMaxText = 0; - gcr.ptszDispName = this->m_tszUserName; - gcr.pszModule = this->m_szModuleName; - ::CallServiceSync(MS_GC_REGISTER, 0, (LPARAM)&gcr); - - this->HookProtoEvent(ME_GC_EVENT, &CSkypeProto::OnGCEventHook); - this->HookProtoEvent(ME_GC_BUILDMENU, &CSkypeProto::OnGCMenuHook); -} - -/// - -TCHAR *ChatRoom::Roles[] = -{ - _T(""), // --- - LPGENT("Creator"), // CREATOR = 1 - LPGENT("Master"), // ADMIN = 2 - LPGENT("Helper"), // SPEAKER = 3 - LPGENT("User"), // WRITER = 4 - LPGENT("Listener"), // SPECTATOR= 5 - LPGENT("Applicant"), // APPLICANT= 6 - LPGENT("Retried"), // RETIRED = 7 - LPGENT("Outlaw"), // OUTLAW = 8 -}; - -ChatRoom::ChatRoom(const wchar_t *cid) : members(1, CompareMembers) -{ - this->cid = ::mir_wstrdup(cid); - this->name = NULL; - this->me = NULL; -} - -ChatRoom::ChatRoom(const wchar_t *cid, const wchar_t *name, CSkypeProto *ppro) : members(1, CompareMembers) -{ - this->cid = ::mir_wstrdup(cid); - this->name = ::mir_wstrdup(name); - this->ppro = ppro; - // - this->me = new ChatMember(ppro->login); - this->me->SetNick(::TranslateT("me")); - this->me->SetRank(0); - this->me->SetStatus(ID_STATUS_OFFLINE); - // - this->sys = new ChatMember(L"sys"); - this->sys->SetNick(L"System"); - this->sys->SetRank(0); - this->sys->SetStatus(ID_STATUS_OFFLINE); -} - -ChatRoom::~ChatRoom() -{ - ::mir_free(this->cid); - ::mir_free(this->name); - delete this->me; - delete this->sys; - this->members.destroy(); -} - -MCONTACT ChatRoom::GetContactHandle() const -{ - return this->hContact; -} - -void ChatRoom::CreateChatSession(bool showWindow) -{ - SEString data; - - // start chat session - GCSESSION gcw = {0}; - gcw.cbSize = sizeof(gcw); - gcw.iType = GCW_CHATROOM; - gcw.pszModule = ppro->m_szModuleName; - gcw.ptszName = this->name; - gcw.ptszID = this->cid; - gcw.dwItemData = (DWORD)this; - ::CallServiceSync(MS_GC_NEWSESSION, 0, (LPARAM)&gcw); - - // load chat roles - GCDEST gcd = { ppro->m_szModuleName, this->cid, GC_EVENT_ADDGROUP }; - GCEVENT gce = { sizeof(gce), &gcd }; - for (int i = 1; i < SIZEOF(ChatRoom::Roles) - 2; i++) { - gce.ptszStatus = ::TranslateTS(ChatRoom::Roles[i]); - ::CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); - } - - // init [and show window] - gcd.iType = GC_EVENT_CONTROL; - gce.ptszStatus = NULL; - ::CallServiceSync(MS_GC_EVENT, showWindow ? SESSION_INITDONE : WINDOW_HIDDEN, (LPARAM)&gce); - ::CallServiceSync(MS_GC_EVENT, SESSION_ONLINE, (LPARAM)&gce); - - this->ppro->debugLogW(L"Created new chat session %s", this->cid); -} - -void ChatRoom::SetTopic(const wchar_t *topic) -{ - if (this->conversation) - this->conversation->SetTopic((char *)ptrA(::mir_utf8encodeW(topic))); -} - -wchar_t *ChatRoom::GetUri() -{ - SEString data; - this->conversation->GetJoinBlob(data); - ptrW blob( ::mir_utf8decodeW(data)); - - wchar_t *uri = (wchar_t *)::mir_alloc(sizeof(wchar_t) * MAX_PATH); - ::mir_sntprintf(uri, SIZEOF(uri), L"skype:?chat&blob=%s", blob); - - return uri; -} - -void ChatRoom::ShowWindow() -{ - // show window - GCDEST gcd = { this->ppro->m_szModuleName, this->cid, GC_EVENT_CONTROL }; - GCEVENT gce = { sizeof(gce), &gcd }; - ::CallServiceSync(MS_GC_EVENT, WINDOW_VISIBLE, (LPARAM)&gce); -} - -void ChatRoom::Invite(const StringList &contacts) -{ - SEStringList needToAdd; - for (size_t i = 0; i < contacts.size(); i++) - { - if ( !contacts.contains(contacts[i])) - needToAdd.append((char *)_T2A(contacts[i])); - } - this->conversation->AddConsumers(needToAdd); -} - -void ChatRoom::Create(const ChatRoomParam *param, CSkypeProto *ppro) -{ - SEString data; - ChatRoom *room = NULL; - - ConversationRef conversation; - if (ppro->CreateConference(conversation)) - { - conversation->SetOption(Conversation::P_OPT_JOINING_ENABLED, param->enableJoining); - conversation->SetOption(Conversation::P_OPT_ENTRY_LEVEL_RANK, (Participant::RANK)param->joinRank); - conversation->SetOption(Conversation::P_OPT_DISCLOSE_HISTORY, true); - if (::wcslen(param->topic) > 0) - conversation->SetTopic((char *)ptrA(::mir_utf8encodeW(param->topic))); - if (::wcslen(param->guidline) > 0) - conversation->SetGuidelines((char *)ptrA(::mir_utf8encodeW(param->guidline))); - if (param->passwordProtection && ::wcslen(param->password) > 0) - { - conversation->SetPassword( - (char *)ptrA(::mir_utf8encodeW(param->password)), - (char *)ptrA(::mir_utf8encodeW(param->hint))); - } - - SEStringList consumers; - for (size_t i = 0; i < param->invitedContacts.size(); i++) - { - data = ::mir_utf8encodeW(param->invitedContacts[i]); - consumers.append(data); - } - conversation->AddConsumers(consumers); - } -} - -void ChatRoom::Start(const ConversationRef &conversation, bool showWindow) -{ - SEString data; - - this->CreateChatSession(showWindow); - - this->conversation = conversation; - this->conversation.fetch(); - this->conversation->SetChatRoom(this); - - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYID | GCF_HCONTACT; - gci.pszModule = ppro->m_szModuleName; - gci.pszID = this->cid; - - if ( !::CallServiceSync(MS_GC_GETINFO, 0, (LPARAM)&gci)) { - this->hContact = gci.hContact; - ptrW cid( ::db_get_wsa(gci.hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID)); - if (cid == NULL) { - this->conversation->GetPropIdentity(data); - cid = ::mir_utf8decodeW(data); - ::db_set_ws(gci.hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID, cid); - } - } - - ParticipantRefs participants; - this->conversation->GetParticipants(participants, Conversation::CONSUMERS_AND_APPLICANTS); - for (uint i = 0; i < participants.size(); i++) - { - auto participant = participants[i]; - - participant->GetPropIdentity(data); - ptrW sid( ::mir_utf8decodeW(data)); - - ChatMember member(sid); - member.SetRank(participant->GetUintProp(Participant::P_RANK)); - - Contact::Ref contact; - this->ppro->GetContact(data, contact); - - Contact::AVAILABILITY status; - contact->GetPropAvailability(status); - member.SetStatus(CSkypeProto::SkypeToMirandaStatus(status)); - - contact->GetPropFullname(data); - if (data.length() != 0) - { - ptrW nick( ::mir_utf8decodeW(data)); - member.SetNick(nick); - } - - member.SetPaticipant(participant); - /*member.participant.fetch(); - member.participant->SetOnChangedCallback(&ChatRoom::OnParticipantChanged, this);*/ - - this->AddMember(member, NULL, NULL); - } -} - -void ChatRoom::Join(const wchar_t *joinBlob, CSkypeProto *ppro) -{ - SEString data; - ConversationRef conversation; - if (ppro->GetConversationByBlob(data, conversation)) - { - conversation->GetPropIdentity(data); - ptrW cid(::mir_utf8decodeW(data)); - - conversation->GetPropDisplayname(data); - ptrW name(::mir_utf8decodeW(data)); - - CSkypeProto::ReplaceSpecialChars(cid); - ChatRoom *room = new ChatRoom(cid, name, ppro); - ppro->chatRooms.insert(room); - room->Start(conversation, true); - } -} - -void ChatRoom::SendMessage(const wchar_t *text) -{ - this->ppro->debugLogW(L"Sending chat message %s", this->cid); - - CMessage::Ref message; - if (this->conversation->PostText((char *)ptrA(::mir_utf8encodeW(text)), message)) - this->ppro->debugLogW(L"Chat message sent %s", this->cid); -} - -void ChatRoom::LeaveChat() -{ - this->ppro->debugLogW(L"Leaving chat session %s", this->cid); - - if (this->conversation->RetireFrom()) - this->ppro->debugLogW(L"Retired from conversation %s", this->cid); - - GCDEST gcd = { ppro->m_szModuleName, this->cid, GC_EVENT_CONTROL }; - GCEVENT gce = { sizeof(gce), &gcd }; - ::CallServiceSync(MS_GC_EVENT, SESSION_OFFLINE, (LPARAM)&gce); - ::CallServiceSync(MS_GC_EVENT, SESSION_TERMINATE, (LPARAM)&gce); -} - -void ChatRoom::LeaveChatAndDelete() -{ - this->ppro->debugLogW(L"Leaving chat session %s", this->cid); - - if (this->conversation->RetireFrom()) - this->ppro->debugLogW(L"Retired from conversation %s", this->cid); - - if (this->conversation->Delete()) - this->ppro->debugLogW(L"Delete conversation %s", this->cid); - - GCDEST gcd = { ppro->m_szModuleName, this->cid, GC_EVENT_CONTROL }; - GCEVENT gce = { sizeof(gce), &gcd }; - ::CallServiceSync(MS_GC_EVENT, SESSION_OFFLINE, (LPARAM)&gce); - ::CallServiceSync(MS_GC_EVENT, SESSION_TERMINATE, (LPARAM)&gce); -} - -void ChatRoom::SendEvent(const ChatMember &item, int eventType, DWORD timestamp, DWORD flags, DWORD itemData, const wchar_t *status, const wchar_t *message) -{ - bool isMe = this->IsMe(item); - - GCDEST gcd = { ppro->m_szModuleName, this->cid, eventType }; - GCEVENT gce = { sizeof(gce), &gcd }; - gce.dwFlags = flags; - gce.ptszUID = item.GetSid(); - gce.ptszNick = !isMe ? item.GetNick() : ::TranslateT("me"); - gce.bIsMe = isMe; - gce.dwItemData = itemData; - gce.ptszStatus = status; - gce.ptszText = message; - gce.time = timestamp; - - ::CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); -} - -void ChatRoom::SendEvent(const wchar_t *sid, int eventType, DWORD timestamp, DWORD flags, DWORD itemData, const wchar_t *status, const wchar_t *message) -{ - if (this->IsMe(sid)) - this->SendEvent(*this->me, eventType, timestamp, flags, itemData, status, message); - else if (this->IsSys(sid)) - this->SendEvent(*this->sys, eventType, timestamp, flags, itemData, status, message); - else - { - ChatMember search(sid); - ChatMember *member = this->members.find(&search); - if (member != NULL) - this->SendEvent(*member, eventType, timestamp, flags, itemData, status, message); - } -} - -bool ChatRoom::IsMe(const wchar_t *sid) const -{ - return ::lstrcmpi(this->ppro->login, sid) == 0; -} - -bool ChatRoom::IsMe(const ChatMember &item) const -{ - return ::lstrcmpi(this->ppro->login, item.GetSid()) == 0; -} - -bool ChatRoom::IsSys(const wchar_t *sid) const -{ - return ::lstrcmpi(L"sys", sid) == 0; -} - -bool ChatRoom::IsSys(const ChatMember &item) const -{ - return ::lstrcmpi(L"sys", item.GetSid()) == 0; -} - -ChatMember *ChatRoom::FindChatMember(const wchar_t *sid) -{ - if ( !IsMe(sid)) - { - ChatMember search(sid); - return this->members.find(&search); - } - else - return this->me; -} - -void ChatRoom::AddMember(const ChatMember &item, const ChatMember &author, DWORD timestamp) -{ - if ( !this->IsMe(item)) - { - ChatMember *member = this->FindChatMember(item.GetSid()); - if (member != NULL) - { - this->UpdateMember(item, timestamp); - } - else - { - ChatMember *newMember = new ChatMember(item); - newMember->participant.fetch(); - newMember->participant->SetChatRoom(this); - //newMember->participant->SetOnChangedCallback(&ChatRoom::OnParticipantChanged, this); - this->members.insert(newMember); - - if (newMember->GetRank() == CParticipant::APPLICANT) - this->SendEvent( - *this->sys, - GC_EVENT_INFORMATION, - time(NULL), - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("waits to join")); - else - this->SendEvent(item, GC_EVENT_JOIN, timestamp, GCEF_ADDTOLOG, 0, ::TranslateW(ChatRoom::Roles[item.GetRank()])); - - int status = item.GetStatus(); - if (status == ID_STATUS_AWAY || status == ID_STATUS_DND) - this->SendEvent(item, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED | GC_SSE_ONLINE, (const wchar_t*)0, item.GetSid()); - else if (status == ID_STATUS_OFFLINE) - this->SendEvent(item, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED | GC_SSE_OFFLINE, (const wchar_t*)0, item.GetSid()); - else - this->SendEvent(item, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED, (const wchar_t*)0, item.GetSid()); - - this->SendEvent(item, GC_EVENT_SETCONTACTSTATUS, timestamp, 0, status); - } - } - else - { - if (!this->me->participant) - { - this->me->participant = item.participant; - this->me->participant.fetch(); - this->me->participant->SetChatRoom(this); - //this->me->participant->SetOnChangedCallback(&ChatRoom::OnParticipantChanged, this); - } - if (this->me->GetRank() != item.GetRank()) - { - this->SendEvent(*this->me, GC_EVENT_REMOVESTATUS, timestamp, 0, 0, ::TranslateW(ChatRoom::Roles[this->me->GetRank()])); - this->SendEvent(*this->me, GC_EVENT_ADDSTATUS, timestamp, !this->me->GetRank() ? 0 : GCEF_ADDTOLOG, 0, ::TranslateW(ChatRoom::Roles[item.GetRank()]), author == NULL ? this->sys->GetNick() : author.GetNick()); - this->me->SetRank(item.GetRank()); - } - } -} - -void ChatRoom::UpdateMemberNick(ChatMember *member, const wchar_t *nick, DWORD timestamp) -{ - if (::lstrcmp(member->GetNick(), nick) != 0) - { - this->SendEvent(*member, GC_EVENT_NICK, timestamp, GCEF_ADDTOLOG, 0, nick); - member->SetNick(nick); - } -} - -void ChatRoom::UpdateMemberRole(ChatMember *member, int role, const ChatMember &author, DWORD timestamp) -{ - if (member->GetRank() != role) - { - this->SendEvent(*member, GC_EVENT_REMOVESTATUS, timestamp, 0, 0, ::TranslateW(ChatRoom::Roles[member->GetRank()])); - this->SendEvent(*member, GC_EVENT_ADDSTATUS, timestamp, GCEF_ADDTOLOG, 0, ::TranslateW(ChatRoom::Roles[role]), author == NULL ? this->sys->GetNick() : author.GetNick()); - member->SetRank(role); - } -} - -void ChatRoom::UpdateMemberStatus(ChatMember *member, int status, DWORD timestamp) -{ - if (member->GetStatus() != status) - { - if (status == ID_STATUS_AWAY || status == ID_STATUS_DND) - this->SendEvent(*member, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED | GC_SSE_ONLINE, (const wchar_t*)0, member->GetSid()); - else if (status == ID_STATUS_OFFLINE) - this->SendEvent(*member, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED | GC_SSE_OFFLINE, (const wchar_t*)0, member->GetSid()); - else - this->SendEvent(*member, GC_EVENT_SETSTATUSEX, timestamp, 0, GC_SSE_ONLYLISTED, (const wchar_t*)0, member->GetSid()); - - this->SendEvent(*member, GC_EVENT_SETCONTACTSTATUS, timestamp, 0, status); - member->SetStatus(status); - } -} - -void ChatRoom::UpdateMember(const wchar_t *sid, const wchar_t *nick, int role, int status, DWORD timestamp) -{ - ChatMember search(sid); - ChatMember *member = this->members.find(&search); - if (member != NULL) - { - this->UpdateMemberNick(member, nick, timestamp); - this->UpdateMemberRole(member, role, NULL, timestamp); - this->UpdateMemberStatus(member, status, timestamp); - } -} - -void ChatRoom::UpdateMember(const ChatMember &item, DWORD timestamp) -{ - ChatMember *member = this->FindChatMember(item.GetSid()); - if (member != NULL) - { - ptrW nick(item.GetNick()); - if (::lstrcmp(member->GetNick(), nick) != 0) - { - this->SendEvent(*member, GC_EVENT_NICK, timestamp, GCEF_ADDTOLOG, 0, nick); - member->SetNick(nick); - } - if (member->GetRank() != item.GetRank()) - { - this->SendEvent(*member, GC_EVENT_REMOVESTATUS, timestamp, 0, 0, ::TranslateW(ChatRoom::Roles[member->GetRank()])); - this->SendEvent(*member, GC_EVENT_ADDSTATUS, timestamp, GCEF_ADDTOLOG, 0, ::TranslateW(ChatRoom::Roles[item.GetRank()])); - member->SetRank(item.GetRank()); - } - if (member->GetStatus() != item.GetStatus()) - { - this->SendEvent(*member, GC_EVENT_SETCONTACTSTATUS, timestamp, 0, item.GetStatus()); - member->SetStatus(item.GetStatus()); - } - } -} - -void ChatRoom::AddApplicant(const ChatMember *member) -{ - SEStringList consumers; - consumers.append((char *)ptrA(::mir_utf8encodeW(member->GetSid()))); - this->conversation->AddConsumers(consumers); -} - -void ChatRoom::KickMember(const ChatMember &item, const ChatMember *author, DWORD timestamp) -{ - if ( !this->IsMe(item)) - { - ChatMember *member = this->FindChatMember(item.GetSid()); - if (member != NULL) - { - this->SendEvent(*member, GC_EVENT_KICK, timestamp, GCEF_ADDTOLOG, 0, author->GetNick()); - this->members.remove(member); - delete member; - } - } - else - { - this->SendEvent(*this->me, GC_EVENT_KICK, timestamp, GCEF_ADDTOLOG, 0, author->GetNick()); - this->me->SetRank(/*RETIRED= */7); - } -} - -void ChatRoom::KickMember(const wchar_t *sid, const wchar_t *author, DWORD timestamp) -{ - ChatMember member(sid); - this->KickMember(member, this->FindChatMember(author), timestamp); -} - -void ChatRoom::RemoveMember(const ChatMember &item, DWORD timestamp) -{ - if ( !this->IsMe(item)) - { - ChatMember *member = this->FindChatMember(item.GetSid()); - if (member != NULL) - { - this->SendEvent(*member, GC_EVENT_PART, timestamp); - this->members.remove(member); - delete member; - } - } - else - this->LeaveChat(); -} - -void ChatRoom::RemoveMember(const wchar_t *sid, DWORD timestamp) -{ - ChatMember member(sid); - this->RemoveMember(member, timestamp); -} - -void ChatRoom::OnEvent(const ConversationRef &conversation, const MessageRef &message) -{ - if ( !this->conversation) - this->conversation = conversation; - - if ( this->conversation != conversation) - return; - - uint messageType; - messageType = message->GetUintProp(Message::P_TYPE); - - switch (messageType) - { - case CMessage::POSTED_EMOTE: - case CMessage::POSTED_TEXT: - { - SEString data; - - message->GetPropAuthor(data); - ptrW sid( ::mir_utf8decodeW(data)); - - message->GetPropBodyXml(data); - ptrW text( ::mir_utf8decodeW( ptrA(CSkypeProto::RemoveHtml(data)))); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - this->SendEvent( - sid, - messageType == CMessage::POSTED_TEXT ? GC_EVENT_MESSAGE : GC_EVENT_ACTION, - timestamp, - GCEF_ADDTOLOG, - 0, - NULL, - text); - } - break; - - case Message::ADDED_CONSUMERS: - case Message::ADDED_APPLICANTS: - { - SEString data; - - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::CONSUMED) - { - uint timestamp; - message->GetPropTimestamp(timestamp); - - message->GetPropAuthor(data); - ChatMember *author = this->FindChatMember((wchar_t *)ptrW(::mir_utf8decodeW(data))); - - ParticipantRefs participants; - conversation->GetParticipants(participants); - for (size_t i = 0; i < participants.size(); i++) - { - participants[i]->GetPropIdentity(data); - ptrW sid(::mir_utf8decodeW(data)); - if (this->FindChatMember(sid) == NULL) - { - ChatMember member(sid); - member.SetRank(participants[i]->GetUintProp(Participant::P_RANK)); - - Contact::Ref contact; - this->ppro->GetContact(data, contact); - - Contact::AVAILABILITY status; - contact->GetPropAvailability(status); - member.SetStatus(CSkypeProto::SkypeToMirandaStatus(status)); - - contact->GetPropFullname(data); - ptrW nick(::mir_utf8decodeW(data)); - if (data.length() != 0) - { - ptrW nick( ::mir_utf8decodeW(data)); - member.SetNick(nick); - } - - member.participant = participants[i]; - /*member.participant.fetch(); - member.participant->SetOnChangedCallback(&ChatRoom::OnParticipantChanged, this);*/ - - this->AddMember(member, *author, timestamp); - } - } - - // do not remove - //message->GetPropIdentities(data); - //char *identities = ::mir_strdup(data); - //if (identities) - //{ - // char *identity = ::strtok(identities, " "); - // if (identity != NULL) - // { - // do - // { - // Contact::Ref contact; - // this->ppro->GetContact(identity, contact); - - // contact->GetIdentity(data); - // ptrW sid = ::mir_utf8decodeW(data); - - // ChatMember *member = new ChatMember(sid); - // //todo: fix rank - // - // member->rank = - // messageType == Message::ADDED_APPLICANTS ? - // Participant::APPLICANT : - // Participant::SPEAKER; - // //conversation->GetUintProp(Conversation::P_OPT_ENTRY_LEVEL_RANK); - // //participants[i]->GetUintProp(Participant::P_RANK); - - // Contact::AVAILABILITY status; - // contact->GetPropAvailability(status); - // member->status = CSkypeProto::SkypeToMirandaStatus(status); - - // contact->GetPropFullname(data); - // member->nick = ::mir_utf8decodeW(data); - - // this->AddMember(member, timestamp); - - // identity = ::strtok(NULL, " "); - // } - // while (identity != NULL); - // } - // ::mir_free(identities); - //} - } - } - break; - - case Message::RETIRED_OTHERS: - { - SEString data; - - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::CONSUMED) - { - this->ppro->debugLogW(L"Retired other event for conversation %s", this->cid); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - message->GetPropAuthor(data); - ptrW author( ::mir_utf8decodeW(data)); - - message->GetPropIdentities(data); - char *identities = ::mir_strdup(data); - if (identities) - { - char *identity = ::strtok(identities, " "); - if (identity != NULL) - { - do - { - ptrW sid(::mir_utf8decodeW(identity)); - this->KickMember(sid, author, timestamp); - - identity = ::strtok(NULL, " "); - } - while (identity != NULL); - } - ::mir_free(identities); - } - } - } - break; - - case Message::RETIRED: - { - SEString data; - - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::CONSUMED) - { - this->ppro->debugLogW(L"Retired event for conversation %s", this->cid); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - message->GetPropAuthor(data); - ptrW sid( ::mir_utf8decodeW(data)); - - this->RemoveMember(sid, timestamp); - } - } - break; - - case Message::SET_RANK: - { - SEString data; - } - break; - // message->GetPropBodyXml(data); - // ptrA text = ::mir_strdup(data); - // int i = 0; - - // /*Message::CONSUMPTION_STATUS status; - // message->GetPropConsumptionStatus(status); - // if (status == Message::UNCONSUMED_NORMAL)*/ - // { - // message->GetPropAuthor(data); - // ptrW sid = ::mir_utf8decodeW(data); - - // ChatMember search(sid); - // ChatMember *member = this->FindChatMember(sid); - // if (member != NULL) - // { - // uint timestamp; - // message->GetPropTimestamp(timestamp); - - // message->GetPropBodyXml(data); - // ptrW rank = ::mir_utf8decodeW(data); - - // member->SetRank(0); - // } - // } - // } - // break; - - /*case CMessage::STARTED_LIVESESSION: - { - SEString data; - - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::UNCONSUMED_NORMAL) - break; - - message->GetPropAuthor(data); - ptrW sid = ::mir_utf8decodeW(data); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - this->SendEvent( - sid, - GC_EVENT_INFORMATION, - timestamp, - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("Incoming group call received")); - } - break;*/ - - case CMessage::ENDED_LIVESESSION: - { - SEString data; - - //Message::CONSUMPTION_STATUS status; - //message->GetPropConsumptionStatus(status); - //if (status != Message::UNCONSUMED_NORMAL) - // break; - - message->GetPropAuthor(data); - ptrW sid( ::mir_utf8decodeW(data)); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - this->SendEvent( - *this->sys, - GC_EVENT_INFORMATION, - timestamp, - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("Incoming group call finished")); - } - break; - } -} - -void ChatRoom::OnChange(const ConversationRef &conversation, int prop) -{ - if ( !this->conversation) - this->conversation = conversation; - - if ( this->conversation != conversation) - return; - - switch (prop) - { - case Conversation::P_MY_STATUS: - { - Conversation::MY_STATUS status; - conversation->GetPropMyStatus(status); - if (status == Conversation::INVALID_ACCESS_TOKEN) - { - PasswordRequestBoxParam param(this->name, false); - if (this->ppro->RequestPassword(param)) - { - if ( !this->conversation->EnterPassword(param.password)) - this->SendEvent( - *this->sys, - GC_EVENT_INFORMATION, - time(NULL), - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("The password is incorrect")); - } - } - else if (status == Conversation::APPLICATION_DENIED) - { - this->SendEvent( - *this->sys, - GC_EVENT_INFORMATION, - time(NULL), - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("Your application to join the conference was denied")); - } - } - break; - - case Conversation::P_LOCAL_LIVESTATUS: - { - Conversation::LOCAL_LIVESTATUS liveStatus; - conversation->GetPropLocalLivestatus(liveStatus); - if (liveStatus == Conversation::RINGING_FOR_ME) - { - SEString data; - - /*Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::UNCONSUMED_NORMAL) - break;*/ - - /*message->GetPropAuthor(data); - ptrW sid = ::mir_utf8decodeW(data);*/ - - /*uint timestamp; - message->GetPropTimestamp(timestamp);*/ - - this->SendEvent( - *this->sys, - GC_EVENT_INFORMATION, - time(NULL), - GCEF_ADDTOLOG, - 0, - NULL, - ::TranslateT("Incoming group call started")); - } - } - break; - } -} - -void ChatRoom::OnParticipantChanged(const ParticipantRef &participant, int prop) -{ - if (prop == Participant::P_RANK) - { - Participant::RANK rank; - participant->GetPropRank(rank); - - SEString identity; - participant->GetPropIdentity(identity); - - ptrW sid(::mir_utf8decodeW(identity)); - ChatMember *member = this->FindChatMember(sid); - if (member != NULL) - this->UpdateMemberRole(member, rank); - } -} - -/// - -void CSkypeProto::ChatValidateContact(MCONTACT hItem, HWND hwndList, const StringList &contacts) -{ - if (this->IsProtoContact(hItem) && !this->isChatRoom(hItem)) - { - ptrW sid( ::db_get_wsa(hItem, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (sid == NULL || contacts.contains(sid)) - ::SendMessage(hwndList, CLM_DELETEITEM, (WPARAM)hItem, 0); - } - else - ::SendMessage(hwndList, CLM_DELETEITEM, (WPARAM)hItem, 0); -} - -void CSkypeProto::ChatPrepare(MCONTACT hItem, HWND hwndList, const StringList &contacts) -{ - if (hItem == NULL) - hItem = (MCONTACT)::SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_ROOT, 0); - - while (hItem) { - MCONTACT hItemN = (MCONTACT)::SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXT, (LPARAM)hItem); - - if (IsHContactGroup(hItem)) { - MCONTACT hItemT = (MCONTACT)::SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); - if (hItemT) - this->ChatPrepare(hItemT, hwndList, contacts); - } - else if (IsHContactContact(hItem)) - this->ChatValidateContact(hItem, hwndList, contacts); - - hItem = hItemN; - } -} - -void CSkypeProto::GetInvitedContacts(MCONTACT hItem, HWND hwndList, StringList &chatTargets) -{ - if (hItem == NULL) - hItem = (MCONTACT)::SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_ROOT, 0); - - while (hItem) { - if (IsHContactGroup(hItem)) { - MCONTACT hItemT = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); - if (hItemT) - this->GetInvitedContacts(hItemT, hwndList, chatTargets); - } - else { - int chk = SendMessage(hwndList, CLM_GETCHECKMARK, (WPARAM)hItem, 0); - if (chk) { - if (IsHContactInfo(hItem)) { - TCHAR buf[128] = _T(""); - SendMessage(hwndList, CLM_GETITEMTEXT, (WPARAM)hItem, (LPARAM)buf); - if (buf[0]) - chatTargets.insert(buf); - } - else { - ptrW login( ::db_get_wsa(hItem, this->m_szModuleName, SKYPE_SETTINGS_SID)); - chatTargets.insert(login); - } - } - } - hItem = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXT, (LPARAM)hItem); - } -} - -INT_PTR CALLBACK CSkypeProto::ChatRoomProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - ChatRoomParam *param = (ChatRoomParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - param = (ChatRoomParam *)lParam; - { - HWND hwndClist = GetDlgItem(hwndDlg, IDC_CCLIST); - SetWindowLongPtr(hwndClist, GWL_STYLE, GetWindowLongPtr(hwndClist, GWL_STYLE) & ~CLS_HIDEOFFLINE); - - if ( !param->ppro->IsOnline()) - { - ::EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - ::EnableWindow(GetDlgItem(hwndDlg, IDC_ADDSCR), FALSE); - ::EnableWindow(GetDlgItem(hwndDlg, IDC_CCLIST), FALSE); - } - - SendDlgItemMessage(hwndDlg, IDC_CHAT_JOINING, BM_SETCHECK, param->enableJoining, 0); - for (int i = 1; i < SIZEOF(ChatRoom::Roles) - 4; i++) { - int nItem = ::SendMessage(::GetDlgItem(hwndDlg, IDC_CHAT_ROLES), CB_ADDSTRING, 0, (LPARAM)::TranslateW(ChatRoom::Roles[i])); - - if (i == Participant::WRITER) - ::SendMessage(::GetDlgItem(hwndDlg, IDC_CHAT_ROLES), CB_SETCURSEL, nItem, 0); - } - - SendDlgItemMessage(hwndDlg, IDC_CHAT_SECURED, BM_SETCHECK, param->passwordProtection, 0); - } - break; - - case WM_CLOSE: - ::EndDialog(hwndDlg, 0); - break; - - case WM_NOTIFY: - { - NMCLISTCONTROL *nmc = (NMCLISTCONTROL *)lParam; - if (nmc->hdr.idFrom == IDC_CCLIST) { - switch (nmc->hdr.code) { - case CLN_NEWCONTACT: - if (param && (nmc->flags & (CLNF_ISGROUP | CLNF_ISINFO)) == 0) - param->ppro->ChatValidateContact((MCONTACT)nmc->hItem, nmc->hdr.hwndFrom, param->invitedContacts); - break; - - case CLN_LISTREBUILT: - if (param) - param->ppro->ChatPrepare(NULL, nmc->hdr.hwndFrom, param->invitedContacts); - break; - } - } - } - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_ADDSCR: - if (param->ppro->IsOnline()) - { - wchar_t sid[SKYPE_SID_LIMIT]; - ::GetDlgItemText(hwndDlg, IDC_EDITSCR, sid, SIZEOF(sid)); - - CLCINFOITEM cii = {0}; - cii.cbSize = sizeof(cii); - cii.flags = CLCIIF_CHECKBOX | CLCIIF_BELOWCONTACTS; - cii.pszText = ::wcslwr(sid); - - HANDLE hItem = (HANDLE)::SendDlgItemMessage(hwndDlg, IDC_CCLIST, CLM_ADDINFOITEM, 0, (LPARAM)&cii); - ::SendDlgItemMessage(hwndDlg, IDC_CCLIST, CLM_SETCHECKMARK, (LPARAM)hItem, 1); - } - break; - - case IDC_CHAT_SECURED: - { - BOOL enable = (BOOL)::IsDlgButtonChecked(hwndDlg, IDC_CHAT_SECURED); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_CHAT_PASSWORD), enable); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_CHAT_CONFIRMATION), enable); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_CHAT_HINT), enable); - } - break; - - case IDC_CHAT_PASSWORD: - case IDC_CHAT_CONFIRMATION: - { - wchar_t pwd[32], cfn[32]; - GetDlgItemText(hwndDlg, IDC_CHAT_PASSWORD, pwd, SIZEOF(pwd)); - GetDlgItemText(hwndDlg, IDC_CHAT_CONFIRMATION, cfn, SIZEOF(cfn)); - - BOOL secured = ::IsDlgButtonChecked(hwndDlg, IDC_CHAT_SECURED); - ::EnableWindow(::GetDlgItem(hwndDlg, IDOK), secured && ::wcscmp(pwd, cfn) == 0); - } - break; - - case IDOK: - { - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_CCLIST); - - param->invitedContacts.clear(); - param->ppro->GetInvitedContacts(NULL, hwndList, param->invitedContacts); - - if ( !param->invitedContacts.empty()) - { - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - ::EndDialog(hwndDlg, IDOK); - } - else - param->ppro->ShowNotification(::TranslateT("You did not select any contact")); - - GetDlgItemText(hwndDlg, IDC_CHAT_TOPIC, param->topic, SIZEOF(param->topic)); - GetDlgItemText(hwndDlg, IDC_CHAT_GUIDLINE, param->guidline, SIZEOF(param->guidline)); - - param->enableJoining = ::IsDlgButtonChecked(hwndDlg, IDC_CHAT_JOINING) != 0; - param->joinRank = ::SendMessage(::GetDlgItem(hwndDlg, IDC_CHAT_ROLES), CB_GETCURSEL, 0, 0) + 1; - - param->passwordProtection = ::IsDlgButtonChecked(hwndDlg, IDC_CHAT_SECURED) != 0; - if (param->passwordProtection) - { - GetDlgItemText(hwndDlg, IDC_CHAT_PASSWORD, param->password, SIZEOF(param->password)); - GetDlgItemText(hwndDlg, IDC_CHAT_CONFIRMATION, param->confirmation, SIZEOF(param->confirmation)); - GetDlgItemText(hwndDlg, IDC_CHAT_HINT, param->hint, SIZEOF(param->hint)); - } - } - break; - - case IDCANCEL: - ::EndDialog(hwndDlg, IDCANCEL); - break; - } - break; - } - return FALSE; -} - -INT_PTR CSkypeProto::CreateChatRoomCommand(WPARAM, LPARAM) -{ - ChatRoomParam *param = new ChatRoomParam(NULL, NULL, this); - - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_CREATE), NULL, CSkypeProto::ChatRoomProc, (LPARAM)param) == IDOK && param->invitedContacts.size() > 0) - ChatRoom::Create(param, this); - - delete param; - - return 0; -} - -void CSkypeProto::ChatRoomInvite(MCONTACT hContact) -{ - ptrT chat_id(::db_get_tsa(hContact, this->m_szModuleName, "ChatRoomID")); - - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYID | GCF_USERS | GCF_DATA; - gci.pszModule = this->m_szModuleName; - gci.pszID = chat_id; - if ( !::CallService(MS_GC_GETINFO, 0, (LPARAM)&gci)) { - ChatRoom *room = (ChatRoom *)gci.dwItemData; - if (room != NULL && gci.pszUsers != NULL) { - StringList invitedContacts(_A2T(gci.pszUsers)); - ChatRoomParam *param = new ChatRoomParam(NULL, invitedContacts, this); - - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), NULL, CSkypeProto::ChatRoomProc, (LPARAM)param) == IDOK && param->invitedContacts.size() > 0) - room->Invite(param->invitedContacts); - - delete param; - } - } -} - -void CSkypeProto::CloseAllChatSessions() -{ - GC_INFO gci = {0}; - gci.Flags = GCF_BYINDEX | GCF_ID | GCF_DATA; - gci.pszModule = this->m_szModuleName; - - int count = ::CallServiceSync(MS_GC_GETSESSIONCOUNT, 0, (LPARAM)this->m_szModuleName); - for (int i = 0; i < count ; i++) - { - gci.iItem = i; - if ( !::CallServiceSync(MS_GC_GETINFO, 0, (LPARAM)&gci)) - { - GCDEST gcd = { this->m_szModuleName, gci.pszID, GC_EVENT_CONTROL }; - GCEVENT gce = { sizeof(gce), &gcd }; - ::CallServiceSync(MS_GC_EVENT, SESSION_OFFLINE, (LPARAM)&gce); - ::CallServiceSync(MS_GC_EVENT, SESSION_TERMINATE, (LPARAM)&gce); - } - } -} - -ChatRoom *CSkypeProto::FindChatRoom(const wchar_t *cid) -{ - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYID | GCF_DATA; - gci.pszModule = this->m_szModuleName; - gci.pszID = (wchar_t*)cid; - - if ( !::CallServiceSync(MS_GC_GETINFO, 0, (LPARAM)&gci)) - return (ChatRoom *)gci.dwItemData; - - return NULL; -} - -int __cdecl CSkypeProto::OnGCEventHook(WPARAM, LPARAM lParam) -{ - GCHOOK *gch = (GCHOOK *)lParam; - if (!gch) return 1; - - if (::strcmp(gch->pDest->pszModule, this->m_szModuleName) != 0) - return 0; - - ChatRoom *room = this->FindChatRoom(gch->pDest->ptszID); - if (room == NULL) - return 0; - - switch (gch->pDest->iType) - { - case GC_USER_MESSAGE: - if (gch->ptszText && gch->ptszText[0]) - room->SendMessage(gch->ptszText); - break; - - /*case GC_USER_CHANMGR: - if (this->GetConversationByIdentity(::mir_utf8encodeW(cid), conversation, false)) - { - StringList invitedContacts(this->GetChatUsers(cid)); - this->InviteConactsToChat(conversation, invitedContacts); - } - break;*/ - - case GC_USER_PRIVMESS: - ::CallService(MS_MSG_SENDMESSAGE, (WPARAM)this->GetContactBySid(gch->ptszUID), 0); - break; - - case GC_USER_LOGMENU: - case GC_USER_NICKLISTMENU: - switch (gch->dwData) - { - case CHAT_LIST_MENU::ICM_ROLE_ADMIN: - case CHAT_LIST_MENU::ICM_ROLE_SPEAKER: - case CHAT_LIST_MENU::ICM_ROLE_WRITER: - case CHAT_LIST_MENU::ICM_ROLE_SPECTATOR: - { - ChatMember *member = room->FindChatMember(gch->ptszUID); - if (member != NULL) - { - Participant::RANK rank; - switch (gch->dwData) - { - case CHAT_LIST_MENU::ICM_ROLE_ADMIN: - rank = Participant::ADMIN; - break; - - case CHAT_LIST_MENU::ICM_ROLE_SPEAKER: - rank = Participant::SPEAKER; - break; - - case CHAT_LIST_MENU::ICM_ROLE_WRITER: - rank = Participant::WRITER; - break; - - case CHAT_LIST_MENU::ICM_ROLE_SPECTATOR: - rank = Participant::SPECTATOR; - break; - } - if (member->participant && member->participant->SetRankTo(rank)) - room->UpdateMemberRole(member, rank, *room->me); - } - } - break; - - case CHAT_LIST_MENU::ICM_ADD: - { - ChatMember *member = room->FindChatMember(gch->ptszUID); - if (member != NULL) - room->AddApplicant(member); - } - break; - - case CHAT_LIST_MENU::ICM_KICK: - { - ChatMember *member = room->FindChatMember(gch->ptszUID); - if (member != NULL) - { - if (member->participant && member->participant->Retire()) - room->KickMember(gch->ptszUID, room->me->GetSid()); - } - } - break; - - case CHAT_LIST_MENU::ICM_BAN: - { - ChatMember *member = room->FindChatMember(gch->ptszUID); - if (member != NULL && member->participant) - { - member->participant->SetRankTo(Participant::OUTLAW); - if (member->participant->Retire()) - room->KickMember(gch->ptszUID, room->me->GetSid()); - } - } - break; - - case CHAT_LIST_MENU::ICM_CONF_INVITE: - { - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYID | GCF_USERS; - gci.pszModule = this->m_szModuleName; - gci.pszID = gch->pDest->ptszID; - if ( !::CallService(MS_GC_GETINFO, 0, (LPARAM)&gci) && gci.pszUsers != NULL) - { - StringList invitedContacts(_A2T(gci.pszUsers)); - ChatRoomParam *param = new ChatRoomParam(NULL, invitedContacts, this); - - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), NULL, CSkypeProto::ChatRoomProc, (LPARAM)param) == IDOK && param->invitedContacts.size() > 0) - room->Invite(param->invitedContacts); - - delete param; - } - } - break; - - case CHAT_LIST_MENU::ICM_AUTH_REQUEST: - { - CContact::Ref contact; - SEString sid((char *)ptrA(::mir_utf8encodeW(gch->ptszUID))); - if (this->GetContact(sid, contact)) - { - this->AuthRequest( - this->AddContact(contact), - LPGENT("Hi! I'd like to add you to my contact list")); - } - } - break; - - case CHAT_LIST_MENU::ICM_DETAILS: - ::CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)this->GetContactBySid(gch->ptszUID), 0); - break; - - case CHAT_LIST_MENU::ICM_COPY_SID: - { - MCONTACT hContact = this->GetContactBySid(gch->ptszUID); - if (!hContact) - { - ptrW sid( ::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (sid != NULL) - CSkypeProto::CopyToClipboard(sid); - } - } - break; - - case CHAT_LIST_MENU::ICM_COPY_URI: - CSkypeProto::CopyToClipboard(ptrW(room->GetUri())); - break; - } - break; - - //case GC_USER_TYPNOTIFY: - //break; - } - return 0; -} - -int __cdecl CSkypeProto::OnGCMenuHook(WPARAM, LPARAM lParam) -{ - GCMENUITEMS *gcmi = (GCMENUITEMS*) lParam; - - if (::stricmp(gcmi->pszModule, this->m_szModuleName) != 0) - return 0; - - ChatRoom *room = this->FindChatRoom(gcmi->pszID); - if (room == NULL) - return 0; - - ResetChatMenuItem(); - - if (room->me->GetRank() > Participant::ADMIN || room->me->GetRank() == 0) - { - DisableChatMenuItem(ICM_ROLE); - DisableChatMenuItem(ICM_ADD); - DisableChatMenuItem(ICM_KICK); - DisableChatMenuItem(ICM_BAN); - } - - //todo: add other case - if (room->me->GetRank() >= Participant::APPLICANT) - { - DisableChatMenuItem(ICM_CONF_INVITE); - } - - ChatMember *member = room->FindChatMember(gcmi->pszUID); - if (member != NULL) - { - if (member->GetRank() == Participant::CREATOR) - { - DisableChatMenuItem(ICM_ROLE); - DisableChatMenuItem(ICM_ADD); - DisableChatMenuItem(ICM_KICK); - DisableChatMenuItem(ICM_BAN); - } - - if (member->GetRank() <= Participant::SPECTATOR) - { - CHAT_LIST_MENU type = (CHAT_LIST_MENU)(ICM_ROLE + member->GetRank() - 1); - CheckChatMenuItem(type); - DisableChatMenuItem(type); - - DisableChatMenuItem(ICM_ADD); - } - - if (member->GetRank() > Participant::SPECTATOR) - DisableChatMenuItem(ICM_ROLE); - - MCONTACT hContact = this->GetContactBySid(gcmi->pszUID); - if (hContact == NULL) - DisableChatMenuItem(ICM_DETAILS); - else if(this->getByte(hContact, "Auth", 0) == 0) - DisableChatMenuItem(ICM_AUTH_REQUEST); - } - else - { - DisableChatMenuItem(ICM_DETAILS); - DisableChatMenuItem(ICM_AUTH_REQUEST); - DisableChatMenuItem(ICM_ROLE); - DisableChatMenuItem(ICM_ADD); - DisableChatMenuItem(ICM_KICK); - DisableChatMenuItem(ICM_BAN); - DisableChatMenuItem(ICM_COPY_SID); - } - - gcmi->nItems = SIZEOF(crListItems); - gcmi->Item = crListItems; - - return 0; -} - -void CSkypeProto::UpdateChatUserStatus(const ContactRef &contact) -{ - CContact::AVAILABILITY availability; - contact->GetPropAvailability(availability); - - SEString identity; - contact->GetIdentity(identity); - ptrW sid(::mir_utf8decodeW(identity)); - - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYINDEX | GCF_DATA; - gci.pszModule = this->m_szModuleName; - - int count = ::CallServiceSync(MS_GC_GETSESSIONCOUNT, 0, (LPARAM)this->m_szModuleName); - for (int i = 0; i < count ; i++) - { - gci.iItem = i; - ::CallServiceSync(MS_GC_GETINFO, 0, (LPARAM)&gci); - - ChatRoom *room = (ChatRoom *)gci.dwItemData; - if (room != NULL) - { - ChatMember *member = room->FindChatMember(sid); - if (member != NULL) - room->UpdateMemberStatus(member, CSkypeProto::SkypeToMirandaStatus(availability)); - } - } -} - -void CSkypeProto::UpdateChatUserNick(const ContactRef &contact) -{ - SEString data; - - contact->GetIdentity(data); - ptrW sid(::mir_utf8decodeW(data)); - - ptrW nick(::mir_utf8decodeW(((CContact::Ref)contact)->GetNick())); - - GC_INFO gci = { 0 }; - gci.Flags = GCF_BYINDEX | GCF_DATA; - gci.pszModule = this->m_szModuleName; - - int count = ::CallServiceSync(MS_GC_GETSESSIONCOUNT, 0, (LPARAM)this->m_szModuleName); - for (int i = 0; i < count ; i++) - { - gci.iItem = i; - ::CallServiceSync(MS_GC_GETINFO, 0, (LPARAM)&gci); - - ChatRoom *room = (ChatRoom *)gci.dwItemData; - if (room != NULL) - { - ChatMember *member = room->FindChatMember(sid); - if (member != NULL) - room->UpdateMemberNick(member, nick); - } - } -} - -INT_PTR __cdecl CSkypeProto::OnJoinChat(WPARAM wParam, LPARAM) -{ - MCONTACT hContact = (MCONTACT)wParam; - if (hContact) - { - ptrW cid(::db_get_wsa(hContact, this->m_szModuleName, "ChatRoomID")); - - ChatRoom *room = this->FindChatRoom(cid); - if ( !room) - { - ConversationRef conversation; - if (this->GetConversationByIdentity( - (char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)), - conversation)) - { - SEString data; - conversation->GetJoinBlob(data); - ptrW joinBlob(::mir_utf8decodeW(data)); - ChatRoom::Join(joinBlob, this); - } - } - else - room->ShowWindow(); - } - - return 0; -} - -INT_PTR __cdecl CSkypeProto::OnLeaveChat(WPARAM wParam, LPARAM) -{ - MCONTACT hContact = (MCONTACT)wParam; - if (hContact) { - ptrW cid(::db_get_wsa(hContact, this->m_szModuleName, "ChatRoomID")); - - ChatRoom *room = this->FindChatRoom(cid); - if (room != NULL) - room->LeaveChat(); - } - - return 0; -} - -/// - -void __cdecl CSkypeProto::LoadChatList(void*) -{ - this->debugLogW(L"Updating group chats list"); - CConversation::Refs conversations; - this->GetConversationList(conversations); - - SEString data; - for (uint i = 0; i < conversations.size(); i++) - { - auto conversation = conversations[i]; - - uint convoType = conversation->GetUintProp(Conversation::P_TYPE); - if (convoType == CConversation::CONFERENCE) - { - CConversation::MY_STATUS status; - conversation->GetPropMyStatus(status); - if (status == Conversation::APPLICANT || status == Conversation::CONSUMER ) - { - conversation->GetPropIdentity(data); - ptrW cid( ::mir_utf8decodeW(data)); - CSkypeProto::ReplaceSpecialChars(cid); - - conversation->GetPropDisplayname(data); - ptrW name( ::mir_utf8decodeW(data)); - - ChatRoom *room = new ChatRoom(cid, name, this); - chatRooms.insert(room); - room->Start(conversation); - } - } - } -} - -/// - -void CSkypeProto::OnChatEvent(const ConversationRef &conversation, const MessageRef &message) -{ - uint messageType; - messageType = message->GetUintProp(Message::P_TYPE); - - SEString data; - conversation->GetPropIdentity(data); - ptrW cid( ::mir_utf8decodeW(data)); - CSkypeProto::ReplaceSpecialChars(cid); - - ChatRoom *room = this->FindChatRoom(cid); - if (room != NULL) - { - room->OnEvent(conversation, message); - } - else - { - Conversation::MY_STATUS status; - conversation->GetPropMyStatus(status); - if (status != Conversation::RETIRED_FORCEFULLY || status != Conversation::RETIRED_FORCEFULLY) - { - SEString data; - - conversation->GetPropDisplayname(data); - ptrW name( ::mir_utf8decodeW(data)); - - ChatRoom *room = new ChatRoom(cid, name, this); - chatRooms.insert(room); - room->Start(conversation, true); - } - } -} - -void CSkypeProto::OnConversationListChange( - const ConversationRef& conversation, - const Conversation::LIST_TYPE& type, - const bool& added) -{ - uint convoType = conversation->GetUintProp(Conversation::P_TYPE); - if (convoType == Conversation::CONFERENCE && type == Conversation::INBOX_CONVERSATIONS && added) - { - SEString data; - - conversation->GetPropIdentity(data); - ptrW cid( ::mir_utf8decodeW(data)); - CSkypeProto::ReplaceSpecialChars(cid); - - if ( !this->FindChatRoom(cid)) - { - conversation->GetPropDisplayname(data); - ptrW name( ::mir_utf8decodeW(data)); - - ChatRoom *room = new ChatRoom(cid, name, this); - chatRooms.insert(room); - room->Start(conversation, true); - } - } -} - -void CSkypeProto::ChatRoomParseUriComands(const wchar_t *commands) -{ -} - -static void appendString(bool bIsTipper, const TCHAR *tszTitle, const TCHAR *tszValue, TCHAR* buf, size_t bufSize) -{ - if (*buf) { - const TCHAR *szSeparator = bIsTipper ? _T("\n") : _T("\r\n"); - _tcsncat(buf, szSeparator, bufSize); - } - - size_t len = _tcslen(buf); - buf += len; - bufSize -= len; - - if (bIsTipper) - mir_sntprintf(buf, bufSize, _T("%s%s%s%s"), _T(""), TranslateTS(tszTitle), _T("\t"), tszValue); - else { - TCHAR* p = TranslateTS(tszTitle); - mir_sntprintf(buf, bufSize, _T("%s%s\t%s"), p, _tcslen(p)<=7 ? _T("\t") : _T(""), tszValue); - } -} - -INT_PTR __cdecl CSkypeProto::SkypeGCGetToolTipText(WPARAM wParam, LPARAM lParam) -{ - if ( !wParam || !lParam) - return 0; //room global tooltip not supported yet - - ChatRoom *room = this->FindChatRoom((TCHAR *)wParam); - if (room == NULL) - return 0; //no room found - - ChatMember *member = room->FindChatMember((TCHAR *)lParam); - if (member == NULL) - return 0; //no contact found - - // ok process info output will be: - // Skype name: sid - // Nick: Nickname - // Status: StatusText - // Role: Moderator - - TCHAR outBuf[2048]; - outBuf[0]=_T('\0'); - - bool bIsTipper = db_get_b(NULL, "Tab_SRMsg", "adv_TipperTooltip", 0) && ServiceExists("mToolTip/HideTip"); - - //sid - appendString(bIsTipper, _T("Skype name:"), member->GetSid(), outBuf, SIZEOF(outBuf)); - //nick - appendString(bIsTipper, _T("Nick:"), member->GetNick(), outBuf, SIZEOF(outBuf)); - //status - appendString(bIsTipper, _T("Status:"), (TCHAR *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION,(WPARAM)member->GetStatus(),GSMDF_TCHAR), outBuf, SIZEOF(outBuf)); - //role - appendString(bIsTipper, _T("Role:"), ::TranslateW(ChatRoom::Roles[member->GetRank()]), outBuf, SIZEOF(outBuf)); - - return (INT_PTR)(outBuf[0] == 0 ? NULL : mir_tstrdup(outBuf)); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_chat.h b/plugins/!Deprecated/Skype/src/skype_chat.h deleted file mode 100644 index d63d7c9da2..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_chat.h +++ /dev/null @@ -1,204 +0,0 @@ -#pragma once - -#include "skype.h" -#include - -class ChatMember -{ -private: - wchar_t *sid; - wchar_t *nick; - int rank; - WORD status; - -public: - CParticipant::Ref participant; - - ChatMember() - { - this->sid = NULL; - this->nick = NULL; - } - - ChatMember(const wchar_t *sid) - { - this->sid = ::mir_wstrdup(sid); - this->nick = NULL; - } - - ChatMember(const ChatMember &other) - { - this->sid = NULL; - this->nick = NULL; - this->operator=(other); - } - - ~ChatMember() - { - if (this->sid != NULL) - ::mir_free(this->sid); - if (this->nick != NULL) - ::mir_free(this->nick); - } - - void SetNick(const wchar_t *nick) - { - if (this->nick != NULL) - ::mir_free(this->nick); - this->nick = ::mir_wstrdup(nick); - } - - wchar_t *GetSid() const - { - return this->sid; - } - - wchar_t *GetNick() const - { - if (this->nick == NULL) - return this->sid; - - return this->nick; - } - - void SetRank(int rank) - { - this->rank = rank; - } - - int GetRank() const - { - return this->rank; - } - - void SetStatus(int status) - { - this->status = status; - } - - int GetStatus() const - { - return this->status; - } - - void SetPaticipant(const ParticipantRef &participant) - { - this->participant = participant; - } - - static int Compare(const ChatMember *p1, const ChatMember *p2) - { - return ::lstrcmpi(p1->sid, p2->sid); - } - - bool operator==(const ChatMember &other) const - { - return ::lstrcmp(this->sid, other.sid) == 0; - } - - bool operator!=(const ChatMember &other) const - { - return !(*this == other); - } - - ChatMember& operator=(const ChatMember &other) - { - if (this == &other) - return *this; - - if (this->sid != NULL) - ::mir_free(this->sid); - this->sid = ::mir_wstrdup(other.sid); - - if (this->nick != NULL) - ::mir_free(this->nick); - this->nick = ::mir_wstrdup(other.nick); - - this->rank = other.rank; - this->status = other.status; - this->participant = other.participant; - return *this; - } -}; - -class ChatRoom -{ -private: - wchar_t *cid; - wchar_t *name; - - CConversation::Ref conversation; - - MCONTACT hContact; - - OBJLIST members; - - CSkypeProto *ppro; - - ChatRoom(const wchar_t *cid); - - inline static int CompareMembers(const ChatMember *p1, const ChatMember *p2) { return ChatMember::Compare(p1, p2); } - - void CreateChatSession(bool showWindow = false); - - bool IsMe(const ChatMember &item) const; - bool IsSys(const ChatMember &item) const; - void SendEvent(const ChatMember &item, int eventType, DWORD timestamp = time(NULL), DWORD flags = GCEF_ADDTOLOG, DWORD itemData = 0, const wchar_t *status = NULL, const wchar_t *message = NULL); - - void UpdateMember(const ChatMember &item, DWORD timestamp = time(NULL)); - void KickMember(const ChatMember &item, const ChatMember *author, DWORD timestamp = time(NULL)); - void RemoveMember(const ChatMember &item, DWORD timestamp = time(NULL)); - -public: - ChatMember *me; - ChatMember *sys; - - static wchar_t *Roles[]; - - ChatRoom(const wchar_t *cid, const wchar_t *name, CSkypeProto *ppro); - ~ChatRoom(); - - MCONTACT GetContactHandle() const; - - void SetTopic(const wchar_t *topic); - wchar_t *GetUri(); - void ShowWindow(); - - void Invite(const StringList &contacts); - void Start(const ConversationRef &conversation, bool showWindow = false); - //void Join(const wchar_t *joinBlob, bool showWindow = false); - - void SendMessage(const wchar_t *text); - - void LeaveChat(); - void LeaveChatAndDelete(); - - void SendEvent(const wchar_t *sid, int eventType, DWORD timestamp = time(NULL), DWORD flags = GCEF_ADDTOLOG, DWORD itemData = 0, const wchar_t *status = NULL, const wchar_t *message = NULL); - - bool IsMe(const wchar_t *sid) const; - bool IsSys(const wchar_t *sid) const; - - ChatMember *FindChatMember(const wchar_t *sid); - - void AddMember(const ChatMember &item, const ChatMember &author, DWORD timestamp = time(NULL)); - - void UpdateMemberNick(ChatMember *member, const wchar_t *nick, DWORD timestamp = time(NULL)); - void UpdateMemberRole(ChatMember *member, int role, const ChatMember &author = NULL, DWORD timestamp = time(NULL)); - void UpdateMemberStatus(ChatMember *member, int status, DWORD timestamp = time(NULL)); - - void UpdateMember(const wchar_t *sid, const wchar_t *nick, int role, int status, DWORD timestamp = time(NULL)); - - //void GiveMember(const wchar_t *sid); - void AddApplicant(const ChatMember *sid); - - void KickMember(const wchar_t *sid, const wchar_t *author, DWORD timestamp = time(NULL)); - void RemoveMember(const wchar_t *sid, DWORD timestamp = time(NULL)); - - void OnEvent(const ConversationRef &conversation, const MessageRef &message); - void OnChange(const ConversationRef &conversation, int prop); - - void OnParticipantChanged(const ParticipantRef &participant, int prop); - - static void Create(const ChatRoomParam *param, CSkypeProto *ppro); - static void Join(const wchar_t *joinBlob, CSkypeProto *ppro); -}; diff --git a/plugins/!Deprecated/Skype/src/skype_contacts.cpp b/plugins/!Deprecated/Skype/src/skype_contacts.cpp deleted file mode 100644 index 0561db0e04..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_contacts.cpp +++ /dev/null @@ -1,538 +0,0 @@ -#include "skype.h" - -void CSkypeProto::UpdateContactAuthState(MCONTACT hContact, const ContactRef &contact) -{ - uint newTS = 0; - contact->GetPropAuthreqTimestamp(newTS); - DWORD oldTS = this->getDword("AuthTS", 0); - if (newTS > oldTS) - { - bool result; - if (contact->HasAuthorizedMe(result) && !result) - this->setByte(hContact, "Auth", !result); - else - { - this->delSetting(hContact, "Auth"); - if (contact->IsMemberOfHardwiredGroup(CContactGroup::ALL_BUDDIES, result) && !result) - this->setByte(hContact, "Grant", !result); - else - this->delSetting(hContact, "Grant"); - } - - this->setDword(hContact, "AuthTS", newTS); - } -} - -void CSkypeProto::UpdateContactStatus(MCONTACT hContact, const ContactRef &contact) -{ - Contact::AVAILABILITY availability; - contact->GetPropAvailability(availability); - this->setWord(hContact, SKYPE_SETTINGS_STATUS, CSkypeProto::SkypeToMirandaStatus(availability)); - - if (availability == Contact::SKYPEOUT) - this->setWord(hContact, SKYPE_SETTINGS_STATUS, ID_STATUS_ONTHEPHONE); - else - { - if (availability == Contact::PENDINGAUTH) - this->setByte(hContact, "Auth", 1); - else - this->delSetting(hContact, "Auth"); - } -} - -void CSkypeProto::UpdateContactClient(MCONTACT hContact, const ContactRef &contact) -{ - bool isMobile = false; - contact->HasCapability(Contact::CAPABILITY_MOBILE_DEVICE, isMobile/*, true*/); - - this->setTString(hContact, "MirVer", isMobile ? L"SkypeMobile" : L"Skype"); -} - -void CSkypeProto::UpdateContactOnlineSinceTime(MCONTACT hContact, const ContactRef &contact) -{ - uint newTS = 0; - contact->GetPropLastonlineTimestamp(newTS); - DWORD oldTS = ::db_get_dw(hContact, this->m_szModuleName, "OnlineSinceTS", 0); - if (newTS > oldTS) - this->setDword(hContact, "OnlineSinceTS", newTS); -} - -void CSkypeProto::UpdateContactLastEventDate(MCONTACT hContact, const ContactRef &contact) -{ - uint newTS = 0; - contact->GetPropLastusedTimestamp(newTS); - DWORD oldTS = this->getDword(hContact, "LastEventDateTS", 0); - if (newTS > oldTS) - this->setDword(hContact, "LastEventDateTS", newTS); -} - -void CSkypeProto::OnContactChanged(const ContactRef &contact, int prop) -{ - SEString data; - contact->GetPropSkypename(data); - wchar_t *sid = ::mir_utf8decodeW(data); - MCONTACT hContact = this->GetContactBySid(sid); - ::mir_free(sid); - - SEObject *contactObj = contact.fetch(); - - if (hContact) - { - switch(prop) - { - case Contact::P_AUTHREQ_TIMESTAMP: - { - uint newTS = 0; - contact->GetPropAuthreqTimestamp(newTS); - DWORD oldTS = this->getDword(hContact, "AuthTS", 0); - if (newTS > oldTS) - this->RaiseAuthRequestEvent(newTS, contact); - } - break; - - case Contact::P_AUTHREQUEST_COUNT: - // todo: all authrequests after first should be catch here - this->UpdateContactAuthState(hContact, contact); - break; - - case Contact::P_AVAILABILITY: - this->UpdateContactStatus(hContact, contact); - this->UpdateChatUserStatus(contact); - break; - - //case CContact::P_AVATAR_IMAGE: - case Contact::P_AVATAR_TIMESTAMP: - this->UpdateProfileAvatar(contactObj, hContact); - break; - - //case CContact::P_MOOD_TEXT: - case Contact::P_MOOD_TIMESTAMP: - this->UpdateProfileStatusMessage(contactObj, hContact); - break; - - case Contact::P_FULLNAME: - this->UpdateChatUserNick(contact); - break; - - case Contact::P_PROFILE_TIMESTAMP: - this->UpdateProfile(contactObj, hContact); - break; - } - } -} - -void CSkypeProto::OnContactListChanged(const ContactRef &contact) -{ - bool result; - - contact->IsMemberOfHardwiredGroup(CContactGroup::ALL_BUDDIES, result); - if (result) - { - if ( !this->contactList.contains(contact)) - { - CContact::Ref newContact(contact); - this->contactList.append(newContact); - newContact.fetch(); - } - } - - contact->IsMemberOfHardwiredGroup(CContactGroup::CONTACTS_WAITING_MY_AUTHORIZATION, result); - if (result) - { - SEString data; - - uint newTS = 0; - contact->GetPropAuthreqTimestamp(newTS); - - this->RaiseAuthRequestEvent(newTS, contact); - } -} - -bool CSkypeProto::IsProtoContact(MCONTACT hContact) -{ - return ::lstrcmpiA(::GetContactProto(hContact), this->m_szModuleName) == 0; -} - -MCONTACT CSkypeProto::GetContactBySid(const wchar_t *sid) -{ - MCONTACT hContact = NULL; - - ::EnterCriticalSection(&this->contact_search_lock); - - for (hContact = ::db_find_first(this->m_szModuleName); hContact; hContact = ::db_find_next(hContact, this->m_szModuleName)) - { - ptrW contactSid(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (::lstrcmpi(contactSid, sid) == 0) - break; - } - - ::LeaveCriticalSection(&this->contact_search_lock); - - return hContact; -} - -MCONTACT CSkypeProto::GetContactFromAuthEvent(HANDLE hEvent) -{ - // db_event_getContact - DWORD body[3]; - DBEVENTINFO dbei = { sizeof(DBEVENTINFO) }; - dbei.cbBlob = sizeof(DWORD) * 2; - dbei.pBlob = (PBYTE)&body; - - if (::db_event_get(hEvent, &dbei)) - return INVALID_CONTACT_ID; - - if (dbei.eventType != EVENTTYPE_AUTHREQUEST) - return INVALID_CONTACT_ID; - - if (strcmp(dbei.szModule, this->m_szModuleName) != 0) - return INVALID_CONTACT_ID; - - return ::DbGetAuthEventContact(&dbei); -} - -MCONTACT CSkypeProto::AddContact(CContact::Ref contact, bool isTemporary) -{ - ptrW sid(::mir_utf8decodeW(contact->GetSid())); - - CContact::AVAILABILITY availability; - contact->GetPropAvailability(availability); - - MCONTACT hContact = this->GetContactBySid(sid); - if ( !hContact) - { - hContact = (MCONTACT)::CallService(MS_DB_CONTACT_ADD, 0, 0); - ::CallService(MS_PROTO_ADDTOCONTACT, hContact, (LPARAM)this->m_szModuleName); - - ptrW nick(::mir_utf8decodeW(contact->GetNick())); - - switch(availability) { - case CContact::SKYPEOUT: - this->setByte(hContact, "IsSkypeOut", 1); - break; - - case CContact::PENDINGAUTH: - ::db_set_b(hContact, "CList", "NotOnList", 1); - break; - - case CContact::BLOCKED: - case CContact::BLOCKED_SKYPEOUT: - ::db_set_b(hContact, "CList", "Hidden", 1); - break; - - default: - this->delSetting(hContact, "IsSkypeOut"); - ::db_unset(hContact, "CList", "Hidden"); - ::db_unset(hContact, "CList", "NotOnList"); - } - - this->setTString(hContact, SKYPE_SETTINGS_SID, sid); - this->setTString(hContact, "Nick", nick); - - DBVARIANT dbv; - if ( !this->getTString(SKYPE_SETTINGS_DEF_GROUP, &dbv)) - { - ::db_set_ts(hContact, "CList", "Group", dbv.ptszVal); - ::db_free(&dbv); - } - } - - return hContact; -} - -void __cdecl CSkypeProto::LoadContactList(void* data) -{ - this->debugLogW(L"Updating contacts list"); - - bool isFirstLoad = data != NULL; - - this->GetHardwiredContactGroup(CContactGroup::ALL_BUDDIES, this->commonList); - this->commonList.fetch(); - - this->commonList->GetContacts(this->contactList); - fetch(this->contactList); - for (uint i = 0; i < this->contactList.size(); i++) - { - CContact::Ref contact = this->contactList[i]; - - MCONTACT hContact = this->AddContact(contact); - - if ( !isFirstLoad) - { - // todo: move to AddContact? - this->UpdateContactAuthState(hContact, contact); - this->UpdateContactStatus(hContact, contact); - - ptrW nick( ::db_get_wsa(hContact, "CList", "MyHandle")); - if ( !nick || !::wcslen(nick)) - { - nick = ::mir_utf8decodeW(contact->GetNick()); - ::db_set_ws(hContact, "CList", "MyHandle", nick); - } - - this->UpdateProfile(contact.fetch(), hContact); - } - } -} - -void __cdecl CSkypeProto::LoadAuthWaitList(void*) -{ - CContact::Refs authContacts; - this->GetHardwiredContactGroup(CContactGroup::CONTACTS_WAITING_MY_AUTHORIZATION, this->authWaitList); - this->authWaitList.fetch(); - - this->authWaitList->GetContacts(authContacts); - for (uint i = 0; i < authContacts.size(); i++) - { - CContact::Ref contact = authContacts[i]; - - uint newTS = 0; - contact->GetPropAuthreqTimestamp(newTS); - - this->RaiseAuthRequestEvent(newTS, contact); - } -} - -bool CSkypeProto::IsContactOnline(MCONTACT hContact) -{ - return this->getWord(hContact, SKYPE_SETTINGS_STATUS, ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE; -} - -void CSkypeProto::SetAllContactStatus(int status) -{ - ::EnterCriticalSection(&this->contact_search_lock); - - for (MCONTACT hContact = ::db_find_first(this->m_szModuleName); hContact; hContact = ::db_find_next(hContact, this->m_szModuleName)) - { - if (this->getByte(hContact, "IsSkypeOut", 0) != 0) - continue; - if (this->isChatRoom(hContact)) - continue; - if (this->IsContactOnline(hContact)) - ::db_set_w(hContact, this->m_szModuleName, SKYPE_SETTINGS_STATUS, status); - } - - ::LeaveCriticalSection(&this->contact_search_lock); -} - -void CSkypeProto::OnSearchCompleted(HANDLE hSearch) -{ - this->SendBroadcast(ACKTYPE_SEARCH, ACKRESULT_SUCCESS, hSearch, 0); -} - -void CSkypeProto::OnContactFinded(CContact::Ref contact, HANDLE hSearch) -{ - PROTOSEARCHRESULT psr = {0}; - psr.cbSize = sizeof(psr); - psr.flags = PSR_TCHAR; - - SEString data; - contact->GetPropSkypename(data); - psr.id = ::mir_utf8decodeW(data); - contact->GetPropDisplayname(data); - psr.nick = ::mir_utf8decodeW(data); - - SEString firstName, lastName; - contact->GetFullname(firstName, lastName); - psr.firstName = ::mir_utf8decodeW(firstName); - psr.lastName = ::mir_utf8decodeW(lastName); - - { - contact->GetPropEmails(data); - mir_ptr emails( ::mir_utf8decodeW(data)); - - wchar_t* main = ::wcstok(emails, L" "); - if (main != NULL) - { - psr.email = main; - } - } - - this->SendBroadcast(ACKTYPE_SEARCH, ACKRESULT_DATA, hSearch, (LPARAM)&psr); -} - -void __cdecl CSkypeProto::SearchBySidAsync(void* arg) -{ - mir_ptr sid((wchar_t*)arg); - - MCONTACT hContact = this->GetContactBySid(sid); - if (hContact) - { - this->ShowNotification(TranslateT("Contact already in your contact list"), 0, hContact); - this->SendBroadcast(ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)SKYPE_SEARCH_BYSID, 0); - return; - } - - CContactSearch::Ref search; - this->CreateIdentitySearch(::mir_u2a(sid), search); - search.fetch(); - search->SetProtoInfo((HANDLE)SKYPE_SEARCH_BYSID); - - bool valid; - if (!search->IsValid(valid) || !valid || !search->Submit()) - return; - - search->BlockWhileSearch(); - search->Release(); -} - -void __cdecl CSkypeProto::SearchByEmailAsync(void* arg) -{ - mir_ptr email((wchar_t *)arg); - - CContactSearch::Ref search; - this->CreateContactSearch(search); - search.fetch(); - search->SetProtoInfo((HANDLE)SKYPE_SEARCH_BYEMAIL); - - bool valid; - if (!search->AddEmailTerm(::mir_u2a(email), valid) || !valid || !search->Submit()) - return; - - search->BlockWhileSearch(); - search->Release(); -} - -void __cdecl CSkypeProto::SearchByNamesAsync(void* arg) -{ - //todo: write me - PROTOSEARCHRESULT *psr = (PROTOSEARCHRESULT *)arg; - - std::string nick = ::mir_utf8encodeW(psr->nick); - std::string fName = ::mir_utf8encodeW(psr->firstName); - std::string lName = " "; lName += ::mir_utf8encodeW(psr->lastName); - - CContactSearch::Ref search; - this->CreateContactSearch(search); - search.fetch(); - search->SetProtoInfo((HANDLE)SKYPE_SEARCH_BYNAMES); - - bool valid; - if (nick.length() != 0) - { - search->AddStrTerm( - Contact::P_FULLNAME, - CContactSearch::CONTAINS_WORD_PREFIXES, - nick.c_str(), - valid, - true); - } - if (fName.length() != 0) - { - search->AddOr(); - search->AddStrTerm( - Contact::P_FULLNAME, - CContactSearch::CONTAINS_WORD_PREFIXES, - fName.c_str(), - valid, - true); - } - if (lName.length() != 0) - { - search->AddOr(); - search->AddStrTerm( - Contact::P_FULLNAME, - CContactSearch::CONTAINS_WORD_PREFIXES, - lName.c_str(), - valid, - true); - } - - if (!search->Submit()) - return; - - search->BlockWhileSearch(); - search->Release(); -} - -void CSkypeProto::OnContactsReceived(const ConversationRef &conversation, const MessageRef &message) -{ - CContact::Refs contacts; - message->GetContacts(contacts); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - CMessage::TYPE messageType; - message->GetPropType(messageType); - - SEString data; - message->GetPropAuthor(data); - - CContact::Ref author; - this->GetContact(data, author); - - MCONTACT hContact = this->AddContact(author); - - SEBinary guid; - message->GetPropGuid(guid); - ReadMessageParam param = { guid, messageType }; - - PROTORECVEVENT pre = { 0 }; - pre.flags = PREF_UTF; - pre.lParam = (LPARAM)¶m; - pre.timestamp = timestamp; - - int msgSize = 1; - pre.szMessage = (char *)::mir_alloc(msgSize); - pre.szMessage[0] = 0; - - int len = 0; - char* pCur = &pre.szMessage[0]; - - for (size_t i = 0; i < contacts.size(); i ++) - { - contacts[i]->GetIdentity(data); - if ( ::lstrcmpi(mir_ptr(::mir_utf8decodeW(data)), this->login) != 0) - this->AddContact(contacts[i]); - } - - char *text = ::mir_utf8encode(::Translate("Contacts received")); - - this->AddDBEvent( - hContact, - SKYPE_DB_EVENT_TYPE_CONTACTS, - timestamp, - PREF_UTF, - (DWORD)::strlen(text) + 1, - (PBYTE)text); -} - -void CSkypeProto::OnContactsSent(const ConversationRef &conversation, const MessageRef &message) -{ - SEString data; - - CMessage::TYPE messageType; - message->GetPropType(messageType); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - CMessage::SENDING_STATUS status; - message->GetPropSendingStatus(status); - - CParticipant::Refs participants; - conversation->GetParticipants(participants, CConversation::OTHER_CONSUMERS); - participants[0]->GetPropIdentity(data); - - CContact::Ref receiver; - this->GetContact(data, receiver); - - MCONTACT hContact = this->AddContact(receiver); - this->SendBroadcast( - hContact, - ACKTYPE_CONTACTS, - status == CMessage::FAILED_TO_SEND ? ACKRESULT_FAILED : ACKRESULT_SUCCESS, - (HANDLE)message->getOID(), 0); -} - -void CSkypeProto::OnContactsEvent(const ConversationRef &conversation, const MessageRef &message) -{ - SEString author; - message->GetPropAuthor(author); - - if (::wcsicmp(mir_ptr(::mir_utf8decodeW(author)), this->login) == 0) - this->OnContactsSent(conversation, message); - else - this->OnContactsReceived(conversation, message); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_database.cpp b/plugins/!Deprecated/Skype/src/skype_database.cpp deleted file mode 100644 index 6ad9166e11..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_database.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include "skype.h" - -bool CSkypeProto::IsMessageInDB(MCONTACT hContact, DWORD timestamp, SEBinary &guid, int flag) -{ - for (HANDLE hDbEvent = ::db_event_last(hContact); hDbEvent; hDbEvent = ::db_event_prev(hContact, hDbEvent)) - { - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.cbBlob = ::db_event_getBlobSize(hDbEvent); - if (dbei.cbBlob < guid.size()) - continue; - - mir_ptr blob((PBYTE)::mir_alloc(dbei.cbBlob)); - dbei.pBlob = blob; - ::db_event_get(hDbEvent, &dbei); - - if (dbei.timestamp < timestamp) - break; - - int sendFlag = dbei.flags & DBEF_SENT; - if ((dbei.eventType == EVENTTYPE_MESSAGE || dbei.eventType == SKYPE_DB_EVENT_TYPE_EMOTE) && sendFlag == flag) - if (::memcmp(&dbei.pBlob[dbei.cbBlob - guid.size()], guid.data(), guid.size()) == 0) - return true; - } - - return false; -} - -HANDLE CSkypeProto::AddDBEvent(MCONTACT hContact, WORD type, DWORD timestamp, DWORD flags, DWORD cbBlob, PBYTE pBlob) -{ - DBEVENTINFO dbei = { sizeof(dbei) }; - dbei.szModule = this->m_szModuleName; - dbei.timestamp = timestamp; - dbei.eventType = type; - dbei.cbBlob = cbBlob; - dbei.pBlob = pBlob; - dbei.flags = flags; - return ::db_event_add(hContact, &dbei); -} - -void CSkypeProto::RaiseAuthRequestEvent(DWORD timestamp, CContact::Ref contact) -{ - char *sid = ::mir_strdup(contact->GetSid()); - char *nick = ::mir_strdup(contact->GetNick()); - - SEString data; - - contact->GetPropReceivedAuthrequest(data); - char *reason = ::mir_strdup(data); - - SEString last; - contact->GetFullname(data, last); - char *firstName = ::mir_strdup(data); - char *lastName = ::mir_strdup(last); - - MCONTACT hContact = this->AddContact(contact); - - /*blob is: 0(DWORD), hContact(DWORD), nick(ASCIIZ), firstName(ASCIIZ), lastName(ASCIIZ), sid(ASCIIZ), reason(ASCIIZ)*/ - DWORD cbBlob = (DWORD) - (sizeof(DWORD) * 2 + - ::strlen(nick) + - ::strlen(firstName) + - ::strlen(lastName) + - ::strlen(sid) + - ::strlen(reason) + - 5); - - PBYTE pBlob, pCurBlob; - pCurBlob = pBlob = (PBYTE)::mir_alloc(cbBlob); - - *((PDWORD)pCurBlob) = 0; - pCurBlob += sizeof(DWORD); - *((PDWORD)pCurBlob) = (DWORD)hContact; - pCurBlob += sizeof(DWORD); - ::strcpy((char *)pCurBlob, nick); - pCurBlob += ::strlen(nick) + 1; - ::strcpy((char *)pCurBlob, firstName); - pCurBlob += ::strlen(firstName) + 1; - ::strcpy((char *)pCurBlob, lastName); - pCurBlob += ::strlen(lastName) + 1; - ::strcpy((char *)pCurBlob, sid); - pCurBlob += ::strlen(sid) + 1; - ::strcpy((char *)pCurBlob, reason); - - this->AddDBEvent(hContact, EVENTTYPE_AUTHREQUEST, time(NULL), DBEF_UTF, cbBlob, pBlob); -} - -void CSkypeProto::RaiseMessageSentEvent(MCONTACT hContact, DWORD timestamp, SEBinary &guid, const char *message, bool isUnread) -{ - if (this->IsMessageInDB(hContact, timestamp, guid, DBEF_SENT)) - return; - - int guidLen = (int)guid.size(); - - int msgLen = (int)::strlen(message) + 1; - ptrA msg((char *)::mir_alloc(msgLen + guidLen)); - - ::strcpy(msg, message); - msg[msgLen - 1] = 0; - ::memcpy((char *)&msg[msgLen], guid.data(), guidLen); - - DWORD flags = DBEF_UTF | DBEF_SENT; - if ( !isUnread) - flags |= DBEF_READ; - - this->AddDBEvent( - hContact, - EVENTTYPE_MESSAGE, - timestamp, - flags, - msgLen + guidLen, - (PBYTE)(char*)msg); -} diff --git a/plugins/!Deprecated/Skype/src/skype_dialogs.cpp b/plugins/!Deprecated/Skype/src/skype_dialogs.cpp deleted file mode 100644 index a3aa8df4dc..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_dialogs.cpp +++ /dev/null @@ -1,859 +0,0 @@ -#include "skype.h" - -INT_PTR CALLBACK CSkypeProto::SkypeMainOptionsProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *proto = (CSkypeProto *)::GetWindowLongPtr(hwnd, GWLP_USERDATA); - - switch (message) - { - case WM_INITDIALOG: - { - ::TranslateDialogDefault(hwnd); - - proto = (CSkypeProto *)lParam; - ::SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); - { - ptrW sid( ::db_get_wsa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_SID)); - SetDlgItemText(hwnd, IDC_SL, sid); - } - { - ptrA pwd( ::db_get_sa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_PASSWORD)); - SetDlgItemTextA(hwnd, IDC_PW, pwd); - } - { - int port = rand() % 10000 + 10000; - SetDlgItemInt(hwnd, IDC_PORT, ::db_get_w(NULL, proto->m_szModuleName, "Port", port), FALSE); - SendMessage(GetDlgItem(hwnd, IDC_PORT), EM_SETLIMITTEXT, 5, 0); - } - - CheckDlgButton(hwnd, IDC_USE_ALT_PORTS, ::db_get_b(NULL, proto->m_szModuleName, "UseAlternativePorts", 1)); - - if (proto->IsOnline()) - { - SendMessage(GetDlgItem(hwnd, IDC_SL), EM_SETREADONLY, 1, 0); - SendMessage(GetDlgItem(hwnd, IDC_PW), EM_SETREADONLY, 1, 0); - SendMessage(GetDlgItem(hwnd, IDC_PORT), EM_SETREADONLY, 1, 0); - EnableWindow(GetDlgItem(hwnd, IDC_USE_ALT_PORTS), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_CHANGE_PWD), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_GROUP), FALSE); - } - else if (::db_get_w(NULL, proto->m_szModuleName, "Status", ID_STATUS_OFFLINE) > ID_STATUS_OFFLINE) - { - EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), FALSE); - } - - SendDlgItemMessage(hwnd, IDC_GROUP, EM_LIMITTEXT, SKYPE_GROUP_NAME_LIMIT, 0); - - ptrW defgroup( db_get_wsa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP)); - SetDlgItemText(hwnd, IDC_GROUP, defgroup); - } - return TRUE; - - case WM_COMMAND: - { - switch(LOWORD(wParam)) - { - case IDC_SL: - { - if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; - - if (!proto->IsOnline() && ::db_get_w(NULL, proto->m_szModuleName, "Status", ID_STATUS_OFFLINE) <= ID_STATUS_OFFLINE) - { - wchar_t sid[128]; - GetDlgItemText(hwnd, IDC_SL, sid, SIZEOF(sid)); - EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), ::wcslen(sid) != 0); - } - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - } - break; - - case IDC_PW: - { - if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; - if (proto->IsOnline()) - { - char pwd[128]; - GetDlgItemTextA(hwnd, IDC_SL, pwd, SIZEOF(pwd)); - EnableWindow(GetDlgItem(hwnd, IDC_CHANGE_PWD), ::strlen(pwd) != 0); - } - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - } - break; - - case IDC_GROUP: - { - if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - } - break; - - case IDC_PORT: - { - if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - } - break; - - case IDC_USE_ALT_PORTS: - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; - - case IDC_REGISTER: - { - char sid[128], pwd[128]; - GetDlgItemTextA(hwnd, IDC_SL, sid, SIZEOF(sid)); - GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); - - Skype::VALIDATERESULT reason; - proto->ValidatePassword(sid, pwd, reason); - - if (reason == Skype::VALIDATED_OK) - { - CAccount::Ref account; - proto->GetAccount(sid, proto->account); - proto->account->SetStrProperty(CAccount::P_FULLNAME, sid); - proto->account->Register(pwd, false, false); - } - else - { - proto->ShowNotification(CSkypeProto::ValidationReasons[reason]); - } - } - return FALSE; - - case IDC_CHANGE_PWD: - { - char sid[128], pwd[128]; - GetDlgItemTextA(hwnd, IDC_SL, sid, SIZEOF(sid)); - GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); - - PasswordChangeBoxParam param; - param.password = ::mir_strdup(pwd); - - if (proto->ChangePassword(param)) - { - proto->account->ChangePassword(param.password, param.password2); - } - } - break; - } - } - break; - - case WM_NOTIFY: - if (reinterpret_cast(lParam)->code == PSN_APPLY && !proto->IsOnline()) - { - wchar_t sid[128]; - GetDlgItemText(hwnd, IDC_SL, sid, SIZEOF(sid)); - ::db_set_ws(NULL, proto->m_szModuleName, SKYPE_SETTINGS_SID, sid); - ::mir_free(proto->login); - proto->login = ::mir_wstrdup(sid); - - char pwd[128]; - GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); - ::db_set_s(NULL, proto->m_szModuleName, SKYPE_SETTINGS_PASSWORD, pwd); - - HWND item = GetDlgItem(hwnd, IDC_PORT); - if (item) - { - BOOL error; - int port = GetDlgItemInt(hwnd, IDC_PORT, &error, FALSE); - ::db_set_w(NULL, proto->m_szModuleName, "Port", port); - ::db_set_b(NULL, proto->m_szModuleName, "UseAlternativePorts", (BYTE)IsDlgButtonChecked(hwnd, IDC_USE_ALT_PORTS)); - } - - wchar_t tstr[128]; - GetDlgItemText(hwnd, IDC_GROUP, tstr, SIZEOF(tstr)); - if (lstrlen(tstr) > 0) - { - ::db_set_ts(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP, tstr); - ::Clist_CreateGroup(0, tstr); - } - else - ::db_unset(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP); - - return TRUE; - } - break; - } - - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::SkypePrivacyOptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - ppro = (CSkypeProto *)lParam; - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - ::TranslateDialogDefault(hwndDlg); - } - break; - - /*case WM_COMMAND: - { - switch(LOWORD(wParam)) - { - } - } - break;*/ - - case WM_NOTIFY: - if (reinterpret_cast(lParam)->code == PSN_APPLY && !ppro->IsOnline()) - { - return TRUE; - } - break; - - /*switch(LOWORD(wParam)) - { - } - break;*/ - } - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::SkypePasswordRequestProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - PasswordRequestBoxParam *param = reinterpret_cast(::GetWindowLongPtr(hwndDlg, GWLP_USERDATA)); - - switch (msg) - { - case WM_INITDIALOG: - ::TranslateDialogDefault(hwndDlg); - - param = (PasswordRequestBoxParam *)lParam; - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - { - ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)CSkypeProto::IconList[0].Handle); - ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)CSkypeProto::IconList[0].Handle); - - wchar_t title[MAX_PATH]; - ::mir_sntprintf( - title, - MAX_PATH, - ::TranslateT("Enter a password for %s:"), - param->login); - ::SetDlgItemText(hwndDlg, IDC_INSTRUCTION, title); - - ::SendDlgItemMessage(hwndDlg, IDC_PASSWORD, EM_LIMITTEXT, 128 - 1, 0); - - ::CheckDlgButton(hwndDlg, IDC_SAVEPASSWORD, param->rememberPassword); - ::ShowWindow(::GetDlgItem(hwndDlg, IDC_SAVEPASSWORD), param->showRememberPasswordBox); - } - break; - - case WM_CLOSE: - EndDialog(hwndDlg, 0); - break; - - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDOK: - { - param->rememberPassword = ::IsDlgButtonChecked(hwndDlg, IDC_SAVEPASSWORD) > 0; - - char password[SKYPE_PASSWORD_LIMIT]; - ::GetDlgItemTextA(hwndDlg, IDC_PASSWORD, password, SIZEOF(password)); - param->password = ::mir_strdup(password); - - ::EndDialog(hwndDlg, IDOK); - } - break; - - case IDCANCEL: - ::EndDialog(hwndDlg, IDCANCEL); - break; - } - } - break; - } - - return FALSE; -} - -bool CSkypeProto::RequestPassword(PasswordRequestBoxParam ¶m) -{ - int value = ::DialogBoxParam( - g_hInstance, - MAKEINTRESOURCE(IDD_PASSWORD_REQUEST), - NULL, - CSkypeProto::SkypePasswordRequestProc, - (LPARAM)¶m); - return value == 1; -} - -INT_PTR CALLBACK CSkypeProto::SkypePasswordChangeProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - PasswordChangeBoxParam *param = reinterpret_cast(::GetWindowLongPtr(hwndDlg, GWLP_USERDATA)); - - switch (msg) - { - case WM_INITDIALOG: - ::TranslateDialogDefault(hwndDlg); - - SendDlgItemMessage(hwndDlg, IDC_PASSWORD, EM_LIMITTEXT, SKYPE_PASSWORD_LIMIT, 0); - SendDlgItemMessage(hwndDlg, IDC_PASSWORD2, EM_LIMITTEXT, SKYPE_PASSWORD_LIMIT, 0); - SendDlgItemMessage(hwndDlg, IDC_PASSWORD3, EM_LIMITTEXT, SKYPE_PASSWORD_LIMIT, 0); - - param = (PasswordChangeBoxParam *)lParam; - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - { - ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)CSkypeProto::IconList[0].Handle); - ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)CSkypeProto::IconList[0].Handle); - } - break; - - case WM_CLOSE: - ::EndDialog(hwndDlg, 0); - break; - - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDOK: - { - char oldPwd[SKYPE_PASSWORD_LIMIT]; - char pwd1[SKYPE_PASSWORD_LIMIT]; - char pwd2[SKYPE_PASSWORD_LIMIT]; - - ::GetDlgItemTextA(hwndDlg, IDC_PASSWORD, oldPwd, SIZEOF(oldPwd)); - ::GetDlgItemTextA(hwndDlg, IDC_PASSWORD2, pwd1, SIZEOF(pwd1)); - ::GetDlgItemTextA(hwndDlg, IDC_PASSWORD3, pwd2, SIZEOF(pwd2)); - - if (!::strlen(oldPwd) || !::strlen(pwd1)) { - ::MessageBox(NULL, TranslateT("Password can't be empty."), TranslateT("Change password"), MB_OK | MB_ICONERROR); - break; - } - - if (::strcmp(param->password, oldPwd)) { - ::MessageBox(NULL, TranslateT("Old password is not correct."), TranslateT("Change password"), MB_OK | MB_ICONERROR); - break; - } - - if (!::strcmp(oldPwd, pwd1)) { - ::MessageBox(NULL, TranslateT("New password is same as old password."), TranslateT("Change password"), MB_OK | MB_ICONERROR); - break; - } - - if (::strcmp(pwd1, pwd2)) { - ::MessageBox(NULL, TranslateT("New password and confirmation must be same."), TranslateT("Change password"), MB_OK | MB_ICONERROR); - break; - } - - param->password2 = ::mir_strdup(pwd1); - - ::EndDialog(hwndDlg, IDOK); - } - break; - - case IDCANCEL: - ::EndDialog(hwndDlg, IDCANCEL); - break; - } - } - break; - } - - return FALSE; -} - -bool CSkypeProto::ChangePassword(PasswordChangeBoxParam ¶m) -{ - int value = ::DialogBoxParam( - g_hInstance, - MAKEINTRESOURCE(IDD_PASSWORD_CHANGE), - NULL, - CSkypeProto::SkypePasswordChangeProc, - (LPARAM)¶m); - return value == IDOK; -} - -INT_PTR CALLBACK CSkypeProto::SkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - break; - - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_PARAMCHANGED: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, ((PSHNOTIFY *)lParam )->lParam); - break; - - case PSN_INFOCHANGED: - { - CSkypeProto *ppro = (CSkypeProto *)::GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - if (!ppro) - break; - - char *szProto; - MCONTACT hContact = (MCONTACT)((LPPSHNOTIFY)lParam)->lParam; - - if (hContact == NULL) - szProto = ppro->m_szModuleName; - else - szProto = (char *)::CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0); - - if (!szProto) - break; - - ::SetDlgItemText(hwndDlg, IDC_SID, ptrW(::db_get_wsa(hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID))); - - DBVARIANT dbv; - if ( !::db_get_ts(hContact, ppro->m_szModuleName, "XStatusMsg", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_STATUSTEXT, dbv.ptszVal); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_STATUSTEXT), TRUE); - ::db_free(&dbv); - } else { - ::SetDlgItemText(hwndDlg, IDC_STATUSTEXT, TranslateT("")); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_STATUSTEXT), FALSE); - } - - if (::db_get_dw(hContact, ppro->m_szModuleName, "OnlineSinceTS", 0)) { - TCHAR date[64]; - DBTIMETOSTRINGT tts = {0}; - tts.szFormat = _T("d s"); - tts.szDest = date; - tts.cbDest = sizeof(date); - CallService(MS_DB_TIME_TIMESTAMPTOSTRINGT, (WPARAM)::db_get_dw(hContact, ppro->m_szModuleName, "OnlineSinceTS", 0), (LPARAM)&tts); - ::SetDlgItemText(hwndDlg, IDC_ONLINESINCE, date); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_ONLINESINCE), TRUE); - } else { - ::SetDlgItemText(hwndDlg, IDC_ONLINESINCE, TranslateT("")); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_ONLINESINCE), FALSE); - } - - if (::db_get_dw(hContact, ppro->m_szModuleName, "LastEventDateTS", 0)) { - TCHAR date[64]; - DBTIMETOSTRINGT tts = {0}; - tts.szFormat = _T("d s"); - tts.szDest = date; - tts.cbDest = sizeof(date); - ::CallService(MS_DB_TIME_TIMESTAMPTOSTRINGT, (WPARAM)::db_get_dw(hContact, ppro->m_szModuleName, "LastEventDateTS", 0), (LPARAM)&tts); - ::SetDlgItemText(hwndDlg, IDC_LASTEVENTDATE, date); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_LASTEVENTDATE), TRUE); - } else { - ::SetDlgItemText(hwndDlg, IDC_LASTEVENTDATE, TranslateT("")); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_LASTEVENTDATE), FALSE); - } - - if (::db_get_dw(hContact, ppro->m_szModuleName, "ProfileTS", 0)) { - TCHAR date[64]; - DBTIMETOSTRINGT tts = {0}; - tts.szFormat = _T("d s"); - tts.szDest = date; - tts.cbDest = sizeof(date); - ::CallService(MS_DB_TIME_TIMESTAMPTOSTRINGT, (WPARAM)::db_get_dw(hContact, ppro->m_szModuleName, "ProfileTS", 0), (LPARAM)&tts); - ::SetDlgItemText(hwndDlg, IDC_LASTPROFILECHANGE, date); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_LASTPROFILECHANGE), TRUE); - } else { - ::SetDlgItemText(hwndDlg, IDC_LASTPROFILECHANGE, TranslateT("")); - ::EnableWindow(::GetDlgItem(hwndDlg, IDC_LASTPROFILECHANGE), FALSE); - } - } - break; - } - break; - } - break; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDCANCEL: - SendMessage(GetParent(hwndDlg), msg, wParam, lParam); - break; - } - break; - } - - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::PersonalSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - const unsigned long iPageId = 0; - CSkypeProto *ppro = (CSkypeProto *)::GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - // gender - ::SendMessage(::GetDlgItem(hwndDlg, IDC_GENDER), CB_ADDSTRING, 0, (LPARAM)L""); - ::SendMessage(::GetDlgItem(hwndDlg, IDC_GENDER), CB_ADDSTRING, 0, (LPARAM)::TranslateT("Male")); - ::SendMessage(::GetDlgItem(hwndDlg, IDC_GENDER), CB_ADDSTRING, 0, (LPARAM)::TranslateT("Female")); - - BYTE b = ::db_get_b(NULL, ppro->m_szModuleName, "Gender", 0); - switch (b) - { - case 0: - ::SetDlgItemText(hwndDlg, IDC_GENDER, _T("")); - break; - case 'M': - ::SetDlgItemText(hwndDlg, IDC_GENDER, TranslateT("Male")); - break; - case 'F': - SetDlgItemText(hwndDlg, IDC_GENDER, TranslateT("Female")); - break; - } - - // birthday - wchar_t date[5]; - - for (int i = 1; i < 32; i++) - { - ::mir_sntprintf(date, 3, L"%02d", i); - ::SendMessage(GetDlgItem(hwndDlg, IDC_BIRTH_DAY), CB_ADDSTRING, 0, (LPARAM)date); - } - BYTE bday = ::db_get_b(NULL, ppro->m_szModuleName, "BirthDay", 0); - if (bday > 0 && bday < 32) - { - ::mir_sntprintf(date, 3, L"%02d", bday); - ::SetDlgItemText(hwndDlg, IDC_BIRTH_DAY, date); - } - - for (int i = 1; i < 13; i++) - { - ::mir_sntprintf(date, 3, L"%02d", i); - ::SendMessage(::GetDlgItem(hwndDlg, IDC_BIRTH_MONTH), CB_ADDSTRING, 0, (LPARAM)date); - } - BYTE bmon = ::db_get_b(NULL, ppro->m_szModuleName, "BirthMonth", 0); - if (bmon > 0 && bmon < 13) - { - ::mir_sntprintf(date, 3, L"%02d", bmon); - ::SetDlgItemText(hwndDlg, IDC_BIRTH_MONTH, date); - } - SYSTEMTIME sToday = {0}; - ::GetLocalTime(&sToday); - // ages from 10 to 50 is need more? - for (WORD i = sToday.wYear - 50; i < sToday.wYear - 10; i++) - { - ::_itow(i, date, 10); - ::SendMessage(::GetDlgItem(hwndDlg, IDC_BIRTH_YEAR), CB_ADDSTRING, 0, (LPARAM)date); - } - WORD byear = ::db_get_w(NULL, ppro->m_szModuleName, "BirthYear", 0); - if (byear > 1900 && bmon < 2214) - ::SetDlgItemInt(hwndDlg, IDC_BIRTH_YEAR, byear, false); - - // language - int i = 0; - ptrW lang( ::db_get_wsa(NULL, ppro->m_szModuleName, "Language1")); - for (auto it = CSkypeProto::languages.begin(); it != CSkypeProto::languages.end(); ++it) - { - ::SendMessage( - ::GetDlgItem(hwndDlg, IDC_LANGUAGE), - CB_ADDSTRING, - 0, - (LPARAM)::TranslateTS(it->second.c_str())); - - ::SendMessage( - ::GetDlgItem(hwndDlg, IDC_LANGUAGE), - CB_SETITEMDATA, - i, - (LPARAM)&it->first); - - if (lang && it->second.compare(lang) == 0) - ::SendMessage(GetDlgItem(hwndDlg, IDC_LANGUAGE), CB_SETCURSEL, i, 0); - i++; - } - - // nick - DBVARIANT dbv; - if ( !ppro->getTString("Nick", &dbv)) - { - ::SetDlgItemText(hwndDlg, IDC_FULLNAME, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_FULLNAME, _T("")); - - // homepage - if ( !ppro->getTString("Homepage", &dbv)) - { - ::SetDlgItemText(hwndDlg, IDC_HOMEPAGE, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_HOMEPAGE, _T("")); - - // about - if ( !ppro->getTString("About", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_ABOUT, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_ABOUT, _T("")); - - // mood - if ( !ppro->getTString("XStatusMsg", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_MOOD, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_MOOD, _T("")); - } - break; - - case WM_COMMAND: - if (((HWND)lParam == GetFocus() && HIWORD(wParam) == EN_CHANGE) || - (((HWND)lParam == GetDlgItem(hwndDlg, IDC_GENDER) || (HWND)lParam == GetDlgItem(hwndDlg, IDC_BIRTH_DAY) || - (HWND)lParam == GetDlgItem(hwndDlg, IDC_BIRTH_MONTH) || (HWND)lParam == GetDlgItem(hwndDlg, IDC_BIRTH_YEAR) || - (HWND)lParam == GetDlgItem(hwndDlg, IDC_LANGUAGE)) && (HIWORD(wParam) == CBN_EDITCHANGE || HIWORD(wParam) == CBN_SELCHANGE))) - { - ppro->NeedUpdate = 1; - ::SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->idFrom == 0) { - switch (((LPNMHDR)lParam)->code) { - case PSN_PARAMCHANGED: - ::SendMessage(hwndDlg, WM_INITDIALOG, 0, ((PSHNOTIFY *)lParam)->lParam); - break; - case PSN_APPLY: - if (ppro->IsOnline() && ppro->NeedUpdate) - ppro->SaveOwnInfoToServer(hwndDlg, iPageId); - else if ( !ppro->IsOnline()) - ppro->ShowNotification(::TranslateT("You are not currently connected to the Skype network. You must be online in order to update your information on the server.")); - break; - } - } - break; - } - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::ContactSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - const unsigned long iPageId = 1; - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) { - case WM_INITDIALOG: - if (lParam) { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - DBVARIANT dbv; - if ( !ppro->getTString("Cellular", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_MOBPHONE, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_MOBPHONE, _T("")); - - if ( !ppro->getTString("Phone", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_HOMEPHONE, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_HOMEPHONE, _T("")); - - if ( !ppro->getTString("CompanyPhone", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_OFFICEPHONE, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_OFFICEPHONE, _T("")); - - if ( !ppro->getTString("e-mail0", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_EMAIL1, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_EMAIL1, _T("")); - - if ( !ppro->getTString("e-mail1", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_EMAIL2, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_EMAIL2, _T("")); - - if ( !ppro->getTString("e-mail2", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_EMAIL3, dbv.ptszVal); - ::db_free(&dbv); - } - else - ::SetDlgItemText(hwndDlg, IDC_EMAIL3, _T("")); - } - break; - - case WM_COMMAND: - if ((HWND)lParam == GetFocus() && HIWORD(wParam) == EN_CHANGE) - { - ppro->NeedUpdate = 1; - ::SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->idFrom == 0) { - switch (((LPNMHDR)lParam)->code) { - case PSN_PARAMCHANGED: - ::SendMessage(hwndDlg, WM_INITDIALOG, 0, ((PSHNOTIFY *)lParam)->lParam); - break; - case PSN_APPLY: - if (ppro->IsOnline() && ppro->NeedUpdate) - ppro->SaveOwnInfoToServer(hwndDlg, iPageId); - else if ( !ppro->IsOnline()) - ppro->ShowNotification(::TranslateT("You are not currently connected to the Skype network. You must be online in order to update your information on the server.")); - break; - } - } - break; - } - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::HomeSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - const unsigned long iPageId = 2; - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) { - case WM_INITDIALOG: - if (lParam) { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - DBVARIANT dbv; - if ( !ppro->getTString("City", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_CITY, dbv.ptszVal); - ::db_free(&dbv); - } - else ::SetDlgItemText(hwndDlg, IDC_CITY, _T("")); - - if ( !ppro->getTString("State", &dbv)) { - ::SetDlgItemText(hwndDlg, IDC_STATE, dbv.ptszVal); - ::db_free(&dbv); - } - else ::SetDlgItemText(hwndDlg, IDC_STATE, _T("")); - - ptrW countr(::db_get_wsa(NULL, ppro->m_szModuleName, "Country")); - for (int i = 0; i < g_cbCountries; i++) - { - if (g_countries[i].id != 0xFFFF && g_countries[i].id != 0) - { - ptrT country( mir_a2t(g_countries[i].szName)); - int nItem = ::SendMessage( - ::GetDlgItem(hwndDlg, IDC_COUNTRY), - CB_ADDSTRING, - 0, - (LPARAM)::TranslateTS(country)); - - ::SendMessage( - ::GetDlgItem(hwndDlg, IDC_COUNTRY), - CB_SETITEMDATA, - nItem, - (LPARAM)&g_countries[i].ISOcode); - - if (countr && ::wcscmp(country, countr) == 0) - ::SendMessage(GetDlgItem(hwndDlg, IDC_COUNTRY), CB_SETCURSEL, nItem, 0); - } - } - - tmi.prepareList(lParam, NULL, ::GetDlgItem(hwndDlg, IDC_TIMEZONE), TZF_PLF_CB); - HANDLE hTimeZone = tmi.createByContact(NULL, 0, 0); - LPCTSTR TzDescr = tmi.getTzDescription(tmi.getTzName(hTimeZone)); - ::SetDlgItemText(hwndDlg, IDC_TIMEZONE, TzDescr); - } - break; - - case WM_COMMAND: - if (((HWND)lParam == GetFocus() && HIWORD(wParam) == EN_CHANGE) || - (((HWND)lParam == GetDlgItem(hwndDlg, IDC_COUNTRY) || (HWND)lParam == GetDlgItem(hwndDlg, IDC_TIMEZONE)) && - (HIWORD(wParam) == CBN_EDITCHANGE || HIWORD(wParam) == CBN_SELCHANGE))) - { - ppro->NeedUpdate = 1; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->idFrom == 0) { - switch (((LPNMHDR)lParam)->code) { - case PSN_PARAMCHANGED: - SendMessage(hwndDlg, WM_INITDIALOG, 0, ((PSHNOTIFY *)lParam)->lParam); - break; - case PSN_APPLY: - if (ppro->IsOnline() && ppro->NeedUpdate) - ppro->SaveOwnInfoToServer(hwndDlg, iPageId); - else if ( !ppro->IsOnline()) - ppro->ShowNotification(::TranslateT("You are not currently connected to the Skype network. You must be online in order to update your information on the server.")); - break; - } - } - break; - } - return FALSE; -} - -INT_PTR CALLBACK CSkypeProto::AccountSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - const unsigned long iPageId = 3; - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) { - case WM_INITDIALOG: - if (lParam) { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - } - break; - - case WM_COMMAND: - if (((HWND)lParam == GetFocus() && HIWORD(wParam) == EN_CHANGE)) - { - ppro->NeedUpdate = 1; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - break; - - case WM_NOTIFY: - if (((LPNMHDR)lParam)->idFrom == 0) { - switch (((LPNMHDR)lParam)->code) { - case PSN_PARAMCHANGED: - SendMessage(hwndDlg, WM_INITDIALOG, 0, ((PSHNOTIFY *)lParam)->lParam); - break; - case PSN_APPLY: - if (ppro->IsOnline() && ppro->NeedUpdate) - ppro->SaveOwnInfoToServer(hwndDlg, iPageId); - else if ( !ppro->IsOnline()) - ppro->ShowNotification(::TranslateT("You are not currently connected to the Skype network. You must be online in order to update your information on the server.")); - break; - } - } - break; - } - return FALSE; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_events.cpp b/plugins/!Deprecated/Skype/src/skype_events.cpp deleted file mode 100644 index ba7ea1d311..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_events.cpp +++ /dev/null @@ -1,284 +0,0 @@ -#include "skype.h" - -int CSkypeProto::OnModulesLoaded(WPARAM, LPARAM) -{ - /*if (::ServiceExists(MS_ASSOCMGR_ADDNEWURLTYPE)) - { - ::CreateServiceFunction(MODULE"/ParseSkypeURI", &CSkypeProto::ParseSkypeUri); - ::AssocMgr_AddNewUrlTypeT("skype:", TranslateT("Skype URI API"), g_hInstance, IDI_SKYPE, MODULE"/ParseSkypeURI", 0); - }*/ - - return 0; -} - -int CSkypeProto::OnProtoModulesLoaded(WPARAM, LPARAM) -{ - this->InitNetLib(); - this->InitChatModule(); - this->InitInstanceHookList(); - - if (::ServiceExists(MS_BB_ADDBUTTON)) - { - BBButton bbd = { sizeof(bbd) }; - bbd.pszModuleName = MODULE; - - bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON; - bbd.ptszTooltip = ::TranslateT("Invite contacts to conference"); - bbd.hIcon = CSkypeProto::GetSkinIconHandle("addContacts"); - bbd.dwButtonID = BBB_ID_CONF_INVITE; - bbd.dwDefPos = 100 + bbd.dwButtonID; - ::CallService(MS_BB_ADDBUTTON, 0, (LPARAM)&bbd); - - bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON; - bbd.ptszTooltip = ::TranslateT("Spawn conference"); - bbd.hIcon = CSkypeProto::GetSkinIconHandle("conference"); - bbd.dwButtonID = BBB_ID_CONF_SPAWN; - bbd.dwDefPos = 100 + bbd.dwButtonID; - ::CallService(MS_BB_ADDBUTTON, 0, (LPARAM)&bbd); - - this->HookProtoEvent(ME_MSG_WINDOWEVENT, &CSkypeProto::OnSrmmWindowOpen); - } - - return 0; -} - -int CSkypeProto::OnPreShutdown(WPARAM, LPARAM) -{ - if (::ServiceExists(MS_BB_REMOVEBUTTON)) - { - BBButton bbd = { sizeof(bbd) }; - bbd.pszModuleName = MODULE; - - bbd.dwButtonID = BBB_ID_CONF_INVITE; - ::CallService(MS_BB_REMOVEBUTTON, 0, (LPARAM)&bbd); - - bbd.dwButtonID = BBB_ID_CONF_SPAWN; - ::CallService(MS_BB_REMOVEBUTTON, 0, (LPARAM)&bbd); - } - - this->SetStatus(ID_STATUS_OFFLINE); - - this->UninitNetLib(); - - return 0; -} - -int CSkypeProto::OnContactDeleted(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = (MCONTACT)wParam; - if (hContact) - { - if (this->isChatRoom(hContact)) - { - this->OnLeaveChat(wParam, 0); - ptrW cid(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (cid != NULL) - { - ConversationRef conversation; - if (this->GetConversationByIdentity((char *)_T2A(cid), conversation)) - conversation->Delete(); - } - } - else - this->RevokeAuth(wParam, lParam); - } - - return 0; -} - -INT_PTR __cdecl CSkypeProto::OnAccountManagerInit(WPARAM wParam, LPARAM lParam) -{ - return (int)::CreateDialogParam( - g_hInstance, - MAKEINTRESOURCE(IDD_ACCMGR), - (HWND)lParam, - &CSkypeProto::SkypeMainOptionsProc, - (LPARAM)this); -} - -int __cdecl CSkypeProto::OnOptionsInit(WPARAM wParam, LPARAM lParam) -{ - char *title = ::mir_t2a(this->m_tszUserName); - - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.hInstance = g_hInstance; - odp.pszTitle = title; - odp.dwInitParam = LPARAM(this); - odp.flags = ODPF_BOLDGROUPS; - odp.pszGroup = LPGEN("Network"); - - odp.pszTab = LPGEN("Account"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MAIN); - odp.pfnDlgProc = CSkypeProto::SkypeMainOptionsProc; - ::Options_AddPage(wParam, &odp); - - odp.pszTab = LPGEN("Blocked contacts"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_BLOCKED); - odp.pfnDlgProc = CSkypeProto::SkypeBlockedOptionsProc; - ::Options_AddPage(wParam, &odp); - - odp.pszTab = LPGEN("Privacy"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_PRIVACY); - odp.pfnDlgProc = CSkypeProto::SkypePrivacyOptionsProc; - ::Options_AddPage(wParam, &odp); - - ::mir_free(title); - return 0; -} - -int __cdecl CSkypeProto::OnUserInfoInit(WPARAM wParam, LPARAM lParam) -{ - if ((!this->IsProtoContact((MCONTACT)lParam)) && lParam) - return 0; - - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.flags = ODPF_TCHAR | ODPF_USERINFOTAB | ODPF_DONTTRANSLATE; - odp.hInstance = g_hInstance; - odp.dwInitParam = LPARAM(this); - odp.position = -1900000000; - odp.ptszTitle = this->m_tszUserName; - - MCONTACT hContact = (MCONTACT)lParam; - if (hContact) { - char *szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0); - if (szProto != NULL && !strcmp(szProto, m_szModuleName)) { - odp.pfnDlgProc = SkypeDlgProc; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_INFO_SKYPE); - UserInfo_AddPage(wParam, &odp); - } - } - else { - NeedUpdate = 0; - odp.pfnDlgProc = ContactSkypeDlgProc; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OWNINFO_CONTACT); - odp.ptszTab = LPGENT("Contacts"); - UserInfo_AddPage(wParam, &odp); - - odp.pfnDlgProc = HomeSkypeDlgProc; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OWNINFO_HOME); - odp.ptszTab = LPGENT("Home"); - UserInfo_AddPage(wParam, &odp); - - odp.pfnDlgProc = PersonalSkypeDlgProc; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OWNINFO_PERSONAL); - odp.ptszTab = LPGENT("General"); - UserInfo_AddPage(wParam, &odp); - - odp.pfnDlgProc = AccountSkypeDlgProc; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OWNINFO_ACCOUNT); - odp.ptszTab = LPGENT("Skype account"); - UserInfo_AddPage(wParam, &odp); - } - return 0; -} - -int __cdecl CSkypeProto::OnSrmmWindowOpen(WPARAM, LPARAM lParam) -{ - MessageWindowEventData *ev = (MessageWindowEventData*)lParam; - if (ev->uType == MSG_WINDOW_EVT_OPENING && ev->hContact) - { - BBButton bbd = { sizeof(bbd) }; - bbd.pszModuleName = MODULE; - bbd.bbbFlags = (!::strcmp(::GetContactProto(ev->hContact), this->m_szModuleName)) ? 0 : BBSF_HIDDEN | BBSF_DISABLED; - - bbd.dwButtonID = BBB_ID_CONF_INVITE; - ::CallService(MS_BB_SETBUTTONSTATE, (WPARAM)ev->hContact, (LPARAM)&bbd); - - bbd.dwButtonID = BBB_ID_CONF_SPAWN; - ::CallService(MS_BB_SETBUTTONSTATE, (WPARAM)ev->hContact, (LPARAM)&bbd); - } - return 0; -} - -int __cdecl CSkypeProto::OnTabSRMMButtonPressed(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = (MCONTACT)wParam; - CustomButtonClickData *cbcd = (CustomButtonClickData *)lParam; - - switch (cbcd->dwButtonId) - { - case BBB_ID_CONF_INVITE: - if (this->IsOnline() && this->isChatRoom(hContact)) - this->ChatRoomInvite(hContact); - break; - - case BBB_ID_CONF_SPAWN: - if (this->IsOnline() && !this->isChatRoom(hContact)) - { - SEStringList targets; - ptrW sid(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - targets.append((char *)_T2A(sid)); - - ConversationRef conversation, conference; - this->GetConversationByParticipants(targets, conversation); - - StringList invitedContacts(sid); - ChatRoomParam *param = new ChatRoomParam(NULL, invitedContacts, this); - - if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_CREATE), NULL, CSkypeProto::ChatRoomProc, (LPARAM)param) == IDOK && param->invitedContacts.size() > 0) - { - for (size_t i = 0; i < param->invitedContacts.size(); i++) - { - SEString contact(_T2A(param->invitedContacts[i])); - if ( !targets.contains(contact)) - targets.append(contact); - } - conversation->SpawnConference(targets, conference); - } - } - break; - } - - return 1; -} - -void CSkypeProto::OnMessage( - const MessageRef & message, - const bool & changesInboxTimestamp, - const MessageRef & supersedesHistoryMessage, - const ConversationRef & conversation) -{ - CMessage::TYPE messageType; - message->GetPropType(messageType); - - switch (messageType) - { - case CMessage::POSTED_EMOTE: - case CMessage::POSTED_TEXT: - case CMessage::STARTED_LIVESESSION: - case CMessage::ENDED_LIVESESSION: - { - CConversation::TYPE type; - conversation->GetPropType(type); - if (type == 0 || type == CConversation::DIALOG) - this->OnMessageEvent(conversation, message); - else - this->OnChatEvent(conversation, message); - } - break; - - case CMessage::ADDED_CONSUMERS: - case CMessage::RETIRED: - case CMessage::RETIRED_OTHERS: - case CMessage::SPAWNED_CONFERENCE: - this->OnChatEvent(conversation, message); - break; - - case CMessage::POSTED_FILES: - this->OnFileEvent(conversation, message); - break; - - case CMessage::POSTED_CONTACTS: - this->OnContactsEvent(conversation, message); - break; - - //case CMessage::REQUESTED_AUTH: - // break; - - //case CMessage::GRANTED_AUTH: - // break; - - //case CMessage::BLOCKED: - // break; - } -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_hooks.cpp b/plugins/!Deprecated/Skype/src/skype_hooks.cpp deleted file mode 100644 index 13dc08c95b..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_hooks.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "skype.h" - -void CSkypeProto::InitHookList() -{ - ::HookEvent(ME_SYSTEM_MODULESLOADED, &CSkypeProto::OnModulesLoaded); - ::HookEvent(ME_CLIST_PREBUILDCONTACTMENU, &CSkypeProto::PrebuildContactMenu); -} - -void CSkypeProto::InitInstanceHookList() -{ - this->HookProtoEvent(ME_OPT_INITIALISE, &CSkypeProto::OnOptionsInit); - this->HookProtoEvent(ME_USERINFO_INITIALISE, &CSkypeProto::OnUserInfoInit); - - this->HookProtoEvent(ME_MSG_PRECREATEEVENT, &CSkypeProto::OnMessagePreCreate); - - this->HookProtoEvent(ME_MSG_BUTTONPRESSED, &CSkypeProto::OnTabSRMMButtonPressed); -} diff --git a/plugins/!Deprecated/Skype/src/skype_icons.cpp b/plugins/!Deprecated/Skype/src/skype_icons.cpp deleted file mode 100644 index 5822cf2b37..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_icons.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "skype.h" - -_tag_iconList CSkypeProto::IconList[] = -{ - { LPGENT("Protocol icon"), "main", IDI_SKYPE }, - - { LPGENT("Call"), "call", IDI_CALL }, - { LPGENT("Invite to conference"), "addContacts", IDI_ADD_CONTACTS }, - { LPGENT("Conference"), "conference", IDI_CONFERENCE }, - { LPGENT("Send contact"), "sendContacts", IDI_SEND_CONTACTS }, - { LPGENT("Contact"), "contact", IDI_CONTACT }, - { LPGENT("Delete"), "delete", IDI_DELETE }, - { LPGENT("Block"), "block", IDI_BLOCK }, -}; - -void CSkypeProto::InitIcons() -{ - wchar_t szFile[MAX_PATH]; - ::GetModuleFileName(g_hInstance, szFile, MAX_PATH); - - char szSettingName[100]; - wchar_t szSectionName[100]; - - SKINICONDESC sid = {0}; - sid.cbSize = sizeof(SKINICONDESC); - sid.flags = SIDF_ALL_TCHAR; - sid.ptszDefaultFile = szFile; - sid.pszName = szSettingName; - sid.ptszSection = szSectionName; - - ::mir_sntprintf(szSectionName, SIZEOF(szSectionName), _T("%s/%s"), LPGENT("Protocols"), LPGENT(MODULE)); - for (int i = 0; i < SIZEOF(CSkypeProto::IconList); i++) - { - ::mir_snprintf(szSettingName, SIZEOF(szSettingName), "%s_%s", MODULE, CSkypeProto::IconList[i].Name); - - sid.ptszDescription = CSkypeProto::IconList[i].Description; - sid.iDefaultIndex = -CSkypeProto::IconList[i].IconId; - CSkypeProto::IconList[i].Handle = ::Skin_AddIcon(&sid); - } -} - -HANDLE CSkypeProto::GetIconHandle(const char* name) -{ - for (size_t i = 0; i < SIZEOF(CSkypeProto::IconList); i++) - { - if (::stricmp(CSkypeProto::IconList[i].Name, name) == 0) - return CSkypeProto::IconList[i].Handle; - } - return 0; -} - -HANDLE CSkypeProto::GetSkinIconHandle(const char* name) -{ - char iconName[100]; - ::mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, name); - HANDLE hIcon = ::Skin_GetIconHandle(iconName); - if ( !hIcon) - hIcon = CSkypeProto::GetIconHandle(name); - return hIcon; -} - -void CSkypeProto::UninitIcons() -{ - for (size_t i = 0; i < SIZEOF(CSkypeProto::IconList); i++) - ::Skin_RemoveIcon(CSkypeProto::IconList[i].Name); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_ignore_list.cpp b/plugins/!Deprecated/Skype/src/skype_ignore_list.cpp deleted file mode 100644 index b37f6787e0..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_ignore_list.cpp +++ /dev/null @@ -1,271 +0,0 @@ -#include "skype.h" -#include "skype_chat.h" - -int CSkypeProto::IgnoreCommand(WPARAM wParam, LPARAM) -{ - CContact::Ref contact; - HANDLE hContact = (HANDLE)wParam; - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - if (this->GetContact(sid, contact)) - { - //bool state = ::CallService(MS_IGNORE_ISIGNORED, wParam, IGNOREEVENT_ALL); - bool state = ::db_get_b(hContact, this->m_szModuleName, "Ignore", 0) > 0; - if (contact->SetBlocked(!state)) - { - //::CallService(!state ? MS_IGNORE_IGNORE : MS_IGNORE_UNIGNORE, wParam, IGNOREEVENT_ALL); - ::db_set_b(hContact, this->m_szModuleName, "Ignore", (int)!state); - } - } - - return 0; -} - -int CSkypeProto::BlockCommand(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if (hContact) - { - this->IgnoreCommand(wParam, lParam); - - ::db_set_b(hContact, "CList", "Hidden", 1); - } - - return 0; -} - -INT_PTR CSkypeProto::OpenIgnoreListCommand(WPARAM, LPARAM) -{ - ::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_IGNORE_LIST), NULL, CSkypeProto::IgnoreListWndProc, (LPARAM)this); - - return 0; -} - -static WNDPROC oldWndProc = NULL; - -static LRESULT CALLBACK IgnoreListSubProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - if (msg == WM_LBUTTONDOWN) - { - LVHITTESTINFO hi; - hi.pt.x = LOWORD(lParam); hi.pt.y = HIWORD(lParam); - ListView_SubItemHitTest(hwnd, &hi); - if (hi.iSubItem == 1) - { - LVITEM lvi = {0}; - lvi.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_GROUPID; - lvi.stateMask = -1; - lvi.iItem = hi.iItem; - if (ListView_GetItem(hwnd, &lvi)) - { - if (lvi.iGroupId == 1) - { - CContact *contact = (CContact *)lvi.lParam; - - if (contact->SetBlocked(false)) - ListView_DeleteItem(hwnd, lvi.iItem); - } - /*else if (lvi.iGroupId == 2) - { - CConversation *convo = (CConversation *)lvi.lParam; - - if (convo->SetBlocked(false)) - ListView_DeleteItem(hwnd, lvi.iItem); - }*/ - } - } - } - - return ::CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam); -} - -int ImageList_AddIconFromIconLib(HIMAGELIST hIml, const char *name) -{ - HICON icon = ::Skin_GetIconByHandle(::Skin_GetIconHandle(name)); - int res = ImageList_AddIcon(hIml, icon); - ::Skin_ReleaseIcon(icon); - return res; -} - -INT_PTR CALLBACK CSkypeProto::IgnoreListWndProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *ppro = (CSkypeProto *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - - switch (msg) - { - case WM_INITDIALOG: - if (lParam) - { - ppro = (CSkypeProto *)lParam; - ::TranslateDialogDefault(hwndDlg); - - ::SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)::Skin_GetIcon("Skype_block", ICON_BIG)); - ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)::Skin_GetIcon("Skype_block")); - - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST); - { // IDC_BM_LIST setup - oldWndProc = (WNDPROC)::SetWindowLongPtr(hwndList, GWLP_WNDPROC, (LONG_PTR)IgnoreListSubProc); - - HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0); - ImageList_AddIconFromIconLib(hIml, "Skype_contact"); - ImageList_AddIconFromIconLib(hIml, "Skype_delete"); - ListView_SetImageList(hwndList, hIml, LVSIL_SMALL); - - /// - LVCOLUMN lvc = {0}; - lvc.mask = LVCF_WIDTH | LVCF_TEXT; - - //lvc.fmt = LVCFMT_JUSTIFYMASK; - lvc.pszText = TranslateT("Name"); - lvc.cx = 220; // width of column in pixels - ListView_InsertColumn(hwndList, 0, &lvc); - - //lvc.fmt = LVCFMT_RIGHT; - lvc.pszText = L""; - lvc.cx = 32 - GetSystemMetrics(SM_CXVSCROLL); // width of column in pixels - ListView_InsertColumn(hwndList, 1, &lvc); - - /// - LVGROUP lvg; - lvg.cbSize = sizeof(LVGROUP); - lvg.mask = LVGF_HEADER | LVGF_GROUPID; - - lvg.pszHeader = ::TranslateT("Contacts"); - lvg.iGroupId = 1; - ListView_InsertGroup(hwndList, 0, &lvg); - - lvg.pszHeader = ::TranslateT("Conferences"); - lvg.iGroupId = 2; - ListView_InsertGroup(hwndList, 0, &lvg); - - ListView_EnableGroupView(hwndList, TRUE); - - ::SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP); - - if ( !ppro->IsOnline()) - ::EnableWindow(hwndList, FALSE); - } - - SEString data; - ContactGroupRef blockedList; - ppro->GetHardwiredContactGroup(ContactGroup::CONTACTS_BLOCKED_BY_ME, blockedList); - - ContactRefs contacts; - blockedList->GetContacts(contacts); - for (size_t i = 0; i < contacts.size(); i++) - { - auto contact = contacts[i]; - - contact->GetPropDisplayname(data); - ptrW name = ::mir_utf8decodeW(data); - - LVITEM lvi = {0}; - lvi.mask = LVIF_GROUPID | LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; - lvi.iItem = (int)i; - lvi.iGroupId = 1; - lvi.iImage = 0; - lvi.lParam = (LPARAM)contact.fetch(); - lvi.pszText = name; - int iRow = ListView_InsertItem(hwndList, &lvi); - - if (iRow != -1) - { - lvi.iItem = iRow; - lvi.mask = LVIF_IMAGE; - lvi.iSubItem = 1; - lvi.iImage = 1; - ListView_SetItem(hwndList, &lvi); - } - } - - ConversationRefs conversations; - blockedList->GetConversations(conversations); - for (size_t i = 0; i < conversations.size(); i++) - { - auto conversation = conversations[i]; - - uint type = conversation->GetUintProp(Conversation::P_TYPE); - if (type != Conversation::CONFERENCE) - continue; - - conversation->GetPropDisplayname(data); - ptrW name = ::mir_utf8decodeW(data); - - LVITEM lvi = {0}; - lvi.mask = LVIF_GROUPID | LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; - lvi.iItem = (int)i; - lvi.iGroupId = 2; - lvi.iImage = 0; - lvi.lParam = (LPARAM)conversation.fetch(); - lvi.pszText = name; - int iRow = ListView_InsertItem(hwndList, &lvi); - - if (iRow != -1) - { - lvi.iItem = iRow; - lvi.mask = LVIF_IMAGE; - lvi.iSubItem = 1; - lvi.iImage = 1; - ListView_SetItem(hwndList, &lvi); - } - } - - ::Utils_RestoreWindowPosition(hwndDlg, 0, MODULE, "IgnoreListWindow"); - } - break; - - case WM_NOTIFY: - switch(LOWORD(wParam)) - { - case IDC_BM_LIST: - if (((LPNMHDR)lParam)->code == NM_DBLCLK) - { - HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST); - int iItem = ListView_GetNextItem(hwndList, -1, LVNI_ALL | LVNI_SELECTED); - if (iItem < 0) break; - LVITEM lvi = {0}; - lvi.mask = LVIF_PARAM | LVIF_GROUPID; - lvi.stateMask = -1; - lvi.iItem = iItem; - if (ListView_GetItem(hwndList, &lvi)) - { - SEString data; - if (lvi.iGroupId == 1) - { - CContact *contact = (CContact *)lvi.lParam; - - contact->GetIdentity(data); - ptrW sid(::mir_utf8decodeW(data)); - ::CallService(MS_MSG_SENDMESSAGE, (WPARAM)ppro->GetContactBySid(sid), 0); - } - /*else if (lvi.iGroupId == 2) - { - CConversation *conversation = (CConversation *)lvi.lParam; - - conversation->GetPropIdentity(data); - ptrW cid(::mir_utf8decodeW(data)); - CSkypeProto::ReplaceSpecialChars(cid); - }*/ - } - } - } - break; - - case WM_COMMAND: - if (HIWORD( wParam ) == BN_CLICKED) - { - switch(LOWORD(wParam)) - { - case IDCANCEL: - ::Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "IgnoreListWindow"); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0)); - ::Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, 0)); - ::DestroyWindow(hwndDlg); - return TRUE; - } - } - break; - } - return FALSE; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_instances.cpp b/plugins/!Deprecated/Skype/src/skype_instances.cpp deleted file mode 100644 index 66b8447fbc..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_instances.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "skype.h" - -LIST CSkypeProto::instanceList(1, CSkypeProto::CompareProtos); - -int CSkypeProto::CompareProtos(const CSkypeProto *p1, const CSkypeProto *p2) -{ - return wcscmp(p1->m_tszUserName, p2->m_tszUserName); -} - -CSkypeProto* CSkypeProto::InitSkypeProto(const char* protoName, const wchar_t* userName) -{ - if (CSkypeProto::instanceList.getCount() > 0) - { - CSkypeProto::ShowNotification( - ::TranslateT("Skype protocol plugin only permits you to login to one account at a time. Adding multiple accounts is prohibited in the license agreement and standard distribution terms of SkypeKit."), - MB_ICONERROR); - return NULL; - } - - CSkypeProto *ppro = new CSkypeProto(protoName, userName); - - VARST profilename( _T("%miranda_profilename%")); - - if ( !ppro->StartSkypeRuntime((TCHAR *)profilename)) - { - CSkypeProto::ShowNotification(::TranslateT("Did not unpack SkypeKit.exe."), MB_ICONERROR); - return NULL; - } - - char *keyPair = ppro->LoadKeyPair(); - if (keyPair == NULL) - { - CSkypeProto::ShowNotification(::TranslateT("Initialization key corrupted or not valid."), MB_ICONERROR); - return NULL; - } - - TransportInterface::Status status = ppro->init(keyPair, "127.0.0.1", ppro->skypeKitPort, 0, 1); - if (status != TransportInterface::OK) - { - wchar_t message[256]; - ::mir_sntprintf(message, SIZEOF(message), ::TranslateT("SkypeKit did not initialize (%d)."), status); - CSkypeProto::ShowNotification(message, MB_ICONERROR); - return NULL; - } - - if ( !ppro->start()) - { - CSkypeProto::ShowNotification(TranslateT("SkypeKit did not start."), MB_ICONERROR); - return NULL; - } - - ::mir_free(keyPair); - - CSkypeProto::instanceList.insert(ppro); - - return ppro; -} - -int CSkypeProto::UninitSkypeProto(CSkypeProto* ppro) -{ - ppro->stop(); - - ppro->StopSkypeRuntime(); - - CSkypeProto::instanceList.remove(ppro); - delete ppro; - - return 0; -} - -void CSkypeProto::UninitInstances() -{ - instanceList.destroy(); -} - -CSkypeProto* CSkypeProto::GetContactInstance(MCONTACT hContact) -{ - char *proto = (char *)::CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0); - - if (proto == NULL) - return NULL; - - for (int i = 0; i < CSkypeProto::instanceList.getCount(); i++) - if ( !::strcmp(proto, CSkypeProto::instanceList[i]->m_szModuleName)) - return CSkypeProto::instanceList[i]; - - return NULL; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_menus.cpp b/plugins/!Deprecated/Skype/src/skype_menus.cpp deleted file mode 100644 index 99a794af1a..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_menus.cpp +++ /dev/null @@ -1,268 +0,0 @@ -#include "skype.h" - -HANDLE CSkypeProto::hChooserMenu; -HGENMENU CSkypeProto::contactMenuItems[CMI_MAX]; - -INT_PTR CSkypeProto::MenuChooseService(WPARAM wParam, LPARAM lParam) -{ - if (lParam) - *(void**)lParam = (void*)wParam; - - return 0; -} - -int CSkypeProto::OnPrebuildContactMenu(WPARAM wParam, LPARAM) -{ - MCONTACT hContact = (MCONTACT)wParam; - if ( !hContact) - return 0; - - if ( !this->IsOnline() || ::lstrcmpA(::GetContactProto(hContact), m_szModuleName)) - return 0; - - if ( !this->isChatRoom(hContact)) - { - bool ctrlPressed = (::GetKeyState(VK_CONTROL) & 0x8000) != 0; - - bool authNeed = this->getByte(hContact, "Auth", 0) > 0; - bool grantNeed = this->getByte(hContact, "Grant", 0) > 0; - - ::Menu_ShowItem(CSkypeProto::contactMenuItems[CMI_AUTH_REQUEST], ctrlPressed || authNeed); - ::Menu_ShowItem(CSkypeProto::contactMenuItems[CMI_AUTH_GRANT], ctrlPressed || grantNeed); - ::Menu_ShowItem(CSkypeProto::contactMenuItems[CMI_AUTH_REVOKE], ctrlPressed || (!grantNeed && !authNeed)); - ::Menu_ShowItem(CSkypeProto::contactMenuItems[CMI_HISTORY], TRUE); - - { - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - - ContactRef contact; - this->GetContact(sid, contact); - - bool isBlocked = false; - contact->IsMemberOfHardwiredGroup(ContactGroup::CONTACTS_BLOCKED_BY_ME, isBlocked); - - CLISTMENUITEM clmi = { sizeof(clmi) }; - clmi.cbSize = sizeof(CLISTMENUITEM); - clmi.flags = CMIM_FLAGS; - if (isBlocked) - { - clmi.flags |= CMIM_NAME | CMIM_ICON | CMIF_TCHAR; - clmi.icolibItem = CSkypeProto::GetSkinIconHandle("contact"); - clmi.ptszName = LPGENT("Unblock this person..."); - } - else - { - clmi.flags |= CMIM_NAME | CMIM_ICON | CMIF_TCHAR; - clmi.icolibItem = CSkypeProto::GetSkinIconHandle("block"); - clmi.ptszName = LPGENT("Block this person..."); - } - ::CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)CSkypeProto::contactMenuItems[CMI_BLOCK], (LPARAM)&clmi); - } - } - - return 0; -} - -template -INT_PTR GlobalService(WPARAM wParam, LPARAM lParam) -{ - CSkypeProto *ppro = CSkypeProto::GetContactInstance((MCONTACT)wParam); - return ppro ? (ppro->*Service)(wParam, lParam) : 0; -} - -int CSkypeProto::RequestAuth(WPARAM wParam, LPARAM lParam) -{ - return this->AuthRequest((MCONTACT)wParam, LPGENT("Hi! I'd like to add you to my contact list")); -} - -int CSkypeProto::GrantAuth(WPARAM wParam, LPARAM lParam) -{ - CContact::Ref contact; - MCONTACT hContact = (MCONTACT)wParam; - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - if (this->GetContact(sid, contact)) - { - if (contact->SetBuddyStatus(true)) - { - this->delSetting(hContact, "Auth"); - this->delSetting(hContact, "Grant"); - } - } - - return 0; -} - -int CSkypeProto::RevokeAuth(WPARAM wParam, LPARAM lParam) -{ - CContact::Ref contact; - MCONTACT hContact = (MCONTACT)wParam; - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - if (this->GetContact(sid, contact)) - { - if (contact->SetBuddyStatus(false)) - this->setByte(hContact, "Grant", 1); - this->contactList.remove_val(contact); - } - - return 0; -} - -int CSkypeProto::PrebuildContactMenu(WPARAM wParam, LPARAM lParam) -{ - for (int i = 0; i < SIZEOF(CSkypeProto::contactMenuItems); i++) - ::Menu_ShowItem(CSkypeProto::contactMenuItems[i], false); - - CSkypeProto* ppro = CSkypeProto::GetContactInstance((MCONTACT)wParam); - return (ppro) ? ppro->OnPrebuildContactMenu(wParam, lParam) : 0; -} - -void CSkypeProto::InitMenus() -{ - hChooserMenu = MO_CreateMenuObject("SkypeAccountChooser", LPGEN("Skype menu chooser"), 0, "Skype/MenuChoose"); - - ////////////////////////////////////////////////////////////////////////////////////// - // Contact menu initialization - - CLISTMENUITEM mi = { 0 }; - mi.cbSize = sizeof(CLISTMENUITEM); - mi.flags = CMIF_TCHAR | CMIF_NOTOFFLINE; - - // "Request authorization" - mi.pszService = MODULE"/RequestAuth"; - mi.ptszName = LPGENT("Request authorization"); - mi.position = -201001000 + CMI_AUTH_REQUEST; - mi.icolibItem = ::LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); - CSkypeProto::contactMenuItems[CMI_AUTH_REQUEST] = ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::RequestAuth>); - - // "Grant authorization" - mi.pszService = MODULE"/GrantAuth"; - mi.ptszName = LPGENT("Grant authorization"); - mi.position = -201001000 + CMI_AUTH_GRANT; - mi.icolibItem = ::LoadSkinnedIconHandle(SKINICON_AUTH_GRANT); - CSkypeProto::contactMenuItems[CMI_AUTH_GRANT] = ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::GrantAuth>); - - // "Revoke authorization" - mi.pszService = MODULE"/RevokeAuth"; - mi.ptszName = LPGENT("Revoke authorization"); - mi.position = -201001000 + CMI_AUTH_REVOKE; - mi.icolibItem = ::LoadSkinnedIconHandle(SKINICON_AUTH_REVOKE); - CSkypeProto::contactMenuItems[CMI_AUTH_REVOKE] = ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::RevokeAuth>); - - // "Block" - mi.pszService = MODULE"/Block"; - mi.ptszName = LPGENT("Block this person..."); - mi.position = -200001000 + CMI_BLOCK; - mi.icolibItem = CSkypeProto::GetSkinIconHandle("block"); - CSkypeProto::contactMenuItems[CMI_BLOCK] = ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::BlockCommand>); - - mi.pszService = MODULE"/SyncHistory"; - mi.ptszName = LPGENT("View old messages..."); - mi.flags = CMIF_TCHAR | CMIF_ROOTPOPUP; - mi.position = -200001000 + CMI_HISTORY; - mi.icolibItem = ::LoadSkinnedIconHandle(SKINICON_OTHER_HISTORY); - CSkypeProto::contactMenuItems[CMI_HISTORY] = ::Menu_AddContactMenuItem(&mi); - - mi.flags &= ~CMIF_ROOTPOPUP; - - mi.pszService = MODULE"/SyncHistoryDay"; - mi.ptszName = LPGENT("for last day"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 100; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncLastDayHistoryCommand>); - - mi.pszService = MODULE"/SyncHistoryWeek"; - mi.ptszName = LPGENT("for last week"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 1001; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncLastWeekHistoryCommand>); - - mi.pszService = MODULE"/SyncHistoryMonth"; - mi.ptszName = LPGENT("for last month"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 102; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncLastMonthHistoryCommand>); - - mi.pszService = MODULE"/SyncHistory3Month"; - mi.ptszName = LPGENT("for last 3 month"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 103; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncLast3MonthHistoryCommand>); - - mi.pszService = MODULE"/SyncHistoryYear"; - mi.ptszName = LPGENT("for last year"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 104; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncLastYearHistoryCommand>); - - mi.pszService = MODULE"/SyncHistoryAllTime"; - mi.ptszName = LPGENT("for all time"); - mi.flags |= CMIF_CHILDPOPUP; - mi.position = -200001000 + CMI_HISTORY + 105; - mi.hParentMenu = CSkypeProto::contactMenuItems[CMI_HISTORY]; - ::Menu_AddContactMenuItem(&mi); - ::CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::SyncAllTimeHistoryCommand>); -} - -void CSkypeProto::UninitMenus() -{ -} - -void CSkypeProto::OnInitStatusMenu() -{ - char text[ 200 ]; - strcpy(text, m_szModuleName); - char* tDest = text + strlen(text); - - CLISTMENUITEM mi = { sizeof(mi) }; - mi.pszService = text; - - HGENMENU hSkypeRoot = ::MO_GetProtoRootMenu(m_szModuleName); - if (!hSkypeRoot) - { - mi.ptszName = m_tszUserName; - mi.position = -1999901006; - mi.hParentMenu = HGENMENU_ROOT; - mi.flags = CMIF_ROOTPOPUP | CMIF_TCHAR | CMIF_KEEPUNTRANSLATED; - mi.icolibItem = CSkypeProto::GetSkinIconHandle("main"); - hSkypeRoot = m_hMenuRoot = ::Menu_AddProtoMenuItem(&mi); - } - else - { - if (m_hMenuRoot) - ::CallService(MO_REMOVEMENUITEM, (WPARAM)m_hMenuRoot, 0); - m_hMenuRoot = NULL; - } - - mi.hParentMenu = hSkypeRoot; - mi.flags = CMIF_CHILDPOPUP | CMIF_TCHAR; - - // Invite Command - ::strcpy(tDest, "/CreateChatRoom"); - this->CreateProtoService(tDest, &CSkypeProto::CreateChatRoomCommand); - mi.ptszName = LPGENT("Create conference"); - mi.position = 200000 + SMI_CHAT_CREATE; - mi.icolibItem = CSkypeProto::GetSkinIconHandle("conference"); - ::Menu_AddProtoMenuItem(&mi); - - // Invite Command - ::strcpy(tDest, "/BlockedeList"); - this->CreateProtoService(tDest, &CSkypeProto::OpenBlockedListCommand); - mi.ptszName = LPGENT("Blocked contacts"); - mi.position = 200000 + SMI_IGNORE_LIST; - mi.icolibItem = CSkypeProto::GetSkinIconHandle("block"); - ::Menu_AddProtoMenuItem(&mi); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_messages.cpp b/plugins/!Deprecated/Skype/src/skype_messages.cpp deleted file mode 100644 index b212959f98..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_messages.cpp +++ /dev/null @@ -1,315 +0,0 @@ -#include "skype.h" - -int CSkypeProto::OnMessagePreCreate(WPARAM, LPARAM lParam) -{ - MessageWindowEvent *evt = (MessageWindowEvent *)lParam; - if ( strcmp(GetContactProto(evt->hContact), this->m_szModuleName)) - return 0; - - MessageRef message(evt->seq); - SEBinary guid; - if (message->GetPropGuid(guid)) - { - CMessage::TYPE messageType; - message->GetPropType(messageType); - - if (messageType == CMessage::POSTED_TEXT) - { - evt->dbei->pBlob = (PBYTE)::mir_realloc(evt->dbei->pBlob, evt->dbei->cbBlob + guid.size()); - ::memcpy((char *)&evt->dbei->pBlob[evt->dbei->cbBlob], guid.data(), guid.size()); - evt->dbei->cbBlob += (DWORD)guid.size(); - } - else if (messageType == CMessage::POSTED_EMOTE) - { - evt->dbei->pBlob = (PBYTE)::mir_realloc(evt->dbei->pBlob, evt->dbei->cbBlob + guid.size() - 4); - ::memcpy((char *)&evt->dbei->pBlob[0], (char *)&evt->dbei->pBlob[4], evt->dbei->cbBlob - 4); - ::memcpy((char *)&evt->dbei->pBlob[evt->dbei->cbBlob - 4], guid.data(), guid.size()); - evt->dbei->cbBlob += (DWORD)guid.size() - 4; - - evt->dbei->eventType = SKYPE_DB_EVENT_TYPE_EMOTE; - } - } - - return 1; -} - -void CSkypeProto::OnMessageReceived(const ConversationRef &conversation, const MessageRef &message) -{ - SEString data; - - Message::TYPE messageType; - message->GetPropType(messageType); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - - message->GetPropBodyXml(data); - ptrA text( CSkypeProto::RemoveHtml(data)); - - ContactRef author; - message->GetPropAuthor(data); - this->GetContact(data, author); - - MCONTACT hContact = this->AddContact(author, true); - this->UserIsTyping(hContact, PROTOTYPE_SELFTYPING_OFF); - - SEBinary guid; - message->GetPropGuid(guid); - ReadMessageParam param = { guid, messageType }; - - //if (status != CMessage::UNCONSUMED_NORMAL) - if (this->IsMessageInDB(hContact, timestamp, guid)) - return; - - DWORD flags = PREF_UTF; - if (status != CMessage::UNCONSUMED_NORMAL) - flags |= PREF_CREATEREAD; - - PROTORECVEVENT recv = { 0 }; - recv.flags = flags; - recv.lParam = (LPARAM)¶m; - recv.timestamp = timestamp; - recv.szMessage = ::mir_strdup(text); - ::ProtoChainRecvMsg(hContact, &recv); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -void CSkypeProto::OnMessageSent(const ConversationRef &conversation, const MessageRef &message) -{ - SEString data; - - CMessage::TYPE messageType; - message->GetPropType(messageType); - - uint timestamp; - message->GetPropTimestamp(timestamp); - - CMessage::SENDING_STATUS sstatus; - message->GetPropSendingStatus(sstatus); - - CMessage::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - - message->GetPropBodyXml(data); - ptrA text( CSkypeProto::RemoveHtml(data)); - - CParticipant::Refs participants; - conversation->GetParticipants(participants, CConversation::OTHER_CONSUMERS); - participants[0]->GetPropIdentity(data); - - ptrW sid(::mir_utf8decodeW(data)); - - MCONTACT hContact = this->GetContactBySid(sid); - this->SendBroadcast( - hContact, - ACKTYPE_MESSAGE, - sstatus == CMessage::FAILED_TO_SEND ? ACKRESULT_FAILED : ACKRESULT_SUCCESS, - (HANDLE)message->getOID(), 0); - - SEBinary guid; - message->GetPropGuid(guid); - - this->RaiseMessageSentEvent( - hContact, - timestamp, - guid, - text, - status == CMessage::UNCONSUMED_NORMAL); -} - -void CSkypeProto::OnMessageEvent(const ConversationRef &conversation, const MessageRef &message) -{ - CMessage::TYPE messageType; - message->GetPropType(messageType); - - switch (messageType) - { - case CMessage::POSTED_EMOTE: - case CMessage::POSTED_TEXT: - { - SEString author; - message->GetPropAuthor(author); - - if (::wcsicmp(ptrW(::mir_utf8decodeW(author)), this->login) == 0) - this->OnMessageSent(conversation, message); - else - this->OnMessageReceived(conversation, message); - } - break; - - case CMessage::STARTED_LIVESESSION: - { - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::UNCONSUMED_NORMAL) - break; - - uint timestamp; - message->GetPropTimestamp(timestamp); - - SEString identity; - message->GetPropAuthor(identity); - - CContact::Ref author; - this->GetContact(identity, author); - - MCONTACT hContact = this->AddContact(author); - - char *message = ::mir_utf8encode(::Translate("Incoming call started")); - - this->AddDBEvent( - hContact, - SKYPE_DB_EVENT_TYPE_CALL, - timestamp, - DBEF_UTF, - (DWORD)::strlen(message) + 1, - (PBYTE)message); - //temp popup - /*TCHAR popuptext[MAX_PATH]; - mir_sntprintf(popuptext, SIZEOF(popuptext), TranslateT("Incoming call from %s. Use offical skype for calling."), ptrW(::mir_utf8decodeW(identity))); - this->ShowNotification(popuptext);*/ - } - break; - - case CMessage::ENDED_LIVESESSION: - { - Message::CONSUMPTION_STATUS status; - message->GetPropConsumptionStatus(status); - if (status != Message::UNCONSUMED_NORMAL) - break; - - uint timestamp; - message->GetPropTimestamp(timestamp); - - SEString identity; - message->GetPropAuthor(identity); - - CContact::Ref author; - this->GetContact(identity, author); - - MCONTACT hContact = this->AddContact(author); - - char *message = ::mir_utf8encode(::Translate("Incoming call finished")); - - this->AddDBEvent( - hContact, - SKYPE_DB_EVENT_TYPE_CALL, - timestamp, - DBEF_UTF, - (DWORD)::strlen(message) + 1, - (PBYTE)message); - } - break; - } -} - -void CSkypeProto::SyncMessageHystory(const ConversationRef &conversation, const time_t timestamp) -{ - if (conversation) - { - conversation->SetConsumedHorizon(timestamp); - MessageRefs oldMessages, newMessages; - conversation->GetLastMessages(oldMessages, newMessages, timestamp); - for (size_t i = 0; i < oldMessages.size(); i++) - this->OnMessageEvent(conversation, oldMessages[i]); - for (size_t i = 0; i < newMessages.size(); i++) - this->OnMessageEvent(conversation, newMessages[i]); - conversation->SetConsumedHorizon(time(NULL)); - } -} - -void CSkypeProto::SyncHistoryCommand(MCONTACT hContact, time_t timestamp) -{ - if (hContact) - { - ptrW sid( ::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - - ConversationRef conversation; - if ( !this->isChatRoom(hContact)) - { - SEStringList target; - target.append((char *)ptrA(::mir_utf8encodeW(sid))); - this->GetConversationByParticipants(target, conversation); - } - else - this->GetConversationByIdentity((char *)ptrA(::mir_utf8encodeW(sid)), conversation); - - if (conversation) - { - this->SyncMessageHystory(conversation, timestamp); - CSkypeProto::ShowNotification(TranslateT("history synchronization"), TranslateT("Done!"), MB_ICONINFORMATION, hContact); - } - } -} - -int CSkypeProto::SyncLastDayHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - time_t timestamp = time(NULL); - timestamp -= 60*60*24; - this->SyncHistoryCommand((MCONTACT)wParam, timestamp); - return 0; -} - -int CSkypeProto::SyncLastWeekHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - time_t timestamp = time(NULL); - timestamp -= 60*60*24*7; - this->SyncHistoryCommand((MCONTACT)wParam, timestamp); - return 0; -} - -int CSkypeProto::SyncLastMonthHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - time_t timestamp = time(NULL); - timestamp -= 60*60*24*30; - this->SyncHistoryCommand((MCONTACT)wParam, timestamp); - return 0; -} - -int CSkypeProto::SyncLast3MonthHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - time_t timestamp = time(NULL); - timestamp -= 60*60*24*90; - this->SyncHistoryCommand((MCONTACT)wParam, timestamp); - return 0; -} - -int CSkypeProto::SyncLastYearHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - time_t timestamp = time(NULL); - timestamp -= 60*60*24*365; - this->SyncHistoryCommand((MCONTACT)wParam, timestamp); - return 0; -} - -int CSkypeProto::SyncAllTimeHistoryCommand(WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = (MCONTACT)wParam; - if (hContact) - { - ptrW sid( ::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - - ConversationRef conversation; - if ( !this->isChatRoom(hContact)) - { - SEStringList target; - target.append((char *)ptrA(::mir_utf8encodeW(sid))); - this->GetConversationByParticipants(target, conversation); - } - else - this->GetConversationByIdentity((char *)ptrA(::mir_utf8encodeW(sid)), conversation); - - if (conversation) - { - uint timestamp; - conversation->GetPropCreationTimestamp(timestamp); - this->SyncMessageHystory(conversation, timestamp); - CSkypeProto::ShowNotification(TranslateT("history synchronization"), TranslateT("Done!"), MB_ICONINFORMATION, hContact); - } - } - return 0; -} diff --git a/plugins/!Deprecated/Skype/src/skype_netlib.cpp b/plugins/!Deprecated/Skype/src/skype_netlib.cpp deleted file mode 100644 index 6a958d0217..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_netlib.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "skype.h" - -void CSkypeProto::InitNetLib() -{ - wchar_t name[128]; - ::mir_sntprintf(name, SIZEOF(name), ::TranslateT("%s connection"), this->m_tszUserName); - - NETLIBUSER nlu = {0}; - nlu.cbSize = sizeof(nlu); - nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE; - nlu.ptszDescriptiveName = name; - nlu.szSettingsModule = this->m_szModuleName; - this->m_hNetlibUser = (HANDLE)::CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); - - this->debugLogW(L"Setting protocol/module name to '%s'", (TCHAR*)_A2T(m_szModuleName)); -} - -void CSkypeProto::UninitNetLib() -{ - ::Netlib_CloseHandle(this->m_hNetlibUser); - this->m_hNetlibUser = NULL; -} diff --git a/plugins/!Deprecated/Skype/src/skype_own_info.cpp b/plugins/!Deprecated/Skype/src/skype_own_info.cpp deleted file mode 100644 index f56178229a..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_own_info.cpp +++ /dev/null @@ -1,136 +0,0 @@ -#include "skype.h" - -void __cdecl CSkypeProto::LoadOwnInfo(void *) -{ - /*ptrW nick( ::db_get_wsa(NULL, this->m_szModuleName, "Nick")); - if ( !nick) - { - SEString data; - this->account->GetPropFullname(data); - - if (data.length() == 0) - { - this->account->GetPropSkypename(data); - } - - nick = ::mir_utf8decodeW(data); - ::db_set_ws(NULL, this->m_szModuleName, "Nick", nick); - }*/ - - this->UpdateProfile(this->account.fetch()); -} - -INT_PTR __cdecl CSkypeProto::SetMyNickName(WPARAM wParam, LPARAM lParam) -{ - wchar_t *nick = (wParam & SMNN_UNICODE) ? ::mir_wstrdup((wchar_t *)lParam) : ::mir_a2t((char*) lParam); - - //::db_set_ws(NULL, this->m_szModuleName, "Nick", nick); - - if ( !this->IsOnline()) - return 0; - - this->account->SetStrProperty(Account::P_FULLNAME, (char *)ptrA(::mir_utf8encodeW(nick))); - - return 0; -} - -void CSkypeProto::SaveOwnInfoToServer(HWND hwndPage, int iPage) -{ - wchar_t text[2048]; - - switch (iPage) - { - // Page 0: Personal - case 0: - { - ::GetDlgItemText(hwndPage, IDC_FULLNAME, text, SIZEOF(text)); - if (this->account->SetStrProperty(Account::P_FULLNAME, (char *)ptrA(::mir_utf8encodeW(text)))) - this->setTString("Nick", text); - - ::GetDlgItemText(hwndPage, IDC_MOOD, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_MOOD_TEXT, (char *)ptrA(::mir_utf8encodeW(text))); - - ::GetDlgItemText(hwndPage, IDC_ABOUT, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_ABOUT, (char *)ptrA(::mir_utf8encodeW(text))); - - ::GetDlgItemText(hwndPage, IDC_HOMEPAGE, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_HOMEPAGE, (char *)ptrA(::mir_utf8encodeW(text))); - - this->account->SetIntProperty( - Account::P_GENDER, - ::SendMessage(::GetDlgItem(hwndPage, IDC_GENDER), CB_GETCURSEL, 0, 0)); - - char day[3], month[3], year[5], date[9]; - ::GetDlgItemTextA(hwndPage, IDC_BIRTH_DAY, day, 3); - ::GetDlgItemTextA(hwndPage, IDC_BIRTH_MONTH, month, 3); - ::GetDlgItemTextA(hwndPage, IDC_BIRTH_YEAR, year, 5); - ::mir_snprintf(date, 9, "%s%s%s", year, month, day); - int value = atoi(date); - this->account->SetIntProperty(Account::P_BIRTHDAY, value); - - int lang = ::SendMessage(GetDlgItem(hwndPage, IDC_LANGUAGE), CB_GETCURSEL, 0, 0); - if (lang != -1) { - std::wstring key = *(std::wstring *)SendMessage(GetDlgItem(hwndPage, IDC_LANGUAGE), CB_GETITEMDATA, lang, 0); - this->account->SetStrProperty( - Account::P_LANGUAGES, - (char *)ptrA(::mir_utf8encodeW(key.c_str()))); - } - } - break; - - // Page 1: Contacts - case 1: - wchar_t emails[2048]; - ::GetDlgItemText(hwndPage, IDC_EMAIL1, emails, SIZEOF(emails)); - ::GetDlgItemText(hwndPage, IDC_EMAIL2, text, SIZEOF(text)); - if (::wcslen(text) > 0) - { - ::wcscat(emails, L" "); - ::wcscat(emails, text); - } - ::GetDlgItemText(hwndPage, IDC_EMAIL3, text, SIZEOF(text)); - if (::wcslen(text) > 0) - { - ::wcscat(emails, L" "); - ::wcscat(emails, text); - } - this->account->SetStrProperty(Account::P_EMAILS, (char *)ptrA(::mir_utf8encodeW(emails))); - - ::GetDlgItemText(hwndPage, IDC_MOBPHONE, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_PHONE_MOBILE, (char *)ptrA(::mir_utf8encodeW(text))); - - ::GetDlgItemText(hwndPage, IDC_HOMEPHONE, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_PHONE_HOME, (char *)ptrA(::mir_utf8encodeW(text))); - - ::GetDlgItemText(hwndPage, IDC_OFFICEPHONE, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_PHONE_OFFICE, (char *)ptrA(::mir_utf8encodeW(text))); - - break; - - // Page 2: Home - case 2: - ::GetDlgItemText(hwndPage, IDC_CITY, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_CITY, (char *)ptrA(::mir_utf8encodeW(text))); - - ::GetDlgItemText(hwndPage, IDC_STATE, text, SIZEOF(text)); - this->account->SetStrProperty(Account::P_PROVINCE, (char *)ptrA(::mir_utf8encodeW(text))); - - int i = ::SendMessage(::GetDlgItem(hwndPage, IDC_COUNTRY), CB_GETCURSEL, 0, 0); - char *iso = (char *)::SendMessage(::GetDlgItem(hwndPage, IDC_COUNTRY), CB_GETITEMDATA, i, 0); - this->account->SetStrProperty(Account::P_COUNTRY, iso); - - HWND ctrl = ::GetDlgItem(hwndPage, IDC_TIMEZONE); - i = ::SendMessage(ctrl, CB_GETCURSEL, 0, 0); - HANDLE hTimeZone = (HANDLE)::SendMessage(ctrl, CB_GETITEMDATA, i, 0); - - SYSTEMTIME my_st, utc_ts; - tmi.getTimeZoneTime(hTimeZone, &my_st); - tmi.getTimeZoneTime(UTC_TIME_HANDLE, &utc_ts); - - uint diff_to_UTC_in_seconds = (my_st.wHour - utc_ts.wHour) * 3600 + (my_st.wMinute - utc_ts.wMinute) * 60; - uint timezone = 24*3600 + diff_to_UTC_in_seconds; - this->account->SetIntProperty(Account::P_TIMEZONE, timezone); - - break; - } -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_profile.cpp b/plugins/!Deprecated/Skype/src/skype_profile.cpp deleted file mode 100644 index 0a6686303d..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_profile.cpp +++ /dev/null @@ -1,321 +0,0 @@ -#include "skype.h" -#include - -void CSkypeProto::UpdateProfileAvatar(SEObject *obj, MCONTACT hContact) -{ - uint newTS = obj->GetUintProp(/* *::P_AVATAR_TIMESTAMP */ 182); - //if (!newTS) return; //uncomment when skypekit will be work correctly - - DWORD oldTS = this->getDword(hContact, "AvatarTS", 0); - - ptrW path( this->GetContactAvatarFilePath(hContact)); - bool isAvatarFileExists = CSkypeProto::FileExists(path); - if (newTS > oldTS || !isAvatarFileExists) - { - SEBinary data = obj->GetBinProp(/* *::P_AVATAR_IMAGE */ 37); - if (data.size() > 0) - { - FILE *fp = ::_wfopen(path, L"wb"); - if (fp) - { - ::fwrite(data.data(), sizeof(char), data.size(), fp); - ::fclose(fp); - - this->setDword(hContact, "AvatarTS", newTS); - - if (hContact) - { - PROTO_AVATAR_INFORMATIONW pai = { sizeof(pai) }; - pai.format = PA_FORMAT_JPEG; - pai.hContact = hContact; - ::wcscpy(pai.filename, path); - - this->SendBroadcast(hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, (HANDLE)&pai, 0); - } - else - { - BYTE digest[16]; - ::mir_md5_hash((BYTE*)data.data(), (int)data.size(), digest); - ::db_set_blob(hContact, this->m_szModuleName, "AvatarHash", digest, 16); - - ::CallService(MS_AV_SETMYAVATART, (WPARAM)m_szModuleName, (LPARAM)path); - } - } - } - else if (isAvatarFileExists) - { - ::_wremove(path); - this->SendBroadcast(hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, NULL, 0); - } - } -} - -void CSkypeProto::UpdateProfileAboutText(SEObject *obj, MCONTACT hContact) -{ - ptrW aboutText(::mir_utf8decodeW(obj->GetStrProp(/* *::P_ABOUT */ 18))); - if ( !::wcslen(aboutText)) - this->delSetting(hContact, "About"); - else - this->setTString(hContact, "About", aboutText); -} - -void CSkypeProto::UpdateProfileBirthday(SEObject *obj, MCONTACT hContact) -{ - uint data = obj->GetUintProp(/* *::P_BIRTHDAY */ 7); - if (data > 0) - { - TCHAR date[20]; - _itot_s(data, date, 10); - - INT day, month, year; - _stscanf(date, _T("%04d%02d%02d"), &year, &month, &day); - - SYSTEMTIME sToday = {0}; - GetLocalTime(&sToday); - - if (sToday.wYear > year) return; - else if(sToday.wYear == year && sToday.wMonth > month) return; - else if(sToday.wYear == year && sToday.wMonth == month && sToday.wDay >= day) return; - - this->setByte(hContact, "BirthDay", day); - this->setByte(hContact, "BirthMonth", month); - this->setWord(hContact, "BirthYear", year); - - int nAge = sToday.wYear - year; - if (sToday.wMonth < month || (sToday.wMonth == month && sToday.wDay < day)) - nAge--; - if (nAge) - this->setWord(hContact, "Age", (WORD)nAge ); - } - else - { - this->delSetting(hContact, "BirthDay"); - this->delSetting(hContact, "BirthMonth"); - this->delSetting(hContact, "BirthYear"); - this->delSetting(hContact, "Age"); - } -} - -void CSkypeProto::UpdateProfileCity(SEObject *obj, MCONTACT hContact) -{ - ptrW city(::mir_utf8decodeW(obj->GetStrProp(/* *::P_CITY */ 12))); - if ( !::wcslen(city)) - this->delSetting(hContact, "City"); - else - this->setTString(hContact, "City", city); -} - -void CSkypeProto::UpdateProfileCountry(SEObject *obj, MCONTACT hContact) -{ - char *country; - ptrA isocode(::mir_strdup(obj->GetStrProp(/* *::P_COUNTRY */ 10))); - if ( !::strlen(isocode)) - this->delSetting(hContact, "Country"); - else - { - country = (char *)CallService(MS_UTILS_GETCOUNTRYBYISOCODE, (WPARAM)isocode, 0); - this->setTString(hContact, "Country", _A2T(country)); - } -} - -void CSkypeProto::UpdateProfileEmails(SEObject *obj, MCONTACT hContact) -{ - ptrW emails(::mir_utf8decodeW(obj->GetStrProp(/* *::P_EMAILS */ 16))); - if (::wcscmp(emails, L"") == 0) - { - this->delSetting(hContact, "e-mail0"); - this->delSetting(hContact, "e-mail1"); - this->delSetting(hContact, "e-mail2"); - } - else - { - StringList emls = emails; - for (size_t i = 0; i < emls.size(); i++) - { - std::stringstream ss; - ss << "e-mail" << i; - std::string key = ss.str(); - - this->setTString(hContact, key.c_str(), emls[i]); - } - } -} - -void CSkypeProto::UpdateProfileFullName(SEObject *obj, MCONTACT hContact) -{ - ptrW fullname(::mir_utf8decodeW(obj->GetStrProp(/* *::P_FULLNAME */ 5))); - if ( !::wcslen(fullname)) - { - this->delSetting(hContact, "FirstName"); - this->delSetting(hContact, "LastName"); - } - else - { - StringList names = fullname; - - this->setTString(hContact, "FirstName", names[0]); - if (names.size() > 1) - this->setTString(hContact, "LastName", names[1]); - } -} - -void CSkypeProto::UpdateProfileGender(SEObject *obj, MCONTACT hContact) -{ - uint data = obj->GetUintProp(/* *::P_GENDER */ 8); - if (data) - this->setByte(hContact, "Gender", (BYTE)(data == 1 ? 'M' : 'F')); - else - this->delSetting(hContact, "Gender"); -} - -void CSkypeProto::UpdateProfileHomepage(SEObject *obj, MCONTACT hContact) -{ - ptrW homepage(::mir_utf8decodeW(obj->GetStrProp(/* *::P_HOMEPAGE */ 17))); - if (::wcscmp(homepage, L"") == 0) - this->delSetting(hContact, "Homepage"); - else - this->setTString(hContact, "Homepage", homepage); -} - -void CSkypeProto::UpdateProfileLanguages(SEObject *obj, MCONTACT hContact) -{ - ptrW isocodes(::mir_utf8decodeW(obj->GetStrProp(/* *::P_LANGUAGES */ 9))); - - this->delSetting(hContact, "Language1"); - this->delSetting(hContact, "Language2"); - this->delSetting(hContact, "Language3"); - - StringList langs = isocodes; - for (size_t i = 0; i < langs.size(); i++) - { - if (CSkypeProto::languages.count(langs[i])) - { - std::stringstream ss; - ss << "Language" << i + 1; - std::string key = ss.str(); - std::wstring val = CSkypeProto::languages[langs[i]]; - this->setTString(hContact, key.c_str(), val.c_str()); - } - } -} - -void CSkypeProto::UpdateProfileMobilePhone(SEObject *obj, MCONTACT hContact) -{ - ptrW phone(::mir_utf8decodeW(obj->GetStrProp(/* *::P_PHONE_MOBILE */ 15))); - if ( !::wcslen(phone)) - this->delSetting(hContact, "Cellular"); - else - this->setTString(hContact, "Cellular", phone); -} - -void CSkypeProto::UpdateProfileNick(SEObject *obj, MCONTACT hContact) -{ - ptrW nick; - if (hContact) - { - CContact *contact = (CContact *)obj; - nick = ::mir_utf8decodeW(contact->GetNick()); - } - else - nick = ::mir_utf8decodeW(obj->GetStrProp(Account::P_FULLNAME)); - - if ( !::wcslen(nick)) - this->delSetting(hContact, "Nick"); - else - this->setTString(hContact, "Nick", nick); -} - -void CSkypeProto::UpdateProfilePhone(SEObject *obj, MCONTACT hContact) -{ - ptrW phone(::mir_utf8decodeW(obj->GetStrProp(/* *::P_PHONE_MOBILE */ 13))); - if ( !::wcslen(phone)) - this->delSetting(hContact, "Phone"); - else - this->setTString(hContact, "Phone", phone); -} - -void CSkypeProto::UpdateProfileOfficePhone(SEObject *obj, MCONTACT hContact) -{ - ptrW phone(::mir_utf8decodeW(obj->GetStrProp(/* *::P_PHONE_OFFICE */ 14))); - if ( !::wcslen(phone)) - this->delSetting(hContact, "CompanyPhone"); - else - this->setTString(hContact, "CompanyPhone", phone); -} - -void CSkypeProto::UpdateProfileState(SEObject *obj, MCONTACT hContact) -{ - ptrW state(::mir_utf8decodeW(obj->GetStrProp(/* *::P_PROVINCE */ 11))); - if ( !::wcslen(state)) - this->delSetting(hContact, "State"); - else - this->setTString(hContact, "State", state); -} - -void CSkypeProto::UpdateProfileStatusMessage(SEObject *obj, MCONTACT hContact) -{ - ptrW statusMessage(::mir_utf8decodeW(obj->GetStrProp(/* *::P_MOOD_TEXT */ 26))); - if ( !::wcslen(statusMessage)) - this->delSetting(hContact, "XStatusMsg"); - else - this->setTString(hContact, "XStatusMsg", statusMessage); -} - -void CSkypeProto::UpdateProfileTimezone(SEObject *obj, MCONTACT hContact) -{ - LONG data = obj->GetUintProp(/* *::P_TIMEZONE */ 27); - if (data > 0) - { - LONG diffmin = (data - 24*3600) / 60; - wchar_t sign[2]; - if (diffmin < 0) - ::wcscpy(sign, L"-"); - else - ::wcscpy(sign, L"+"); - uint hours = ::abs((int)(diffmin / 60)); - uint mins = ::abs((int)(diffmin % 60)); - wchar_t timeshift[7]; - ::mir_sntprintf(timeshift, SIZEOF(timeshift), _T("%s%d:%02d"), sign, hours, mins); - - wchar_t *szMin = wcschr(timeshift, ':'); - int nTz = ::_wtoi(timeshift) * -2; - nTz += (nTz < 0 ? -1 : 1) * (szMin ? _ttoi( szMin + 1 ) / 30 : 0); - - this->setByte(hContact, "Timezone", (signed char)nTz); - } - else this->delSetting(hContact, "Timezone"); -} - -void CSkypeProto::UpdateProfile(SEObject *obj, MCONTACT hContact) -{ - this->debugLogW(L"Updating profile for %p", hContact); - this->UpdateProfileAvatar(obj, hContact); - - uint newTS = hContact ? obj->GetUintProp(Contact::P_PROFILE_TIMESTAMP) : obj->GetUintProp(Account::P_PROFILE_TIMESTAMP); - this->UpdateProfileAboutText(obj, hContact); - this->UpdateProfileBirthday(obj, hContact); - this->UpdateProfileCity(obj, hContact); - this->UpdateProfileCountry(obj, hContact); - this->UpdateProfileEmails(obj, hContact); - this->UpdateProfileFullName(obj, hContact); - this->UpdateProfileGender(obj, hContact); - this->UpdateProfileHomepage(obj, hContact); - this->UpdateProfileLanguages(obj, hContact); - this->UpdateProfileMobilePhone(obj, hContact); - this->UpdateProfileNick(obj, hContact); - this->UpdateProfilePhone(obj, hContact); - this->UpdateProfileOfficePhone(obj, hContact); - this->UpdateProfileState(obj, hContact); - this->UpdateProfileStatusMessage(obj, hContact); - this->UpdateProfileTimezone(obj, hContact); - - if (hContact) - { - ContactRef ref(obj->getOID()); - this->UpdateContactClient(hContact, ref); - this->UpdateContactLastEventDate(hContact, ref); - this->UpdateContactOnlineSinceTime(hContact, ref); - } - - this->setDword(hContact, "ProfileTS", newTS); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_proto.cpp b/plugins/!Deprecated/Skype/src/skype_proto.cpp deleted file mode 100644 index 8931a48498..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_proto.cpp +++ /dev/null @@ -1,672 +0,0 @@ -#include "skype.h" -#include "skype_chat.h" - -CSkypeProto::CSkypeProto(const char* protoName, const TCHAR* userName) : - PROTO(protoName, userName), - Skype(1), - skypeKitPort(8963), - chatRooms(5) -{ - this->rememberPassword = false; - - ::InitializeCriticalSection(&this->contact_search_lock); - - this->SetAllContactStatus(ID_STATUS_OFFLINE); - - DBEVENTTYPEDESCR dbEventType = { sizeof(dbEventType) }; - dbEventType.module = this->m_szModuleName; - dbEventType.flags = DETF_HISTORY | DETF_MSGWINDOW; - - dbEventType.eventType = SKYPE_DB_EVENT_TYPE_EMOTE; - dbEventType.descr = "Skype emote"; - ::CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType); - - dbEventType.eventType = SKYPE_DB_EVENT_TYPE_CONTACTS; - dbEventType.descr = "Skype contacts"; - dbEventType.eventIcon = CSkypeProto::GetSkinIconHandle("sendContacts"); - ::CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType); - - dbEventType.eventType = SKYPE_DB_EVENT_TYPE_CALL; - dbEventType.descr = "Skype call"; - dbEventType.eventIcon = CSkypeProto::GetSkinIconHandle("call"); - ::CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType); - - this->InitInstanceServiceList(); -} - -CSkypeProto::~CSkypeProto() -{ - ::DeleteCriticalSection(&this->contact_search_lock); - - ::mir_free(this->login); - if (this->password) - { - ::mir_free(this->password); - this->password = NULL; - } -} - -MCONTACT __cdecl CSkypeProto::AddToList(int flags, PROTOSEARCHRESULT* psr) -{ - CContact::Ref contact; - this->GetContact((char *)mir_ptr(::mir_utf8encodeW(psr->id)), contact); - return this->AddContact(contact); -} - -MCONTACT __cdecl CSkypeProto::AddToListByEvent(int flags, int iContact, HANDLE hDbEvent) -{ - DBEVENTINFO dbei = {0}; - dbei.cbSize = sizeof(dbei); - - /*if ((dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hDbEvent, 0)) != -1) - { - dbei.pBlob = (PBYTE)alloca(dbei.cbBlob); - if (CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei) == 0 && - !strcmp(dbei.szModule, m_szModuleName) && - (dbei.eventType == EVENTTYPE_AUTHREQUEST || dbei.eventType == EVENTTYPE_CONTACTS)) - { - char *nick = (char*)(dbei.pBlob + sizeof(DWORD) * 2); - char *firstName = nick + strlen(nick) + 1; - char *lastName = firstName + strlen(firstName) + 1; - char *skypeName = lastName + strlen(lastName) + 1; - return AddContactBySkypeName(::mir_a2u(skypeName), ::mir_a2u(nick), 0); - } - }*/ - return 0; -} - -int __cdecl CSkypeProto::Authorize(HANDLE hDbEvent) -{ - if (this->IsOnline() && hDbEvent) - { - MCONTACT hContact = this->GetContactFromAuthEvent(hDbEvent); - if (hContact == INVALID_CONTACT_ID) - return 1; - - return CSkypeProto::GrantAuth(hContact, NULL); - } - - return 1; -} - -int __cdecl CSkypeProto::AuthDeny(HANDLE hDbEvent, const TCHAR* szReason) -{ - if (this->IsOnline()) - { - MCONTACT hContact = this->GetContactFromAuthEvent(hDbEvent); - if (hContact == INVALID_CONTACT_ID) - return 1; - - return CSkypeProto::RevokeAuth(hContact, NULL); - } - - return 1; -} - -int __cdecl CSkypeProto::AuthRecv(MCONTACT hContact, PROTORECVEVENT* pre) -{ - DWORD flags = 0; - - if (pre->flags & PREF_CREATEREAD) - flags |= DBEF_READ; - - if (pre->flags & PREF_UTF) - flags |= DBEF_UTF; - - this->AddDBEvent( - hContact, - EVENTTYPE_AUTHREQUEST, - pre->timestamp, - flags, - pre->lParam, - (PBYTE)pre->szMessage); - - return 0; -} - -int __cdecl CSkypeProto::AuthRequest(MCONTACT hContact, const TCHAR* szMessage) -{ - if (this->IsOnline() && hContact) - { - CContact::Ref contact; - SEString sid(_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - if (this->GetContact(sid, contact)) - { - contact->SetBuddyStatus(Contact::AUTHORIZED_BY_ME); - contact->SendAuthRequest(::mir_utf8encodeW(szMessage)); - } - - return 0; - } - - return 1; -} - -HANDLE __cdecl CSkypeProto::FileAllow(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szPath ) -{ - uint oid = (uint)hTransfer; - - this->debugLogW(L"Incoming file transfer is accepted"); - - bool success; - wchar_t fullPath[MAX_PATH] = {0}; - - SEString data; - MessageRef msgRef(oid); - TransferRefs transfers; - msgRef->GetTransfers(transfers); - for (uint i = 0; i < transfers.size(); i++) - { - auto transfer = transfers[i]; - transfer->GetPropFilename(data); - ptrW name(::mir_utf8decodeW(data)); - ::mir_sntprintf(fullPath, MAX_PATH, L"%s%s", szPath, name); - - auto fOid = transfer->getOID(); - FileTransferParam ftp = this->transferts[oid]; - - //PROTOFILETRANSFERSTATUS pfts = { sizeof(pfts) }; - //pfts.hContact = hContact; - //pfts.flags = PFTS_UNICODE | PFTS_RECEIVING; - //pfts.ptszFiles = ftp.pfts.ptszFiles; - //pfts.totalFiles = ftp.pfts.totalFiles; - //pfts.currentFileNumber = i; - //pfts.totalBytes = ftp.files[fOid].size; - //pfts.totalProgress = ftp.files[fOid].transfered; - //pfts.tszWorkingDir = mir_wstrdup(szPath); - //pfts.currentFileNumber = 0; - //pfts.tszCurrentFile = mir_wstrdup(fullPath); - ////pfts.tszCurrentFile = ::mir_utf8decodeW(data); - //pfts.currentFileSize = ftp.files[fOid].size; - //pfts.currentFileProgress = ftp.files[fOid].transfered; - - //if ( !ProtoBroadcastAck(hContact, ACKTYPE_FILE, ACKRESULT_FILERESUME, (HANDLE)oid, (LPARAM)&pfts)) - if ( !transfer->Accept((char *)ptrA(::mir_utf8encodeW(fullPath)), success) || !success) - { - this->debugLogW(L"Cannot accept file transfer"); - this->transferList.remove_val(transfer); - } - } - - return hTransfer; -} - -int __cdecl CSkypeProto::FileCancel(MCONTACT hContact, HANDLE hTransfer ) -{ - uint oid = (uint)hTransfer; - - MessageRef msgRef(oid); - TransferRefs transfers; - Transfer::STATUS transferStatus; - msgRef->GetTransfers(transfers); - for (uint i = 0; i < transfers.size(); i++) - { - auto transfer = transfers[i]; - transfer->GetPropStatus(transferStatus); - if (transferStatus <= Transfer::CANCELLED && this->transferList.contains(transfer)) - { - if ( !transfer->Cancel()) - this->debugLogW(L"Incoming file transfer is cancelled"); - this->transferList.remove_val(transfer); - } - } - this->transferts.erase(this->transferts.find(oid)); - - return 1; -} - -int __cdecl CSkypeProto::FileDeny(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szReason ) -{ - uint oid = (uint)hTransfer; - - MessageRef msgRef(oid); - TransferRefs transfers; - Transfer::STATUS transferStatus; - msgRef->GetTransfers(transfers); - for (uint i = 0; i < transfers.size(); i++) - { - auto transfer = transfers[i]; - transfer->GetPropStatus(transferStatus); - if (transferStatus <= Transfer::CANCELLED && this->transferList.contains(transfer)) - { - if ( !transfer->Cancel()) - this->debugLogW(L"Incoming file transfer is denied"); - this->transferList.remove_val(transfer); - } - } - this->transferts.erase(this->transferts.find(oid)); - - return 1; -} - -int __cdecl CSkypeProto::FileResume( HANDLE hTransfer, int* action, const TCHAR** szFilename ) -{ - if ( !this->IsOnline()) - return 1; - - uint oid = (uint)hTransfer; - - //auto fOid = transfers[i]->getOID(); - FileTransferParam ftp = this->transferts[oid]; - - MessageRef msgRef(oid); - TransferRefs transfers; - msgRef->GetTransfers(transfers); - for (uint i = 0; i < transfers.size(); i++){} - - switch (*action) - { - case FILERESUME_SKIP: - /*if (ft->p2p_appID != 0) - p2p_sendStatus(ft, 603); - else - msnftp_sendAcceptReject (ft, false);*/ - break; - - case FILERESUME_RESUME: - //replaceStrT(ft->std.tszCurrentFile, *szFilename); - break; - - case FILERESUME_RENAME: - //replaceStrT(ft->std.tszCurrentFile, *szFilename); - break; - - default: - /*bool fcrt = ft->create() != -1; - if (ft->p2p_appID != 0) - { - if (fcrt) - p2p_sendFeedStart(ft); - - p2p_sendStatus(ft, fcrt ? 200 : 603); - } - else - msnftp_sendAcceptReject (ft, fcrt);*/ - - //ProtoBroadcastAck(ft->std.hContact, ACKTYPE_FILE, ACKRESULT_INITIALISING, ft, 0); - break; - } - - return 0; -} - -DWORD_PTR __cdecl CSkypeProto:: GetCaps(int type, MCONTACT hContact) -{ - switch(type) - { - case PFLAGNUM_1: - return PF1_IM | PF1_FILE | PF1_BASICSEARCH | PF1_ADDSEARCHRES | PF1_SEARCHBYEMAIL | PF1_SEARCHBYNAME | - PF1_AUTHREQ | PF1_CHAT | PF1_SERVERCLIST | PF1_CONTACT/* | PF1_ADDSEARCHRES*/; - case PFLAGNUM_2: - case PFLAGNUM_3: - return PF2_ONLINE | PF2_SHORTAWAY | PF2_HEAVYDND | PF2_INVISIBLE | PF2_ONTHEPHONE; - case PFLAGNUM_4: - return PF4_FORCEAUTH | PF4_FORCEADDED | PF4_SUPPORTTYPING | PF4_AVATARS | - /*PF4_OFFLINEFILES | */PF4_IMSENDUTF | PF4_IMSENDOFFLINE | PF4_NOAUTHDENYREASON; - case PFLAGNUM_5: - return PF2_ONTHEPHONE; - case PFLAG_UNIQUEIDTEXT: - return (DWORD_PTR)::Translate("Skype name"); - case PFLAG_MAXCONTACTSPERPACKET: - return 1024; - case PFLAG_UNIQUEIDSETTING: - return (DWORD_PTR)SKYPE_SETTINGS_SID; - default: - return 0; - } -} - -int __cdecl CSkypeProto::GetInfo(MCONTACT hContact, int infoType ) { return 0; } - -HANDLE __cdecl CSkypeProto::SearchBasic(const TCHAR* id) -{ - if ( !this->IsOnline()) - return 0; - - this->ForkThread(&CSkypeProto::SearchBySidAsync, ::mir_tstrdup(id)); - - return (HANDLE)SKYPE_SEARCH_BYSID; -} - -HANDLE __cdecl CSkypeProto::SearchByEmail(const TCHAR* email) -{ - if ( !this->IsOnline()) - return 0; - - this->ForkThread(&CSkypeProto::SearchByEmailAsync, ::mir_tstrdup(email)); - - return (HANDLE)SKYPE_SEARCH_BYEMAIL; -} - -HANDLE __cdecl CSkypeProto::SearchByName(const TCHAR* nick, const TCHAR* firstName, const TCHAR* lastName) -{ - PROTOSEARCHRESULT *psr = new PROTOSEARCHRESULT(); - psr->cbSize = sizeof(psr); - psr->flags = PSR_TCHAR; - psr->nick = ::mir_wstrdup(nick); - psr->firstName = ::mir_wstrdup(firstName); - psr->lastName = ::mir_wstrdup(lastName); - - this->ForkThread(&CSkypeProto::SearchByNamesAsync, psr); - - return (HANDLE)SKYPE_SEARCH_BYNAMES; -} - -HWND __cdecl CSkypeProto::SearchAdvanced( HWND owner ) { return 0; } - -HWND __cdecl CSkypeProto::CreateExtendedSearchUI( HWND owner ){ return 0; } - -int __cdecl CSkypeProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) -{ - this->debugLogW(L"Incoming contacts"); - ::db_unset(hContact, "CList", "Hidden"); - - return (INT_PTR)this->AddDBEvent( - hContact, - EVENTTYPE_CONTACTS, - pre->timestamp, - DBEF_UTF | ((pre->flags & PREF_CREATEREAD) ? DBEF_READ : 0), - pre->lParam, - (PBYTE)pre->szMessage); -} - -int __cdecl CSkypeProto::RecvFile(MCONTACT hContact, PROTORECVFILET* pre) -{ - this->debugLogW(L"Incoming file transfer"); - ::db_unset(hContact, "CList", "Hidden"); - return ::Proto_RecvFile(hContact, pre); -} - -int __cdecl CSkypeProto::RecvMsg(MCONTACT hContact, PROTORECVEVENT* pre) -{ - this->debugLogW(L"Incoming message"); - ::db_unset(hContact, "CList", "Hidden"); - - ReadMessageParam *param = (ReadMessageParam*)pre->lParam; - - char *message = (char *)pre->szMessage; - size_t msgLen = ::strlen(message) + 1; - - message = (char *)::mir_realloc(message, msgLen + param->guid.size()); - ::memcpy((char *)&message[msgLen], param->guid.data(), param->guid.size()); - - return (INT_PTR)this->AddDBEvent( - hContact, - param->msgType == CMessage::POSTED_TEXT ? EVENTTYPE_MESSAGE : SKYPE_DB_EVENT_TYPE_EMOTE, - pre->timestamp, - DBEF_UTF | ((pre->flags & PREF_CREATEREAD) ? DBEF_READ : 0), - DWORD(msgLen + param->guid.size()), - (PBYTE)message); -} - -int __cdecl CSkypeProto::RecvUrl(MCONTACT hContact, PROTORECVEVENT *) { return 0; } - -int __cdecl CSkypeProto::SendContacts(MCONTACT hContact, int flags, int nContacts, MCONTACT *hContactsList) -{ - if (this->IsOnline() && hContact && hContactsList) - { - this->debugLogW(L"Outcoming contacts"); - - ConversationRef conversation; - if ( !this->isChatRoom(hContact)) - { - SEStringList targets; - targets.append((char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - - this->GetConversationByParticipants(targets, conversation); - } - else - { - this->GetConversationByIdentity((char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)), conversation); - } - if ( !conversation) - return 0; - - ContactRefs contacts; - for (int i = 0; i < nContacts; i++) - { - CContact::Ref contact; - - ptrW csid(::db_get_wsa(hContactsList[i], this->m_szModuleName, SKYPE_SETTINGS_SID)); - this->GetContact((char *)ptrA(::mir_utf8encodeW(csid)), contact); - contacts.append(contact); - } - - time_t timestamp = time(NULL); - - if ( !conversation->PostContacts(contacts)) - return 0; - - // todo: bad hack - CMessage::Refs msgs; - this->GetMessageListByType(Message::POSTED_CONTACTS, true, msgs, timestamp); - - if (msgs.size() == 0) - return 0; - - CMessage::Ref lastMsg = msgs[msgs.size() - 1]; - - return lastMsg->getOID(); - } - - return 0; -} - -HANDLE __cdecl CSkypeProto::SendFile(MCONTACT hContact, const TCHAR *szDescription, TCHAR **ppszFiles) -{ - if (this->IsOnline() && hContact && ppszFiles) - { - this->debugLogW(L"Outcoming file transfer"); - - ConversationRef conversation; - if ( !this->isChatRoom(hContact)) - { - SEStringList targets; - targets.append((char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - - this->GetConversationByParticipants(targets, conversation); - } - else - { - this->GetConversationByIdentity((char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)), conversation); - } - if ( !conversation) - return 0; - - FileTransferParam ftp; - ftp.pfts.flags = PFTS_SENDING | PFTS_UNICODE; - ftp.pfts.hContact = hContact; - for (ftp.pfts.totalFiles = 0; ppszFiles[ftp.pfts.totalFiles]; ftp.pfts.totalFiles++); - ftp.pfts.ptszFiles = new wchar_t*[ftp.pfts.totalFiles + 1]; - - wchar_t *wd = new wchar_t[wcslen(ppszFiles[0]) + 1]; - wcscpy(wd, ppszFiles[0]); - PathRemoveFileSpec(wd); - ftp.pfts.tszWorkingDir = wd; - - SEFilenameList fileList; - for (int i = 0; ppszFiles[i]; i++) - { - ftp.pfts.ptszFiles[i] = ::mir_wstrdup(ppszFiles[i]); - fileList.append((char *)ptrA(::mir_utf8encodeW(ppszFiles[i]))); - } - - auto error = TRANSFER_OPEN_SUCCESS; - SEFilename errFile; - MessageRef msgRef; - if ( !conversation->PostFiles(fileList, " ", error, errFile, msgRef) || error) - return 0; - - SEString data; - TransferRefs transfers; - if (msgRef->GetTransfers(transfers)) - { - for (uint i = 0; i < transfers.size(); i++) - { - transfers[i].fetch(); - this->transferList.append(transfers[i]); - - transfers[i]->GetPropFilesize(data); - Sid::uint64 size = data.toUInt64(); - - ftp.files.insert(std::make_pair(transfers[i]->getOID(), FileParam(size))); - ftp.pfts.totalBytes += size; - } - } - - auto oid = msgRef->getOID(); - this->transferts.insert(std::make_pair(oid, ftp)); - - return (HANDLE)oid; - } - - return 0; -} - -int __cdecl CSkypeProto::SendMsg(MCONTACT hContact, int flags, const char *msg) -{ - this->debugLogW(L"Outcoming message"); - SEStringList targets; - targets.append((char *)_T2A(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID))); - - CConversation::Ref conversation; - this->GetConversationByParticipants(targets, conversation); - - if (conversation) - { - CMessage::Ref message; - if (!conversation->PostText(msg, message)) - return 0; - - return message->getOID(); - } - - return 0; -} - -int __cdecl CSkypeProto::SendUrl(MCONTACT hContact, int flags, const char *url) { return 0; } - -int __cdecl CSkypeProto::SetApparentMode(MCONTACT hContact, int mode) { return 0; } - -int CSkypeProto::SetStatus(int new_status) -{ - switch (new_status) - { - case ID_STATUS_OCCUPIED: - new_status = ID_STATUS_DND; - break; - case ID_STATUS_FREECHAT: - new_status = ID_STATUS_ONLINE; - break; - case ID_STATUS_ONTHEPHONE: - case ID_STATUS_OUTTOLUNCH: - case ID_STATUS_NA: - new_status = ID_STATUS_AWAY; - break; - } - - if (new_status == this->m_iDesiredStatus) - return 0; - - int old_status = this->m_iStatus; - this->m_iDesiredStatus = new_status; - - if (new_status == ID_STATUS_OFFLINE) - { - this->LogOut(); - this->m_iStatus = this->m_iDesiredStatus = ID_STATUS_OFFLINE; - - this->SendBroadcast(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); - - if ( !::Miranda_Terminated()) - { - this->SetAllContactStatus(ID_STATUS_OFFLINE); - this->CloseAllChatSessions(); - } - - return 0; - } - else - { - if (old_status == ID_STATUS_OFFLINE && !this->IsOnline()) - { - this->m_iStatus = ID_STATUS_CONNECTING; - if ( !this->LogIn()) - return 0; - } - else - { - if ( this->account->IsOnline()) - { - SetServerStatus(new_status); - return 0; - } - - this->SendBroadcast(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); - return 0; - } - } - - this->SendBroadcast(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); - return 0; -} - -HANDLE __cdecl CSkypeProto::GetAwayMsg(MCONTACT hContact) { return 0; } -int __cdecl CSkypeProto::RecvAwayMsg(MCONTACT hContact, int mode, PROTORECVEVENT *evt) { return 0; } -int __cdecl CSkypeProto::SetAwayMsg(int m_iStatus, const TCHAR *msg) { return 0; } - -int __cdecl CSkypeProto::UserIsTyping(MCONTACT hContact, int type) -{ - if (hContact && this->IsOnline() && this->m_iStatus != ID_STATUS_INVISIBLE) - { - ptrW sid(::db_get_wsa(hContact, this->m_szModuleName, SKYPE_SETTINGS_SID)); - if (sid != NULL && ::wcsicmp(sid, this->login) != 0) - { - SEStringList targets; - targets.append((char *)ptrA(::mir_utf8encodeW(sid))); - - CConversation::Ref conversation; - this->GetConversationByParticipants(targets, conversation); - - if (conversation) - { - switch (type) - { - case PROTOTYPE_SELFTYPING_ON: - conversation->SetMyTextStatusTo(Participant::WRITING); - return 0; - - case PROTOTYPE_SELFTYPING_OFF: - conversation->SetMyTextStatusTo(Participant::READING); //todo: mb TEXT_UNKNOWN? - return 0; - } - } - } - } - - return 1; -} - -int __cdecl CSkypeProto::OnEvent(PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam) -{ - switch (eventType) - { - case EV_PROTO_ONLOAD: - return this->OnProtoModulesLoaded(wParam, lParam); - - case EV_PROTO_ONEXIT: - return this->OnPreShutdown(wParam, lParam); - - case EV_PROTO_ONOPTIONS: - return this->OnOptionsInit(wParam,lParam); - - case EV_PROTO_ONCONTACTDELETED: - return this->OnContactDeleted(wParam, lParam); - - case EV_PROTO_ONMENU: - this->OnInitStatusMenu(); - break; - } - - return 1; -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_proto.h b/plugins/!Deprecated/Skype/src/skype_proto.h deleted file mode 100644 index 5f6bb13e2d..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_proto.h +++ /dev/null @@ -1,560 +0,0 @@ -#pragma once - -struct _tag_iconList -{ - wchar_t* Description; - char* Name; - int IconId; - HANDLE Handle; -}; - -struct ReadMessageParam -{ - SEBinary& guid; - CMessage::TYPE msgType; -}; - -struct ContactParam -{ - ContactRef contact; - CSkypeProto *ppro; - - ContactParam(const ContactRef &contact, CSkypeProto *ppro) : contact(contact), ppro(ppro) - { - } -}; - -struct BlockParam -{ - MCONTACT hContact; - CSkypeProto *ppro; - bool remove; - bool abuse; - - BlockParam(MCONTACT hContact, CSkypeProto *ppro) : ppro(ppro) - { - this->hContact = hContact; - } -}; - -struct ChatRoomParam -{ - wchar_t *id; - StringList invitedContacts; - CSkypeProto *ppro; - - wchar_t topic[256]; - wchar_t guidline[256]; - - bool enableJoining; - int joinRank; - - bool passwordProtection; - wchar_t password[32]; - wchar_t confirmation[32]; - wchar_t hint[32]; - - ChatRoomParam(CSkypeProto *ppro) - : ppro(ppro) - { - this->id = NULL; - this->topic[0] = 0; - this->guidline[0] = 0; - this->password[0] = 0; - this->confirmation[0] = 0; - this->hint[0] = 0; - this->enableJoining = true; - this->joinRank = Participant::WRITER; - this->passwordProtection = false; - } - - ChatRoomParam(const wchar_t *id, const StringList &contacts, CSkypeProto *ppro) - : id(::mir_wstrdup(id)), invitedContacts(contacts), ppro(ppro) - { - this->topic[0] = 0; - this->guidline[0] = 0; - this->password[0] = 0; - this->confirmation[0] = 0; - this->hint[0] = 0; - this->enableJoining = true; - this->joinRank = Participant::WRITER; - this->passwordProtection = false; - } - - ~ChatRoomParam() - { ::mir_free(id); } -}; - -struct PasswordRequestBoxParam -{ - wchar_t *login; - char *password; - bool rememberPassword; - bool showRememberPasswordBox; - - PasswordRequestBoxParam(const wchar_t *login, bool showRememberPasswordBox = true, bool rememberPassword = false) : - login(::mir_wstrdup(login)), - password(NULL), - rememberPassword(rememberPassword), - showRememberPasswordBox(showRememberPasswordBox) { } - - ~PasswordRequestBoxParam() - { - ::mir_free(login); - ::mir_free(password); - } -}; - -struct PasswordChangeBoxParam -{ - char *password; - char *password2; - - PasswordChangeBoxParam() { } - - ~PasswordChangeBoxParam() - { - ::mir_free(password); - ::mir_free(password2); - } -}; - -struct FileParam -{ - bool isCanceled; - bool isCompleted; - - unsigned __int64 size; - unsigned __int64 transfered; - - FileParam() { } - FileParam(unsigned __int64 size) - { - this->size = size; - this->transfered = 0; - this->isCanceled = this->isCompleted = false; - } -}; - -struct FileTransferParam -{ - //CTransfer::Refs transfers; - PROTOFILETRANSFERSTATUS pfts; - std::map files; - - FileTransferParam() - { - this->pfts.cbSize = sizeof(this->pfts); - this->pfts.flags = 0; - this->pfts.currentFileNumber = 0; - this->pfts.currentFileProgress = 0; - this->pfts.currentFileSize = 0; - this->pfts.currentFileTime = 0; - this->pfts.totalBytes = 0; - this->pfts.totalFiles = 0; - this->pfts.totalProgress = 0; - this->pfts.tszWorkingDir = NULL; - this->pfts.wszCurrentFile = NULL; - - //Sid::fetch(this->transfers); - } -}; - -class ChatMember; -class ChatRoom; - -struct CSkypeProto : public PROTO, private Skype -{ - friend class ChatRoom; - friend class CAccount; - friend class CContact; - friend class CConversation; - friend class CContactGroup; - friend class CContactSearch; - friend class CTransfer; - -public: - // PROTO_INTERFACE - CSkypeProto(const char *protoName, const wchar_t *userName); - ~CSkypeProto(); - - // PROTO_INTERFACE - virtual MCONTACT __cdecl AddToList( int flags, PROTOSEARCHRESULT* psr ); - virtual MCONTACT __cdecl AddToListByEvent( int flags, int iContact, HANDLE hDbEvent ); - - virtual int __cdecl Authorize( HANDLE hDbEvent ); - virtual int __cdecl AuthDeny( HANDLE hDbEvent, const TCHAR* szReason ); - virtual int __cdecl AuthRecv(MCONTACT hContact, PROTORECVEVENT* ); - virtual int __cdecl AuthRequest(MCONTACT hContact, const TCHAR* szMessage ); - - virtual HANDLE __cdecl FileAllow(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szPath ); - virtual int __cdecl FileCancel(MCONTACT hContact, HANDLE hTransfer ); - virtual int __cdecl FileDeny(MCONTACT hContact, HANDLE hTransfer, const TCHAR* szReason ); - virtual int __cdecl FileResume( HANDLE hTransfer, int* action, const TCHAR** szFilename ); - - virtual DWORD_PTR __cdecl GetCaps( int type, MCONTACT hContact = NULL ); - virtual int __cdecl GetInfo(MCONTACT hContact, int infoType ); - - virtual HANDLE __cdecl SearchBasic( const TCHAR* id ); - virtual HANDLE __cdecl SearchByEmail( const TCHAR* email ); - virtual HANDLE __cdecl SearchByName( const TCHAR* nick, const TCHAR* firstName, const TCHAR* lastName ); - virtual HWND __cdecl SearchAdvanced( HWND owner ); - virtual HWND __cdecl CreateExtendedSearchUI( HWND owner ); - - virtual int __cdecl RecvContacts(MCONTACT hContact, PROTORECVEVENT* ); - virtual int __cdecl RecvFile(MCONTACT hContact, PROTORECVFILET* ); - virtual int __cdecl RecvMsg(MCONTACT hContact, PROTORECVEVENT* ); - virtual int __cdecl RecvUrl(MCONTACT hContact, PROTORECVEVENT* ); - - virtual int __cdecl SendContacts(MCONTACT hContact, int flags, int nContacts, MCONTACT *hContactsList); - virtual HANDLE __cdecl SendFile(MCONTACT hContact, const TCHAR* szDescription, TCHAR** ppszFiles ); - virtual int __cdecl SendMsg(MCONTACT hContact, int flags, const char* msg ); - virtual int __cdecl SendUrl(MCONTACT hContact, int flags, const char* url ); - - virtual int __cdecl SetApparentMode(MCONTACT hContact, int mode ); - virtual int __cdecl SetStatus( int iNewStatus ); - - virtual HANDLE __cdecl GetAwayMsg(MCONTACT hContact ); - virtual int __cdecl RecvAwayMsg(MCONTACT hContact, int mode, PROTORECVEVENT* evt ); - virtual int __cdecl SetAwayMsg( int m_iStatus, const TCHAR* msg ); - - virtual int __cdecl UserIsTyping(MCONTACT hContact, int type ); - - virtual int __cdecl OnEvent( PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam ); - - // instances - static CSkypeProto* InitSkypeProto(const char* protoName, const wchar_t* userName); - static int UninitSkypeProto(CSkypeProto* ppro); - - static CSkypeProto* GetContactInstance(MCONTACT hContact); - static void UninitInstances(); - - // icons - static void InitIcons(); - static void UninitIcons(); - - // menus - void OnInitStatusMenu(); - static void InitMenus(); - static void UninitMenus(); - - // services - static void InitServiceList(); - - // hooks - static void InitHookList(); - - // languages - static void InitLanguages(); - - static INT_PTR __cdecl ParseSkypeUri(WPARAM wParam, LPARAM lParam); - -private: - // Skype - CAccount *newAccount(int oid); - CContactGroup *newContactGroup(int oid); - CConversation *newConversation(int oid); - CContactSearch *newContactSearch(int oid); - CParticipant *newParticipant(int oid); - CContact *newContact(int oid); - CMessage *newMessage(int oid); - CTransfer *newTransfer(int oid); - - void OnMessage( - const MessageRef & message, - const bool & changesInboxTimestamp, - const MessageRef & supersedesHistoryMessage, - const ConversationRef & conversation); - - void OnConversationListChange( - const ConversationRef& conversation, - const Conversation::LIST_TYPE& type, - const bool& added); - - int skypeKitPort; - PROCESS_INFORMATION skypeKitProcessInfo; - -protected: - CAccount::Ref account; - CContact::Refs contactList; - CTransfer::Refs transferList; - - CContactGroup::Ref commonList; - CContactGroup::Ref authWaitList; - - CRITICAL_SECTION contact_search_lock; - - bool IsOnline(); - - BYTE NeedUpdate; - - // account - static wchar_t *LogoutReasons[]; - static wchar_t *PasswordChangeReasons[]; - - wchar_t *login; - char *password; - bool rememberPassword; - - bool RequestPassword(PasswordRequestBoxParam ¶m); - bool ChangePassword(PasswordChangeBoxParam ¶m); - - bool PrepareLogin(); - bool PreparePassword(); - - void InitProxy(); - void SetAccountSettings(); - - void SetServerStatus(int iStatus); - - bool LogIn(); - void LogOut(); - - void OnLoggedIn(); - void OnCblUpdated(); - void OnLoggedOut(CAccount::LOGOUTREASON reason); - - void OnAccountChanged(int prop); - - INT_PTR __cdecl SetMyNickName(WPARAM, LPARAM); - - // avatars - bool IsAvatarChanged(const SEBinary &avatar, MCONTACT hContact = NULL); - - wchar_t* GetContactAvatarFilePath(MCONTACT hContact); - - INT_PTR __cdecl GetAvatarInfo(WPARAM, LPARAM); - INT_PTR __cdecl GetAvatarCaps(WPARAM, LPARAM); - INT_PTR __cdecl GetMyAvatar(WPARAM, LPARAM); - INT_PTR __cdecl SetMyAvatar(WPARAM, LPARAM); - - SEBinary GetAvatarBinary(wchar_t *path); - - // messages - void OnMessageEvent(const ConversationRef &conversation, const MessageRef &message); - void OnMessageSent(const ConversationRef &conversation, const MessageRef &message); - void OnMessageReceived(const ConversationRef &conversation, const MessageRef &message); - - void SyncMessageHystory(const ConversationRef &conversation, const time_t timestamp); - void SyncHistoryCommand(MCONTACT hContact, time_t timestamp); - int __cdecl SyncLastDayHistoryCommand(WPARAM wParam, LPARAM lParam); - int __cdecl SyncLastWeekHistoryCommand(WPARAM wParam, LPARAM lParam); - int __cdecl SyncLastMonthHistoryCommand(WPARAM wParam, LPARAM lParam); - int __cdecl SyncLast3MonthHistoryCommand(WPARAM wParam, LPARAM lParam); - int __cdecl SyncLastYearHistoryCommand(WPARAM wParam, LPARAM lParam); - int __cdecl SyncAllTimeHistoryCommand(WPARAM wParam, LPARAM lParam); - - // contacts - void OnContactsEvent(const ConversationRef &conversation, const MessageRef &message); - void OnContactsSent(const ConversationRef &conversation, const MessageRef &message); - void OnContactsReceived(const ConversationRef &conversation, const MessageRef &message); - - // transfer - static wchar_t *TransferFailureReasons[]; - - std::map transferts; - - void OnFileEvent(const ConversationRef &conversation, const MessageRef &message); - void OnTransferChanged(const TransferRef &transfer, int prop); - - // chat - void InitChatModule(); - INT_PTR __cdecl SkypeGCGetToolTipText(WPARAM wParam, LPARAM lParam); - - void UpdateChatUserStatus(const ContactRef &contact); - void UpdateChatUserNick(const ContactRef &contact); - - void ChatValidateContact(MCONTACT hItem, HWND hwndList, const StringList &contacts); - void ChatPrepare(MCONTACT hItem, HWND hwndList, const StringList &contacts); - - void GetInvitedContacts(MCONTACT hItem, HWND hwndList, StringList &invitedContacts); - - void ChatRoomParseUriComands(const wchar_t *commands); - - void ChatRoomInvite(MCONTACT hContact); - - void CloseAllChatSessions(); - - ChatRoom *FindChatRoom(const wchar_t *cid); - - INT_PTR __cdecl CreateChatRoomCommand(WPARAM, LPARAM); - INT_PTR __cdecl OnJoinChat(WPARAM wParam, LPARAM); - INT_PTR __cdecl OnLeaveChat(WPARAM wParam, LPARAM); - - int __cdecl OnGCEventHook(WPARAM, LPARAM lParam); - int __cdecl OnGCMenuHook(WPARAM, LPARAM lParam); - - void OnChatEvent(const ConversationRef &conversation, const MessageRef &message); - - OBJLIST chatRooms; - - // contacts - void UpdateContactAuthState(MCONTACT hContact, const ContactRef &contact); - void UpdateContactStatus(MCONTACT hContact, const ContactRef &contact); - void UpdateContactClient(MCONTACT hContact, const ContactRef &contact); - void UpdateContactOnlineSinceTime(MCONTACT hContact, const ContactRef &contact); - void UpdateContactLastEventDate(MCONTACT hContact, const ContactRef &contact); - - void OnSearchCompleted(HANDLE hSearch); - void OnContactFinded(CContact::Ref contact, HANDLE hSearch); - - void OnContactChanged(const ContactRef &contact, int prop); - void OnContactListChanged(const ContactRef &contact); - - bool IsProtoContact(MCONTACT hContact); - MCONTACT GetContactBySid(const wchar_t* sid); - MCONTACT GetContactFromAuthEvent(HANDLE hEvent); - MCONTACT AddContact(CContact::Ref contact, bool isTemporary = false); - - bool IsContactOnline(MCONTACT hContact); - void SetAllContactStatus(int status); - - void __cdecl LoadContactList(void*); - void __cdecl LoadChatList(void*); - void __cdecl LoadAuthWaitList(void*); - - void __cdecl SearchBySidAsync(void*); - void __cdecl SearchByNamesAsync(void*); - void __cdecl SearchByEmailAsync(void*); - - // profile - void UpdateProfileAvatar(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileAboutText(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileBirthday(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileCity(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileCountry(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileEmails(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileFullName(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileGender(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileHomepage(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileLanguages(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileMobilePhone(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileNick(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfilePhone(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileOfficePhone(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileState(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileStatusMessage(SEObject *obj, MCONTACT hContact = NULL); - void UpdateProfileTimezone(SEObject *obj, MCONTACT hContact = NULL); - - void UpdateProfile(SEObject *obj, MCONTACT hContact = NULL); - - void __cdecl LoadOwnInfo(void*); - - void SaveOwnInfoToServer(HWND hwndPage, int iPage); - - // utils - static wchar_t* ValidationReasons[]; - - static int SkypeToMirandaLoginError(CAccount::LOGOUTREASON logoutReason); - - static char *RemoveHtml(const char *data); - - static int SkypeToMirandaStatus(CContact::AVAILABILITY availability); - static CContact::AVAILABILITY MirandaToSkypeStatus(int status); - - static bool FileExists(wchar_t *path); - - static void ShowNotification(const wchar_t *message, int flags = 0, MCONTACT hContact = NULL); - static void ShowNotification(const wchar_t *caption, const wchar_t *message, int flags = 0, MCONTACT hContact = NULL); - - static void CopyToClipboard(const wchar_t *text); - - static void ReplaceSpecialChars(wchar_t *text, wchar_t replaceWith = L'_'); - - // languages - static std::map languages; - - // instances - static LIST instanceList; - static int CompareProtos(const CSkypeProto *p1, const CSkypeProto *p2); - - // - int SendBroadcast(int type, int result, HANDLE hProcess, LPARAM lParam); - int SendBroadcast(MCONTACT hContact, int type, int result, HANDLE hProcess, LPARAM lParam); - - HANDLE CreateEvent(const char* szService); - - // netlib - void InitNetLib(); - void UninitNetLib(); - - // services - void InitInstanceServiceList(); - - // hooks - void InitInstanceHookList(); - - // icons - static _tag_iconList IconList[]; - static HANDLE GetIconHandle(const char *name); - static HANDLE GetSkinIconHandle(const char *name); - - // menus - HGENMENU m_hMenuRoot; - static HANDLE hChooserMenu; - static HGENMENU contactMenuItems[CMI_MAX]; - - virtual int __cdecl RequestAuth(WPARAM, LPARAM); - virtual int __cdecl GrantAuth(WPARAM, LPARAM); - virtual int __cdecl RevokeAuth(WPARAM, LPARAM); - - static INT_PTR MenuChooseService(WPARAM wParam, LPARAM lParam); - - static int PrebuildContactMenu(WPARAM wParam, LPARAM lParam); - int OnPrebuildContactMenu(WPARAM wParam, LPARAM); - - // blocked list - int __cdecl BlockCommand(WPARAM, LPARAM); - INT_PTR __cdecl OpenBlockedListCommand(WPARAM, LPARAM); - - static INT_PTR CALLBACK SkypeBlockProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK SkypeBlockedOptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static LRESULT CALLBACK SkypeBlockedOptionsSubProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - - // database - bool IsMessageInDB(MCONTACT hContact, DWORD timestamp, SEBinary &guid, int flag = 0); - - HANDLE AddDBEvent(MCONTACT hContact, WORD type, DWORD time, DWORD flags = 0, DWORD cbBlob = 0, PBYTE pBlob = 0); - void RaiseMessageSentEvent( - MCONTACT hContact, - DWORD timestamp, - SEBinary &guid, - const char *message, - bool isUnread = true); - void RaiseAuthRequestEvent( - DWORD timestamp, - CContact::Ref contact); - - // dialog procs - static INT_PTR CALLBACK SkypeMainOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); - static INT_PTR CALLBACK SkypePasswordRequestProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK SkypePasswordChangeProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK ChatRoomProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK SkypePrivacyOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); - - static INT_PTR CALLBACK SkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK PersonalSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK ContactSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK HomeSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static INT_PTR CALLBACK AccountSkypeDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - - // skype runtime - char *LoadKeyPair(); - int StartSkypeRuntime(const wchar_t *profileName); - BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode); - void StopSkypeRuntime(); - - // events - static int OnModulesLoaded(WPARAM wParam, LPARAM lParam); - - int __cdecl OnProtoModulesLoaded(WPARAM, LPARAM); - int __cdecl OnPreShutdown(WPARAM, LPARAM); - int __cdecl OnContactDeleted(WPARAM, LPARAM); - int __cdecl OnOptionsInit(WPARAM, LPARAM); - int __cdecl OnSrmmWindowOpen(WPARAM, LPARAM); - int __cdecl OnUserInfoInit(WPARAM, LPARAM); - INT_PTR __cdecl OnAccountManagerInit(WPARAM wParam, LPARAM lParam); - - int __cdecl OnMessagePreCreate(WPARAM, LPARAM); - int __cdecl OnTabSRMMButtonPressed(WPARAM, LPARAM); -}; diff --git a/plugins/!Deprecated/Skype/src/skype_runtime.cpp b/plugins/!Deprecated/Skype/src/skype_runtime.cpp deleted file mode 100644 index ed966b1f34..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_runtime.cpp +++ /dev/null @@ -1,162 +0,0 @@ -#include "skype.h" - -#include "aes\aes.h" - -#include "..\..\..\..\skypekit\key.h" - -char *CSkypeProto::LoadKeyPair() -{ - HRSRC hResource = FindResource(g_hInstance, MAKEINTRESOURCE(IDR_KEY), L"BIN"); - if (hResource == NULL) - return NULL; - - HGLOBAL hLoadedResource = LoadResource(g_hInstance, hResource); - if (hLoadedResource == NULL) - return NULL; - - LPVOID pLockedResource = LockResource(hLoadedResource); - if (pLockedResource == NULL) - return NULL; - - int length = ::SizeofResource(g_hInstance, hResource); - if (length == 0) - return NULL; - - char* pData = (char*)_alloca(length + 1); - ::memcpy(pData, pLockedResource, length); - pData[length] = 0; - - unsigned decodedLen; - mir_ptr tmpD((BYTE*)::mir_base64_decode(pData, &decodedLen)); - BYTE *result = (BYTE*)::mir_alloc(decodedLen+17); - - aes_context ctx; - char *key = (char*)::mir_base64_decode(MY_KEY, NULL); - ::aes_set_key(&ctx, (BYTE*)key, 128); - ::mir_free(key); - - for (unsigned i = 0; i < decodedLen; i += 16) - aes_decrypt(&ctx, &tmpD[i], &result[i]); - - result[decodedLen] = 0; - return (char *)result; -} - -int CSkypeProto::StartSkypeRuntime(const wchar_t *profileName) -{ - STARTUPINFO cif = {0}; - cif.cb = sizeof(STARTUPINFO); - cif.dwFlags = STARTF_USESHOWWINDOW; - cif.wShowWindow = SW_HIDE; - - wchar_t fileName[MAX_PATH]; - ::GetModuleFileName(g_hInstance, fileName, MAX_PATH); - - wchar_t *skypeKitPath = ::wcsrchr(fileName, '\\'); - if (skypeKitPath != NULL) - *skypeKitPath = 0; - ::mir_snwprintf(fileName, SIZEOF(fileName), L"%s\\%s", fileName, L"SkypeKit.exe"); - - PROCESSENTRY32 entry; - entry.dwSize = sizeof(PROCESSENTRY32); - - // todo: rework - HANDLE snapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); - if (::Process32First(snapshot, &entry) == TRUE) - { - while (::Process32Next(snapshot, &entry) == TRUE) - { - if (::wcsicmp(entry.szExeFile, L"SkypeKit.exe") == 0 || ::wcsicmp(entry.szExeFile, L"Skype.exe") == 0) - { - this->skypeKitPort += rand() % 1000 + 8963; - break; - } - } - } - ::CloseHandle(snapshot); - - wchar_t param[128]; - VARST dbPath( _T("%miranda_userdata%\\SkypeKit")); - ::mir_snwprintf(param, SIZEOF(param), L"-p -P %d -f \"%s\"", this->skypeKitPort, dbPath); - int startingrt = ::CreateProcess( - fileName, param, - NULL, NULL, FALSE, - CREATE_NEW_CONSOLE, - NULL, NULL, &cif, &this->skypeKitProcessInfo); - - return startingrt; -} - -BOOL CSkypeProto::SafeTerminateProcess(HANDLE hProcess, UINT uExitCode) -{ - DWORD dwTID, dwCode, dwErr = 0; - HANDLE hProcessDup = INVALID_HANDLE_VALUE; - HANDLE hRT = NULL; - HINSTANCE hKernel = ::GetModuleHandle(L"Kernel32"); - BOOL bSuccess = FALSE; - - BOOL bDup = ::DuplicateHandle( - ::GetCurrentProcess(), - hProcess, - GetCurrentProcess(), - &hProcessDup, - PROCESS_ALL_ACCESS, - FALSE, - 0); - - // Detect the special case where the process is - // already dead... - if (::GetExitCodeProcess((bDup) ? hProcessDup : hProcess, &dwCode) && (dwCode == STILL_ACTIVE)) - { - FARPROC pfnExitProc; - - pfnExitProc = GetProcAddress(hKernel, "ExitProcess"); - - hRT = ::CreateRemoteThread( - (bDup) ? hProcessDup : hProcess, - NULL, - 0, - (LPTHREAD_START_ROUTINE)pfnExitProc, - (PVOID)uExitCode, 0, &dwTID); - - if ( hRT == NULL ) - dwErr = GetLastError(); - } - else - dwErr = ERROR_PROCESS_ABORTED; - - if (hRT) - { - // Must wait process to terminate to - // guarantee that it has exited... - ::WaitForSingleObject((bDup) ? hProcessDup : hProcess, INFINITE); - - ::CloseHandle(hRT); - bSuccess = TRUE; - } - - if ( bDup ) - ::CloseHandle(hProcessDup); - - if ( !bSuccess ) - ::SetLastError(dwErr); - - return bSuccess; -} - -void CSkypeProto::StopSkypeRuntime() -{ - //DWORD dwExitCode = 0; - //this->SafeTerminateProcess(this->skypeKitProcessInfo.hProcess, 0); - //::PostThreadMessage(this->skypeKitProcessInfo.dwThreadId, WM_CLOSE, 0, 0); - //::WaitForSingleObject(this->skypeKitProcessInfo.hProcess, 1500); - - DWORD dwExitCode = 0; - ::GetExitCodeProcess(this->skypeKitProcessInfo.hProcess, &dwExitCode); - if (dwExitCode == STILL_ACTIVE) - //::TerminateProcess(this->skypeKitProcessInfo.hProcess, 0); // Zero is the exit code - this->SafeTerminateProcess(this->skypeKitProcessInfo.hProcess, 0); - - ::CloseHandle(this->skypeKitProcessInfo.hThread); - ::CloseHandle(this->skypeKitProcessInfo.hProcess); -} diff --git a/plugins/!Deprecated/Skype/src/skype_services.cpp b/plugins/!Deprecated/Skype/src/skype_services.cpp deleted file mode 100644 index 9f2ac62434..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_services.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "skype.h" -#include - -void CSkypeProto::InitServiceList() -{ - ::CreateServiceFunction("Skype/MenuChoose", CSkypeProto::MenuChooseService); -} - -void CSkypeProto::InitInstanceServiceList() -{ - // Message API - this->CreateProtoService(PS_CREATEACCMGRUI, &CSkypeProto::OnAccountManagerInit); - // Chat API - this->CreateProtoService(PS_JOINCHAT, &CSkypeProto::OnJoinChat); - this->CreateProtoService(PS_LEAVECHAT, &CSkypeProto::OnLeaveChat); - // Own info - this->CreateProtoService(PS_SETMYNICKNAME, &CSkypeProto::SetMyNickName); - // Avatar API - this->CreateProtoService(PS_GETAVATARINFOT, &CSkypeProto::GetAvatarInfo); - this->CreateProtoService(PS_GETAVATARCAPS, &CSkypeProto::GetAvatarCaps); - this->CreateProtoService(PS_GETMYAVATART, &CSkypeProto::GetMyAvatar); - this->CreateProtoService(PS_SETMYAVATART, &CSkypeProto::SetMyAvatar); - // service to get from protocol chat buddy info - this->CreateProtoService(MS_GC_PROTO_GETTOOLTIPTEXT, &CSkypeProto::SkypeGCGetToolTipText); -} diff --git a/plugins/!Deprecated/Skype/src/skype_settings.cpp b/plugins/!Deprecated/Skype/src/skype_settings.cpp deleted file mode 100644 index 4b4c7482c9..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_settings.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include "skype_proto.h" - -BYTE CSkypeProto::GetSettingByte(HANDLE hContact, const char *setting, BYTE errorValue) -{ - return ::db_get_b(hContact, this->m_szModuleName, setting, errorValue); -} - -BYTE CSkypeProto::GetSettingByte(const char *setting, BYTE errorValue) -{ - return this->GetSettingByte(NULL, setting, errorValue); -} - -WORD CSkypeProto::GetSettingWord(HANDLE hContact, const char *setting, WORD errorValue) -{ - return ::db_get_w(hContact, this->m_szModuleName, setting, errorValue); -} - -WORD CSkypeProto::GetSettingWord(const char *setting, WORD errorValue) -{ - return this->GetSettingWord(NULL, setting, errorValue); -} - -DWORD CSkypeProto::GetSettingDword(HANDLE hContact, const char *setting, DWORD errorValue) -{ - return ::db_get_dw(hContact, this->m_szModuleName, setting, errorValue); -} - -DWORD CSkypeProto::GetSettingDword(const char *setting, DWORD errorValue) -{ - return this->GetSettingDword(NULL, setting, errorValue); -} - -wchar_t* CSkypeProto::GetSettingString(HANDLE hContact, const char *setting, wchar_t* errorValue) -{ - DBVARIANT dbv = {0}; - wchar_t* result = NULL; - - if ( !::db_get_ws(hContact, this->m_szModuleName, setting, &dbv)) - { - result = ::mir_wstrdup(dbv.pwszVal); - ::db_free(&dbv); - } - else - { - result = ::mir_wstrdup(errorValue); - } - - return result; -} - -wchar_t* CSkypeProto::GetSettingString(const char *setting, wchar_t* errorValue) -{ - return this->GetSettingString(NULL, setting, errorValue); -} - -char* CSkypeProto::GetDecodeSettingString(HANDLE hContact, const char *setting, char* errorValue) -{ - DBVARIANT dbv = {0}; - char* result = NULL; - - if ( !::db_get_s(hContact, this->m_szModuleName, setting, &dbv)) - { - result = ::mir_strdup(dbv.pszVal); - ::db_free(&dbv); - - ::CallService( - MS_DB_CRYPT_DECODESTRING, - ::strlen(result), - reinterpret_cast(result)); - } - else result = ::mir_strdup(errorValue); - - return result; -} - -// - -bool CSkypeProto::SetSettingByte(HANDLE hContact, const char *setting, BYTE value) -{ - return !::db_set_b(hContact, this->m_szModuleName, setting, value); -} - -bool CSkypeProto::SetSettingByte(const char *setting, BYTE errorValue) -{ - return this->SetSettingByte(NULL, setting, errorValue); -} - -bool CSkypeProto::SetSettingWord(HANDLE hContact, const char *setting, WORD value) -{ - return !::db_set_w(hContact, this->m_szModuleName, setting, value); -} - -bool CSkypeProto::SetSettingWord(const char *setting, WORD value) -{ - return this->SetSettingWord(NULL, setting, value); -} - -bool CSkypeProto::SetSettingDword(HANDLE hContact, const char *setting, DWORD value) -{ - return !::db_set_dw(hContact, this->m_szModuleName, setting, value); -} - -bool CSkypeProto::SetSettingDword(const char *setting, DWORD value) -{ - return this->SetSettingDword(NULL, setting, value); -} - -bool CSkypeProto::SetSettingString(HANDLE hContact, const char *szSetting, const wchar_t* value) -{ - return !::db_set_ws(hContact, this->m_szModuleName, szSetting, value); -} - -bool CSkypeProto::SetSettingString(const char *szSetting, const wchar_t* value) -{ - return this->SetSettingString(NULL, szSetting, value); -} - -bool CSkypeProto::SetDecodeSettingString(HANDLE hContact, const char *setting, const char* value) -{ - if( ::strcmp(value, "")) - { - mir_ptr result (::mir_strdup(value)); - ::CallService(MS_DB_CRYPT_ENCODESTRING, strlen(result), LPARAM((char*)result)); - - return !db_set_s(hContact, m_szModuleName, setting, result); - } - - return !this->SetSettingString(hContact, setting, L""); -} - -// - -void CSkypeProto::DeleteSetting(const char *setting) -{ - this->DeleteSetting(NULL, setting); -} - -void CSkypeProto::DeleteSetting(HANDLE hContact, const char *setting) -{ - ::db_unset(hContact, this->m_szModuleName, setting); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_skype.cpp b/plugins/!Deprecated/Skype/src/skype_skype.cpp deleted file mode 100644 index 65df7f98f7..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_skype.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "skype.h" - -CAccount* CSkypeProto::newAccount(int oid) -{ - return new CAccount(oid, this); -} - -CContactGroup* CSkypeProto::newContactGroup(int oid) -{ - return new CContactGroup(oid, this); -} - -CContact* CSkypeProto::newContact(int oid) -{ - return new CContact(oid, this); -} - -CConversation* CSkypeProto::newConversation(int oid) -{ - return new CConversation(oid, this); -} - -CParticipant* CSkypeProto::newParticipant(int oid) -{ - return new CParticipant(oid, this); -} - -CMessage* CSkypeProto::newMessage(int oid) -{ - return new CMessage(oid, this); -} - -CTransfer* CSkypeProto::newTransfer(int oid) -{ - return new CTransfer(oid, this); -} - -CContactSearch* CSkypeProto::newContactSearch(int oid) -{ - return new CContactSearch(oid, this); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_transfers.cpp b/plugins/!Deprecated/Skype/src/skype_transfers.cpp deleted file mode 100644 index a6f5fc5cab..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_transfers.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include "skype.h" - -wchar_t *CSkypeProto::TransferFailureReasons[] = -{ - LPGENW("") /* --- */, - LPGENW("SENDER_NOT_AUTHORIZED") /* SENDER_NOT_AUTHORISED */, - LPGENW("REMOTELY_CANCELED") /* REMOTELY_CANCELLED */, - LPGENW("FAILED_READ") /* FAILED_READ */, - LPGENW("FAILED_REMOTE_READ") /* FAILED_REMOTE_READ */, - LPGENW("FAILED_WRITE") /* FAILED_WRITE */, - LPGENW("FAILED_REMOTE_WRITE") /* FAILED_REMOTE_WRITE */, - LPGENW("REMOTE_DOES_NOT_SUPPORT_FT") /* REMOTE_DOES_NOT_SUPPORT_FT */, - LPGENW("REMOTE_OFFLINE_FOR_TOO_LONG") /* REMOTE_OFFLINE_FOR_TOO_LONG */, - LPGENW("TOO_MANY_PARALLEL") /* TOO_MANY_PARALLEL */, - LPGENW("PLACEHOLDER_TIMEOUT") /* PLACEHOLDER_TIMEOUT */ -}; - -void CSkypeProto::OnTransferChanged(const TransferRef &transfer, int prop) -{ - switch (prop) - { - case Transfer::P_STATUS: - { - Transfer::FAILUREREASON reason; - - SEBinary guid; - transfer->GetPropChatmsgGuid(guid); - - MessageRef msgRef; - this->GetMessageByGuid(guid, msgRef); - - uint oid = msgRef->getOID(); - - uint fOid = transfer->getOID(); - - Transfer::STATUS status; - transfer->GetPropStatus(status); - switch(status) - { - case Transfer::CONNECTING: - this->SendBroadcast(this->transferts[oid].pfts.hContact, ACKTYPE_FILE, ACKRESULT_CONNECTING, (HANDLE)oid, 0); - break; - case Transfer::TRANSFERRING: - case Transfer::TRANSFERRING_OVER_RELAY: - this->SendBroadcast(this->transferts[oid].pfts.hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)oid, 0); - break; - case Transfer::FAILED: - transfer->GetPropFailurereason(reason); - this->debugLogW(L"File transfer failed: %s", CSkypeProto::TransferFailureReasons[reason]); - this->transferList.remove_val(transfer); - this->transferts[oid].files[fOid].isCanceled = true; - break; - case Transfer::COMPLETED: - this->transferList.remove_val(transfer); - this->transferts[oid].files[fOid].isCompleted = true; - this->transferts[oid].pfts.totalProgress += this->transferts[oid].files[fOid].size - this->transferts[oid].files[fOid].transfered; - break; - case Transfer::CANCELLED: - case Transfer::CANCELLED_BY_REMOTE: - transfer->GetPropFailurereason(reason); - this->debugLogW(L"File transfer cancelled: %s", CSkypeProto::TransferFailureReasons[reason]); - this->transferList.remove_val(transfer); - this->transferts[oid].files[fOid].isCanceled = true; - break; - } - - int isNotAll = false; - for (auto i = this->transferts[oid].files.begin(); i != this->transferts[oid].files.end(); i++) - if ( !(i->second.isCanceled || i->second.isCompleted)) - { - isNotAll = true; - break; - } - if (isNotAll) - { - SEString data; - uint fOid = transfer->getOID(); - transfer->GetPropBytestransferred(data); - Sid::uint64 tb = data.toUInt64(); - this->transferts[oid].pfts.totalProgress += tb; - this->transferts[oid].files[fOid].transfered = tb; - - this->SendBroadcast(this->transferts[oid].pfts.hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)oid, (LPARAM)&this->transferts[oid].pfts); - } - else - { - this->SendBroadcast(this->transferts[oid].pfts.hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, (HANDLE)oid, 0); - delete [] this->transferts[oid].pfts.ptszFiles; - this->transferts.erase(this->transferts.find(oid)); - } - } - break; - - case Transfer::P_BYTESTRANSFERRED: - { - SEString data; - - SEBinary guid; - transfer->GetPropChatmsgGuid(guid); - - MessageRef msgRef; - this->GetMessageByGuid(guid, msgRef); - - uint oid = msgRef->getOID(); - - uint fOid = transfer->getOID(); - transfer->GetPropBytestransferred(data); - Sid::uint64 tb = data.toUInt64(); - this->transferts[oid].pfts.totalProgress += tb; - this->transferts[oid].files[fOid].transfered = tb; - - this->SendBroadcast(this->transferts[oid].pfts.hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)oid, (LPARAM)&this->transferts[oid].pfts); - } - break; - } -} - -void CSkypeProto::OnFileEvent(const ConversationRef &conversation, const MessageRef &message) -{ - SEString data; - Transfer::TYPE transferType; - Transfer::STATUS transferStatus; - - ContactRef author; - message->GetPropAuthor(data); - this->GetContact(data, author); - - TransferRefs transfers; - message->GetTransfers(transfers); - - FileTransferParam ftp; - ftp.pfts.flags = PFTS_RECEIVING | PFTS_UNICODE; - ftp.pfts.hContact = this->AddContact(author, true); - ftp.pfts.totalFiles = (int)transfers.size(); - ftp.pfts.ptszFiles = new wchar_t*[transfers.size() + 1]; - - int nifc = 0; - for (size_t i = 0; i < transfers.size(); i++) - { - auto transfer = transfers[i]; - - // For incomings, we need to check for transfer status, just to be sure. - // In some cases, a transfer can appear with STATUS == PLACEHOLDER - // As such transfers cannot be accepted, we will need to just store - // the reference to Transfer Object and then check for further - // status changes in Transfer::OnChange - transfer->GetPropStatus(transferStatus); - if (transferStatus == Transfer::NEW || transferStatus == Transfer::PLACEHOLDER) - { - transfer->GetPropType(transferType); - if (transferType == Transfer::INCOMING) - { - transfer->GetPropFilename(data); - ftp.pfts.ptszFiles[nifc++] = ::mir_utf8decodeW(data); - - transfer.fetch(); - this->transferList.append(transfer); - //transfer.fetch(); - - transfer->GetPropFilesize(data); - Sid::uint64 size = data.toUInt64(); - - ftp.files.insert(std::make_pair(transfer->getOID(), FileParam(size))); - ftp.pfts.totalBytes += size; - } - } - } - - if (nifc > 0) - { - uint timestamp; - message->GetPropTimestamp(timestamp); - - auto oid = message->getOID(); - - this->transferts.insert(std::make_pair(oid, ftp)); - - PROTORECVFILET pre = {0}; - pre.flags = PREF_TCHAR; - pre.fileCount = ftp.pfts.totalFiles; - pre.timestamp = timestamp; - pre.tszDescription = L""; - pre.ptszFiles = ftp.pfts.ptszFiles; - pre.lParam = (LPARAM)oid; - ::ProtoChainRecvFile(ftp.pfts.hContact, &pre); - } - else - { - delete [] ftp.pfts.ptszFiles; - } -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skype_utils.cpp b/plugins/!Deprecated/Skype/src/skype_utils.cpp deleted file mode 100644 index f8c410513d..0000000000 --- a/plugins/!Deprecated/Skype/src/skype_utils.cpp +++ /dev/null @@ -1,542 +0,0 @@ -#include "skype.h" - -wchar_t *CSkypeProto::ValidationReasons[] = -{ - LPGENW("NOT_VALIDATED") /* NOT_VALIDATED */, - LPGENW("Validation succeeded") /* VALIDATED_OK */, - LPGENW("Password is too short") /* TOO_SHORT */, - LPGENW("The value exceeds max size limit for the given property") /* TOO_LONG */, - LPGENW("Value contains illegal characters") /* CONTAINS_INVALID_CHAR */, - LPGENW("Value contains whitespace") /* CONTAINS_SPACE */, - LPGENW("Password cannot be the same as Skype name") /* SAME_AS_USERNAME */, - LPGENW("Value has invalid format") /* INVALID_FORMAT */, - LPGENW("Value contains invalid word") /* CONTAINS_INVALID_WORD */, - LPGENW("Password is too simple") /* TOO_SIMPLE */, - LPGENW("Value starts with an invalid character") /* STARTS_WITH_INVALID_CHAR */, -}; - -std::map CSkypeProto::languages; - -void CSkypeProto::InitLanguages() -{ - std::map result; - result[L"ab"] = L"Abkhazian"; - result[L"aa"] = L"Afar"; - result[L"af"] = L"Afrikaans"; - result[L"ak"] = L"Akan"; - result[L"sq"] = L"Albanian"; - result[L"am"] = L"Amharic"; - result[L"ar"] = L"Arabic"; - result[L"an"] = L"Aragonese"; - result[L"hy"] = L"Armenian"; - result[L"as"] = L"Assamese"; - result[L"av"] = L"Avaric"; - result[L"ae"] = L"Avestan"; - result[L"ay"] = L"Aymara"; - result[L"az"] = L"Azerbaijani"; - result[L"bm"] = L"Bambara"; - result[L"ba"] = L"Bashkir"; - result[L"eu"] = L"Basque"; - result[L"be"] = L"Belarusian"; - result[L"bn"] = L"Bengali"; - result[L"bh"] = L"Bihari languages"; - result[L"bi"] = L"Bislama"; - result[L"nb"] = L"Bokmal, Norwegian"; - result[L"bs"] = L"Bosnian"; - result[L"br"] = L"Breton"; - result[L"bg"] = L"Bulgarian"; - result[L"my"] = L"Burmese"; - result[L"es"] = L"Castilian"; - result[L"ca"] = L"Catalan"; - result[L"km"] = L"Central Khmer"; - result[L"ch"] = L"Chamorro"; - result[L"ce"] = L"Chechen"; - result[L"ny"] = L"Chewa"; - result[L"ny"] = L"Chichewa"; - result[L"zh"] = L"Chinese"; - result[L"za"] = L"Chuang"; - result[L"cu"] = L"Church Slavic"; - result[L"cu"] = L"Church Slavonic"; - result[L"cv"] = L"Chuvash"; - result[L"kw"] = L"Cornish"; - result[L"co"] = L"Corsican"; - result[L"cr"] = L"Cree"; - result[L"hr"] = L"Croatian"; - result[L"cs"] = L"Czech"; - result[L"da"] = L"Danish"; - result[L"dv"] = L"Dhivehi"; - result[L"dv"] = L"Divehi"; - result[L"nl"] = L"Dutch"; - result[L"dz"] = L"Dzongkha"; - result[L"en"] = L"English"; - result[L"eo"] = L"Esperanto"; - result[L"et"] = L"Estonian"; - result[L"ee"] = L"Ewe"; - result[L"fo"] = L"Faroese"; - result[L"fj"] = L"Fijian"; - result[L"fi"] = L"Finnish"; - result[L"nl"] = L"Flemish"; - result[L"fr"] = L"French"; - result[L"ff"] = L"Fulah"; - result[L"gd"] = L"Gaelic"; - result[L"gl"] = L"Galician"; - result[L"lg"] = L"Ganda"; - result[L"ka"] = L"Georgian"; - result[L"de"] = L"German"; - result[L"ki"] = L"Gikuyu"; - result[L"el"] = L"Greek, Modern (1453-)"; - result[L"kl"] = L"Greenlandic"; - result[L"gn"] = L"Guarani"; - result[L"gu"] = L"Gujarati"; - result[L"ht"] = L"Haitian"; - result[L"ht"] = L"Haitian Creole"; - result[L"ha"] = L"Hausa"; - result[L"he"] = L"Hebrew"; - result[L"hz"] = L"Herero"; - result[L"hi"] = L"Hindi"; - result[L"ho"] = L"Hiri Motu"; - result[L"hu"] = L"Hungarian"; - result[L"is"] = L"Icelandic"; - result[L"io"] = L"Ido"; - result[L"ig"] = L"Igbo"; - result[L"id"] = L"Indonesian"; - result[L"ia"] = L"Interlingua (International Auxiliary Language Association)"; - result[L"ie"] = L"Interlingue"; - result[L"iu"] = L"Inuktitut"; - result[L"ik"] = L"Inupiaq"; - result[L"ga"] = L"Irish"; - result[L"it"] = L"Italian"; - result[L"ja"] = L"Japanese"; - result[L"jv"] = L"Javanese"; - result[L"kl"] = L"Kalaallisut"; - result[L"kn"] = L"Kannada"; - result[L"kr"] = L"Kanuri"; - result[L"ks"] = L"Kashmiri"; - result[L"kk"] = L"Kazakh"; - result[L"ki"] = L"Kikuyu"; - result[L"rw"] = L"Kinyarwanda"; - result[L"ky"] = L"Kirghiz"; - result[L"kv"] = L"Komi"; - result[L"kg"] = L"Kongo"; - result[L"ko"] = L"Korean"; - result[L"kj"] = L"Kuanyama"; - result[L"ku"] = L"Kurdish"; - result[L"kj"] = L"Kwanyama"; - result[L"ky"] = L"Kyrgyz"; - result[L"lo"] = L"Lao"; - result[L"la"] = L"Latin"; - result[L"lv"] = L"Latvian"; - result[L"lb"] = L"Letzeburgesch"; - result[L"li"] = L"Limburgan"; - result[L"li"] = L"Limburger"; - result[L"li"] = L"Limburgish"; - result[L"ln"] = L"Lingala"; - result[L"lt"] = L"Lithuanian"; - result[L"lu"] = L"Luba-Katanga"; - result[L"lb"] = L"Luxembourgish"; - result[L"mk"] = L"Macedonian"; - result[L"mg"] = L"Malagasy"; - result[L"ms"] = L"Malay"; - result[L"ml"] = L"Malayalam"; - result[L"dv"] = L"Maldivian"; - result[L"mt"] = L"Maltese"; - result[L"gv"] = L"Manx"; - result[L"mi"] = L"Maori"; - result[L"mr"] = L"Marathi"; - result[L"mh"] = L"Marshallese"; - result[L"ro"] = L"Moldavian"; - result[L"ro"] = L"Moldovan"; - result[L"mn"] = L"Mongolian"; - result[L"na"] = L"Nauru"; - result[L"nv"] = L"Navaho"; - result[L"nv"] = L"Navajo"; - result[L"nd"] = L"Ndebele, North"; - result[L"nr"] = L"Ndebele, South"; - result[L"ng"] = L"Ndonga"; - result[L"ne"] = L"Nepali"; - result[L"nd"] = L"North Ndebele"; - result[L"se"] = L"Northern Sami"; - result[L"no"] = L"Norwegian"; - result[L"nb"] = L"Norwegian Bokmal"; - result[L"nn"] = L"Norwegian Nynorsk"; - result[L"ii"] = L"Nuosu"; - result[L"ny"] = L"Nyanja"; - result[L"nn"] = L"Nynorsk, Norwegian"; - result[L"ie"] = L"Occidental"; - result[L"oc"] = L"Occitan (post 1500)"; - result[L"oj"] = L"Ojibwa"; - result[L"cu"] = L"Old Bulgarian"; - result[L"cu"] = L"Old Church Slavonic"; - result[L"cu"] = L"Old Slavonic"; - result[L"or"] = L"Oriya"; - result[L"om"] = L"Oromo"; - result[L"os"] = L"Ossetian"; - result[L"os"] = L"Ossetic"; - result[L"pi"] = L"Pali"; - result[L"pa"] = L"Panjabi"; - result[L"ps"] = L"Pashto"; - result[L"fa"] = L"Persian"; - result[L"pl"] = L"Polish"; - result[L"pt"] = L"Portuguese"; - result[L"pa"] = L"Punjabi"; - result[L"ps"] = L"Pushto"; - result[L"qu"] = L"Quechua"; - result[L"ro"] = L"Romanian"; - result[L"rm"] = L"Romansh"; - result[L"rn"] = L"Rundi"; - result[L"ru"] = L"Russian"; - result[L"sm"] = L"Samoan"; - result[L"sg"] = L"Sango"; - result[L"sa"] = L"Sanskrit"; - result[L"sc"] = L"Sardinian"; - result[L"gd"] = L"Scottish Gaelic"; - result[L"sr"] = L"Serbian"; - result[L"sn"] = L"Shona"; - result[L"ii"] = L"Sichuan Yi"; - result[L"sd"] = L"Sindhi"; - result[L"si"] = L"Sinhala"; - result[L"si"] = L"Sinhalese"; - result[L"sk"] = L"Slovak"; - result[L"sl"] = L"Slovenian"; - result[L"so"] = L"Somali"; - result[L"st"] = L"Sotho, Southern"; - result[L"nr"] = L"South Ndebele"; - result[L"es"] = L"Spanish"; - result[L"su"] = L"Sundanese"; - result[L"sw"] = L"Swahili"; - result[L"ss"] = L"Swati"; - result[L"sv"] = L"Swedish"; - result[L"tl"] = L"Tagalog"; - result[L"ty"] = L"Tahitian"; - result[L"tg"] = L"Tajik"; - result[L"ta"] = L"Tamil"; - result[L"tt"] = L"Tatar"; - result[L"te"] = L"Telugu"; - result[L"th"] = L"Thai"; - result[L"bo"] = L"Tibetan"; - result[L"ti"] = L"Tigrinya"; - result[L"to"] = L"Tonga (Tonga Islands)"; - result[L"ts"] = L"Tsonga"; - result[L"tn"] = L"Tswana"; - result[L"tr"] = L"Turkish"; - result[L"tk"] = L"Turkmen"; - result[L"tw"] = L"Twi"; - result[L"ug"] = L"Uighur"; - result[L"uk"] = L"Ukrainian"; - result[L"ur"] = L"Urdu"; - result[L"ug"] = L"Uyghur"; - result[L"uz"] = L"Uzbek"; - result[L"ca"] = L"Valencian"; - result[L"ve"] = L"Venda"; - result[L"vi"] = L"Vietnamese"; - result[L"vo"] = L"Volapuk"; - result[L"wa"] = L"Walloon"; - result[L"cy"] = L"Welsh"; - result[L"fy"] = L"Western Frisian"; - result[L"wo"] = L"Wolof"; - result[L"xh"] = L"Xhosa"; - result[L"yi"] = L"Yiddish"; - result[L"yo"] = L"Yoruba"; - result[L"za"] = L"Zhuang"; - result[L"zu"] = L"Zulu"; -} - -// --- - -int CSkypeProto::SendBroadcast(MCONTACT hContact, int type, int result, HANDLE hProcess, LPARAM lParam) -{ - return ::ProtoBroadcastAck(this->m_szModuleName, hContact, type, result, hProcess, lParam); -} - -int CSkypeProto::SendBroadcast(int type, int result, HANDLE hProcess, LPARAM lParam) -{ - return this->SendBroadcast(NULL, type, result, hProcess, lParam); -} - -// - -int CSkypeProto::SkypeToMirandaLoginError(CAccount::LOGOUTREASON logoutReason) -{ - int loginError = 0; - - // todo: rewrite!! - - switch (logoutReason) - { - case CAccount::SERVER_OVERLOADED: - case CAccount::P2P_CONNECT_FAILED: - case CAccount::SERVER_CONNECT_FAILED: - loginError = LOGINERR_NOSERVER; - break; - case CAccount::HTTPS_PROXY_AUTH_FAILED: - case CAccount::SOCKS_PROXY_AUTH_FAILED: - loginError = LOGINERR_PROXYFAILURE; - break; - case CAccount::INCORRECT_PASSWORD: - case CAccount::UNACCEPTABLE_PASSWORD: - loginError = LOGINERR_WRONGPASSWORD; - break; - - case CAccount::INVALID_APP_ID: - loginError = 1001; - break; - } - - return loginError; -} - -void CSkypeProto::ShowNotification(const wchar_t *caption, const wchar_t *message, int flags, MCONTACT hContact) -{ - if (::Miranda_Terminated()) return; - - if ( ::ServiceExists(MS_POPUP_ADDPOPUPT) && ::db_get_b(NULL, "Popup", "ModuleIsEnabled", 1)) - { - POPUPDATAW ppd = {0}; - ppd.lchContact = hContact; - ::wcsncpy(ppd.lpwzContactName, caption, MAX_CONTACTNAME); - ::wcsncpy(ppd.lpwzText, message, MAX_SECONDLINE); - ppd.lchIcon = ::Skin_GetIcon("Skype_main"); - - if ( !::PUAddPopupW(&ppd)) - return; - - } - - ::MessageBoxW(NULL, message, caption, MB_OK | flags); -} - -void CSkypeProto::ShowNotification(const wchar_t *message, int flags, MCONTACT hContact) -{ - CSkypeProto::ShowNotification(::TranslateT(MODULE), message, flags, hContact); -} - -struct HtmlEntity -{ - const char *entity; - char symbol; -}; - -const HtmlEntity htmlEntities[]={ - {"nbsp", ' '}, - {"amp", '&'}, - {"quot", '"'}, - {"lt", '<'}, - {"gt", '>'}, - {"apos", '\''}, - {"copy", '©'}, - // TODO: add more -}; - -char *CSkypeProto::RemoveHtml(const char *text) -{ - std::string new_string = ""; - std::string data = text; - - if (data.find("\x1b\xe3\xac\x8d\x1d") != -1) - data = "CONVERSATION MEMBERS:" + data.substr(5, data.length() - 5); - - for (std::string::size_type i = 0; i < data.length(); i++) - { - if (data.at(i) == '<' && data.at(i+1) != ' ') - { - i = data.find(">", i); - if (i == std::string::npos) - break; - - continue; - } - - if (data.at(i) == '&') { - std::string::size_type begin = i; - i = data.find(";", i); - if (i == std::string::npos) { - i = begin; - } else { - std::string entity = data.substr(begin+1, i-begin-1); - - bool found = false; - for (int j=0; j|"; - for (size_t i = 0; i < ::wcslen(text); i++) - if (::wcschr(special, text[i]) != NULL) - text[i] = replaceWith; -} - -INT_PTR CSkypeProto::ParseSkypeUri(WPARAM wParam, LPARAM lParam) -{ - if (CSkypeProto::instanceList.getCount() == 0 || !CSkypeProto::instanceList[0]->IsOnline()) - return 1; - - CSkypeProto *ppro = CSkypeProto::instanceList[0]; - - wchar_t *args = ::mir_wstrdup((wchar_t *)lParam); - if (args == NULL) - return 1; - // set focus on clist - - wchar_t * q = ::wcschr(args, L'?'); - if (q == NULL) - return 1; - - wchar_t *c = q + 1; *q = 0; - StringList commands = StringList(c, L"&"); - StringList participants = StringList(args, L";"); - ptrW command, arg, commandAndParam; - - if ( !::lstrcmpiW(commands[0], L"chat")) - ppro->ChatRoomParseUriComands(c); - else - { - wchar_t message[1024]; - ::mir_sntprintf(message, SIZEOF(message), ::TranslateT("Command \"%s\" is unsupported"), args); - CSkypeProto::ShowNotification(message); - return 1; - } - - //for (size_t i = 1; i < commands.size(); i++) - //{ - // command = ::mir_wstrdup(commands[i]); - // wchar_t * p = ::wcschr(command, L'='); - // if (p != NULL) - // { - // arg = p + 1; - // *p = 0; - // } - - // if ( !::lstrcmpiW(command, L"blob")) - // { - // ppro->JoinToChat(arg); - // break; - // } - // else if ( !::lstrcmpiW(command, L"topic") && !participants.empty()) - // { - // ChatRoomParam param(NULL, participants, ppro); - // ::wcscpy(param.topic, arg); - // ppro->CreateChatRoom(¶m); - // break; - // - // } - //} - - return 0; -} diff --git a/plugins/!Deprecated/Skype/src/skypekit/account.cpp b/plugins/!Deprecated/Skype/src/skypekit/account.cpp deleted file mode 100644 index 8ec02e08e8..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/account.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "..\skype.h" -#include "account.h" - -CAccount::CAccount(unsigned int oid, CSkypeProto* _ppro) : - Account(oid, _ppro), - ppro(_ppro) -{ -} - -bool CAccount::IsOnline() -{ - CAccount::STATUS status; - this->GetPropStatus(status); - return status == CAccount::LOGGED_IN; -} - -bool CAccount::SetAvatar(SEBinary avatar, Skype::VALIDATERESULT &result) -{ - int fbl; - if (!((Skype*)this->root)->ValidateAvatar(avatar, result, fbl) || result != Skype::VALIDATED_OK) - return false; - - if (!this->SetBinProperty(Account::P_AVATAR_IMAGE, avatar)) - return false; - - return true; -} - -void CAccount::OnChange(int prop) -{ - ppro->OnAccountChanged(prop); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/account.h b/plugins/!Deprecated/Skype/src/skypekit/account.h deleted file mode 100644 index a7128598ee..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/account.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "common.h" - -class CAccount : public Account -{ -public: - typedef DRef Ref; - typedef DRefs Refs; - - CAccount(unsigned int oid, CSkypeProto*); - - bool IsOnline(); - bool SetAvatar(SEBinary avatar, Skype::VALIDATERESULT &result); - -private: - CSkypeProto* ppro; - - void OnChange(int prop); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/common.h b/plugins/!Deprecated/Skype/src/skypekit/common.h deleted file mode 100644 index de00501ba3..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/common.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#undef OCSP_REQUEST -#undef OCSP_RESPONSE - -#include - -struct CSkypeProto; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/contact.cpp b/plugins/!Deprecated/Skype/src/skypekit/contact.cpp deleted file mode 100644 index c7a1a3247d..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/contact.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "..\skype.h" -#include "contact.h" - -CContact::CContact(unsigned int oid, CSkypeProto* _ppro) : - Contact(oid, _ppro), - proto(_ppro) -{ -} - -SEString CContact::GetSid() -{ - SEString result; - CContact::AVAILABILITY availability; - this->GetPropAvailability(availability); - if (availability == Contact::SKYPEOUT || availability == Contact::BLOCKED_SKYPEOUT) - this->GetPropPstnnumber(result); - else - this->GetPropSkypename(result); - return result; -} - -SEString CContact::GetNick() -{ - SEString result; - CContact::AVAILABILITY availability; - this->GetPropAvailability(availability); - if (availability == CContact::SKYPEOUT) - this->GetPropPstnnumber(result); - else - { - SEString sid; - this->GetIdentity(sid); - - this->GetPropDisplayname(result); - if (this->proto && this->proto->login) - { - if (sid.equals(result)) - this->GetPropFullname(result); - } - - if (result.size() == 0) - result = sid; - } - return result; -} - -bool CContact::GetFullname(SEString &firstName, SEString &lastName) -{ - SEString fullname; - this->GetPropFullname(fullname); - int pos = fullname.find(" "); - if (pos != -1) - { - firstName = fullname.substr(0, pos - 1); - lastName = fullname.right((int)fullname.size() - pos - 1); - } else - firstName = fullname; - - return true; -} - -void CContact::OnChange(int prop) -{ - proto->OnContactChanged(this->ref(), prop); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/contact.h b/plugins/!Deprecated/Skype/src/skypekit/contact.h deleted file mode 100644 index 4a79ba723d..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/contact.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "common.h" - -class CContact : public Contact -{ -public: - typedef DRef Ref; - typedef DRefs Refs; - - CContact(unsigned int oid, CSkypeProto*); - - SEString GetSid(); - SEString GetNick(); - bool GetFullname(SEString &firstName, SEString &lastName); - -private: - CSkypeProto* proto; - - void OnChange(int prop); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/conversation.cpp b/plugins/!Deprecated/Skype/src/skypekit/conversation.cpp deleted file mode 100644 index ff393c8efb..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/conversation.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "..\skype.h" -#include "conversation.h" -#include "..\skype_chat.h" - -CConversation::CConversation(unsigned int oid, SERootObject* root) : - Conversation(oid, root) -{ - this->room = NULL; -} - -void CConversation::SetChatRoom(ChatRoom *room) -{ - this->room = room; -} - -void CConversation::OnChange(int prop) -{ - if (this->room != NULL) - this->room->OnChange(this->ref(), prop); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/conversation.h b/plugins/!Deprecated/Skype/src/skypekit/conversation.h deleted file mode 100644 index 3441743328..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/conversation.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "common.h" - -class ChatRoom; - -class CConversation : public Conversation -{ -public: - //typedef void (CSkypeProto::* OnConvoChanged)(const ConversationRef &conversation, int); - - typedef DRef Ref; - typedef DRefs Refs; - - CConversation(unsigned int oid, SERootObject* root); - - void SetChatRoom(ChatRoom *room); - -private: - ChatRoom *room; - - void OnChange(int prop); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/group.cpp b/plugins/!Deprecated/Skype/src/skypekit/group.cpp deleted file mode 100644 index a75c43d371..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/group.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "..\skype.h" -#include "group.h" - -CContactGroup::CContactGroup(unsigned int oid, CSkypeProto* _ppro) : - ContactGroup(oid, _ppro), - proto(_ppro) -{ -} - -void CContactGroup::OnChange(const ContactRef &contact) -{ - proto->OnContactListChanged(contact); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/group.h b/plugins/!Deprecated/Skype/src/skypekit/group.h deleted file mode 100644 index 0443d203ea..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/group.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "common.h" -#include "contact.h" - -class CContactGroup : public ContactGroup -{ -public: - typedef void (CSkypeProto::* OnContactListChanged)(CContact::Ref contact); - - typedef DRef Ref; - typedef DRefs Refs; - CContactGroup(unsigned int oid, CSkypeProto*); - -private: - CSkypeProto* proto; - - void OnChange(const ContactRef &contact); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/message.cpp b/plugins/!Deprecated/Skype/src/skypekit/message.cpp deleted file mode 100644 index 48afa08662..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/message.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "..\skype.h" -#include "message.h" - -CMessage::CMessage(unsigned int oid, SERootObject* root) : - Message(oid, root) -{ -} diff --git a/plugins/!Deprecated/Skype/src/skypekit/message.h b/plugins/!Deprecated/Skype/src/skypekit/message.h deleted file mode 100644 index 6bf1eda497..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/message.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "common.h" - -class CMessage : public Message -{ -public: - typedef DRef Ref; - typedef DRefs Refs; - - CMessage(unsigned int oid, SERootObject* root); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/participant.cpp b/plugins/!Deprecated/Skype/src/skypekit/participant.cpp deleted file mode 100644 index 41e183821b..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/participant.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "..\skype.h" -#include "participant.h" -#include "..\skype_chat.h" - -CParticipant::CParticipant(unsigned int oid, SERootObject* root) : - Participant(oid, root) -{ - this->room = NULL; -} - -//void CParticipant::SetOnChangedCallback(OnChanged callback, ChatRoom *room) -//{ -// this->room = room; -// this->callback = callback; -//} - -void CParticipant::SetChatRoom(ChatRoom *room) -{ - this->room = room; -} - -void CParticipant::OnChange(int prop) -{ - if (this->room != NULL) - this->room->OnParticipantChanged(this->ref(), prop); - //(room->*callback)(this->ref(), prop); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/participant.h b/plugins/!Deprecated/Skype/src/skypekit/participant.h deleted file mode 100644 index 170c14f1b7..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/participant.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "common.h" - -class ChatRoom; - -class CParticipant : public Participant -{ -public: - //typedef void (ChatRoom::* OnChanged)(const ParticipantRef &participant, int); - - typedef DRef Ref; - typedef DRefs Refs; - - CParticipant(unsigned int oid, SERootObject* root); - - //void SetOnChangedCallback(OnChanged callback, ChatRoom *room); - void SetChatRoom(ChatRoom *room); - -private: - ChatRoom *room; - //OnChanged callback; - - void OnChange(int prop); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/search.cpp b/plugins/!Deprecated/Skype/src/skypekit/search.cpp deleted file mode 100644 index f1b20563aa..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/search.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "..\skype.h" -#include "search.h" - -CContactSearch::CContactSearch(unsigned int oid, CSkypeProto* _ppro) : - ContactSearch(oid, _ppro), - proto(_ppro) -{ -} - -void CContactSearch::OnChange(int prop) -{ - if (prop == P_CONTACT_SEARCH_STATUS) - { - CContactSearch::STATUS status; - this->GetPropContactSearchStatus(status); - if (status == FINISHED || status == FAILED) - { - this->isSeachFinished = true; - if (this->proto) - proto->OnSearchCompleted(this->hSearch); - } - } -} - -void CContactSearch::OnNewResult(const ContactRef &contact, const uint &rankValue) -{ - proto->OnContactFinded(contact, this->hSearch); -} - -void CContactSearch::BlockWhileSearch() -{ - this->isSeachFinished = false; - this->isSeachFailed = false; - while (!this->isSeachFinished && !this->isSeachFailed) - Sleep(1); -} diff --git a/plugins/!Deprecated/Skype/src/skypekit/search.h b/plugins/!Deprecated/Skype/src/skypekit/search.h deleted file mode 100644 index dde9a043e3..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/search.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "common.h" -#include "contact.h" - -class CContactSearch : public ContactSearch -{ -public: - typedef DRef Ref; - typedef DRefs Refs; - - bool isSeachFinished; - bool isSeachFailed; - - CContactSearch(unsigned int oid, CSkypeProto* _ppro); - - void OnChange(int prop); - void OnNewResult(const ContactRef &contact, const uint &rankValue); - - __forceinline void SetProtoInfo(HANDLE _hSearch) { - hSearch = _hSearch; - } - - void BlockWhileSearch(); - -private: - HANDLE hSearch; - CSkypeProto* proto; -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/transfer.cpp b/plugins/!Deprecated/Skype/src/skypekit/transfer.cpp deleted file mode 100644 index 60a41bdcfe..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/transfer.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "..\skype.h" -#include "transfer.h" - -CTransfer::CTransfer(unsigned int oid, CSkypeProto* _ppro) : - Transfer(oid, _ppro), - proto(_ppro) -{ -} - -void CTransfer::OnChange(int prop) -{ - proto->OnTransferChanged(this->ref(), prop); -} \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/skypekit/transfer.h b/plugins/!Deprecated/Skype/src/skypekit/transfer.h deleted file mode 100644 index f01d48d328..0000000000 --- a/plugins/!Deprecated/Skype/src/skypekit/transfer.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "common.h" - -class CTransfer : public Transfer -{ -public: - typedef DRef Ref; - typedef DRefs Refs; - - CTransfer(unsigned int oid, CSkypeProto*); - -private: - CSkypeProto* proto; - - void OnChange(int prop); -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/stdafx.cpp b/plugins/!Deprecated/Skype/src/stdafx.cpp deleted file mode 100644 index 102b3be23c..0000000000 --- a/plugins/!Deprecated/Skype/src/stdafx.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "skype.h" diff --git a/plugins/!Deprecated/Skype/src/string_list.h b/plugins/!Deprecated/Skype/src/string_list.h deleted file mode 100644 index 7cf3b0aee7..0000000000 --- a/plugins/!Deprecated/Skype/src/string_list.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once - -#include -#include - -class StringList -{ -private: - std::vector strings; - -public: - StringList() {} - StringList(const wchar_t* string, const wchar_t *delimeters = L" ") - { - wchar_t *data = ::mir_wstrdup(string); - if (data) - { - wchar_t *p = ::wcstok(data, delimeters); - if (p) - { - this->strings.push_back(p); - while (p = wcstok(NULL, delimeters)) - { - this->strings.push_back(p); - } - } - ::mir_free(data); - } - } - virtual ~StringList() { } - - __inline const wchar_t *operator[](size_t idx) const - { - return (idx >= 0 && idx < this->size()) ? this->strings[idx].c_str() : NULL; - } - - __inline void insert(const wchar_t* p) - { - this->strings.push_back(::mir_wstrdup(p)); - } - - __inline bool contains(const wchar_t* p) const - { - return std::find(this->strings.begin(), this->strings.end(), p) != this->strings.end(); - } - - __inline size_t size() const - { - return this->strings.size(); - } - - __inline bool empty() const - { - return this->strings.empty(); - } - - __inline void clear() - { - this->strings.clear(); - } -}; \ No newline at end of file diff --git a/plugins/!Deprecated/Skype/src/version.h b/plugins/!Deprecated/Skype/src/version.h deleted file mode 100644 index 97d51382fb..0000000000 --- a/plugins/!Deprecated/Skype/src/version.h +++ /dev/null @@ -1,15 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 11 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 2 - -#include - -#define __PLUGIN_NAME "Skype protocol" -#define __INTERNAL_NAME "Skype" -#define __FILENAME "Skype.dll" -#define __DESCRIPTION "Skype protocol support for Miranda NG." -#define __AUTHOR "unsane, mataes, ghazan" -#define __AUTHOREMAIL "mataes2007@gmail.com" -#define __AUTHORWEB "http://miranda-ng.org/p/Skype/" -#define __COPYRIGHT "© 2012-15 Miranda NG team" diff --git a/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj b/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj deleted file mode 100644 index 0e5cf9799a..0000000000 --- a/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj +++ /dev/null @@ -1,213 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - VersionInfo - {3CE5572B-B7B0-4D1C-9D10-4622FBA6198E} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - Use - common.h - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - 0x25040000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Use - Level3 - common.h - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - true - true - 0x25040000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - Disabled - Use - common.h - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Level3 - - - $(IntDir)$(TargetName).lib - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - Windows - 0x25040000 - false - $(ProfileDir)..\..\bin10\lib - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Full - OnlyExplicitInline - Size - Use - common.h - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Level3 - true - true - - - $(IntDir)$(TargetName).lib - true - true - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - Windows - 0x25040000 - false - $(ProfileDir)..\..\bin10\lib - /PDBALTPATH:%_PDB% - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj.filters b/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj.filters deleted file mode 100644 index 6905e385f8..0000000000 --- a/plugins/!Deprecated/VersionInfo/VersionInfo_10.vcxproj.filters +++ /dev/null @@ -1,80 +0,0 @@ - - - - - {0740347a-255e-4fb6-9e9a-14397010e8ad} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {691f667c-7c8a-4c3e-8990-a9b456b12230} - h;hpp;hxx;hm;inl - - - {b90941c8-389b-4c91-9298-f201b8740872} - 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 - - - - - Header Files - - - Header Files - - - Header 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/!Deprecated/VersionInfo/VersionInfo_12.vcxproj b/plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj deleted file mode 100644 index 1c28adf4cf..0000000000 --- a/plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj +++ /dev/null @@ -1,216 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - VersionInfo - {3CE5572B-B7B0-4D1C-9D10-4622FBA6198E} - - - - DynamicLibrary - Unicode - true - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - DynamicLibrary - true - Unicode - v120_xp - - - DynamicLibrary - Unicode - v120_xp - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - Use - common.h - - - _DEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - 0x25040000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - false - - - - - Full - OnlyExplicitInline - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - Use - Level3 - common.h - - - NDEBUG;%(PreprocessorDefinitions) - ..\..\include\msapi - - - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - true - true - 0x25040000 - false - $(IntDir)$(TargetName).lib - Windows - $(ProfileDir)..\..\bin12\lib - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - Disabled - Use - common.h - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Level3 - - - $(IntDir)$(TargetName).lib - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - Windows - 0x25040000 - false - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - _DEBUG;%(PreprocessorDefinitions) - - - - - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - Full - OnlyExplicitInline - Size - Use - common.h - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - Level3 - true - true - - - $(IntDir)$(TargetName).lib - true - true - version.lib;imagehlp.lib;%(AdditionalDependencies) - true - Windows - 0x25040000 - false - $(ProfileDir)..\..\bin12\lib - - - ..\..\include\msapi - NDEBUG;%(PreprocessorDefinitions) - - - - - - - - - Create - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj.filters b/plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj.filters deleted file mode 100644 index 6905e385f8..0000000000 --- a/plugins/!Deprecated/VersionInfo/VersionInfo_12.vcxproj.filters +++ /dev/null @@ -1,80 +0,0 @@ - - - - - {0740347a-255e-4fb6-9e9a-14397010e8ad} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {691f667c-7c8a-4c3e-8990-a9b456b12230} - h;hpp;hxx;hm;inl - - - {b90941c8-389b-4c91-9298-f201b8740872} - 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 - - - - - Header Files - - - Header Files - - - Header 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/!Deprecated/VersionInfo/docs/VersionInfo.html b/plugins/!Deprecated/VersionInfo/docs/VersionInfo.html deleted file mode 100644 index a955874979..0000000000 --- a/plugins/!Deprecated/VersionInfo/docs/VersionInfo.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -
-

Version Information Test Page

- -

Version Information version 1.4.3.2

-

VersionInfo.zip

-
- - diff --git a/plugins/!Deprecated/VersionInfo/docs/readme_versioninfo.txt b/plugins/!Deprecated/VersionInfo/docs/readme_versioninfo.txt deleted file mode 100644 index 8a7d49fe7a..0000000000 --- a/plugins/!Deprecated/VersionInfo/docs/readme_versioninfo.txt +++ /dev/null @@ -1,433 +0,0 @@ -VersionInfo, v.1.4.3.4 - by Luca "Hrk" Santarelli, Cristian Libotean - hrk@users.sf.net, eblis102@yahoo.com - Thanks go to: StormLord, Cyreve, Strickz, Wintime98 - All of them helped me somehow. - -- INFO - - -Hi :-) - -This plugin is born from a feature request on the Open Discussion forum. -Its purpose is to display some informations related to Miranda and to the OS -so that you can copy/paste them in a bug report. - -Remember: submitting a bug report DOES NOT mean that it will be fixed. -You need to check the bug report because developers may need your cooperation, -testing debug builds or making other tests. - -The displayed informations are: -§ Date/Time of report -§ System cpu type -§ OS name and version (major, minor, build, additional data) -§ Installed RAM -§ Miranda version, being it or not a nightly and/or unicode. -§ List of enabled plugins (filename, short name, version and last modified date) -§ List of disabled plugins (filename, short name, version and last modified date). Optional. - - -- USE - - -!!! For bugs and/or suggestions please email me, eblis102@yahoo.com (please don't spam hrk as -he's not working on this anymore). - -Click on the button in the main menu or the one in the options... and you're done. -You can choose where to debug: text file, message box (no copy/paste), dialog -box (copy/paste), OutputDebugString(), Clipboard directly. You can also check to print -to clipboard while printing to any of the other options (except clipboard, of course :) ) - - -- CHANGES - - -+ : new feature -* : changed -! : bufgix -- : feature removed or disabled because of pending bugs - -v. 1.4.3.4 - 2009/11/13 - + x64 support (not tested !!) - -v.1.4.3.3 - 2008/02/15 - ! Plugins that do not have the extension .dll will not be listed anymore - -v.1.4.3.2 - 2008/01/31 - * Report plugins without UUIDs in Miranda 0.8 #9 or later as Unloadable instead of Inactive - -v.1.4.3.1 - 2008/01/30 - * When in service mode enable showing of disabled plugins if 'forum style formatting' is disabled, regardless if the option to show disabled plugins in the options is checked or not. - ! Ignore case when checking dll name. - -v.1.4.3.0 - 2008/01/29 - * Show messages using a popup if a popup plugin is available - + Added service mode functionality - requires miranda 0.8 #9 or later. - WARNING: Please rename the plugin back to svc_vi.dll if you're using Updater to update your plugins. - -v.1.4.2.7 - 2008/01/25 - ! Fixed crash when displaying information for unloadable plugins - -v.1.4.2.6 - 2008/01/24 - * Changed beta versions server. - -v.1.4.2.5 - 2007/10/24 - + Added profile path to VersionInfo report. - -v.1.4.2.4 - 2007/09/26 - * Show warning message when user tries to activate 'Show plugin UUIDs' option. - -v.1.4.2.3 - 2007/07/25 - ! Fixed time zone offset calculation. - ! Fixed negative time zones display. - -v.1.4.2.2 - 2007/07/24 - + Added time zone information for profile creation date and language pack modified date. - -v.1.4.2.1 - 2007/06/22 - * Show menu item is always checked (to disable use the menu editor). - * Enabled unicode flag since plugin is 2in1. - -v.1.4.2.0 - 2007/06/22 - * Show UUIDs checkbox is now visible only when 'show expert options' is checked. - * Added checkbox to enable/disable showing installed languages - visible only when 'show expert options' is checked. - -v.1.4.1.5 - 2007/06/21 - * Removed installed languages info from report (still available using the hidden setting 'ShowInstalledLanguages') - -v 1.4.1.4 - 2007/05/11 - ! Show more than 2g of memory if available. - -v. 1.4.1.3 - 2007/03/27 - * Fix for database plugins returning non standard profile path (dbxSA). - -v. 1.4.1.2 - 2007/03/22 - ! Fix Unicode plugin detection. - -v. 1.4.1.1 - 2007/03/07 - + Added icon to output dialog window. - * Make 'Customize using folders plugin' translatable. - -v. 1.4.1.0 - 2007/03/07 - * Changed plugin UUID ( {2f174488-489c-4fe1-940d-596cf0f35e65} ). - + Added VERSIONINFO interface. - -v. 1.4.0.4 - 2007/03/06 - + Option to show UUID info. - + Added VI UUID. - + Added hidden setting to change the character shown if plugin has a UUID defined (UUIDCharMark). - ! Do not enable Apply when first entering the options. - -v. 1.4.0.3 - 2007/02/12 - + Read plugin Unicode aware flag. Only shown if plugin name doesn't contain 'unicode' or '2in1'. - -v. 1.4.0.2 - 2007/01/31 - * Changed beta URL. - -v. 1.4.0.1 - 2007/01/28 - + Added InternetExplorer version - -v. 1.4.0.0 - 2007/01/28 - + Added Windows shell information. - ! Fix for profile creation date and size on Windows 98 - -v. 1.3.2.2 - 2007/01/07 - + New version resource file. - + Added OS languages info: {User UI language/}System UI language | Current user locale/System locale [available system languages]. User UI language is not available for Windows 95, 98, Me and NT. - + Folders support. - ! Close thread handle. - -v. 1.3.2.1 - 2006/12/07 - * Changed controls tab order. - -v. 1.3.2.0 - 2006/11/26 - * Reorganised the post a bit. - + Added empty blockquote style. - ! Fixed version number highlighting. - + Added dll version info. - -v. 1.3.1.1 - 2006/11/15 - * "Ask every time", not "Ask everytime" :) - + Added administrator privileges information. - + Added "Save to file" button to dialog. - * Disabled the "Upload" button. - -v. 1.3.1.0 - 2006/11/1 - + Added multiple CPUs info. - + Added WOW64 info. - ! Don't get plugin information twice. - * Moved main menu entry near Help. - * Default output location changed to dialog. - -v. 1.3.0.4 - 2006/10/16 - * Made langpack retrieval more robust. - + Show langpack info. - * No more dependency on winsock2 (removed upload feature for now, support isn't available anyway) - -v. 1.3.0.1 - 2006/09/25 - + Updater support (beta versions) - ! Enable the Apply button when combobox items are changed. - + Added quote, size and bold comboboxes to ask dialog. - * Sections now use the same highlighting method as the plugins. - * Changed text displayed when plugins don't want to load with current Miranda version. - -v. 1.3.0.0 - 2006/08/08 - * Use relative paths. The file path in the options will show as absolute but it's saved in the database as relative - uses the services in m_utils.h. - + New versioninfo icon - thanks Faith Healer. - + Option to automatically upload VI post to vi.cass.cz :) - currently there's no support on the site for it - + Show plugins that fail to load for unknown reasons. - * Use mir_snprintf where possible. - + Added checkbox for forum style formatting in ask dialog. - * Changed plugin section to "Services" - -v. 1.2.0.4 - 2006/07/26 - * 'Attempt to find unloadable plugins' is checked by default now and is grayed out on Win 98. - + Added check for Windows 2003 R2. - -v. 1.2.0.3 - 2006/06/01 - + Added a service to get the VersionInfo post as a string. - -v. 1.2.0.2 - 2006/05/20 - ! Fixed a bug when notifing of errors - thanks for the patch Peter (UnregistereD). - -v. 1.2.0.1 - 2006/05/17 - * People reported they don't have PF_NX_ENABLED defined so i created a workaround for those who want to build VI from sources. - ! Destroy services the proper way. - -v. 1.2.0.0 - 2006/05/01 - + Added DEP information. - * Show message if CPU doesn't recognize cpuid extension. - -v. 1.0.1.19 - 2006/03/23 - ! Fixed "Do it now" being disabled when first entering the options window. - -v. 1.0.1.18 - 2006/03/09 - + Added a new size option for phpBB forums. - + Added a new highlight option (bold and underline). - + Added a new option to suppress header and footer information - will make the post a bit smaller. - ! Fixed a bug when information was copied to clipboard. - -v. 1.0.1.17 - 2006/01/01 - + Added check to find out plugin information for plugins that refuse to load. - ! Fixed a new line issue (happened when Unloadable plugins entry was visible). - -v. 1.0.1.16 - 2006/01/31 - * Removed the static edge from the dialog buttons. - + Added check for plugins that refuse to load. - * Updated the translation strings. - -v. 1.0.1.15 - 2005/10/17 - + Added some hidden beautification settings. You need to use dbeditor to add these settings to - VersionInfo. All settings are strings and they should either be bbcodes or html codes. (do a default - output for an example). Check the changes in version 1.0.1.14 to see how you can activate this output. - ~ BeautifyHorizLine - code for a horizontal line - (default:
) - ~ BeautifyBlockStart - code for a blockquote (start code) that separates the hw and miranda settings from the plugins - (default:
) - ~ BeautifyBlockEnd - code for a blockquote (end code) that separates the hw and miranda settings from the plugins - (default:
) - ~ BeautifyActiveHeaderBegin - code for the font and size of the active header text (start code) - (default: ) - ~ BeautifyActiveHeaderEnd - code for the font and size of the active header text (end code) - (default: ) - ~ BeautifyInactiveHeaderBegin - code for the font and size of the inactive header text (start code) - (default: ) - ~ BeautifyInactiveHeaderEnd - code for the font and size of the inactive header text (end code) - (default: ) - ~ BeautifyUnloadableHeaderBegin - code for the font and size of the unloadable header text (start code) - (default: ) - ~ BeautifyUnloadableHeaderEnd - code for the font and size of the unloadable header text (end code) - (default: ) - ~ BeautifyPluginsBegin - code for the font and size of plugins (start code) - (default: ) - ~ BeautifyPluginsEnd - code for the font and size of plugins (end code) - (default: ) - How it works: - $starting info [Miranda IM ... Miranda's homepage ... Miranda tools] - {Horizontal line}{block start}Report generated at: $date - $hardware, os and miranda settings - {block end}{horizontal line}{active header start}Active Plugins (#):{active header end} - {plugins start} - $plugins - {plugins end}{horizontal line}{inactive header start}Inactive Plugins (#):{inactive header end} - {plugins start} - $plugins - {plugins end}{horizontal line}{unloadable header start}Unloadable Plugins (#):{unloadable header end} - {plugins start} - $plugins - {plugins end}{horizontal line} - $end info [End of report ...] - -v. 1.0.1.14 - 2005/10/16 - - Removed the logging functions used when attempting to find an unloadable plugin. - + Added hidden option to beautify the output. You need to use dbeditor and add a new - byte value to VersionInfo called Beautify and set it to 1 for the setting to take effect. - Forum style formatting must be OFF; although forum style is unchecked it will get the - highlighting information from the appropriate checkbox so be sure to set it - accordingly (usually to or . The formatting is hardcoded at the moment - (it's set to html tags), i might add some strings in the database for it later on. - + Added option to select how to highlight version number; currently you can - select from bold or underline. - -v. 1.0.1.13 - 2005/10/14 - + Added option to ask where to print the output. - -v. 1.0.1.12 - 2005/10/06 - * Changed the way versioninfo scans for enabled/disabled plugins. - Now it should be able to detect even plugin that were reported as inactive before (like aim toc2 and clist_nicerW+) - + Added profile size and creation date. - + Added information about missing statically linked dll files. Use with care, might crash miranda on some systems. - This function might not work (correctly) on windows 98 and below. If you check this option a file named - 'versioninfo.log' will appear in miranda's folder; in case of a crash please post this info in the forums - (thread Plugins->Versioninfo format style) using [code][/code] bbcodes. - -v. 1.0.1.11 - 2005/09/24 - + Added option to print version number in bold or not. - + Added [code] bbcode and empty size field (if the forum doesn't strip other bbcodes from inside a [code]) - -v. 1.0.1.10 - 2005/09/25 - ! Fixed issue that prevented the apply button to be enabled when changing the filename. - + Added options to select forum bbcodes. - -v. 1.0.1.9 - 2005/09/22 :) - + Added a new CPU check. Might be unstable and can't detect very old processors (like pentium mmx) - * Changed hidden settings strings to QuoteBegin, QuoteEnd, SizeBegin, SizeEnd. - ! Fixed updater issue - older versions should be detected as well (thanks sje). Plugin should - comply with updater rules from now on. - -v. 1.0.1.8 - 2005/09/22 - * Changed month number to month short name (english locale) - + Added "hidden" settings for 'quote' and 'size' strings (only valid when using forum style formatting). - You need to use dbeditor++ to add these. - "QuoteHeader" - String value containing the starting quote string. - You can use this if you want to change the "[quote]" string to "[code]" for example. - If the setting is not present it reverts to "[quote]" - "SizeHeader" - String value containing the starting size string. - You should use this if the forum software doesn't recognize "[size=1]" and needs - something like "[size=1px]". If the setting is not present it reverts to "[size=1]". - "QuoteFooter" - String value containing the ending quote string. If the setting is not present it reverts to "[/quote]" - "SizeFooter" - String value containing the ending size string. If the setting is not present it reverts to "[/size]" - !If you change the header for one of these don't forget to change the footer as well (and vice versa). - + When using forum style formatting the version number will be bold. - + Added active and inactive plugins count (it can't hurt :) ) - -v. 1.0.1.7 - 2005/09/21 - ! Fixed double enter issue - ! Fixed unicode detection problem - - -1.0.1.6 - 2005/09/11 - * Changed miranda's homepage from 'http://miranda-icq.sourceforge.net/' to 'miranda-im.org' - * Changed miranda tools link. - * Changed some strings (date and time related). - + Added check for unicode core. - + Added miranda path to versioninfo output. - + Added plugin's last modified date to versioninfo output. - + Added plugin's short name to versioninfo output. - + Added os check for windows 2003. - + Added option to show information window in taskbar - + Added option to always copy to clipboard - + Added CPU info - Should still work with amd 64 (unsure) - -1.0.1.5 * Works on AMD64 now. - * Fixed some typos in the text and URLs. - * Changed some default settings. - -1.0.1.4 * Fixed the crashes when a .dll file was found but was not a plugin. - * Filesize somehow increased to 80KB... don't ask me why. - + Added support for MirandaInstaller/Wassup by Tornado. - -1.0.1.3 * No change at all, but it now works for everyone. Don't ask me how. - -1.0.1.2 * Fixed NT detection. - * Fixed click on X button in dialogbox. - -1.0.1.1 * Changed the option page UI to reflect Miranda's one and to have a - more intuitive usage. - * Size has increased, but there's not anymore the need for that - external DLL. :-) - -1.0.1.0 + Added "DialogBox" as output (Cyreve, Stormlord, myself) - + Added "OutputDebugString()" as output - + Added "Clipboard" as output - + Added the missing button in the options - + Added a cool icon - + Added OS name (Wintime98, myself) - + Added Miranda build time (Wintime98) - + Added free disk space on Miranda partition (Stormlord, myself) - * Changed "Debug to:" to "Output to:" because of its meaning - -1.0.0.0 First release. - DialogBox is not yet selectable. - Developers, read the REBASE information. - - -- TRANSLATION - - -The strings you can translate are these: - -for version 1.4.2.4 -;Plugin description: -;[Collects and prints information related to Miranda, the plugins and the OS.] -; -;Option dialog -;[Plugins] -;[Version Information] -;[Output to:] -;[Text file] -;[MessageBox()] -;[DialogBox] -;[Show window in taskbar] -;[OutputDebugString()] -;[Clipboard] -;[Upload to site] -;[Ask every time] -;[Also copy info to clipboard] -;[Forum style formatting] -;[Highlight version number using] -;[Show disabled plugins too] -;[Show plugin UUIDs] -;[Attempt to find unloadable plugins (doesn't work on Windows 98)] -;[Suppress header information] -;[Add a menu item to the main Miranda Menu] -;[You will need to restart Miranda to add/remove the menu item.] -;[Do it now] -;[Upload site settings] -;[Username] -;[Password] -;[Customize using folders plugin] -;[Are you sure you want to enable this option ?\nPlease only enable this option if you really know what you're doing and what the option is for or if someone asked you to do it.] -;[Show plugin UUIDs ?] -; -;Dialog box -;[Upload] -;[Close] -;[Copy text] -; -;Miscellanea -;[If you are going to use this report to submit a bug, remember to check the website for questions or help the developers may need.\r\nIf you don't check your bug report and give feedback, it will not be fixed!] -;[Information successfully written to file: \"%s\".] -;[Error during the creation of file \"%s\". Disk may be full or write protected.] - -;[Ok, something went wrong in the \"%s\" setting. Report back the following values:\nFacility: %X\nError code: %X\nLine number: %d] - -;[The clipboard is not available, retry.] -;[Information successfully copied into clipboard.] -;[Miranda Version Information] - -- DISCLAIMER - - -This plugin works just fine on my machine, it should work just fine on yours -without conflicting with other plugins. Should you have any trouble, write me -at hrk@users.sf.net where "sf" must be changed to "sourceforge". -Anyway, if you are a smart programmer, give a look at the code and tell me -the changes you'd make. If I like them, I'll put them inside. :-) - -This plugin is released under the GPL license, I'm too lazy to copy it, though. -Anyway, if you do have Miranda (and you should, otherwise this plugin is -pretty useless) you already have a file called GPL.txt with tis license. -Being GPLed you are free to modify or change the source code (you can find it -here: http://nortiq.com/miranda/ and look for the source section) but you -cannot sell it. -As I already wrote: if you do modify it, notify me, I don't see a good reason -not to share the improvements with the Miranda community. :-) - -Yes, I have made a quite long disclaimer, I can save the file now. :-) diff --git a/plugins/!Deprecated/VersionInfo/docs/rebase_versioninfo.txt b/plugins/!Deprecated/VersionInfo/docs/rebase_versioninfo.txt deleted file mode 100644 index fd71ab0526..0000000000 --- a/plugins/!Deprecated/VersionInfo/docs/rebase_versioninfo.txt +++ /dev/null @@ -1,33 +0,0 @@ -=§= TO PLUGIN DEVELOPERS =§= - -This plugin has its Base Address set to: -0x25040000 - -Please, avoid using this BaseAddress for your plugins: using the same addresses -will slow Miranda. -Read "pluginguidelines.txt" under miranda0100/miranda32/doc/ in the CVS. - -This Base Address is built this way: - -0x25 040000 -^^^^ ^^^^^^ -My radix Incremental value related to my plugins. - -Range for base address is 0x10000000 to 0x50000000, so 0x25040000 fits well there. - -040000 is an incremental value which represents VersionInfo. -[Note: 000000 is used for RePosition, 010000 for NewStatusNotify, 030000 for PicPlugin and so on.] - -Why do I call 0x25 "My radix"? - -HRK = H + R + K -H = 8th letter in the english alphabet. -R = 18th letter in the english alphabet. -K = 11th letter in the english alphabet. - -8 + 18 + 11 = 37. -37(dec) = 25(Hex) - -Base Address can be found/configured: -§ MSVC++ 6.0 - Project->Settings->Link->Output->Base Address \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/docs/versioninfo.gif b/plugins/!Deprecated/VersionInfo/docs/versioninfo.gif deleted file mode 100644 index a0e1f8eadb..0000000000 Binary files a/plugins/!Deprecated/VersionInfo/docs/versioninfo.gif and /dev/null differ diff --git a/plugins/!Deprecated/VersionInfo/res/VersionInfo.ico b/plugins/!Deprecated/VersionInfo/res/VersionInfo.ico deleted file mode 100644 index 0ae36c0c59..0000000000 Binary files a/plugins/!Deprecated/VersionInfo/res/VersionInfo.ico and /dev/null differ diff --git a/plugins/!Deprecated/VersionInfo/res/resource.rc b/plugins/!Deprecated/VersionInfo/res/resource.rc deleted file mode 100644 index 631a272b4e..0000000000 --- a/plugins/!Deprecated/VersionInfo/res/resource.rc +++ /dev/null @@ -1,196 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\src\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ASKDIALOG DIALOGEX 0, 0, 231, 146 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Output to:" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDC_ASK_OK,63,125,50,14 - PUSHBUTTON "Cancel",IDC_ASK_CANCEL,117,125,50,14 - CONTROL "Text file",IDC_ASK_TOFILE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,17,206,10 - CONTROL "MessageBox",IDC_ASK_TOMESSAGEBOX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,27,206,10 - CONTROL "DialogBox",IDC_ASK_TODIALOGBOX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,37,206,10 - CONTROL "Output Debug String",IDC_ASK_TOOUTPUTDEBUGSTRING,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,47,206,10 - CONTROL "Clipboard",IDC_ASK_TOCLIPBOARD,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,57,206,10 - GROUPBOX "Select output:",IDC_STATIC,7,7,217,72 - CONTROL "Upload to site",IDC_ASK_TOUPLOAD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_TABSTOP,15,67,206,10 - CONTROL "Forum style formatting",IDC_ASK_FORUMSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,92,206,9 - GROUPBOX "Additional options:",IDC_STATIC,7,81,217,39 - COMBOBOX IDC_ASK_QUOTECOMBOBOX,15,104,75,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_ASK_SIZECOMBOBOX,93,104,71,48,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_ASK_BOLDCOMBOBOX,167,104,54,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -END - -IDD_OPT_VERSIONINFO DIALOGEX 0, 0, 315, 222 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - PUSHBUTTON "Do it now",IDC_GETINFONOW,265,4,48,13 - GROUPBOX "Output to:",IDC_STATIC,5,4,197,130 - CONTROL "Text file",IDC_TOFILE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,16,186,10 - EDITTEXT IDC_FILENAME,24,26,172,14,ES_AUTOHSCROLL - CONTROL "MessageBox",IDC_TOMESSAGEBOX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,40,186,10 - CONTROL "DialogBox",IDC_TODIALOGBOX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,51,186,10 - CONTROL "Show window in taskbar",IDC_SHOWINTASKBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,21,62,177,10 - CONTROL "Output Debug String",IDC_TODEBUGSTRING,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,73,186,10 - CONTROL "Clipboard",IDC_TOCLIPBOARD,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,84,186,10 - CONTROL "Upload to site",IDC_TOUPLOAD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_TABSTOP,12,95,186,10 - CONTROL "Ask every time",IDC_ASKEVERYTIME,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,106,186,10 - CONTROL "Also copy info to clipboard",IDC_CLIPBOARDALSO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,121,186,10 - GROUPBOX "Upload site settings",IDC_STATIC,205,74,108,60 - EDITTEXT IDC_UPLOAD_SERVER,209,83,71,14,ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_UPLOAD_PORT,281,83,27,14,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Username",IDC_STATIC,209,103,42,8 - EDITTEXT IDC_UPLOAD_USERNAME,253,99,55,14,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Password",IDC_STATIC,209,118,43,8 - EDITTEXT IDC_UPLOAD_PASSWORD,253,115,55,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_DISABLED - CONTROL "Forum style formatting",IDC_FORUMSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,139,149,10 - COMBOBOX IDC_QUOTECOMBOBOX,159,137,75,58,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SIZECOMBOBOX,238,137,75,58,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Highlight version number using",IDC_BOLDVERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,153,216,10 - COMBOBOX IDC_BOLDCOMBOBOX,252,153,61,37,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Show disabled plugins too",IDC_DISABLEDTOO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,164,232,10 - CONTROL "Attempt to find unloadable plugins",IDC_CHECKUNLOADABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,174,272,10 - CONTROL "Suppress header information",IDC_SUPPRESSHEADER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,184,274,10 - CONTROL "Enable debug messages",IDC_DEBUG,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,220,207,93,10 - CONTROL "Show plugin UUIDs",IDC_SHOWUUIDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,195,272,10 - CONTROL "Show installed languages",IDC_SHOWINSTALLEDLANGUAGES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,206,273,10 -END - -IDD_DIALOGINFO DIALOGEX 0, 0, 373, 217 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT -CAPTION "Miranda Version Information" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - CONTROL "",IDC_TEXT,"RICHEDIT",TCS_HOTTRACK | TCS_FOCUSONBUTTONDOWN | TCS_MULTISELECT | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,298,203 - PUSHBUTTON "Close",IDC_CLOSE,316,7,50,14 - PUSHBUTTON "&Copy text",IDC_COPYTEXT,316,26,50,14 - PUSHBUTTON "Upload",IDC_UPLOAD,316,196,50,14,WS_DISABLED - PUSHBUTTON "&Save to file",IDC_SAVETOFILE,316,45,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ASKDIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 224 - VERTGUIDE, 15 - VERTGUIDE, 221 - TOPMARGIN, 7 - BOTTOMMARGIN, 139 - HORZGUIDE, 116 - END - - IDD_OPT_VERSIONINFO, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 313 - VERTGUIDE, 12 - VERTGUIDE, 198 - VERTGUIDE, 202 - VERTGUIDE, 205 - VERTGUIDE, 304 - VERTGUIDE, 308 - TOPMARGIN, 4 - BOTTOMMARGIN, 217 - HORZGUIDE, 149 - END - - IDD_DIALOGINFO, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 366 - TOPMARGIN, 7 - BOTTOMMARGIN, 210 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_MAIN ICON "VersionInfo.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/!Deprecated/VersionInfo/res/version.rc b/plugins/!Deprecated/VersionInfo/res/version.rc deleted file mode 100644 index 5bfbab4754..0000000000 --- a/plugins/!Deprecated/VersionInfo/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/!Deprecated/VersionInfo/src/CPlugin.cpp b/plugins/!Deprecated/VersionInfo/src/CPlugin.cpp deleted file mode 100644 index 00f6949d38..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/CPlugin.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -#define PLUGIN_UNCERTAIN_MARK "?" - -#define RJUST 70 - -CPlugin::CPlugin() { - pluginID = UUID_NULL; -} - -CPlugin::CPlugin(LPCTSTR eFileName, LPCTSTR eShortName, MUUID pluginID, LPCTSTR eUnicodeInfo, DWORD eVersion, LPCTSTR eTimestamp, LPCTSTR eLinkedModules) { - lpzFileName = eFileName; - lpzShortName = eShortName; - lpzUnicodeInfo = eUnicodeInfo; - lpzTimestamp = eTimestamp; - lpzLinkedModules = eLinkedModules; - - int v1, v2, v3, v4; - - DWORD unused, verInfoSize = GetFileVersionInfoSize(eFileName, &unused); - if (verInfoSize != 0) { - UINT blockSize; - VS_FIXEDFILEINFO* fi; - void* pVerInfo = mir_alloc(verInfoSize); - GetFileVersionInfo(eFileName, 0, verInfoSize, pVerInfo); - VerQueryValue(pVerInfo, _T("\\"), (LPVOID*)&fi, &blockSize); - v1 = HIWORD(fi->dwProductVersionMS), v2 = LOWORD(fi->dwProductVersionMS), - v3 = HIWORD(fi->dwProductVersionLS), v4 = LOWORD(fi->dwProductVersionLS); - mir_free(pVerInfo); - } - else { - DWORD ver = eVersion; - v1 = HIBYTE(HIWORD(ver)), v2 = LOBYTE(HIWORD(ver)), v3 = HIBYTE(LOWORD(ver)), v4 = LOBYTE(LOWORD(ver)); - } - - TCHAR aux[128]; - mir_sntprintf(aux, SIZEOF(aux), _T("%d.%d.%d.%d"), v1, v2, v3, v4); - lpzVersion = aux; - - this->pluginID = pluginID; -}; - -CPlugin::CPlugin(const CPlugin& other) { - lpzFileName = other.lpzFileName; - lpzShortName = other.lpzShortName; - lpzUnicodeInfo = other.lpzUnicodeInfo; - lpzVersion = other.lpzVersion; - lpzTimestamp = other.lpzTimestamp; - lpzLinkedModules = other.lpzLinkedModules; - pluginID = other.pluginID; -} - -CPlugin::~CPlugin() -{ -} - -void CPlugin::SetErrorMessage(LPCTSTR error) -{ - lpzLinkedModules = error; -} - -bool CPlugin::operator<(CPlugin &anotherPlugin) -{ - std::tstring anotherFileName = anotherPlugin.getFileName(); - - TCHAR szThis[MAX_PATH]; lstrcpy(szThis, lpzFileName.c_str()); - TCHAR szThat[MAX_PATH]; lstrcpy(szThat, anotherFileName.c_str()); - - if (lstrcmpi(szThis, szThat) < 0) - return TRUE; - else - return FALSE; -} - -bool CPlugin::operator>(CPlugin &anotherPlugin) -{ - return !((*this) < anotherPlugin); -} -bool CPlugin::operator==(CPlugin &anotherPlugin) -{ - return !((*this) < anotherPlugin || (*this) > anotherPlugin); -} - -std::tstring CPlugin::getFileName() -{ - return this->lpzFileName; -} - -std::tstring CPlugin::getInformations(DWORD flags, TCHAR *szHighlightHeader, TCHAR *szHighlightFooter) -{ - std::tstring lpzInformations; - if (flags & VISF_SHOWUUID) - { - TCHAR aux[128]; - UUIDToString(pluginID, aux, SIZEOF(aux)); - lpzInformations = aux; - } - else lpzInformations = _T(" "); - - lpzInformations += std::tstring(_T(" ") + lpzFileName + _T(" v.") + szHighlightHeader + lpzVersion + szHighlightFooter + _T(" [") + lpzTimestamp + _T("] - ") + lpzShortName); - if (lpzUnicodeInfo.size() > 0) - { - TCHAR *lwr = _tcslwr(_tcsdup(lpzShortName.c_str())); - if ( !_tcsstr(lwr, _T("unicode")) && !_tcsstr(lwr, _T("2in1"))) - lpzInformations.append( _T(" |") + lpzUnicodeInfo + _T("|")); - - free(lwr); - } - //lpzInformations.append("\t"); - //lpzInformations.append(lpzPluginID); - lpzInformations.append( _T("\r\n")); - - if (lpzLinkedModules.size() > 0) - { - lpzInformations.append(lpzLinkedModules); - lpzInformations.append( _T("\r\n")); - } -// std::string lpzInformations = std::string(lpzFileName + " - " + lpzShortName + " [" + lpzTimestamp + " · " + lpzVersion +"]\r\n"); - return lpzInformations; -}; \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/CPlugin.h b/plugins/!Deprecated/VersionInfo/src/CPlugin.h deleted file mode 100644 index f78826a44d..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/CPlugin.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - - -#ifndef CPLUGIN_H -#define CPLUGIN_H - -class CPlugin { - private: - std::tstring lpzFileName; - std::tstring lpzShortName; - std::tstring lpzVersion; - std::tstring lpzUnicodeInfo; //aditional info, Unicode aware ... - std::tstring lpzTimestamp; //to show the last modified timestamp - std::tstring lpzLinkedModules; //to show linked modules that aren't found - MUUID pluginID; - - public: - CPlugin(); - CPlugin(LPCTSTR fileName, LPCTSTR shortName, MUUID pluginID, LPCTSTR unicodeInfo, DWORD version, LPCTSTR timestamp, LPCTSTR linkedModules); - CPlugin(const CPlugin&); - ~CPlugin(); - std::tstring getFileName(); - std::tstring getInformations(DWORD, TCHAR *, TCHAR *); - - void SetErrorMessage(LPCTSTR error); - - //Operators - bool operator<(CPlugin&); - bool operator>(CPlugin&); - bool operator==(CPlugin&); -}; -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/CVersionInfo.cpp b/plugins/!Deprecated/VersionInfo/src/CVersionInfo.cpp deleted file mode 100644 index ff6acb98b9..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/CVersionInfo.cpp +++ /dev/null @@ -1,964 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -static int ValidExtension(TCHAR *fileName, TCHAR *extension) -{ - TCHAR *dot = _tcschr(fileName, '.'); - if ( dot != NULL && !lstrcmpi(dot + 1, extension)) - if (dot[lstrlen(extension) + 1] == 0) - return 1; - - return 0; -} - -void FillLocalTime(std::tstring &output, FILETIME *fileTime) -{ - TIME_ZONE_INFORMATION tzInfo = {0}; - FILETIME local = {0}; - SYSTEMTIME sysTime; - TCHAR date[1024]; - TCHAR time[256]; - - FileTimeToLocalFileTime(fileTime, &local); - FileTimeToSystemTime(&local, &sysTime); - - GetDateFormat(EnglishLocale, 0, &sysTime, _T("dd' 'MMM' 'yyyy"), date, SIZEOF(date)); - GetTimeFormat(NULL, TIME_FORCE24HOURFORMAT, &sysTime, _T("HH':'mm':'ss"), time, SIZEOF(time)); //americans love 24hour format ;) - output = std::tstring(date) + _T(" at ") + std::tstring(time); - - int res = GetTimeZoneInformation(&tzInfo); - char tzName[32] = {0}; - TCHAR tzOffset[64] = {0}; - int offset = 0; - switch (res) { - case TIME_ZONE_ID_DAYLIGHT: - offset = -(tzInfo.Bias + tzInfo.DaylightBias); - WideCharToMultiByte(CP_ACP, 0, tzInfo.DaylightName, -1, tzName, SIZEOF(tzName), NULL, NULL); - break; - - case TIME_ZONE_ID_STANDARD: - WideCharToMultiByte(CP_ACP, 0, tzInfo.StandardName, -1, tzName, SIZEOF(tzName), NULL, NULL); - offset = -(tzInfo.Bias + tzInfo.StandardBias); - break; - - case TIME_ZONE_ID_UNKNOWN: - WideCharToMultiByte(CP_ACP, 0, tzInfo.StandardName, -1, tzName, SIZEOF(tzName), NULL, NULL); - offset = -tzInfo.Bias; - break; - } - - mir_sntprintf(tzOffset, SIZEOF(tzOffset), _T("UTC %+02d:%02d"), offset / 60, offset % 60); - output += _T(" (") + std::tstring(tzOffset) + _T(")"); -} - -CVersionInfo::CVersionInfo() -{ - luiFreeDiskSpace = 0; - bDEPEnabled = 0; -} - -CVersionInfo::~CVersionInfo() -{ - listInactivePlugins.clear(); - listActivePlugins.clear(); - listUnloadablePlugins.clear(); - - lpzMirandaVersion.~basic_string(); - lpzNightly.~basic_string(); - lpzUnicodeBuild.~basic_string(); - lpzBuildTime.~basic_string(); - lpzMirandaPath.~basic_string(); - lpzCPUName.~basic_string(); - lpzCPUIdentifier.~basic_string(); -}; - -void CVersionInfo::Initialize() -{ -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetMirandaVersion().", SM_NOTIFY); -#endif - GetMirandaVersion(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetProfileSettings().", SM_NOTIFY); -#endif - GetProfileSettings(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetLangpackInfo().", SM_NOTIFY); -#endif - GetOSLanguages(); - GetLangpackInfo(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetPluginLists().", SM_NOTIFY); -#endif - GetPluginLists(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetOSVersion().", SM_NOTIFY); -#endif - GetOSVersion(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Before GetHWSettings().", SM_NOTIFY); -#endif - GetHWSettings(); - -#ifdef _DEBUG - if (verbose) PUShowMessage("Done with GetHWSettings().", SM_NOTIFY); -#endif -} - -bool CVersionInfo::GetMirandaVersion() -{ - //Miranda version - const BYTE str_size = 64; - char str[str_size]; - CallService(MS_SYSTEM_GETVERSIONTEXT, (WPARAM)str_size, (LPARAM)str); - this->lpzMirandaVersion = _A2T(str); - //Is it a nightly? - if (lpzMirandaVersion.find( _T("alpha"), 0) != std::string::npos) - lpzNightly = _T("Yes"); - else - lpzNightly = _T("No"); - - lpzUnicodeBuild = _T("Yes"); - - TCHAR mirtime[128]; - GetModuleTimeStamp(mirtime, 128); - lpzBuildTime = mirtime; - return TRUE; -} - -bool CVersionInfo::GetOSVersion() -{ - //Operating system informations - OSVERSIONINFO osvi = { 0 }; - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx(&osvi); - - //OSName - //Let's read the registry. - HKEY hKey; - TCHAR szKey[MAX_PATH], szValue[MAX_PATH]; - switch (osvi.dwPlatformId) { - case VER_PLATFORM_WIN32_WINDOWS: - lstrcpyn(szKey, _T("Software\\Microsoft\\Windows\\CurrentVersion"), MAX_PATH); - lstrcpyn(szValue, _T("Version"), MAX_PATH); - break; - - case VER_PLATFORM_WIN32_NT: - lstrcpyn(szKey, _T("Software\\Microsoft\\Windows NT\\CurrentVersion"), MAX_PATH); - lstrcpyn(szValue, _T("ProductName"), MAX_PATH); - break; - } - - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKey, 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { - DWORD type, size, result; - //Get the size of the value we'll read. - result = RegQueryValueEx((HKEY)hKey, szValue, (LPDWORD)NULL, (LPDWORD)&type, (LPBYTE)NULL, (LPDWORD)&size); - if (result == ERROR_SUCCESS) { - //Read it. - TCHAR *aux = new TCHAR[size+1]; - result = RegQueryValueEx((HKEY)hKey, szValue, (LPDWORD)NULL, (LPDWORD)&type, (LPBYTE)aux, (LPDWORD)&size); - lpzOSName.append(_T("Microsoft ")); - lpzOSName.append(aux); - lpzOSName.append(_T(" Edition")); - delete[] aux; - } - else { - NotifyError(GetLastError(), _T("RegQueryValueEx()"), __LINE__); - lpzOSName = _T(""); - } - RegCloseKey(hKey); - } - else { - NotifyError(GetLastError(), _T("RegOpenKeyEx()"), __LINE__); - lpzOSName = _T(""); - } - - //Now we can improve it if we can. - switch (LOWORD(osvi.dwBuildNumber)) { - case 950: lpzOSName = _T("Microsoft Windows 95"); break; - case 1111: lpzOSName = _T("Microsoft Windows 95 OSR2"); break; - case 1998: lpzOSName = _T("Microsoft Windows 98"); break; - case 2222: lpzOSName = _T("Microsoft Windows 98 SE"); break; - case 3000: lpzOSName = _T("Microsoft Windows ME"); break; //Even if this is wrong, we have already read it in the registry. - case 1381: lpzOSName = _T("Microsoft Windows NT"); break; //What about service packs? - case 2195: lpzOSName = _T("Microsoft Windows 2000"); break; //What about service packs? - case 2600: lpzOSName = _T("Microsoft Windows XP"); break; - case 3790: - if (GetSystemMetrics(89)) //R2 ? - lpzOSName = _T("Microsoft Windows 2003 R2"); - else - lpzOSName = _T("Microsoft Windows 2003"); - - break; //added windows 2003 info - } - - SYSTEM_INFO si = {0}; - GetNativeSystemInfo(&si); - - if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) - lpzOSName.append(_T(", 64-bit ")); - else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL) - lpzOSName.append(_T(", 32-bit ")); - - lpzOSName.append(osvi.szCSDVersion); - lpzOSName.append(_T(" (build ")); - TCHAR buildno[MAX_PATH]; - _itot(osvi.dwBuildNumber, buildno, 10); - lpzOSName.append(buildno); - lpzOSName.append(_T(")")); - - return TRUE; -} - -bool CVersionInfo::GetHWSettings() -{ - //CPU Info - HKEY hKey; - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\Description\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) - { - TCHAR cpuIdent[512] = {0}, cpuName[512] = {0}; - DWORD size; - size = SIZEOF(cpuName); - if (RegQueryValueEx(hKey, TEXT("ProcessorNameString"), NULL, NULL, (LPBYTE) cpuName, &size) != ERROR_SUCCESS) - _tcscpy(cpuName, _T("Unknown")); - lpzCPUName = cpuName; - size = SIZEOF(cpuIdent); - if (RegQueryValueEx(hKey, TEXT("Identifier"), NULL, NULL, (LPBYTE) cpuIdent, &size) != ERROR_SUCCESS) - if (RegQueryValueEx(hKey, TEXT("VendorIdentifier"), NULL, NULL, (LPBYTE) cpuIdent, &size) != ERROR_SUCCESS) - _tcscpy(cpuIdent, _T("Unknown")); - lpzCPUIdentifier = cpuIdent; - - RegCloseKey(hKey); - } - - while (true) - { - std::tstring::size_type pos = lpzCPUName.find(_T(" ")); - if (pos != std::tstring::npos) - lpzCPUName.replace(lpzCPUName.begin() + pos, lpzCPUName.begin() + pos + 2, _T(" ")); - else - break; - } - - bDEPEnabled = IsProcessorFeaturePresent(PF_NX_ENABLED); - - //Free space on Miranda Partition. - TCHAR szMirandaPath[MAX_PATH] = { 0 }; - GetModuleFileName(GetModuleHandle(NULL), szMirandaPath, SIZEOF(szMirandaPath)); - TCHAR* str2 = _tcsrchr(szMirandaPath,'\\'); - if ( str2 != NULL) - *str2=0; - ULARGE_INTEGER FreeBytes, a, b; - GetDiskFreeSpaceEx(szMirandaPath, &FreeBytes, &a, &b); - //Now we need to convert it. - __int64 aux = FreeBytes.QuadPart; - aux /= (1024*1024); - luiFreeDiskSpace = (unsigned long int)aux; - - TCHAR szInfo[1024]; - GetWindowsShell(szInfo, SIZEOF(szInfo)); - lpzShell = szInfo; - GetInternetExplorerVersion(szInfo, SIZEOF(szInfo)); - lpzIEVersion = szInfo; - - - lpzAdministratorPrivileges = (IsCurrentUserLocalAdministrator()) ? _T("Yes") : _T("No"); - - bIsWOW64 = 0; - if (!IsWow64Process(GetCurrentProcess(), &bIsWOW64)) - bIsWOW64 = 0; - - SYSTEM_INFO sysInfo = {0}; - GetSystemInfo(&sysInfo); - luiProcessors = sysInfo.dwNumberOfProcessors; - - //Installed RAM - MEMORYSTATUSEX ms = {0}; - ms.dwLength = sizeof(ms); - GlobalMemoryStatusEx(&ms); - luiRAM = (unsigned int) ((ms.ullTotalPhys / (1024 * 1024)) + 1); - - return TRUE; -} - -bool CVersionInfo::GetProfileSettings() -{ - TCHAR* tszProfileName = Utils_ReplaceVarsT(_T("%miranda_userdata%\\%miranda_profilename%.dat")); - lpzProfilePath = tszProfileName; - - WIN32_FIND_DATA fd; - if ( FindFirstFile(tszProfileName, &fd) != INVALID_HANDLE_VALUE ) { - TCHAR number[40]; - mir_sntprintf(number, SIZEOF(number), _T("%.2f KBytes"), double(fd.nFileSizeLow) / 1024); - lpzProfileSize = number; - - FILETIME ftLocal; - SYSTEMTIME stLocal; - TCHAR lpszString[128]; - FileTimeToLocalFileTime(&fd.ftCreationTime, &ftLocal); - FileTimeToSystemTime(&ftLocal, &stLocal); - GetISO8061Time(&stLocal, lpszString, 128); - lpzProfileCreationDate = lpszString; - } - else { - DWORD error = GetLastError(); - TCHAR tmp[1024]; - mir_sntprintf(tmp, SIZEOF(tmp), _T("%d"), error); - lpzProfileCreationDate = _T("") + std::tstring(tszProfileName); - lpzProfileSize = _T("") + std::tstring(tszProfileName); - } - - mir_free( tszProfileName ); - return true; -} - -static TCHAR szSystemLocales[4096] = {0}; -static WORD systemLangID; -#define US_LANG_ID 0x00000409 - -BOOL CALLBACK EnumSystemLocalesProc(TCHAR *szLocale) -{ - DWORD locale = _ttoi(szLocale); - TCHAR *name = GetLanguageName(locale); - if ( !_tcsstr(szSystemLocales, name)) { - _tcscat(szSystemLocales, name); - _tcscat(szSystemLocales, _T(", ")); - } - - return TRUE; -} - -BOOL CALLBACK EnumResLangProc(HMODULE hModule, LPCTSTR lpszType, LPCTSTR lpszName, WORD wIDLanguage, LONG_PTR lParam) -{ - if (!lpszName) - return FALSE; - - if (wIDLanguage != US_LANG_ID) - systemLangID = wIDLanguage; - - return TRUE; -} - -bool CVersionInfo::GetOSLanguages() -{ - lpzOSLanguages = _T("(UI | Locale (User/System)) : "); - - LANGID UILang; - - UILang = GetUserDefaultUILanguage(); - lpzOSLanguages += GetLanguageName(UILang); - lpzOSLanguages += _T("/"); - UILang = GetSystemDefaultUILanguage(); - lpzOSLanguages += GetLanguageName(UILang); - - lpzOSLanguages += _T(" | "); - lpzOSLanguages += GetLanguageName(LOCALE_USER_DEFAULT); - lpzOSLanguages += _T("/"); - lpzOSLanguages += GetLanguageName(LOCALE_SYSTEM_DEFAULT); - - if (db_get_b(NULL, ModuleName, "ShowInstalledLanguages", 0)) { - szSystemLocales[0] = '\0'; - lpzOSLanguages += _T(" ["); - EnumSystemLocales(EnumSystemLocalesProc, LCID_INSTALLED); - if (_tcslen(szSystemLocales) > 2) - szSystemLocales[ _tcslen(szSystemLocales) - 2] = '\0'; - - lpzOSLanguages += szSystemLocales; - lpzOSLanguages += _T("]"); - } - - return true; -} - -int SaveInfo(const char *data, const char *lwrData, const char *search, TCHAR *dest, int size) -{ - const char *pos = strstr(lwrData, search); - int res = 1; - if (pos == lwrData) { - _tcsncpy(dest, _A2T(&data[strlen(search)]), size); - res = 0; - } - - return res; -} - -bool CVersionInfo::GetLangpackInfo() -{ - LCID packlcid = Langpack_GetDefaultLocale(); - - if (packlcid != LOCALE_USER_DEFAULT) { - TCHAR lang[MAX_PATH], ctry[MAX_PATH]; - if(GetLocaleInfo(packlcid, LOCALE_SENGLANGUAGE, lang, MAX_PATH)) { - if(GetLocaleInfo(packlcid, LOCALE_SISO3166CTRYNAME, ctry, MAX_PATH)) { - TCHAR langpackInfo[MAX_PATH]; - mir_sntprintf(langpackInfo,SIZEOF(langpackInfo),TEXT("%s (%s) [%04x]"), lang, ctry, packlcid); - lpzLangpackInfo = langpackInfo; - } - else - lpzLangpackInfo.append(lang); - } - else - lpzLangpackInfo = _T("Locale id invalid"); - } - else - lpzLangpackInfo = _T("No language pack installed"); - return true; -} - -std::tstring GetPluginTimestamp(FILETIME *fileTime) -{ - SYSTEMTIME sysTime; - FILETIME ftLocal; - FileTimeToLocalFileTime(fileTime, &ftLocal); - FileTimeToSystemTime(&ftLocal, &sysTime); //convert the file tyme to system time - TCHAR date[256]; //lovely - GetISO8061Time(&sysTime, date, 256); - return date; -} - -bool CVersionInfo::GetPluginLists() -{ - HANDLE hFind; - TCHAR szMirandaPath[MAX_PATH] = { 0 }, szSearchPath[MAX_PATH] = { 0 }; //For search purpose - WIN32_FIND_DATA fd; - TCHAR szMirandaPluginsPath[MAX_PATH] = { 0 }, szPluginPath[MAX_PATH] = { 0 }; //For info reading purpose - BYTE PluginIsEnabled = 0; - HINSTANCE hInstPlugin = NULL; - PLUGININFOEX *(*MirandaPluginInfo)(DWORD); //These two are used to get informations from the plugin. - PLUGININFOEX *pluginInfo = NULL; //Read above. - DWORD mirandaVersion = 0; - BOOL asmCheckOK = FALSE; - DWORD loadError; - // SYSTEMTIME sysTime; //for timestamp - - mirandaVersion = (DWORD)CallService(MS_SYSTEM_GETVERSION, 0, 0); - { - GetModuleFileName(GetModuleHandle(NULL), szMirandaPath, SIZEOF(szMirandaPath)); - TCHAR* str2 = _tcsrchr(szMirandaPath,'\\'); - if(str2!=NULL) *str2=0; - } - lpzMirandaPath = szMirandaPath; - - //We got Miranda path, now we'll use it for two different purposes. - //1) finding plugins. - //2) Reading plugin infos - lstrcpyn(szSearchPath,szMirandaPath, MAX_PATH); //We got the path, now we copy it into szSearchPath. We'll use szSearchPath as am auxiliary variable, while szMirandaPath will keep a "fixed" value. - lstrcat(szSearchPath, _T("\\Plugins\\*.dll")); - - lstrcpyn(szMirandaPluginsPath, szMirandaPath, MAX_PATH); - lstrcat(szMirandaPluginsPath, _T("\\Plugins\\")); - - hFind=FindFirstFile(szSearchPath,&fd); - if ( hFind != INVALID_HANDLE_VALUE) { - do { - if (verbose) PUShowMessageT(fd.cFileName, SM_NOTIFY); - if (!ValidExtension(fd.cFileName, _T("dll"))) - continue; //do not report plugins that do not have extension .dll - - hInstPlugin = GetModuleHandle(fd.cFileName); //try to get the handle of the module - - if (hInstPlugin) //if we got it then the dll is loaded (enabled) - PluginIsEnabled = 1; - else { - PluginIsEnabled = 0; - lstrcpyn(szPluginPath, szMirandaPluginsPath, MAX_PATH); // szPluginPath becomes "drive:\path\Miranda\Plugins\" - lstrcat(szPluginPath, fd.cFileName); // szPluginPath becomes "drive:\path\Miranda\Plugins\popup.dll" - hInstPlugin = LoadLibrary(szPluginPath); - } - if (!hInstPlugin) { //It wasn't loaded. - loadError = GetLastError(); - int bUnknownError = 1; //assume plugin didn't load because of unknown error - //Some error messages. - //get the dlls the plugin statically links to - if (db_get_b(NULL, ModuleName, "CheckForDependencies", TRUE)) - { - std::tstring linkedModules; - - lstrcpyn(szPluginPath, szMirandaPluginsPath, MAX_PATH); // szPluginPath becomes "drive:\path\Miranda\Plugins\" - lstrcat(szPluginPath, fd.cFileName); // szPluginPath becomes "drive:\path\Miranda\Plugins\popup.dll" - if (GetLinkedModulesInfo(szPluginPath, linkedModules)) { - std::tstring time = GetPluginTimestamp(&fd.ftLastWriteTime); - CPlugin thePlugin(fd.cFileName, _T(""), UUID_NULL, _T(""), 0, time.c_str(), linkedModules.c_str()); - AddPlugin(thePlugin, listUnloadablePlugins); - bUnknownError = 0; //we know why the plugin didn't load - } - } - if (bUnknownError) { //if cause is unknown then report it - std::tstring time = GetPluginTimestamp(&fd.ftLastWriteTime); - TCHAR buffer[4096]; - TCHAR error[2048]; - //DWORD_PTR arguments[2] = {loadError, 0}; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY, NULL, loadError, 0, error, SIZEOF(error), NULL); - mir_sntprintf(buffer, SIZEOF(buffer), _T(" Error %ld - %s"), loadError, error); - CPlugin thePlugin( fd.cFileName, _T(""), UUID_NULL, _T(""), 0, time.c_str(), buffer); - AddPlugin(thePlugin, listUnloadablePlugins); - } - } - else { //It was successfully loaded. - MirandaPluginInfo = (PLUGININFOEX *(*)(DWORD))GetProcAddress(hInstPlugin, "MirandaPluginInfoEx"); - if (!MirandaPluginInfo) - MirandaPluginInfo = (PLUGININFOEX *(*)(DWORD))GetProcAddress(hInstPlugin, "MirandaPluginInfo"); - - if (!MirandaPluginInfo) //There is no function: it's not a valid plugin. Let's move on to the next file. - continue; - - //It's a valid plugin, since we could find MirandaPluginInfo - #if (!defined(WIN64) && !defined(_WIN64)) - asmCheckOK = FALSE; - __asm { - push mirandaVersion - push mirandaVersion - call MirandaPluginInfo - pop eax - pop eax - cmp eax, mirandaVersion - jne a1 - mov asmCheckOK, 0xffffffff - a1: - } - #else - asmCheckOK = TRUE; - #endif - if (asmCheckOK) - pluginInfo = CopyPluginInfo(MirandaPluginInfo(mirandaVersion)); - else { - ZeroMemory(&pluginInfo, sizeof(pluginInfo)); - MessageBox(NULL, fd.cFileName, _T("Invalid plugin"), MB_OK); - } - } - - //Let's get the info. - if (MirandaPluginInfo == NULL || pluginInfo == NULL) { - FreeLibrary(hInstPlugin); //We don't need it anymore. - continue; - } - - //We have loaded the informations into pluginInfo. - std::tstring timedate = GetPluginTimestamp(&fd.ftLastWriteTime); - CPlugin thePlugin(fd.cFileName, _A2T(pluginInfo->shortName), pluginInfo->uuid, /*(pluginInfo->flags & 1) ? _T("Unicode aware") :*/ _T(""), (DWORD) pluginInfo->version, timedate.c_str(), _T("")); - - if (PluginIsEnabled) - AddPlugin(thePlugin, listActivePlugins); - else { - AddPlugin(thePlugin, listInactivePlugins); - FreeLibrary(hInstPlugin); //We don't need it anymore. - } - FreePluginInfo(pluginInfo); - MirandaPluginInfo = NULL; - } - while (FindNextFile(hFind,&fd)); - FindClose(hFind); - } - return TRUE; -} - -bool CVersionInfo::AddPlugin(CPlugin &aPlugin, std::list &aList) -{ - std::list::iterator pos = aList.begin(); - bool inserted = FALSE; - - if (aList.begin() == aList.end()) { //It's empty - aList.push_back(aPlugin); - return TRUE; - } - else { //It's not empty - while (pos != aList.end()) { - //It can be either < or >, not equal. - if (aPlugin < (*pos)) { - aList.insert(pos, aPlugin); - return TRUE; - } - - //It's greater: we need to insert it. - pos++; - } } - - if (inserted == FALSE) { - aList.push_back(aPlugin); - return TRUE; - } - return TRUE; -}; - -static char *GetStringFromRVA(DWORD RVA, const LOADED_IMAGE *image) -{ - char *moduleName; - moduleName = (char *) ImageRvaToVa(image->FileHeader, image->MappedAddress, RVA, NULL); - return moduleName; -} - -bool CVersionInfo::GetLinkedModulesInfo(TCHAR *moduleName, std::tstring &linkedModules) -{ - LOADED_IMAGE image; - ULONG importTableSize; - IMAGE_IMPORT_DESCRIPTOR *importData; - //HMODULE dllModule; - linkedModules = _T(""); - bool result = false; - TCHAR szError[20]; - char* szModuleName = mir_t2a(moduleName); - if (MapAndLoad(szModuleName, NULL, &image, TRUE, TRUE) == FALSE) { - mir_sntprintf(szError, SIZEOF(szError), _T("%d"), GetLastError()); - mir_free(szModuleName); - linkedModules = _T("\r\n"); - return result; - } - mir_free(szModuleName); - importData = (IMAGE_IMPORT_DESCRIPTOR *) ImageDirectoryEntryToData(image.MappedAddress, FALSE, IMAGE_DIRECTORY_ENTRY_IMPORT, &importTableSize); - if (!importData) { - mir_sntprintf(szError, SIZEOF(szError), _T("%d"), GetLastError()); - linkedModules = _T("\r\n"); - } - else { - while (importData->Name) { - char *moduleName; - moduleName = GetStringFromRVA(importData->Name, &image); - if (!DoesDllExist(moduleName)) { - linkedModules.append( _T(" Plugin statically links to missing dll file: ") + std::tstring(_A2T(moduleName)) + _T("\r\n")); - result = true; - } - - importData++; //go to next record - } } - - // FreeLibrary(dllModule); - UnMapAndLoad(&image); //unload the image - return result; -} - -std::tstring CVersionInfo::GetListAsString(std::list &aList, DWORD flags, int beautify) { - std::list::iterator pos = aList.begin(); - std::tstring out = _T(""); -#ifdef _DEBUG - if (verbose) PUShowMessage("CVersionInfo::GetListAsString, begin.", SM_NOTIFY); -#endif - - TCHAR szHeader[32] = {0}; - TCHAR szFooter[32] = {0}; - if ((((flags & VISF_FORUMSTYLE) == VISF_FORUMSTYLE) || beautify) && (db_get_b(NULL, ModuleName, "BoldVersionNumber", TRUE))) { - GetStringFromDatabase("BoldBegin", _T("[b]"), szHeader, SIZEOF(szHeader)); - GetStringFromDatabase("BoldEnd", _T("[/b]"), szFooter, SIZEOF(szFooter)); - } - - while (pos != aList.end()) { - out.append(std::tstring((*pos).getInformations(flags, szHeader, szFooter))); - pos++; - } - #ifdef _DEBUG - if (verbose) PUShowMessage("CVersionInfo::GetListAsString, end.", SM_NOTIFY); - #endif - return out; -}; - -void CVersionInfo::BeautifyReport(int beautify, LPCTSTR szBeautifyText, LPCTSTR szNonBeautifyText, std::tstring &out) -{ - if (beautify) - out.append(szBeautifyText); - else - out.append(szNonBeautifyText); -} - -void CVersionInfo::AddInfoHeader(int suppressHeader, int forumStyle, int beautify, std::tstring &out) -{ - if (forumStyle) { //forum style - TCHAR szSize[256], szQuote[256]; - - GetStringFromDatabase("SizeBegin", _T("[quote]"), szSize, SIZEOF(szSize)); - GetStringFromDatabase("QuoteBegin", _T("[spoiler=VersionInfo]"), szQuote, SIZEOF(szQuote)); - out.append(szQuote); - out.append(szSize); - } - else out = _T(""); - - if (!suppressHeader) { - out.append( _T("Miranda NG - VersionInformation plugin by Hrk, modified by Eblis\r\n")); - if (!forumStyle) { - out.append( _T("Miranda's homepage: http://miranda-ng.org/\r\n")); //changed homepage - out.append( _T("Miranda tools: http://miranda-ng.org/\r\n\r\n")); //was missing a / before download - } } - - TCHAR buffer[1024]; //for beautification - GetStringFromDatabase("BeautifyHorizLine", _T("
"), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, _T(""), out); - GetStringFromDatabase("BeautifyBlockStart", _T("
"), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, _T(""), out); - if (!suppressHeader) { - //Time of report: - TCHAR lpzTime[12]; GetTimeFormat(LOCALE_USER_DEFAULT, 0, NULL, _T("HH':'mm':'ss"), lpzTime, SIZEOF(lpzTime)); - TCHAR lpzDate[32]; GetDateFormat(EnglishLocale, 0, NULL, _T("dd' 'MMMM' 'yyyy"), lpzDate, SIZEOF(lpzDate)); - out.append( _T("Report generated at: ") + std::tstring(lpzTime) + _T(" on ") + std::tstring(lpzDate) + _T("\r\n\r\n")); - } - - //Operating system - out.append(_T("CPU: ") + lpzCPUName + _T(" [") + lpzCPUIdentifier + _T("]")); - if (bDEPEnabled) - out.append(_T(" [DEP enabled]")); - - if (luiProcessors > 1) { - TCHAR noProcs[128]; - mir_sntprintf(noProcs, SIZEOF(noProcs), _T(" [%d CPUs]"), luiProcessors); - out.append(noProcs); - } - out.append( _T("\r\n")); - - //RAM - TCHAR szRAM[64]; - mir_sntprintf(szRAM, SIZEOF(szRAM), _T("%d"), luiRAM); - out.append( _T("Installed RAM: ") + std::tstring(szRAM) + _T(" MBytes\r\n")); - - //operating system - out.append( _T("Operating System: ") + lpzOSName + _T("\r\n")); - - //shell, IE, administrator - out.append( _T("Shell: ") + lpzShell + _T("\r\n")); - out.append( _T("Internet Explorer: ") + lpzIEVersion + _T("\r\n")); - out.append( _T("Administrator privileges: ") + lpzAdministratorPrivileges + _T("\r\n")); - - //languages - out.append( _T("OS Languages: ") + lpzOSLanguages + _T("\r\n")); - - //FreeDiskSpace - if (luiFreeDiskSpace) { - TCHAR szDiskSpace[64]; - mir_sntprintf(szDiskSpace, SIZEOF(szDiskSpace), _T("%d"), luiFreeDiskSpace); - out.append( _T("Free disk space on Miranda partition: ") + std::tstring(szDiskSpace) + _T(" MBytes\r\n\r\n")); - } - - //Miranda - out.append( _T("Miranda path: ") + lpzMirandaPath + _T("\r\n")); - out.append( _T("Miranda NG version: ") + lpzMirandaVersion); - if (bIsWOW64) - out.append( _T(" [running inside WOW64]")); - - out.append( _T("\r\nBuild time: ") + lpzBuildTime + _T("\r\n")); - out.append( _T("Profile path: ") + lpzProfilePath + _T("\r\n")); - out.append( _T("Profile size: ") + lpzProfileSize + _T("\r\n")); - out.append( _T("Profile creation date: ") + lpzProfileCreationDate + _T("\r\n")); - out.append( _T("Language pack: ") + lpzLangpackInfo); - out.append((lpzLangpackModifiedDate.size() > 0) ? _T(", modified: ") + lpzLangpackModifiedDate : _T("")); - out.append( _T("\r\n")); - out.append(_T("Service Mode: ")); - if (bServiceMode) - out.append( _T("Yes")); - else - out.append( _T("No")); - - // out.append( _T("Nightly: ") + lpzNightly + _T("\r\n")); - // out.append( _T("Unicode core: ") + lpzUnicodeBuild); - - GetStringFromDatabase("BeautifyBlockEnd", _T("
"), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, _T("\r\n"), out); -} - -void CVersionInfo::AddInfoFooter(int suppressFooter, int forumStyle, int beautify, std::tstring &out) -{ - //End of report - TCHAR buffer[1024]; //for beautification purposes - GetStringFromDatabase("BeautifyHorizLine", _T("
"), buffer, SIZEOF(buffer)); - if (!suppressFooter) { - BeautifyReport(beautify, buffer, _T("\r\n"), out); - out.append( _T("\r\nEnd of report.\r\n")); - } - - if (!forumStyle) { - if (!suppressFooter) - out.append( TranslateT("If you are going to use this report to submit a bug, remember to check the website for questions or help the developers may need.\r\nIf you don't check your bug report and give feedback, it will not be fixed!")); - } - else { - TCHAR szSize[256], szQuote[256]; - GetStringFromDatabase("SizeEnd", _T("[/quote]"), szSize, SIZEOF(szSize)); - GetStringFromDatabase("QuoteEnd", _T("[/spoiler]"), szQuote, SIZEOF(szQuote)); - out.append(szSize); - out.append(szQuote); - } -} - -static void AddSectionAndCount(std::list list, LPCTSTR listText, std::tstring &out) -{ - TCHAR tmp[64]; - mir_sntprintf(tmp, SIZEOF(tmp), _T(" (%u)"), list.size()); - out.append(listText); - out.append(tmp); - out.append( _T(":")); -} - -std::tstring CVersionInfo::GetInformationsAsString(int bDisableForumStyle) { - //Begin of report - std::tstring out; - int forumStyle = (bDisableForumStyle) ? 0 : db_get_b(NULL, ModuleName, "ForumStyle", TRUE); - int showUUID = db_get_b(NULL, ModuleName, "ShowUUIDs", FALSE); - int beautify = db_get_b(NULL, ModuleName, "Beautify", 0) & (!forumStyle); - int suppressHeader = db_get_b(NULL, ModuleName, "SuppressHeader", TRUE); - - DWORD flags = (forumStyle) | (showUUID << 1); - - AddInfoHeader(suppressHeader, forumStyle, beautify, out); - TCHAR normalPluginsStart[1024]; //for beautification purposes, for normal plugins text (start) - TCHAR normalPluginsEnd[1024]; //for beautification purposes, for normal plugins text (end) - TCHAR horizLine[1024]; //for beautification purposes - TCHAR buffer[1024]; //for beautification purposes - - TCHAR headerHighlightStart[10] = _T(""); - TCHAR headerHighlightEnd[10] = _T(""); - if (forumStyle) { - TCHAR start[128], end[128]; - GetStringFromDatabase("BoldBegin", _T("[b]"), start, SIZEOF(start)); - GetStringFromDatabase("BoldEnd", _T("[/b]"), end, SIZEOF(end)); - _tcsncpy(headerHighlightStart, start, SIZEOF(headerHighlightStart)); - _tcsncpy(headerHighlightEnd, end, SIZEOF(headerHighlightEnd)); - } - - //Plugins: list of active (enabled) plugins. - GetStringFromDatabase("BeautifyHorizLine", _T("
"), horizLine, SIZEOF(horizLine)); - BeautifyReport(beautify, horizLine, _T("\r\n"), out); - GetStringFromDatabase("BeautifyActiveHeaderBegin", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightStart, out); - AddSectionAndCount(listActivePlugins, _T("Active Plugins"), out); - GetStringFromDatabase("BeautifyActiveHeaderEnd", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightEnd, out); - out.append( _T("\r\n")); - - GetStringFromDatabase("BeautifyPluginsBegin", _T(""), normalPluginsStart, SIZEOF(normalPluginsStart)); - BeautifyReport(beautify, normalPluginsStart, _T(""), out); - out.append(GetListAsString(listActivePlugins, flags, beautify)); - GetStringFromDatabase("BeautifyPluginsEnd", _T(""), normalPluginsEnd, SIZEOF(normalPluginsEnd)); - BeautifyReport(beautify, normalPluginsEnd, _T(""), out); - //Plugins: list of inactive (disabled) plugins. - if ((!forumStyle) && ((db_get_b(NULL, ModuleName, "ShowInactive", TRUE)) || (bServiceMode))) { - BeautifyReport(beautify, horizLine, _T("\r\n"), out); - GetStringFromDatabase("BeautifyInactiveHeaderBegin", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightStart, out); - AddSectionAndCount(listInactivePlugins, _T("Unloadable Plugins"), out); - GetStringFromDatabase("BeautifyInactiveHeaderEnd", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightEnd, out); - out.append( _T("\r\n")); - BeautifyReport(beautify, normalPluginsStart, _T(""), out); - out.append(GetListAsString(listInactivePlugins, flags, beautify)); - BeautifyReport(beautify, normalPluginsEnd, _T(""), out); - } - if (listUnloadablePlugins.size() > 0) { - BeautifyReport(beautify, horizLine, _T("\r\n"), out); - GetStringFromDatabase("BeautifyUnloadableHeaderBegin", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightStart, out); - AddSectionAndCount(listUnloadablePlugins, _T("Unloadable Plugins"), out); - GetStringFromDatabase("BeautifyUnloadableHeaderEnd", _T(""), buffer, SIZEOF(buffer)); - BeautifyReport(beautify, buffer, headerHighlightEnd, out); - out.append( _T("\r\n")); - BeautifyReport(beautify, normalPluginsStart, _T(""), out); - out.append(GetListAsString(listUnloadablePlugins, flags, beautify)); - BeautifyReport(beautify, normalPluginsEnd, _T(""), out); - } - - AddInfoFooter(suppressHeader, forumStyle, beautify, out); - return out; -} - -//========== Print functions ===== - -void CVersionInfo::PrintInformationsToFile(const TCHAR *info) -{ - TCHAR buffer[MAX_PATH], outputFileName[MAX_PATH]; - if (hOutputLocation) { - FoldersGetCustomPathT(hOutputLocation, buffer, SIZEOF(buffer), _T("%miranda_path%")); - _tcscat(buffer, _T("\\VersionInfo.txt")); - } - else GetStringFromDatabase("OutputFile", _T("VersionInfo.txt"), buffer, SIZEOF(buffer)); - - PathToAbsoluteT(buffer, outputFileName); - - FILE *fp = _tfopen(outputFileName, _T("wb")); - if ( fp != NULL ) { - char* utf = mir_utf8encodeT( info ); - fputs( "\xEF\xBB\xBF", fp); - fputs( utf, fp ); - fclose(fp); - - TCHAR mex[512]; - mir_sntprintf(mex, SIZEOF(mex), TranslateT("Information successfully written to file: \"%s\"."), outputFileName); - Log(mex); - } - else { - TCHAR mex[512]; - mir_sntprintf(mex, SIZEOF(mex), TranslateT("Error during the creation of file \"%s\". Disk may be full or write protected."), outputFileName); - Log(mex); - } -} - -void CVersionInfo::PrintInformationsToFile() -{ - PrintInformationsToFile( GetInformationsAsString().c_str()); -} - -void CVersionInfo::PrintInformationsToMessageBox() -{ - MessageBox(NULL, GetInformationsAsString().c_str(), _T("VersionInfo"), MB_OK); -} - -void CVersionInfo::PrintInformationsToOutputDebugString() -{ - OutputDebugString( GetInformationsAsString().c_str()); -} - - -void CVersionInfo::PrintInformationsToDialogBox() -{ - HWND DialogBox = CreateDialogParam(hInst, - MAKEINTRESOURCE(IDD_DIALOGINFO), - NULL, DialogBoxProc, (LPARAM) this); - - SetDlgItemText(DialogBox, IDC_TEXT, GetInformationsAsString().c_str()); -} - -void CVersionInfo::PrintInformationsToClipboard(bool showLog) -{ - if (GetOpenClipboardWindow()) { - Log( TranslateT("The clipboard is not available, retry.")); - return; - } - - OpenClipboard(NULL); - //Ok, let's begin, then. - EmptyClipboard(); - //Storage data we'll use. - LPTSTR lptstrCopy; - std::tstring aux = GetInformationsAsString(); - size_t length = aux.length() + 1; - HANDLE hData = GlobalAlloc(GMEM_MOVEABLE, length*sizeof(TCHAR) + 5); - //Lock memory, copy it, release it. - lptstrCopy = (LPTSTR)GlobalLock(hData); - lstrcpy(lptstrCopy, aux.c_str()); - lptstrCopy[length] = '\0'; - GlobalUnlock(hData); - //Now set the clipboard data. - - SetClipboardData(CF_UNICODETEXT, hData); - - //Remove the lock on the clipboard. - CloseClipboard(); - if (showLog) - Log( TranslateT("Information successfully copied into clipboard.")); -} diff --git a/plugins/!Deprecated/VersionInfo/src/CVersionInfo.h b/plugins/!Deprecated/VersionInfo/src/CVersionInfo.h deleted file mode 100644 index 6bff2dd8bd..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/CVersionInfo.h +++ /dev/null @@ -1,101 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef CVERSIONINFO_H -#define CVERSIONINFO_H - -#ifndef PF_NX_ENABLED - #define PF_NX_ENABLED 12 -#endif - -class CVersionInfo -{ - private: - //Informations related to Miranda: main informations. - std::tstring lpzMirandaVersion; - std::tstring lpzMirandaPath; - std::tstring lpzProfilePath; - std::tstring lpzProfileSize; - std::tstring lpzProfileCreationDate; - std::tstring lpzNightly; - std::tstring lpzUnicodeBuild; - std::tstring lpzCPUName; - std::tstring lpzCPUIdentifier; - std::tstring lpzBuildTime; - std::tstring lpzShell; - std::tstring lpzIEVersion; - std::tstring lpzAdministratorPrivileges; - std::tstring lpzOSLanguages; - std::tstring lpzLangpackInfo; - std::tstring lpzLangpackModifiedDate; - //Informations related to plugins - std::list listActivePlugins; - std::list listInactivePlugins; - std::list listUnloadablePlugins; - //OS and hardware informations. - std::tstring lpzOSName; - unsigned int luiProcessors; - unsigned int luiRAM; - unsigned int luiFreeDiskSpace; - int bDEPEnabled; - BOOL bIsWOW64; - //Additional Miranda informations. - unsigned int luiContacts; - unsigned int luiEvents; - unsigned int luiUnreadEvents; - unsigned int luiDBSize; - //Configuration - - bool GetLinkedModulesInfo(TCHAR *moduleName, std::tstring &linkedModules); - - public: - //Constructor/Destructor - CVersionInfo(); - ~CVersionInfo(); - void Initialize(); - //Miranda informations - bool GetMirandaVersion(); - bool GetProfileSettings(); - bool GetOSLanguages(); - bool GetLangpackInfo(); - bool GetPluginLists(); - bool GetEventCount(); //TODO - //OSInformations - bool GetOSVersion(); - bool GetHWSettings(); - //Plugins - bool AddPlugin(CPlugin&, std::list&); - //Prints - - void PrintInformationsToFile(); - void PrintInformationsToFile(const TCHAR *info); - void PrintInformationsToDialogBox(); - void PrintInformationsToMessageBox(); - void PrintInformationsToOutputDebugString(); - void PrintInformationsToClipboard(bool); - - std::tstring GetListAsString(std::list&, DWORD flags, int beautify); - std::tstring GetInformationsAsString(int bDisableForumStyle = 0); - void BeautifyReport(int, LPCTSTR, LPCTSTR, std::tstring &); - void AddInfoHeader(int, int, int, std::tstring &); - void AddInfoFooter(int, int, int, std::tstring &); -}; - -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/common.h b/plugins/!Deprecated/VersionInfo/src/common.h deleted file mode 100644 index 16107fd7e7..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/common.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_VERSIONINFO_COMMON_H -#define M_VERSIONINFO_COMMON_H - -#define STRICT -#define WIN32_LEAN_AND_MEAN - -#define _CRT_SECURE_NO_DEPRECATE - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "CPlugin.h" -#include "version.h" -#include "hooked_events.h" -#include "services.h" -#include "dlgHandlers.h" -#include "utils.h" -#include "CVersionInfo.h" -#include "resource.h" - -#define VIPF_NONE 0x0000 -#define VIPF_UNCERTAIN 0x0010 - -#define VISF_FORUMSTYLE 0x0001 -#define VISF_SHOWUUID 0x0002 -#define VISF_SHOWFLAGS 0x0004 - -#ifndef MS_DB_GETPROFILEPATH_BASIC //db3xSA -#define MS_DB_GETPROFILEPATH_BASIC "DB/GetProfilePathBasic" -#endif - -//main.cpp -extern HINSTANCE hInst; - -//main.cpp -extern HICON hiVIIcon; - -//main.cpp -extern DWORD EnglishLocale; - -//for folders support -extern HANDLE hOutputLocation; - -//services.cpp -extern int bServiceMode; - -//main.cpp -extern char ModuleName[]; -extern BOOL verbose; - -#define DEFAULT_UPLOAD_PORT 51234 - -const MUUID UUID_NULL = {0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}; - -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/dlgHandlers.cpp b/plugins/!Deprecated/VersionInfo/src/dlgHandlers.cpp deleted file mode 100644 index c6193cc0b5..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/dlgHandlers.cpp +++ /dev/null @@ -1,586 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -const char *szQuoteStrings[] = {"[spoiler=VersionInfo] | [/spoiler]", "[quote] | [/quote]", "[code] | [/code]", ""}; -const char *szSizeStrings[] = {"[quote] | [/quote]", "[size=1] | [/size]", "[size=1px] | [/size]", "[size=12] | [/size]", "[size=80] | [/size]", ""}; -const char *szBoldStrings[] = {"[b] | [/b]", "[u] | [/u]", "[b][u] | [/u][/b]", " | ", " | ", " | "}; -const int nQuoteCount = SIZEOF(szQuoteStrings); //get the number of quote strings -const int nSizeCount = SIZEOF(szSizeStrings); //get the number of size strings -const int nBoldCount = SIZEOF(szBoldStrings); //get the number of bold strings - -#define MAX_TEXT 4096*4 - -int AddInfoToComboboxes(HWND hWnd, int nQuotesComboBox, int nSizesComboBox, int nBoldComboBox) -{ - int i; - for (i = 0; i < nQuoteCount; i++) - SendDlgItemMessageA(hWnd, nQuotesComboBox, CB_ADDSTRING, 0, (LPARAM) szQuoteStrings[i]); - - for (i = 0; i < nSizeCount; i++) - SendDlgItemMessageA(hWnd, nSizesComboBox, CB_ADDSTRING, 0, (LPARAM) szSizeStrings[i]); - - for (i = 0; i < nBoldCount; i++) - SendDlgItemMessageA(hWnd, nBoldComboBox, CB_ADDSTRING, 0, (LPARAM) szBoldStrings[i]); - - return 0; -} - -void EnableAskComboboxes(HWND hWnd, int bEnable) -{ - EnableWindow(GetDlgItem(hWnd, IDC_ASK_BOLDCOMBOBOX), bEnable); - EnableWindow(GetDlgItem(hWnd, IDC_ASK_QUOTECOMBOBOX), bEnable); - EnableWindow(GetDlgItem(hWnd, IDC_ASK_SIZECOMBOBOX), bEnable); -} - -INT_PTR CALLBACK AskDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - const int MAX_SIZE = 128; - static int oldFSFValue; - static TCHAR oldQuoteBegin[MAX_SIZE], oldQuoteEnd[MAX_SIZE]; - static TCHAR oldSizeBegin[MAX_SIZE], oldSizeEnd[MAX_SIZE]; - static TCHAR oldBoldBegin[MAX_SIZE], oldBoldEnd[MAX_SIZE]; - - switch (msg) { - case WM_INITDIALOG: - SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hiVIIcon); - - TranslateDialogDefault(hWnd); - - oldFSFValue = db_get_b(NULL, ModuleName, "ForumStyle", 1); - - AddInfoToComboboxes(hWnd, IDC_ASK_QUOTECOMBOBOX, IDC_ASK_SIZECOMBOBOX, IDC_ASK_BOLDCOMBOBOX); - - CheckDlgButton(hWnd, IDC_ASK_TODIALOGBOX, BST_CHECKED); - - CheckDlgButton(hWnd, IDC_ASK_FORUMSTYLE, (oldFSFValue) ? BST_CHECKED : BST_UNCHECKED); - EnableAskComboboxes(hWnd, oldFSFValue); - { - TCHAR buffer[1024]; - GetStringFromDatabase("QuoteBegin", _T("[spoiler=VersionInfo]"), oldQuoteBegin, MAX_SIZE); - GetStringFromDatabase("QuoteEnd", _T("[/spoiler]"), oldQuoteEnd, MAX_SIZE); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), oldQuoteBegin, oldQuoteEnd); - SendDlgItemMessage(hWnd, IDC_ASK_QUOTECOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - - GetStringFromDatabase("SizeBegin", _T("[quote]"), oldSizeBegin, MAX_SIZE); - GetStringFromDatabase("SizeEnd", _T("[/quote]"), oldSizeEnd, MAX_SIZE); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), oldSizeBegin, oldSizeEnd); - SendDlgItemMessage(hWnd, IDC_ASK_SIZECOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - - GetStringFromDatabase("BoldBegin", _T("[b]"), oldBoldBegin, MAX_SIZE); - GetStringFromDatabase("BoldEnd", _T("[/b]"), oldBoldEnd, MAX_SIZE); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), oldBoldBegin, oldBoldEnd); - SendDlgItemMessage(hWnd, IDC_ASK_BOLDCOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - } - - return TRUE; - - case WM_CLOSE: - DestroyWindow(hWnd); - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDC_ASK_FORUMSTYLE: - EnableAskComboboxes(hWnd, IsDlgButtonChecked(hWnd, IDC_ASK_FORUMSTYLE)); - break; - - case IDC_ASK_CANCEL: - DestroyWindow(hWnd); - break; - - case IDC_ASK_OK: - TCHAR quoteBegin[MAX_SIZE], quoteEnd[MAX_SIZE]; - TCHAR sizeBegin[MAX_SIZE], sizeEnd[MAX_SIZE]; - TCHAR boldBegin[MAX_SIZE], boldEnd[MAX_SIZE]; - TCHAR buffer[1024]; - - SendDlgItemMessage(hWnd, IDC_ASK_QUOTECOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, quoteBegin, quoteEnd); - SendDlgItemMessage(hWnd, IDC_ASK_SIZECOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, sizeBegin, sizeEnd); - SendDlgItemMessage(hWnd, IDC_ASK_BOLDCOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, boldBegin, boldEnd); - - int newFSFValue = IsDlgButtonChecked(hWnd, IDC_ASK_FORUMSTYLE); - if (newFSFValue != oldFSFValue) - db_set_b(NULL, ModuleName, "ForumStyle", newFSFValue); //temporary store the new value - - if (newFSFValue) { - db_set_ts(NULL, ModuleName, "QuoteBegin", quoteBegin); - db_set_ts(NULL, ModuleName, "QuoteEnd", quoteEnd); - - db_set_ts(NULL, ModuleName, "SizeBegin", sizeBegin); - db_set_ts(NULL, ModuleName, "SizeEnd", sizeEnd); - - db_set_ts(NULL, ModuleName, "BoldBegin", boldBegin); - db_set_ts(NULL, ModuleName, "BoldEnd", boldEnd); - } - - int debugTo = TO_DIALOGBOX; //just to be safe - if (IsDlgButtonChecked(hWnd, IDC_ASK_TOFILE)) - debugTo = TO_FILE; - if (IsDlgButtonChecked(hWnd, IDC_ASK_TOMESSAGEBOX)) - debugTo = TO_MESSAGEBOX; - if (IsDlgButtonChecked(hWnd, IDC_ASK_TODIALOGBOX)) - debugTo = TO_DIALOGBOX; - if (IsDlgButtonChecked(hWnd, IDC_ASK_TOOUTPUTDEBUGSTRING)) - debugTo = TO_DEBUGSTRING; - if (IsDlgButtonChecked(hWnd, IDC_ASK_TOCLIPBOARD)) - debugTo = TO_CLIPBOARD; - if (IsDlgButtonChecked(hWnd, IDC_ASK_TOUPLOAD)) - debugTo = TO_UPLOAD; - - DoDebugTo(debugTo); - - if (newFSFValue != oldFSFValue) - db_set_b(NULL, ModuleName, "ForumStyle", oldFSFValue); - - if (newFSFValue) { - db_set_ts(NULL, ModuleName, "QuoteBegin", oldQuoteBegin); - db_set_ts(NULL, ModuleName, "QuoteEnd", oldQuoteEnd); - - db_set_ts(NULL, ModuleName, "SizeBegin", oldSizeBegin); - db_set_ts(NULL, ModuleName, "SizeEnd", oldSizeEnd); - - db_set_ts(NULL, ModuleName, "BoldBegin", oldBoldBegin); - db_set_ts(NULL, ModuleName, "BoldEnd", oldBoldEnd); - } - - DestroyWindow(hWnd); - break; - } - break; - } - return 0; -} - -int DoDebugTo(int debugTo) -{ - HWND parent = NULL; - HWND askDialog; - CVersionInfo myInfo;// = CVersionInfo(); - if (verbose) PUShowMessage("I am going to read the information.", SM_NOTIFY); - if (debugTo != TO_ASK) - myInfo.Initialize(); - - if (verbose) PUShowMessage("I have read the information, I will now print them.", SM_NOTIFY); - - switch(debugTo) { - case TO_ASK: - askDialog = CreateDialog(hInst, MAKEINTRESOURCE(IDD_ASKDIALOG), parent, AskDlgProc); - ShowWindow(askDialog, SW_SHOW); - break; - - case TO_FILE: - myInfo.PrintInformationsToFile(); - break; - - case TO_MESSAGEBOX: - myInfo.PrintInformationsToMessageBox(); - break; - - case TO_DIALOGBOX: - myInfo.PrintInformationsToDialogBox(); - break; - - case TO_DEBUGSTRING: - myInfo.PrintInformationsToOutputDebugString(); - break; - - case TO_CLIPBOARD: - myInfo.PrintInformationsToClipboard(true); - break; - - default: - myInfo.PrintInformationsToFile(); - break; - } - - if ((debugTo != TO_CLIPBOARD) && (db_get_b(NULL, ModuleName, "ClipboardAlways", FALSE))) - myInfo.PrintInformationsToClipboard(false); - - if ((bServiceMode) && (debugTo != TO_DIALOGBOX) && (debugTo != TO_ASK)) //close miranda if in service mode and no dialog was shown - PostQuitMessage(0); - - return 0; -} - -void EnableUploadSettings(HWND hWnd, int bEnable) -{ - EnableWindow(GetDlgItem(hWnd, IDC_UPLOAD_SERVER), bEnable); - EnableWindow(GetDlgItem(hWnd, IDC_UPLOAD_PORT), bEnable); - EnableWindow(GetDlgItem(hWnd, IDC_UPLOAD_USERNAME), bEnable); - EnableWindow(GetDlgItem(hWnd, IDC_UPLOAD_PASSWORD), bEnable); -} - -INT_PTR CALLBACK DlgProcOpts(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static int bOptionsInitializing = 0; - switch(msg) { - case WM_INITDIALOG: - bOptionsInitializing = 1; - TranslateDialogDefault(hWnd); - AddInfoToComboboxes(hWnd, IDC_QUOTECOMBOBOX, IDC_SIZECOMBOBOX, IDC_BOLDCOMBOBOX); - - CheckDlgButton(hWnd, IDC_FORUMSTYLE, (BOOL) db_get_b(NULL, ModuleName, "ForumStyle", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_DISABLEDTOO, (BOOL) db_get_b(NULL, ModuleName, "ShowInactive", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_SHOWUUIDS, (BOOL) db_get_b(NULL, ModuleName, "ShowUUIDs", FALSE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_SHOWINSTALLEDLANGUAGES, (BOOL) db_get_b(NULL, ModuleName, "ShowInstalledLanguages", FALSE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_SUPPRESSHEADER, (BOOL) db_get_b(NULL, ModuleName, "SuppressHeader", TRUE) ? BST_CHECKED : BST_UNCHECKED); - - CheckDlgButton(hWnd, IDC_SHOWINTASKBAR, (BOOL) db_get_b(NULL, ModuleName, "ShowInTaskbar", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_CLIPBOARDALSO, (BOOL) db_get_b(NULL, ModuleName, "ClipboardAlways", FALSE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_BOLDVERSION, (BOOL) db_get_b(NULL, ModuleName, "BoldVersionNumber", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hWnd, IDC_CHECKUNLOADABLE, (BOOL) db_get_b(NULL, ModuleName, "CheckForDependencies", TRUE) ? BST_CHECKED : BST_UNCHECKED); - SetFocus(GetDlgItem(hWnd, IDC_FORUMSTYLE)); - { - DBVARIANT dbv = { 0 }; - bOptionsInitializing = 1; - TCHAR buffer[1024]; - TCHAR notFound[1024]; - - if (db_get_ts(NULL, ModuleName, "OutputFile", &dbv) == 0) - PathToAbsoluteT(dbv.ptszVal, notFound); - else - PathToAbsoluteT(_T("VersionInfo.txt"), notFound); - - if (hOutputLocation) - _tcscpy(buffer, TranslateT("Customize using folders plugin")); - else - _tcsncpy(buffer, notFound, SIZEOF(notFound)); - - SetDlgItemText(hWnd, IDC_FILENAME, buffer); - - TCHAR start[256], end[256]; - GetStringFromDatabase("QuoteBegin", _T("[spoiler=VersionInfo]"), start, SIZEOF(start)); - GetStringFromDatabase("QuoteEnd", _T("[/spoiler]"), end, SIZEOF(end)); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), start, end); - SendDlgItemMessage(hWnd, IDC_QUOTECOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - - GetStringFromDatabase("SizeBegin", _T("[quote]"), start, SIZEOF(start)); - GetStringFromDatabase("SizeEnd", _T("[/quote]"), end, SIZEOF(end)); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), start, end); - SendDlgItemMessage(hWnd, IDC_SIZECOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - - GetStringFromDatabase("BoldBegin", _T("[b]"), start, SIZEOF(start)); - GetStringFromDatabase("BoldEnd", _T("[/b]"), end, SIZEOF(end)); - mir_sntprintf(buffer, SIZEOF(buffer), _T("%s | %s"), start, end); - SendDlgItemMessage(hWnd, IDC_BOLDCOMBOBOX, CB_SELECTSTRING, -1, (LPARAM) buffer); - //to add stuff - - //upload server settings - GetStringFromDatabase("UploadServer", _T("vi.cass.cz"), buffer, SIZEOF(buffer)); - SetWindowText(GetDlgItem(hWnd, IDC_UPLOAD_SERVER), buffer); - - int port = db_get_w(NULL, ModuleName, "UploadPort", DEFAULT_UPLOAD_PORT); - _itot(port, buffer, 10); - SetWindowText(GetDlgItem(hWnd, IDC_UPLOAD_PORT), buffer); - - GetStringFromDatabase("UploadUser", _T(""), buffer, SIZEOF(buffer)); - SetWindowText(GetDlgItem(hWnd, IDC_UPLOAD_USERNAME), buffer); - - GetStringFromDatabase("UploadPassword", _T(""), buffer, SIZEOF(buffer)); - SetWindowText(GetDlgItem(hWnd, IDC_UPLOAD_PASSWORD), buffer); - } - - switch(db_get_b(NULL, ModuleName, "DebugTo", TO_DIALOGBOX)) { - case TO_FILE: - CheckDlgButton(hWnd, IDC_TOFILE, BST_CHECKED); - break; - - case TO_MESSAGEBOX: - CheckDlgButton(hWnd, IDC_TOMESSAGEBOX, BST_CHECKED); - break; - - case TO_DIALOGBOX: - CheckDlgButton(hWnd, IDC_TODIALOGBOX, BST_CHECKED); - break; - - case TO_DEBUGSTRING: - CheckDlgButton(hWnd, IDC_TODEBUGSTRING, BST_CHECKED); - break; - - case TO_CLIPBOARD: - CheckDlgButton(hWnd, IDC_TOCLIPBOARD, BST_CHECKED); - break; - - case TO_UPLOAD: - CheckDlgButton(hWnd, IDC_TOUPLOAD, BST_CHECKED); - break; - - case TO_ASK: - CheckDlgButton(hWnd, IDC_ASKEVERYTIME, BST_CHECKED); - break; - - default: - CheckDlgButton(hWnd, IDC_TODIALOGBOX, BST_CHECKED); - break; - } - - EnableWindow(GetDlgItem(hWnd, IDC_QUOTECOMBOBOX), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_SIZECOMBOBOX), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_BOLDVERSION), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_BOLDCOMBOBOX), (IsDlgButtonChecked(hWnd, IDC_BOLDVERSION) & IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE)) ? TRUE : FALSE);//both forum style and bold version checked - EnableWindow(GetDlgItem(hWnd, IDC_SHOWINTASKBAR), IsDlgButtonChecked(hWnd, IDC_TODIALOGBOX) ? TRUE : FALSE); //only enable for to dialog box - EnableWindow(GetDlgItem(hWnd, IDC_DISABLEDTOO), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? FALSE : TRUE); //if forum style disable show disabled plugins - EnableWindow(GetDlgItem(hWnd, IDC_CLIPBOARDALSO), IsDlgButtonChecked(hWnd, IDC_TOCLIPBOARD) ? FALSE : TRUE); //don't enable always clipboard if we're printing to clipboard - EnableWindow(GetDlgItem(hWnd, IDC_FILENAME), ((IsDlgButtonChecked(hWnd, IDC_TOFILE)) && (!hOutputLocation)) ? TRUE : FALSE); - EnableUploadSettings(hWnd, IsDlgButtonChecked(hWnd, IDC_TOUPLOAD) ? TRUE : FALSE); - { - OSVERSIONINFO osvi = { 0 }; - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx(&osvi); - - if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) - EnableWindow(GetDlgItem(hWnd, IDC_CHECKUNLOADABLE), FALSE); - } - - CheckDlgButton(hWnd, IDC_DEBUG, (BOOL) verbose == TRUE ? BST_CHECKED : BST_UNCHECKED); - - SetFocus(GetDlgItem(hWnd, IDC_GETINFONOW)); - - bOptionsInitializing = 0; - break; - - case WM_COMMAND: - switch(LOWORD(wParam)) { - case IDC_ASKEVERYTIME: - case IDC_TOFILE: - case IDC_TOMESSAGEBOX: - case IDC_TODIALOGBOX: - case IDC_TODEBUGSTRING: - case IDC_TOCLIPBOARD: - case IDC_TOUPLOAD: - case IDC_FORUMSTYLE: - case IDC_BOLDVERSION: - EnableWindow(GetDlgItem(hWnd, IDC_QUOTECOMBOBOX), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_SIZECOMBOBOX), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_BOLDVERSION), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); //forum style only - EnableWindow(GetDlgItem(hWnd, IDC_BOLDCOMBOBOX), (IsDlgButtonChecked(hWnd, IDC_BOLDVERSION) & IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE)) ? TRUE : FALSE); //both forum style and bold version checked - EnableWindow(GetDlgItem(hWnd, IDC_FILENAME), ((IsDlgButtonChecked(hWnd, IDC_TOFILE)) && (!hOutputLocation)) ? TRUE : FALSE); - EnableWindow(GetDlgItem(hWnd, IDC_SHOWINTASKBAR), IsDlgButtonChecked(hWnd, IDC_TODIALOGBOX) ? TRUE : FALSE); //only enable for to dialog box - EnableWindow(GetDlgItem(hWnd, IDC_DISABLEDTOO), IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? FALSE : TRUE); //if forum style disable show disabled plugins - EnableWindow(GetDlgItem(hWnd, IDC_CLIPBOARDALSO), IsDlgButtonChecked(hWnd, IDC_TOCLIPBOARD) ? FALSE : TRUE); //don't enable always clipboard if we're printing to clipboard - EnableUploadSettings(hWnd, IsDlgButtonChecked(hWnd, IDC_TOUPLOAD) ? TRUE : FALSE); - - case IDC_SHOWUUIDS: - if (IsDlgButtonChecked(hWnd, IDC_SHOWUUIDS) && MessageBox(hWnd, - TranslateT("Are you sure you want to enable this option?\nPlease only enable this option if you really know what you're doing and what the option is for or if someone asked you to do it."), - TranslateT("Show plugin UUIDs?"), MB_YESNO | MB_ICONWARNING) == IDNO) - { - CheckDlgButton(hWnd, IDC_SHOWUUIDS, FALSE); - - break; - }//else fallthrough - case IDC_DISABLEDTOO: - case IDC_SHOWINTASKBAR: - case IDC_CLIPBOARDALSO: - case IDC_CHECKUNLOADABLE: - case IDC_SUPPRESSHEADER: - case IDC_SHOWINSTALLEDLANGUAGES: - EnableWindow(GetDlgItem(hWnd, IDC_GETINFONOW), FALSE); - - case IDC_QUOTECOMBOBOX: - case IDC_SIZECOMBOBOX: - case IDC_BOLDCOMBOBOX: - if (!bOptionsInitializing) - SendMessage(GetParent(hWnd), PSM_CHANGED,0,0); - break; - - case IDC_FILENAME: - case IDC_UPLOAD_USERNAME: - case IDC_UPLOAD_PASSWORD: - case IDC_UPLOAD_PORT: - case IDC_UPLOAD_SERVER: - if ( HIWORD(wParam) == EN_CHANGE && !bOptionsInitializing) { - SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); - EnableWindow(GetDlgItem(hWnd, IDC_GETINFONOW), FALSE); - } - break; - - case IDC_GETINFONOW: - //Call the plugin menu command routine. - PluginMenuCommand(0,0); - break; - - case IDC_DEBUG: - verbose = !verbose; - break; - } - - break; - - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - { - TCHAR buffer[1024]; - TCHAR start[256], end[256]; - SendDlgItemMessage(hWnd, IDC_QUOTECOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, start, end); - db_set_ts(NULL, ModuleName, "QuoteBegin", start); - db_set_ts(NULL, ModuleName, "QuoteEnd", end); - SendDlgItemMessage(hWnd, IDC_SIZECOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, start, end); - db_set_ts(NULL, ModuleName, "SizeBegin", start); - db_set_ts(NULL, ModuleName, "SizeEnd", end); - SendDlgItemMessage(hWnd, IDC_BOLDCOMBOBOX, WM_GETTEXT, SIZEOF(buffer), (LPARAM) buffer); - SplitStringInfo(buffer, start, end); - db_set_ts(NULL, ModuleName, "BoldBegin", start); - db_set_ts(NULL, ModuleName, "BoldEnd", end); - } - - db_set_b(NULL, ModuleName, "CheckForDependencies", IsDlgButtonChecked(hWnd, IDC_CHECKUNLOADABLE) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "BoldVersionNumber", IsDlgButtonChecked(hWnd, IDC_BOLDVERSION) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "ForumStyle", IsDlgButtonChecked(hWnd, IDC_FORUMSTYLE) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "ClipboardAlways", IsDlgButtonChecked(hWnd, IDC_CLIPBOARDALSO) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "SuppressHeader", IsDlgButtonChecked(hWnd, IDC_SUPPRESSHEADER) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "ShowUUIDs", IsDlgButtonChecked(hWnd, IDC_SHOWUUIDS) ? TRUE : FALSE); - db_set_b(NULL, ModuleName, "ShowInstalledLanguages", IsDlgButtonChecked(hWnd, IDC_SHOWINSTALLEDLANGUAGES) ? TRUE : FALSE); - - if (!hOutputLocation) { - TCHAR filePath[MAX_PATH], fileName[MAX_PATH]; - GetDlgItemText(hWnd, IDC_FILENAME, fileName, MAX_PATH); - PathToRelativeT(fileName, filePath); - - db_set_ts(NULL, ModuleName, "OutputFile", filePath); //store relative path - } - db_set_b(NULL, ModuleName, "ShowInTaskbar", IsDlgButtonChecked(hWnd, IDC_SHOWINTASKBAR) ? TRUE : FALSE); - //Debug to: - if (IsDlgButtonChecked(hWnd, IDC_TOFILE)) - db_set_b(NULL, ModuleName, "DebugTo", TO_FILE); - else if (IsDlgButtonChecked(hWnd, IDC_TOMESSAGEBOX)) - db_set_b(NULL, ModuleName, "DebugTo", TO_MESSAGEBOX); - else if (IsDlgButtonChecked(hWnd, IDC_TODIALOGBOX)) - db_set_b(NULL, ModuleName, "DebugTo", TO_DIALOGBOX); - else if (IsDlgButtonChecked(hWnd, IDC_TODEBUGSTRING)) - db_set_b(NULL, ModuleName, "DebugTo", TO_DEBUGSTRING); - else if (IsDlgButtonChecked(hWnd, IDC_TOCLIPBOARD)) - db_set_b(NULL, ModuleName, "DebugTo", TO_CLIPBOARD); - else if (IsDlgButtonChecked(hWnd, IDC_TOUPLOAD)) - db_set_b(NULL, ModuleName, "DebugTo", TO_UPLOAD); - else if (IsDlgButtonChecked(hWnd, IDC_ASKEVERYTIME)) - db_set_b(NULL, ModuleName, "DebugTo", TO_ASK); - - EnableWindow(GetDlgItem(hWnd, IDC_GETINFONOW), TRUE); - //Disabled plugins too? - db_set_b(NULL, ModuleName, "ShowInactive", IsDlgButtonChecked(hWnd, IDC_DISABLEDTOO)?TRUE:FALSE); - } - } - - break; - } - return 0; -} - -INT_PTR CALLBACK DialogBoxProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static CVersionInfo *myInfo = NULL; - switch(msg) { - case WM_INITDIALOG: - SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hiVIIcon); - - myInfo = (CVersionInfo *) lParam; - if (db_get_b(NULL, ModuleName, "ShowInTaskbar", TRUE)) { - LONG_PTR ws; - ws = GetWindowLongPtr(hWnd, GWL_EXSTYLE); - SetWindowLongPtr(hWnd, GWL_EXSTYLE, ws | WS_EX_APPWINDOW); - //SetWindowLongPtr(hWnd, GWL_STYLE, ws | WS_DLGFRAME | WS_POPUPWINDOW); - } - - TranslateDialogDefault(hWnd); - { - DBVARIANT dbv = { 0 }; - LOGFONT lf = { 0 }; - - dbv.type = DBVT_BLOB; - if (db_get(NULL, "OptionFont", "Font", &dbv) == 0) - lf=*(LOGFONT*)dbv.pbVal; - else { - HFONT hFont = (HFONT)SendDlgItemMessage(hWnd,IDC_CLOSE,WM_GETFONT,0,0); - GetObject(hFont,sizeof(lf),&lf); - } - SendDlgItemMessage(hWnd,IDC_TEXT,WM_SETFONT,(WPARAM)CreateFontIndirect(&lf),0); - } - - return TRUE; - - case WM_CLOSE: - DestroyWindow(hWnd); - break; - - case WM_COMMAND: { - switch(LOWORD(wParam)) { - case IDC_CLOSE: - DestroyWindow(hWnd); - break; - - case IDC_COPYTEXT: - SetLastError(0); - if (GetOpenClipboardWindow()) - Log( TranslateT("The clipboard is not available, retry.")); - else { - OpenClipboard(hWnd); - //Ok, let's begin, then. - EmptyClipboard(); - //Storage data we'll use. - TCHAR text[MAX_TEXT]; - LPTSTR lptstrCopy; - GetDlgItemText(hWnd, IDC_TEXT, text, MAX_TEXT); - int length = lstrlen(text) + 1; - HANDLE hData = GlobalAlloc(GMEM_MOVEABLE, (length + 5)*sizeof( TCHAR )); - //Lock memory, copy it, release it. - lptstrCopy = (LPTSTR)GlobalLock(hData); - lstrcpyn(lptstrCopy, text, length); - lptstrCopy[length] = '\0'; - GlobalUnlock(hData); - //Now set the clipboard data. - - SetClipboardData(CF_UNICODETEXT, hData); - - //Remove the lock on the clipboard. - CloseClipboard(); - } - - break; - - case IDC_SAVETOFILE: - TCHAR text[MAX_TEXT]; - GetDlgItemText(hWnd, IDC_TEXT, text, MAX_TEXT); - myInfo->PrintInformationsToFile(text); - break; - } - - break; - } - case WM_DESTROY: - DeleteObject((HFONT)SendDlgItemMessage(hWnd,IDC_TEXT,WM_GETFONT,0,0)); - myInfo = NULL; - if (bServiceMode) //close miranda if in service mode - PostQuitMessage(0); - - break; - } - return 0; -} diff --git a/plugins/!Deprecated/VersionInfo/src/dlgHandlers.h b/plugins/!Deprecated/VersionInfo/src/dlgHandlers.h deleted file mode 100644 index b2a66f014c..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/dlgHandlers.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_VERSIONINFO_DLGHEADERS_H -#define M_VERSIONINFO_DLGHEADERS_H - -#define TO_ASK 0 -#define TO_FILE 1 -#define TO_MESSAGEBOX 2 -#define TO_DIALOGBOX 3 -#define TO_DEBUGSTRING 4 -#define TO_CLIPBOARD 5 -#define TO_UPLOAD 6 - -extern INT_PTR PluginMenuCommand(WPARAM, LPARAM); -extern INT_PTR OptionsInitialise(WPARAM, LPARAM); - - -int DoDebugTo(int debugTo); -INT_PTR CALLBACK AskDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -INT_PTR CALLBACK DlgProcOpts(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -INT_PTR CALLBACK DialogBoxProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/hooked_events.cpp b/plugins/!Deprecated/VersionInfo/src/hooked_events.cpp deleted file mode 100644 index d718db4a09..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/hooked_events.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -int HookEvents() -{ - HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - HookEvent(ME_OPT_INITIALISE, OnOptionsInitialise); - return 0; -} - -int OnModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - hOutputLocation = FoldersRegisterCustomPathT(LPGEN("VersionInfo"), LPGEN("Output folder"), MIRANDA_PATHT); - - return 0; -} - -int OnOptionsInitialise(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.position = 100000000; - odp.hInstance = hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_VERSIONINFO); - odp.pszTitle = LPGEN("Version Information"); - odp.pszGroup = LPGEN("Services"); - odp.groupPosition = 910000000; - odp.flags = ODPF_BOLDGROUPS; - odp.pfnDlgProc = DlgProcOpts; - Options_AddPage(wParam, &odp); - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/hooked_events.h b/plugins/!Deprecated/VersionInfo/src/hooked_events.h deleted file mode 100644 index e63d138998..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/hooked_events.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_VERSIONINFO_HOOKED_EVENTS_H -#define M_VERSIONINFO_HOOKED_EVENTS_H - -extern HANDLE hModulesLoaded; -extern HANDLE hOptionsInitialise; - -int HookEvents(); - -int OnModulesLoaded(WPARAM wParam, LPARAM lParam); -int OnOptionsInitialise(WPARAM wParam, LPARAM lParam); - -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/main.cpp b/plugins/!Deprecated/VersionInfo/src/main.cpp deleted file mode 100644 index caf9cbffe7..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/main.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -HINSTANCE hInst; - -int hLangpack; - -HICON hiVIIcon; - -DWORD EnglishLocale; - -HANDLE hOutputLocation = NULL; //for folders plugin - -void * (* MirandaMalloc)(size_t); -void * (* MirandaRealloc)(void *, size_t); -void (* MirandaFree)(void *); - -char ModuleName[] = "VersionInfo"; - -#ifdef _DEBUG - BOOL verbose = FALSE;//TRUE; -#else - BOOL verbose = FALSE; -#endif - -PLUGININFOEX pluginInfo={ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {2F174488-489C-4FE1-940D-596CF0F35E65} - {0x2f174488, 0x489c, 0x4fe1, {0x94, 0x0d, 0x59, 0x6c, 0xf0, 0xf3, 0x5e, 0x65}} -}; - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_SERVICEMODE, MIID_LAST}; - -bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" int __declspec(dllexport) Load(void) -{ - mir_getLP(&pluginInfo); - - InitServices(); - HookEvents(); - - hiVIIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_MAIN)); - - //get the name of the dll itself - TCHAR filePath[512] = {0}; - GetModuleFileName(hInst, filePath, SIZEOF(filePath)); - TCHAR *fileName = NULL; - size_t i = _tcslen(filePath) - 1; - _tcslwr(filePath); - - //Menu item - CLISTMENUITEM mi = { sizeof(mi) }; - mi.position = mi.popupPosition = 2000089999; - mi.hIcon = hiVIIcon; - mi.pszName = LPGEN("Version Information"); - mi.pszService = MS_VERSIONINFO_MENU_COMMAND; - Menu_AddMainMenuItem(&mi); - - if (LoadLibraryA("RichEd32.dll") == NULL) - MessageBoxA(NULL, "d'oh", "d'oh", MB_OK); - - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - return 0; -} \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/resource.h b/plugins/!Deprecated/VersionInfo/src/resource.h deleted file mode 100644 index b282e8bca6..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/resource.h +++ /dev/null @@ -1,71 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by resource.rc -// -#define IDD_DIALOG1 101 -#define IDD_OPT_VERSIONINFO 102 -#define IDD_DIALOGBOX 103 -#define IDD_DIALOGINFO 103 -#define IDI_ICON1 104 -#define IDI_MAIN 104 -#define IDD_ASKDIALOG 106 -#define IDC_MENUITEM 1000 -#define IDC_TOFILE 1001 -#define IDC_TOMESSAGEBOX 1002 -#define IDC_TODIALOGBOX 1003 -#define IDC_DISABLEDTOO 1004 -#define IDC_FILENAME 1005 -#define IDC_TEXT 1006 -#define IDC_TODEBUGSTRING 1006 -#define IDC_CLOSE 1007 -#define IDC_TOCLIPBOARD 1007 -#define IDC_GETINFONOW 1009 -#define IDC_TOUPLOAD 1010 -#define IDC_GETINFONOW2 1011 -#define IDC_COPYTEXT 1012 -#define IDC_DEBUG 1013 -#define IDC_FORUMSTYLE 1014 -#define IDC_CLIPBOARDALSO 1015 -#define IDC_SHOWINTASKBAR 1016 -#define IDC_QUOTECOMBOBOX 1017 -#define IDC_SIZECOMBOBOX 1018 -#define IDC_BOLDVERSION 1020 -#define IDC_CHECKUNLOADABLE 1021 -#define IDC_ASKEVERYTIME 1022 -#define IDC_ASK_TOFILE 1023 -#define IDC_ASK_TOMESSAGEBOX 1024 -#define IDC_ASK_TODIALOGBOX 1025 -#define IDC_ASK_TOOUTPUTDEBUGSTRING 1026 -#define IDC_ASK_TOCLIPBOARD 1027 -#define IDC_ASK_CANCEL 1028 -#define IDC_ASK_OK 1029 -#define IDC_BOLDCOMBOBOX 1030 -#define IDC_SUPPRESSHEADER 1031 -#define IDC_SHOWHARDWAREINFO 1033 -#define IDC_UPLOAD 1034 -#define IDC_ASK_UPLOAD 1036 -#define IDC_ASK_TOUPLOAD 1036 -#define IDC_UPLOAD_SERVER 1038 -#define IDC_UPLOAD_PORT 1039 -#define IDC_UPLOAD_USERNAME 1040 -#define IDC_UPLOAD_PASSWORD 1041 -#define IDC_TEMPORARY_FORUMSTYLE 1042 -#define IDC_ASK_FORUMSTYLE 1042 -#define IDC_ASK_QUOTECOMBOBOX 1043 -#define IDC_ASK_SIZECOMBOBOX 1044 -#define IDC_ASK_BOLDCOMBOBOX 1045 -#define IDC_SAVETOFILE 1046 -#define IDC_SHOWUUIDS 1048 -#define IDC_CHECK1 1049 -#define IDC_SHOWINSTALLEDLANGUAGES 1049 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 107 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1050 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/!Deprecated/VersionInfo/src/services.cpp b/plugins/!Deprecated/VersionInfo/src/services.cpp deleted file mode 100644 index 85bc1b7347..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/services.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -int bServiceMode = 0; //true only if plugin is running in service mode - -int InitServices() -{ - CreateServiceFunction(MS_VERSIONINFO_MENU_COMMAND, PluginMenuCommand); - CreateServiceFunction(MS_VERSIONINFO_GETINFO, GetInfoService); - CreateServiceFunction(MS_SERVICEMODE_LAUNCH, ServiceModeService); - return 0; -} - -INT_PTR PluginMenuCommand(WPARAM wParam, LPARAM lParam) -{ - int debugTo = db_get_b(NULL, ModuleName, "DebugTo", TO_DIALOGBOX); - DoDebugTo(debugTo); - if (verbose) PUShowMessage("I have printed the information.", SM_NOTIFY); - return 0; -} - -INT_PTR GetInfoService(WPARAM wParam, LPARAM lParam) -{ - int result = 1; //failure - if (lParam != NULL) { - CVersionInfo myInfo; - myInfo.Initialize(); - std::tstring VI = myInfo.GetInformationsAsString(wParam); - char **retData = (char **) lParam; - *retData = mir_utf8encodeT( VI.c_str()); - if (*retData) - result = 0; //success - } - return result; -} - -INT_PTR ServiceModeService(WPARAM wParam, LPARAM lParam) -{ - bServiceMode = 1; - DoDebugTo(TO_ASK); - return SERVICE_ONLYDB; // load database and open a window -} diff --git a/plugins/!Deprecated/VersionInfo/src/services.h b/plugins/!Deprecated/VersionInfo/src/services.h deleted file mode 100644 index 38acbc7731..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/services.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_VERSIONINFO_SERVICES_H -#define M_VERSIONINFO_SERVICES_H - -int InitServices(); -int DestroyServices(); - -INT_PTR PluginMenuCommand(WPARAM wParam, LPARAM lParam); -INT_PTR GetInfoService(WPARAM wParam, LPARAM lParam); -INT_PTR ServiceModeService(WPARAM wParam, LPARAM lParam); - -#endif //M_VERSIONINFO_SERVICES_H \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/stdafx.cpp b/plugins/!Deprecated/VersionInfo/src/stdafx.cpp deleted file mode 100644 index c5fe5abaad..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright (C) 2012-15 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 "common.h" \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/utils.cpp b/plugins/!Deprecated/VersionInfo/src/utils.cpp deleted file mode 100644 index 49bbba5a07..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/utils.cpp +++ /dev/null @@ -1,438 +0,0 @@ -/* -Version information plugin for Miranda IM - -Copyright © 2002-2006 Luca Santarelli, Cristian Libotean - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "common.h" - -void Log(const TCHAR* message) -{ - if (ServiceExists(MS_POPUP_ADDPOPUPT)) { - POPUPDATAT pu = {0}; - pu.lchIcon = hiVIIcon; - _tcsncpy(pu.lptzContactName, TranslateT("Version Information"), MAX_CONTACTNAME); - _tcsncpy(pu.lptzText, message, MAX_SECONDLINE); - PUAddPopupT(&pu); - } - else MessageBox(NULL, message, _T("VersionInfo"), MB_OK | MB_ICONINFORMATION); -} - -int SplitStringInfo(const TCHAR *szWholeText, TCHAR *szStartText, TCHAR *szEndText) -{ - const TCHAR *pos = _tcschr(szWholeText, '|'); - if (pos) { - size_t index = pos - szWholeText; - lstrcpyn(szStartText, szWholeText, (int)index); - szStartText[index] = '\0'; - StrTrim(szStartText, _T(" ")); - lstrcpyn(szEndText, pos + 1, (int)_tcslen(pos)); //copies the \0 as well ... :) - StrTrim(szEndText, _T(" ")); - } - else szStartText[0] = szEndText[0] = '\0'; - - return 0; -} - -int GetStringFromDatabase(char *szSettingName, TCHAR *szError, TCHAR *szResult, size_t size) -{ - DBVARIANT dbv = {0}; - int res = 1; - size_t len; - if ( db_get_ts(NULL, ModuleName, szSettingName, &dbv) == 0) { - res = 0; - size_t tmp = _tcslen(dbv.ptszVal); - len = (tmp < size - 1) ? tmp : size - 1; - _tcsncpy(szResult, dbv.ptszVal, len); - szResult[len] = '\0'; - mir_free(dbv.ptszVal); - } - else { - res = 1; - size_t tmp = _tcslen(szError); - len = (tmp < size - 1) ? tmp : size - 1; - _tcsncpy(szResult, szError, len); - szResult[len] = '\0'; - } - return res; -} - -#define GetFacility(dwError) (HIWORD(dwError) && 0x0000111111111111) -#define GetErrorCode(dwError) (LOWORD(dwError)) - -void NotifyError(DWORD dwError, const TCHAR* szSetting, int iLine) -{ - TCHAR str[1024]; - mir_sntprintf(str, SIZEOF(str), TranslateT("Something went wrong in the \"%s\" setting. Report back the following values:\nFacility: %X\nError code: %X\nLine number: %d"), szSetting, GetFacility(dwError), GetErrorCode(dwError), iLine); - Log(str); -} - -TCHAR *StrTrim(TCHAR *szText, const TCHAR *szTrimChars) -{ - size_t i = _tcslen(szText) - 1; - while (i >= 0 && _tcschr(szTrimChars, szText[i])) - szText[i--] = '\0'; - - i = 0; - while (((unsigned int )i < _tcslen(szText)) && _tcschr(szTrimChars, szText[i])) - i++; - - if (i) { - size_t size = _tcslen(szText); - size_t j; - for (j = i; j <= size; j++) //shift the \0 as well - szText[j - i] = szText[j]; - } - return szText; -} - -bool DoesDllExist(char *dllName) -{ - HMODULE dllHandle; - dllHandle = LoadLibraryExA(dllName, NULL, DONT_RESOLVE_DLL_REFERENCES); - if (dllHandle) - { - FreeLibrary(dllHandle); - return true; - } - return false; -} - -void GetISO8061Time(SYSTEMTIME* stLocal, LPTSTR lpszString, DWORD dwSize) -{ - SYSTEMTIME loctime; - if (stLocal == NULL) - { - stLocal = &loctime; - GetLocalTime(stLocal); - } - - GetDateFormat(LOCALE_INVARIANT, 0, stLocal, TEXT("d MMM yyyy"), lpszString, dwSize); - int dlen = (int)_tcslen(lpszString); - GetTimeFormat(LOCALE_INVARIANT, 0, stLocal, TEXT(" H:mm:ss"), lpszString+dlen, dwSize-dlen); -} - -void GetModuleTimeStamp(LPTSTR lpszString, DWORD dwSize) -{ - TCHAR tszModule[MAX_PATH]; - GetModuleFileName(NULL, tszModule, SIZEOF(tszModule)); - WIN32_FIND_DATA fd; - if (FindFirstFile(tszModule, &fd) != INVALID_HANDLE_VALUE) { - FILETIME ftLocal; - SYSTEMTIME stLocal; - FileTimeToLocalFileTime(&fd.ftLastWriteTime, &ftLocal); - FileTimeToSystemTime(&ftLocal, &stLocal); - GetISO8061Time(&stLocal, lpszString, dwSize); - } -} - -//From Egodust or Cyreve... I don't really know. -PLUGININFOEX *CopyPluginInfo(PLUGININFOEX *piSrc) -{ - if(piSrc==NULL) - return NULL; - - PLUGININFOEX *pi = (PLUGININFOEX *)malloc(sizeof(PLUGININFOEX)); - *pi = *piSrc; - - if (piSrc->cbSize >= sizeof(PLUGININFOEX)) - pi->uuid = piSrc->uuid; - else - pi->uuid = UUID_NULL; - - if (pi->author) pi->author = _strdup(pi->author); - if (pi->authorEmail) pi->authorEmail = _strdup(pi->authorEmail); - if (pi->copyright) pi->copyright = _strdup(pi->copyright); - if (pi->description) pi->description = _strdup(pi->description); - if (pi->homepage) pi->homepage = _strdup(pi->homepage); - if (pi->shortName) pi->shortName = _strdup(pi->shortName); - return pi; -} - -void FreePluginInfo(PLUGININFOEX *pi) -{ - if (pi->author) free(pi->author); - if (pi->authorEmail) free(pi->authorEmail); - if (pi->copyright) free(pi->copyright); - if (pi->description) free(pi->description); - if (pi->homepage) free(pi->homepage); - if (pi->shortName) free(pi->shortName); - free(pi); -} - -BOOL IsCurrentUserLocalAdministrator(void) -{ - BOOL fReturn = FALSE; - DWORD dwStatus; - DWORD dwAccessMask; - DWORD dwAccessDesired; - DWORD dwACLSize; - DWORD dwStructureSize = sizeof(PRIVILEGE_SET); - PACL pACL = NULL; - PSID psidAdmin = NULL; - - HANDLE hToken = NULL; - HANDLE hImpersonationToken = NULL; - - PRIVILEGE_SET ps; - GENERIC_MAPPING GenericMapping; - - PSECURITY_DESCRIPTOR psdAdmin = NULL; - SID_IDENTIFIER_AUTHORITY SystemSidAuthority = SECURITY_NT_AUTHORITY; - - /* - Determine if the current thread is running as a user that is a member of - the local admins group. To do this, create a security descriptor that - has a DACL which has an ACE that allows only local aministrators access. - Then, call AccessCheck with the current thread's token and the security - descriptor. It will say whether the user could access an object if it - had that security descriptor. Note: you do not need to actually create - the object. Just checking access against the security descriptor alone - will be sufficient. - */ - const DWORD ACCESS_READ = 1; - const DWORD ACCESS_WRITE = 2; - - - __try - { - - /* - AccessCheck() requires an impersonation token. We first get a primary - token and then create a duplicate impersonation token. The - impersonation token is not actually assigned to the thread, but is - used in the call to AccessCheck. Thus, this function itself never - impersonates, but does use the identity of the thread. If the thread - was impersonating already, this function uses that impersonation context. - */ - if (!OpenThreadToken(GetCurrentThread(), TOKEN_DUPLICATE|TOKEN_QUERY, TRUE, &hToken)) - { - if (GetLastError() != ERROR_NO_TOKEN) - __leave; - - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE|TOKEN_QUERY, &hToken)) - __leave; - } - - if (!DuplicateToken (hToken, SecurityImpersonation, &hImpersonationToken)) - __leave; - - - /* - Create the binary representation of the well-known SID that - represents the local administrators group. Then create the security - descriptor and DACL with an ACE that allows only local admins access. - After that, perform the access check. This will determine whether - the current user is a local admin. - */ - if (!AllocateAndInitializeSid(&SystemSidAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &psidAdmin)) - __leave; - - psdAdmin = LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH); - if (psdAdmin == NULL) - __leave; - - if (!InitializeSecurityDescriptor(psdAdmin, SECURITY_DESCRIPTOR_REVISION)) - __leave; - - // Compute size needed for the ACL. - dwACLSize = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(psidAdmin) - sizeof(DWORD); - - pACL = (PACL)LocalAlloc(LPTR, dwACLSize); - if (pACL == NULL) - __leave; - - if (!InitializeAcl(pACL, dwACLSize, ACL_REVISION2)) - __leave; - - dwAccessMask= ACCESS_READ | ACCESS_WRITE; - - if (!AddAccessAllowedAce(pACL, ACL_REVISION2, dwAccessMask, psidAdmin)) - __leave; - - if (!SetSecurityDescriptorDacl(psdAdmin, TRUE, pACL, FALSE)) - __leave; - - /* - AccessCheck validates a security descriptor somewhat; set the group - and owner so that enough of the security descriptor is filled out to - make AccessCheck happy. - */ - SetSecurityDescriptorGroup(psdAdmin, psidAdmin, FALSE); - SetSecurityDescriptorOwner(psdAdmin, psidAdmin, FALSE); - - if (!IsValidSecurityDescriptor(psdAdmin)) - __leave; - - dwAccessDesired = ACCESS_READ; - - /* - Initialize GenericMapping structure even though you - do not use generic rights. - */ - GenericMapping.GenericRead = ACCESS_READ; - GenericMapping.GenericWrite = ACCESS_WRITE; - GenericMapping.GenericExecute = 0; - GenericMapping.GenericAll = ACCESS_READ | ACCESS_WRITE; - - if (!AccessCheck(psdAdmin, hImpersonationToken, dwAccessDesired, &GenericMapping, &ps, &dwStructureSize, &dwStatus, &fReturn)) - { - fReturn = FALSE; - __leave; - } - } - __finally - { - // Clean up. - if (pACL) LocalFree(pACL); - if (psdAdmin) LocalFree(psdAdmin); - if (psidAdmin) FreeSid(psidAdmin); - if (hImpersonationToken) CloseHandle (hImpersonationToken); - if (hToken) CloseHandle (hToken); - } - - return fReturn; -} - -BOOL GetWindowsShell(TCHAR *shellPath, size_t shSize) -{ - OSVERSIONINFO vi = {0}; - vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&vi); - - TCHAR szShell[1024] = {0}; - DWORD size = SIZEOF(szShell); - - if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT) - { - HKEY hKey; - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\IniFileMapping\\system.ini\\boot"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) - { - RegQueryValueEx(hKey, _T("Shell"), NULL, NULL, (LPBYTE) szShell, &size); - _tcslwr(szShell); - HKEY hRootKey = ( _tcsstr(szShell, _T("sys:")) == szShell) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; - RegCloseKey(hKey); - - _tcscpy(szShell, _T("")); - if (RegOpenKeyEx(hRootKey, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) - { - size = SIZEOF(szShell); - RegQueryValueEx(hKey, _T("Shell"), NULL, NULL, (LPBYTE) szShell, &size); - RegCloseKey(hKey); - } - } - } - else{ - TCHAR szSystemIniPath[2048]; - GetWindowsDirectory(szSystemIniPath, SIZEOF(szSystemIniPath)); - size_t len = lstrlen(szSystemIniPath); - if (len > 0) - { - if (szSystemIniPath[len - 1] == '\\') { szSystemIniPath[--len] = '\0'; } - _tcscat(szSystemIniPath, _T("\\system.ini")); - GetPrivateProfileString( _T("boot"), _T("shell"), _T(""), szShell, size, szSystemIniPath); - } - } - - TCHAR *pos = _tcsrchr(szShell, '\\'); - TCHAR *res = (pos) ? pos + 1 : szShell; - _tcsncpy(shellPath, res, shSize); - - return TRUE; -} - -BOOL GetInternetExplorerVersion(TCHAR *ieVersion, size_t ieSize) -{ - HKEY hKey; - TCHAR ieVer[1024] = {0}, ieBuild[64] = {0}, iVer[64] = {0}; - - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Internet Explorer"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) - { - DWORD size; - size = SIZEOF(ieVer); - if (RegQueryValueEx(hKey, TEXT("Version"), NULL, NULL, (LPBYTE) ieVer, &size) != ERROR_SUCCESS) - ieVer[0] = 0; - size = SIZEOF(ieBuild); - if (RegQueryValueEx(hKey, TEXT("Build"), NULL, NULL, (LPBYTE) ieBuild, &size) != ERROR_SUCCESS) - ieBuild[0] = 0; - size = SIZEOF(iVer); - if (RegQueryValueEx(hKey, TEXT("IVer"), NULL, NULL, (LPBYTE) iVer, &size) != ERROR_SUCCESS) - iVer[0] = 0; - - RegCloseKey(hKey); - } - - if (ieVer[0] == 0) - { - if (iVer[0] == 0) - _tcsncpy(ieVersion, _T(""), ieSize); - else if (_tcscmp(iVer, _T("100")) == 0) - _tcsncpy(ieVersion, _T("1.0"), ieSize); - else if (_tcscmp(iVer, _T("101")) == 0) - _tcsncpy(ieVersion, _T("NT"), ieSize); - else if (_tcscmp(iVer, _T("102")) == 0) - _tcsncpy(ieVersion, _T("2.0"), ieSize); - else if (_tcscmp(iVer, TEXT("103")) == 0) - _tcsncpy(ieVersion, _T("3.0"), ieSize); - } else - _tcsncpy(ieVersion, ieVer, ieSize); - - if (ieBuild[0] != 0) - { - _tcsncat(ieVersion, _T(" (build "), ieSize); - _tcsncat(ieVersion, ieBuild, ieSize); - _tcsncat(ieVersion, _T(")"), ieSize); - } - - return TRUE; -} - -TCHAR *GetLanguageName(LANGID language) -{ - LCID lc = MAKELCID(language, SORT_DEFAULT); - return GetLanguageName(lc); -} - -extern TCHAR *GetLanguageName(LCID locale) -{ - static TCHAR name[1024]; - GetLocaleInfo(locale, LOCALE_SENGLANGUAGE, name, SIZEOF(name)); - return name; -} - -BOOL UUIDToString(MUUID uuid, TCHAR *str, size_t len) -{ - if ( len < sizeof(MUUID) || !str ) - return 0; - - mir_sntprintf(str, len, _T("{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}"), uuid.a, uuid.b, uuid.c, uuid.d[0], uuid.d[1], uuid.d[2], uuid.d[3], uuid.d[4], uuid.d[5], uuid.d[6], uuid.d[7]); - return 1; -} - -BOOL IsUUIDNull(MUUID uuid) -{ - int i; - for (i = 0; i < sizeof(uuid.d); i++) - { - if (uuid.d[i]) - { - return 0; - } - } - - return ((uuid.a == 0) && (uuid.b == 0) && (uuid.c == 0)); -} \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/utils.h b/plugins/!Deprecated/VersionInfo/src/utils.h deleted file mode 100644 index 7c8711ad3e..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/utils.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef _M_VERSIONINFO_UTILS_H -#define _M_VERSIONINFO_UTILS_H - -//utils.cpp -void Log(const TCHAR*); -TCHAR *StrTrim(TCHAR *, const TCHAR *); - -//returns a string from the database and uses MirandaFree to deallocate the string, leaving only the local copy -//utils.cpp -int GetStringFromDatabase(char *szSettingName, TCHAR *szError, TCHAR *szResult, size_t size); - -//a string of the form %s(start) | %s(end) is split into the two strings (start and end) -//utils.cpp -int SplitStringInfo(const TCHAR *szWholeText, TCHAR *szStartText, TCHAR *szEndText); - -//utils.cpp -bool DoesDllExist(char *dllName); - -//utils.cpp -void GetModuleTimeStamp(LPTSTR lpszString, DWORD dwSize); -void GetISO8061Time(SYSTEMTIME* stLocal, LPTSTR lpszString, DWORD dwSize); -void NotifyError(DWORD, const TCHAR*, int); - -//utils.cpp -PLUGININFOEX *CopyPluginInfo(PLUGININFOEX *); -void FreePluginInfo(PLUGININFOEX *); - -//utils.cpp - -BOOL IsCurrentUserLocalAdministrator(); - -TCHAR *GetLanguageName(LANGID language); -TCHAR *GetLanguageName(LCID locale); - -BOOL GetWindowsShell(TCHAR *shellPath, size_t shSize); -BOOL GetInternetExplorerVersion(TCHAR *ieVersion, size_t ieSize); - -BOOL UUIDToString(MUUID uuid, TCHAR *str, size_t len); - -BOOL IsUUIDNull(MUUID uuid); - -#endif \ No newline at end of file diff --git a/plugins/!Deprecated/VersionInfo/src/version.h b/plugins/!Deprecated/VersionInfo/src/version.h deleted file mode 100644 index 395a73c38d..0000000000 --- a/plugins/!Deprecated/VersionInfo/src/version.h +++ /dev/null @@ -1,14 +0,0 @@ -#define __MAJOR_VERSION 1 -#define __MINOR_VERSION 5 -#define __RELEASE_NUM 0 -#define __BUILD_NUM 3 - -#include - -#define __PLUGIN_NAME "Version information" -#define __FILENAME "VersionInfo.dll" -#define __DESCRIPTION "Collects and prints information related to Miranda, the plugins and the OS." -#define __AUTHOR "Luca Santarelli, Cristian Libotean, George Hazan" -#define __AUTHOREMAIL "hrk@users.sourceforge.net, eblis102@yahoo.com, ghazan@miranda.im" -#define __AUTHORWEB "http://miranda-ng.org/p/VersionInfo/" -#define __COPYRIGHT "© 2002-2005 Luca Santarelli, 2005-2009 Cristian Libotean" diff --git a/plugins/!Deprecated/W7UI/src/clistproxywindow.cpp b/plugins/!Deprecated/W7UI/src/clistproxywindow.cpp deleted file mode 100644 index 12e5b476ed..0000000000 --- a/plugins/!Deprecated/W7UI/src/clistproxywindow.cpp +++ /dev/null @@ -1,292 +0,0 @@ -#include "headers.h" - -CClistProxyWindow *g_clistProxyWnd = 0; -extern ITaskbarList3 *g_pTaskbarList; - -CClistProxyWindow::CClistProxyWindow() : m_overlayEvents(5) -{ - g_clistProxyWnd = this; - - m_activeOverlay = 0; - m_overlayIcon = 0; - m_overlayText = 0; - - SetWindowText(hwnd(), _T("Miranda IM")); - SendMessage(hwnd(), WM_SETICON, ICON_BIG, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_MIRANDA)); - SendMessage(hwnd(), WM_SETICON, ICON_SMALL, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_MIRANDA)); - - SetEventHook(ME_CLIST_STATUSMODECHANGE, &CClistProxyWindow::OnStatusModeChanged); - SetEventHook(ME_AV_MYAVATARCHANGED, &CClistProxyWindow::OnAvatarChanged); - SetEventHook(ME_SYSTEM_MODULESLOADED, &CClistProxyWindow::OnModulesLoaded); - SetEventHook(ME_PROTO_ACCLISTCHANGED, &CClistProxyWindow::OnAccListChanged); - - SetTimer(1, 500); -} - -CClistProxyWindow::~CClistProxyWindow() -{ - KillObjectEventHooks(this); -} - -int __cdecl CClistProxyWindow::OnStatusModeChanged(WPARAM wParam, LPARAM lParam) -{ - Update(); - return 0; -} -int __cdecl CClistProxyWindow::OnAvatarChanged(WPARAM wParam, LPARAM lParam) -{ - Update(); - return 0; -} -int __cdecl CClistProxyWindow::OnModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - Update(); - return 0; -} -int __cdecl CClistProxyWindow::OnAccListChanged(WPARAM wParam, LPARAM lParam) -{ - Update(); - return 0; -} - -HANDLE CClistProxyWindow::SetEventHook(char *evt, int (__cdecl CClistProxyWindow::*fn)(WPARAM, LPARAM)) -{ - return HookEventObj(evt, *(MIRANDAHOOKOBJ *)&fn, this); -} - -void CClistProxyWindow::Flash() -{ - FlashWindow(hwnd(), TRUE); -} - -void CClistProxyWindow::SetOverlayIcon(HICON hIcon) -{ - m_overlayIcon = hIcon; - m_overlayIconHandle = 0; -} - -void CClistProxyWindow::SetOverlayIconHandle(HANDLE hIcolibIcon) -{ - m_overlayIcon = 0; - m_overlayIconHandle = hIcolibIcon; -} - -void CClistProxyWindow::AddOverlayEvent(int idx) -{ - m_overlayEvents[idx].Push(); -} - -void CClistProxyWindow::RemoveOverlayEvent(int idx) -{ - m_overlayEvents[idx].Pop(); -} - -int CClistProxyWindow::AllocateOverlayEvent(HANDLE hIcolibIcon) -{ - m_overlayEvents.insert(new COverlayEventSlot(hIcolibIcon, _T("")), m_overlayEvents.getCount()); - return m_overlayEvents.getCount() - 1; -} - -void CClistProxyWindow::Update() -{ - AddButton(LoadSkinnedIcon(SKINICON_OTHER_MIRANDA), TranslateT("Menu"), -1); - - int nAccounts = 0; - PROTOACCOUNT **accounts; - ProtoEnumAccounts(&nAccounts, &accounts); - for (int i = 0; i < nAccounts; ++i) - { - if (!accounts[i]->bIsEnabled || !accounts[i]->bIsVisible || !accounts[i]->ppro || !(accounts[i]->ppro->GetCaps(PFLAGNUM_1) & PF1_IM)) - continue; - - HICON hIcon = LoadSkinnedProtoIcon(accounts[i]->szModuleName, CallProtoService(accounts[i]->szModuleName, PS_GETSTATUS, 0, 0)); - AddButton(hIcon, accounts[i]->tszAccountName, (INT_PTR)accounts[i]->tszAccountName); - } - UpdateButtons(g_pTaskbarList); - - InvalidateThumbnail(); -} - -void CClistProxyWindow::OnActivate(HWND hwndFrom) -{ - CallService(MS_CLIST_SHOWHIDE, 0, 0); - - HWND hwndClui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - if (hwndFrom != hwndClui && !IsIconic(hwndClui) && IsWindowVisible(hwndClui)) - SetForegroundWindow(hwndClui); - else - SetForegroundWindow(NULL); -} - -void CClistProxyWindow::OnToolbar(int id, INT_PTR data) -{ - POINT pt; GetCursorPos(&pt); - HMENU hMenu = NULL; - HWND hwndClui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - - switch (data) - { - case -1: - { - hMenu = (HMENU)CallService(MS_CLIST_MENUBUILDMAIN, 0, 0); - break; - } - - default: - { - hMenu = (HMENU)CallService(MS_CLIST_MENUGETSTATUS, 0, 0); - int nItems = GetMenuItemCount(hMenu); - for (int i = 0; i < nItems; ++i) - { - TCHAR buf[128]; - MENUITEMINFO mii = {0}; - mii.cbSize = sizeof(mii); - mii.fMask = MIIM_STRING|MIIM_SUBMENU; - mii.dwTypeData = buf; - mii.cch = SIZEOF(buf); - GetMenuItemInfo(hMenu, i, TRUE, &mii); - - if (mii.hSubMenu && !lstrcmp(mii.dwTypeData, (TCHAR*)data)) - { - hMenu = mii.hSubMenu; - break; - } - } - } - } - - SetForegroundWindow(hwndClui); - TrackPopupMenu(hMenu, 0, pt.x, pt.y, 0, hwndClui, NULL); -} - -void CClistProxyWindow::OnRenderThumbnail(int width, int height) -{ - HBITMAP hbmp = CreateDwmBitmap(width, height); - HDC hdc = CreateCompatibleDC(0); - SelectObject(hdc, hbmp); - - RGBQUAD rgb0, rgb1; - rgb0.rgbRed = 0; rgb0.rgbGreen = 0; rgb0.rgbBlue = 0; - rgb1.rgbRed = 19; rgb1.rgbGreen = 58; rgb1.rgbBlue = 89; - DrawGradient(hdc, 0, 0, width, height, &rgb0, &rgb1); - - HFONT hfntSave = (HFONT)SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT)); - SetTextColor(hdc, RGB(255, 255, 255)); - SetBkMode(hdc, TRANSPARENT); - - RECT rc; - SIZE sz; - SetRect(&rc, 5, 5, width-10, height-10); - - int avatarWidth = 0; - int avatarHeight = 0; - if (true) - { - AVATARCACHEENTRY *ace = (AVATARCACHEENTRY *)CallService(MS_AV_GETMYAVATAR, 0, (LPARAM)""); - if (ace && (ace != (AVATARCACHEENTRY *)CALLSERVICE_NOTFOUND)) - { - if (ace->bmWidth < width / 4) - { - avatarWidth = ace->bmWidth; - avatarHeight = ace->bmHeight; - } else - { - avatarWidth = width / 4; - avatarHeight = avatarWidth * ace->bmHeight / ace->bmWidth; - } - - AVATARDRAWREQUEST avdr = {0}; - avdr.cbSize = sizeof(avdr); - avdr.hContact = NULL; - avdr.hTargetDC = hdc; - avdr.rcDraw = rc; - avdr.rcDraw.bottom = avdr.rcDraw.top + avatarHeight; - avdr.rcDraw.right = avdr.rcDraw.left + avatarWidth; - avdr.dwFlags = AVDRQ_FALLBACKPROTO | AVDRQ_FORCEALPHA | AVDRQ_OWNPIC; - avdr.szProto = ""; - - avdr.alpha = 255; - CallService(MS_AV_DRAWAVATAR, 0, (LPARAM)&avdr); - - rc.left += avatarWidth + 5; - } - } - - int nAccounts = 0; - PROTOACCOUNT **accounts; - ProtoEnumAccounts(&nAccounts, &accounts); - for (int i = 0; i < nAccounts; ++i) - { - if (!accounts[i]->bIsEnabled /*|| !accounts[i]->ppro || !(accounts[i]->ppro->GetCaps(PFLAGNUM_1) & PF1_IM)*/) - continue; - - char *proto = accounts[i]->szModuleName; - - if (true) - { - TCHAR name[128]; name[0] = 0; - - CONTACTINFO ci = {0}; - ci.cbSize = sizeof(ci); - ci.hContact = NULL; - ci.szProto = proto; - ci.dwFlag = CNF_UNIQUEID | CNF_TCHAR; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM)&ci)) - { - switch (ci.type) - { - case CNFT_ASCIIZ: - mir_sntprintf(name, SIZEOF(name), _T("%s - %s"), accounts[i]->tszAccountName, ci.pszVal); - mir_free((void *)ci.pszVal); - break; - case CNFT_DWORD: - mir_sntprintf(name, SIZEOF(name), _T("%s - %u"), accounts[i]->tszAccountName, ci.dVal); - break; - } - - } else - { - lstrcpyn(name, accounts[i]->tszAccountName, SIZEOF(name)); - } - - RECT rcText = rc; - rcText.left += 20; - DrawText(hdc, name, -1, &rcText, DT_LEFT|DT_NOPREFIX|DT_WORDBREAK|DT_TOP|DT_SINGLELINE); - GetTextExtentPoint32(hdc, name, lstrlen(name), &sz); - } - - if (true) - { - HICON hIcon = LoadSkinnedProtoIcon(proto, CallProtoService(proto, PS_GETSTATUS, 0, 0)); - DrawIconEx(hdc, rc.left, rc.top + (sz.cy - 16) / 2, hIcon, 16, 16, 0, NULL, DI_NORMAL); - } - - rc.top += sz.cy + 5; - } - - SelectObject(hdc, hfntSave); - - DeleteDC(hdc); - MakeBitmapOpaque(hbmp); - SetThumbnail(hbmp); - DeleteObject(hbmp); -} - -void CClistProxyWindow::OnClose() -{ - CallService("CloseAction", NULL, NULL); -} - -void CClistProxyWindow::OnTimer(int id) -{ - HANDLE hIcolibItem = m_overlayIconHandle; - for (m_activeOverlay = (m_activeOverlay + 1) % (m_overlayEvents.getCount() + 1); m_activeOverlay < m_overlayEvents.getCount(); ++m_activeOverlay) - if (m_overlayEvents[m_activeOverlay]) - { - hIcolibItem = m_overlayEvents[m_activeOverlay].GetIcon(); - break; - } - - HICON hIcon = hIcolibItem ? (HICON)CallService(MS_SKIN2_GETICONBYHANDLE, 0, (LPARAM)hIcolibItem) : m_overlayIcon; - if (hIcon) g_pTaskbarList->SetOverlayIcon(hwnd(), hIcon, L""); -} diff --git a/plugins/!Deprecated/W7UI/src/clistproxywindow.h b/plugins/!Deprecated/W7UI/src/clistproxywindow.h deleted file mode 100644 index 153c59089b..0000000000 --- a/plugins/!Deprecated/W7UI/src/clistproxywindow.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef clistproxywindow_h__ -#define clistproxywindow_h__ - -class CClistProxyWindow: public CDwmWindow -{ -public: - CClistProxyWindow(); - ~CClistProxyWindow(); - - void Flash(); - void SetOverlayIcon(HICON hIcon); - void SetOverlayIconHandle(HANDLE hIcolibIcon); - void AddOverlayEvent(int idx); - void RemoveOverlayEvent(int idx); - int AllocateOverlayEvent(HANDLE hIcolibIcon); - -private: - class COverlayEventSlot - { - private: - HANDLE m_hIcolibItem; - TCHAR *m_overlayText; - int m_level; - - public: - COverlayEventSlot(HANDLE hIcolibItem, TCHAR *overlayText) - { - m_hIcolibItem = hIcolibItem; - m_overlayText = mir_tstrdup(overlayText); - m_level = 0; - } - ~COverlayEventSlot() { mir_free(m_overlayText); } - void Push() { m_level++; } - void Pop() { if (m_level > 0) m_level--; } - operator bool() { return m_level > 0; } - HANDLE GetIcon() { return m_hIcolibItem; } - }; - - int m_activeOverlay; - HICON m_overlayIcon; - HANDLE m_overlayIconHandle; - TCHAR *m_overlayText; - OBJLIST m_overlayEvents; - - int __cdecl OnStatusModeChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnAvatarChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnModulesLoaded(WPARAM wParam, LPARAM lParam); - int __cdecl OnAccListChanged(WPARAM wParam, LPARAM lParam); - - HANDLE SetEventHook(char *evt, int (__cdecl CClistProxyWindow::*fn)(WPARAM, LPARAM)); - - void Update(); - -protected: - void OnActivate(HWND hwndFrom); - void OnToolbar(int id, INT_PTR data); - void OnRenderThumbnail(int width, int height); - void OnClose(); - void OnTimer(int id); -}; - -extern CClistProxyWindow *g_clistProxyWnd; - -#endif // clistproxywindow_h__ diff --git a/plugins/!Deprecated/W7UI/src/dwmwindow.cpp b/plugins/!Deprecated/W7UI/src/dwmwindow.cpp deleted file mode 100644 index 2d8dd6e9e4..0000000000 --- a/plugins/!Deprecated/W7UI/src/dwmwindow.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include "headers.h" - -#define WNDCLASSNAME _T("W7DwmWndClass") - -CDwmWindow::CDwmWindow() -{ - GlobalInitWndClass(); - - m_btnInitialized = false; - m_btnCount = 0; - for (int i = 0; i < SIZEOF(m_btnInfo); ++i) - { - m_btnInfo[i].iId = i; - m_btnInfo[i].dwMask = THUMBBUTTONMASK(THB_FLAGS); - m_btnInfo[i].dwFlags = THUMBBUTTONFLAGS(THBF_HIDDEN); - m_btnData[i] = 0; - } - - m_hwnd = CreateWindowEx(WS_EX_APPWINDOW|WS_EX_NOACTIVATE, WNDCLASSNAME, NULL, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, g_hInst, NULL); - SetWindowLongPtr(m_hwnd, GWLP_USERDATA, (LONG_PTR)this); - SetWindowPos(m_hwnd, 0, -100000, -100000, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_DEFERERASE|SWP_NOSENDCHANGING|SWP_SHOWWINDOW); - - BOOL val = 1; - DwmSetWindowAttribute(m_hwnd, DWMWA_HAS_ICONIC_BITMAP, &val, 4); - DwmSetWindowAttribute(m_hwnd, DWMWA_FORCE_ICONIC_REPRESENTATION, &val, 4); - dwmInvalidateIconicBitmaps(m_hwnd); -} - -HBITMAP CDwmWindow::CreateDwmBitmap(int width, int height) -{ - BITMAPINFO bi; - bi.bmiHeader.biSize = sizeof(bi.bmiHeader); - bi.bmiHeader.biWidth = width; - bi.bmiHeader.biHeight = -height; - bi.bmiHeader.biPlanes = 1; - bi.bmiHeader.biBitCount = 32; - bi.bmiHeader.biCompression = BI_RGB; - return CreateDIBSection(0, &bi, DIB_RGB_COLORS, NULL, 0, 0); -} - -void CDwmWindow::MakeBitmapOpaque(HBITMAP hBmp) -{ - BITMAP bmp; - GetObject(hBmp, sizeof(bmp), &bmp); - if (bmp.bmBitsPixel != 32) return; - if (bmp.bmHeight < 0) bmp.bmHeight *= -1; - - int size = bmp.bmWidth * bmp.bmHeight * 4; - BYTE *data = new BYTE[size]; - GetBitmapBits(hBmp, size, data); - for (int i = 3; i < size; i += 4) - data[i] = 255; - SetBitmapBits(hBmp, size, data); - delete [] data; - -} - -void CDwmWindow::DrawGradient(HDC hdc, int x, int y, int width, int height, RGBQUAD *rgb0, RGBQUAD *rgb1) -{ - int oldMode = SetBkMode(hdc, OPAQUE); - COLORREF oldColor = SetBkColor(hdc, 0); - - RECT rc; SetRect(&rc, x, 0, x+width, 0); - for (int i=y+height; --i >= y; ) { - COLORREF color = RGB( - ((height-i-1)*rgb0->rgbRed + i*rgb1->rgbRed) / height, - ((height-i-1)*rgb0->rgbGreen + i*rgb1->rgbGreen) / height, - ((height-i-1)*rgb0->rgbBlue + i*rgb1->rgbBlue) / height); - rc.top = rc.bottom = i; - ++rc.bottom; - SetBkColor(hdc, color); - ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, "", 0, 0); - } - - SetBkMode(hdc, oldMode); - SetBkColor(hdc, oldColor); -} - -bool CDwmWindow::AddButton(HICON hIcon, TCHAR *text, INT_PTR data, DWORD flags) -{ - if (m_btnCount == SIZEOF(m_btnInfo)) return false; - m_btnInfo[m_btnCount].dwMask = THUMBBUTTONMASK(THB_ICON|THB_TOOLTIP|THB_FLAGS); - m_btnInfo[m_btnCount].hIcon = hIcon; - lstrcpyn(m_btnInfo[m_btnCount].szTip, text, SIZEOF(m_btnInfo[m_btnCount].szTip)); - m_btnInfo[m_btnCount].dwFlags = THUMBBUTTONFLAGS(flags); - m_btnData[m_btnCount] = data; - m_btnCount++; - return true; -} - -void CDwmWindow::UpdateButtons(ITaskbarList3 *p) -{ - if (m_btnInitialized) - p->ThumbBarUpdateButtons(hwnd(), SIZEOF(m_btnInfo), m_btnInfo); - else - p->ThumbBarAddButtons(hwnd(), SIZEOF(m_btnInfo), m_btnInfo); - - m_btnCount = 0; // reset this for next iteration - m_btnInitialized = true; -} - -void CDwmWindow::SetTimer(int id, int timeout) -{ - ::SetTimer(m_hwnd, id, timeout, NULL); -} - -void CDwmWindow::KillTimer(int id) -{ - ::KillTimer(m_hwnd, id); -} - -void CDwmWindow::InvalidateThumbnail() -{ - dwmInvalidateIconicBitmaps(m_hwnd); -} - -void CDwmWindow::SetPreview(HBITMAP hbmp, int x, int y) -{ - POINT pt = { x, y }; - dwmSetIconicLivePreviewBitmap(m_hwnd, hbmp, &pt, 0); -} - -void CDwmWindow::SetThumbnail(HBITMAP hbmp) -{ - dwmSetIconicThumbnail(m_hwnd, hbmp, 0); -} - -LRESULT CDwmWindow::WndProc(UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_ACTIVATE: - { - if (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE) - { - OnActivate((HWND)wParam); - } - break; - } - - case WM_CLOSE: - { - OnClose(); - return FALSE; - } - - case WM_DWMSENDICONICLIVEPREVIEWBITMAP: - { - OnRenderPreview(); - break; - } - - case WM_DWMSENDICONICTHUMBNAIL: - { - int width = HIWORD(lParam); - int height = LOWORD(lParam); - OnRenderThumbnail(width, height); - break; - } - - case WM_TIMER: - { - OnTimer(wParam); - break; - } - - case WM_COMMAND: - { - if (HIWORD(wParam) == THBN_CLICKED) - OnToolbar(LOWORD(wParam), m_btnData[LOWORD(wParam)]); - break; - } - } - - return DefWindowProc(m_hwnd, msg, wParam, lParam); -} - -void CDwmWindow::GlobalInitWndClass() -{ - static bool bInitialized = false; - if (bInitialized) return; - - WNDCLASSEX wcl = {0}; - wcl.cbSize = sizeof(wcl); - wcl.lpfnWndProc = GlobalWndProc; - wcl.style = 0; - wcl.cbClsExtra = 0; - wcl.cbWndExtra = 0; - wcl.hInstance = g_hInst; - wcl.hIcon = NULL; - wcl.hCursor = LoadCursor(NULL, IDC_ARROW); - wcl.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); - wcl.lpszMenuName = NULL; - wcl.lpszClassName = WNDCLASSNAME; - wcl.hIconSm = NULL; - RegisterClassEx(&wcl); -} - -LRESULT CALLBACK CDwmWindow::GlobalWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CDwmWindow *wnd = (CDwmWindow *)GetWindowLongPtr(hwnd, GWLP_USERDATA); - if (!wnd) return DefWindowProc(hwnd, msg, wParam, lParam); - if (msg == WM_DESTROY) - { - delete wnd; - return DefWindowProc(hwnd, msg, wParam, lParam); - } - return wnd->WndProc(msg, wParam, lParam); -} \ No newline at end of file diff --git a/plugins/!Deprecated/W7UI/src/dwmwindow.h b/plugins/!Deprecated/W7UI/src/dwmwindow.h deleted file mode 100644 index e795823247..0000000000 --- a/plugins/!Deprecated/W7UI/src/dwmwindow.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef dwmwindow_h__ -#define dwmwindow_h__ - -class CDwmWindow -{ -public: - CDwmWindow(); - virtual ~CDwmWindow() {} - - HWND hwnd() { return m_hwnd; } - - template - static TWindow *GetWindow(HWND hwnd) - { - return (TWindow *)GetWindowLongPtr(hwnd, GWLP_USERDATA); - } - -protected: - // events - virtual void OnActivate(HWND hwndFrom) {} - virtual void OnClose() {} - virtual void OnRenderThumbnail(int mzxWidth, int maxHeight) {} - virtual void OnRenderPreview() {} - virtual void OnTimer(int id) {} - virtual void OnToolbar(int id, INT_PTR data) {} - - // timer stuff - void SetTimer(int id, int timeout); - void KillTimer(int id); - - // manage thumbnail and aero peek - void InvalidateThumbnail(); - void SetPreview(HBITMAP hbmp, int x, int y); - void SetThumbnail(HBITMAP hbmp); - - // manage toolbar - bool AddButton(HICON hIcon, TCHAR *text, INT_PTR data, DWORD flags = THBF_ENABLED); - void UpdateButtons(ITaskbarList3 *p); - - //utilities - static HBITMAP CreateDwmBitmap(int width, int height); - static void MakeBitmapOpaque(HBITMAP hBmp); - static void DrawGradient(HDC hdc, int x, int y, int width, int height, RGBQUAD *rgb0, RGBQUAD *rgb1); - -private: - HWND m_hwnd; - - bool m_btnInitialized; - int m_btnCount; - THUMBBUTTON m_btnInfo[7]; - INT_PTR m_btnData[7]; - - LRESULT CALLBACK WndProc(UINT msg, WPARAM wParam, LPARAM lParam); - - static void GlobalInitWndClass(); - static LRESULT CALLBACK GlobalWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); -}; - -#endif // dwmwindow_h__ \ No newline at end of file diff --git a/plugins/!Deprecated/W7UI/src/headers.h b/plugins/!Deprecated/W7UI/src/headers.h deleted file mode 100644 index 4bb2d15261..0000000000 --- a/plugins/!Deprecated/W7UI/src/headers.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org) -Copyright (ñ) 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. -*/ - -#define _CRT_SECURE_NO_DEPRECATE - - -#include -#define _WIN32_WINNT 0x0501 -#include -#include -#include -#include - -#include -#include -#include - -#define MIRANDA_VER 0x0A00 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "m_w7ui.h" - -#include "win7api.h" - -#include "jumplistarray.h" -#include "jumplistbuilder.h" -#include "jumplist.h" - -#include "subclassmgr.h" -#include "dwmwindow.h" -#include "clistproxywindow.h" -#include "srmmproxywindow.h" - -extern HINSTANCE g_hInst; diff --git a/plugins/!Deprecated/W7UI/src/jumplist.cpp b/plugins/!Deprecated/W7UI/src/jumplist.cpp deleted file mode 100644 index 4fd1a68e9d..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplist.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "headers.h" - -static HANDLE hProcessJumpList = 0; - -static void ProcessJumpListImpl(char *arg) -{ - char *prefix = mir_strdup(arg); - char *argument = strchr(prefix, ':'); - if (argument) *argument++ = 0; - NotifyEventHooks(hProcessJumpList, (WPARAM)prefix, (LPARAM)argument); - mir_free(prefix); -} - -static LRESULT CALLBACK MirandaJumpListProcessorWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_COPYDATA: - { - COPYDATASTRUCT *data = (COPYDATASTRUCT *)lParam; - ProcessJumpListImpl((char *)data->lpData); - break; - } - } - - return DefWindowProc(hwnd, message, wParam, lParam); -} - -extern "C" __declspec(dllexport) void ProcessJumpList(HWND, HINSTANCE, LPSTR arg, UINT) -{ - char miranda_path[MAX_PATH]; - GetModuleFileNameA(g_hInst, miranda_path, SIZEOF(miranda_path)); - lstrcpyA(strstr(_strlwr(miranda_path), "plugins\\w7ui.dll"), "miranda32.exe"); - - if (HWND hwnd = FindWindowA("MirandaJumpListProcessor", miranda_path)) - { - COPYDATASTRUCT data = {0}; - data.dwData = 0; - data.cbData = lstrlenA(arg) + 1; - data.lpData = arg; - SendMessage(hwnd, WM_COPYDATA, 0, (LPARAM)&data); - } else - { - char command[MAX_PATH * 2]; - wsprintfA(command, "\"%s\" -jump %s", miranda_path, arg); - WinExec(command, SW_SHOWNORMAL); - } -} - -static int OnJumpListItems(WPARAM, LPARAM lParam) -{ - WCHAR *category = (WCHAR *)lParam; - - if (!category) - { - MJumpList_AddItem(SKINICON_STATUS_ONLINE, TranslateT("Online"), L"status", L"online"); - MJumpList_AddItem(SKINICON_STATUS_DND, TranslateT("Do not disturb"), L"status", L"dnd"); - MJumpList_AddItem(SKINICON_STATUS_INVISIBLE, TranslateT("Invisible"), L"status", L"invisible"); - MJumpList_AddItem(SKINICON_STATUS_OFFLINE, TranslateT("Offline"), L"status", L"offline"); - return 0; - } - - return 0; -} - -static int OnJumpListProcess(WPARAM wParam, LPARAM lParam) -{ - char *prefix = (char *)wParam; - char *argument = (char *)lParam; - - if (!lstrcmpA(prefix, "status")) - { - if (!lstrcmpA(argument, "online")) - { - CallService(MS_CLIST_SETSTATUSMODE, ID_STATUS_ONLINE, 0); - } else - if (!lstrcmpA(argument, "dnd")) - { - CallService(MS_CLIST_SETSTATUSMODE, ID_STATUS_DND, 0); - } else - if (!lstrcmpA(argument, "invisible")) - { - CallService(MS_CLIST_SETSTATUSMODE, ID_STATUS_INVISIBLE, 0); - } else - if (!lstrcmpA(argument, "offline")) - { - CallService(MS_CLIST_SETSTATUSMODE, ID_STATUS_OFFLINE, 0); - } - return 1; - } - - return 0; -} - -void LoadJumpList() -{ - hProcessJumpList = CreateHookableEvent(ME_JUMPLIST_PROCESS); -} - -void InitJumpList() -{ - HookEvent(ME_JUMPLIST_BUILDITEMS, OnJumpListItems); - HookEvent(ME_JUMPLIST_PROCESS, OnJumpListProcess); - - if (char *cmd = strstr(GetCommandLineA(), " -jump ")) - ProcessJumpListImpl(cmd + 7); - - WNDCLASSEX wcx = {0}; - wcx.cbSize = sizeof(wcx); - wcx.lpfnWndProc = MirandaJumpListProcessorWndProc; - wcx.hInstance = g_hInst; - wcx.lpszClassName = _T("MirandaJumpListProcessor"); - RegisterClassEx(&wcx); - - char miranda_path[MAX_PATH]; - GetModuleFileNameA(g_hInst, miranda_path, SIZEOF(miranda_path)); - lstrcpyA(strstr(_strlwr(miranda_path), "plugins\\w7ui.dll"), "miranda32.exe"); - - HWND hwnd = CreateWindowA("MirandaJumpListProcessor", miranda_path, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, g_hInst, NULL); - ShowWindow(hwnd, SW_HIDE); - - CJumpListBuilder::Rebuild(); -} diff --git a/plugins/!Deprecated/W7UI/src/jumplist.h b/plugins/!Deprecated/W7UI/src/jumplist.h deleted file mode 100644 index de5a6f0548..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplist.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef jumplist_h__ -#define jumplist_h__ - -void LoadJumpList(); -void InitJumpList(); - -#endif // jumplist_h__ diff --git a/plugins/!Deprecated/W7UI/src/jumplistarray.cpp b/plugins/!Deprecated/W7UI/src/jumplistarray.cpp deleted file mode 100644 index 5eabf82fe1..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplistarray.cpp +++ /dev/null @@ -1,214 +0,0 @@ -#include "headers.h" - -#pragma pack(push, 1) -typedef struct -{ - BYTE bWidth; // Width, in pixels, of the image - BYTE bHeight; // Height, in pixels, of the image - BYTE bColorCount; // Number of colors in image (0 if >=8bpp) - BYTE bReserved; // Reserved ( must be 0) - WORD wPlanes; // Color Planes - WORD wBitCount; // Bits per pixel - DWORD dwBytesInRes; // How many bytes in this resource? - DWORD dwImageOffset; // Where in the file is this image? -} ICONDIRENTRY, *LPICONDIRENTRY; - -typedef struct -{ - WORD idReserved; // Reserved (must be 0) - WORD idType; // Resource Type (1 for icons) - WORD idCount; // How many images? - ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) -} ICONDIR, *LPICONDIR; -#pragma pack(pop) - -static void SaveIconToFile(HICON hIcon, TCHAR *szFile) -{ - ICONINFO iconInfo = {0}; - BITMAP bmpColor, bmpMask; - HANDLE hFile = 0; - HANDLE hMap = 0; - BYTE *pFile = 0; - - GetIconInfo(hIcon, &iconInfo); - GetObject(iconInfo.hbmColor, sizeof(bmpColor), &bmpColor); - GetObject(iconInfo.hbmMask, sizeof(bmpMask), &bmpMask); - - do - { - if (bmpColor.bmBitsPixel <= 8) break; - - DWORD dwColorSize = bmpColor.bmWidthBytes * bmpColor.bmHeight; - DWORD dwMaskSize = bmpMask.bmWidthBytes * bmpMask.bmHeight; - DWORD dwFileSize = sizeof(ICONDIR) + sizeof(BITMAPINFOHEADER) + dwColorSize + dwMaskSize; - - hFile = CreateFile(szFile, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL); - if (hFile == INVALID_HANDLE_VALUE) break; - hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwFileSize, NULL); - if (!hMap) break; - pFile = (BYTE *)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0 ,0); - if (!pFile) break; - - ICONDIR iconDir = {0}; - iconDir.idCount = 1; - iconDir.idType = 1; - iconDir.idEntries[0].bWidth = bmpColor.bmWidth; - iconDir.idEntries[0].bHeight = bmpColor.bmHeight; - iconDir.idEntries[0].bColorCount = 0; - iconDir.idEntries[0].wPlanes = bmpColor.bmPlanes; - iconDir.idEntries[0].wBitCount = bmpColor.bmBitsPixel; - iconDir.idEntries[0].dwBytesInRes = sizeof(BITMAPINFOHEADER) + dwColorSize + dwMaskSize; - iconDir.idEntries[0].dwImageOffset = sizeof(ICONDIR); - MoveMemory(pFile, &iconDir, sizeof(ICONDIR)); - - BITMAPINFOHEADER iconBmp = {0}; - iconBmp.biSize = sizeof(iconBmp); - iconBmp.biWidth = bmpColor.bmWidth; - iconBmp.biHeight = bmpColor.bmHeight + bmpMask.bmHeight; - iconBmp.biPlanes = bmpColor.bmPlanes; - iconBmp.biBitCount = bmpColor.bmBitsPixel; - iconBmp.biSizeImage = dwColorSize + dwMaskSize; - MoveMemory(pFile + sizeof(ICONDIR), &iconBmp, sizeof(BITMAPINFOHEADER)); - - BYTE *buf = (BYTE *)mir_alloc(dwColorSize); - GetBitmapBits(iconInfo.hbmColor, dwColorSize, buf); - for (int row = 0; row < bmpColor.bmHeight; ++row) - { - MoveMemory( - pFile + sizeof(ICONDIR) + sizeof(BITMAPINFOHEADER) + row * bmpColor.bmWidthBytes, - buf + (bmpColor.bmHeight - row - 1) * bmpColor.bmWidthBytes, - bmpColor.bmWidthBytes); - } - mir_free(buf); - - GetBitmapBits(iconInfo.hbmMask, dwMaskSize, pFile + sizeof(ICONDIR) + sizeof(BITMAPINFOHEADER) + dwColorSize); - } while(0); - - DeleteObject(iconInfo.hbmColor); - DeleteObject(iconInfo.hbmMask); - - if (pFile) UnmapViewOfFile(pFile); - if (hMap) CloseHandle(hMap); - if (hFile && hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); -} - -CJumpListArray::CJumpListArray() -{ - CoCreateInstance(CLSID_EnumerableObjectCollection, NULL, CLSCTX_INPROC_SERVER, IID_IObjectCollection, (void **)&m_pObjects); -} - -CJumpListArray::~CJumpListArray() -{ - if (m_pObjects) m_pObjects->Release(); -} - -void CJumpListArray::AddItemImpl(TCHAR *icon, int iIcon, TCHAR *title, TCHAR *path, TCHAR *args) -{ - IShellLink *link = NewShellLink(icon, iIcon, title, path, args); - m_pObjects->AddObject(link); - link->Release(); -} - -void CJumpListArray::AddItem(char *mir_icon, TCHAR *title, TCHAR *path, TCHAR *args) -{ - TCHAR icon[MAX_PATH]; int iIcon; - LoadMirandaIcon(mir_icon, icon, &iIcon); - AddItemImpl(icon, iIcon, title, path, args); -} - -void CJumpListArray::AddItem(int skinicon, TCHAR *title, TCHAR *path, TCHAR *args) -{ - TCHAR icon[MAX_PATH]; int iIcon; - LoadMirandaIcon(skinicon, icon, &iIcon); - AddItemImpl(icon, iIcon, title, path, args); -} - -void CJumpListArray::AddItem(char *proto, int status, TCHAR *title, TCHAR *path, TCHAR *args) -{ - TCHAR icon[MAX_PATH]; int iIcon; - LoadMirandaIcon(proto, status, icon, &iIcon); - AddItemImpl(icon, iIcon, title, path, args); -} - -IObjectArray *CJumpListArray::GetArray() -{ - IObjectArray *result = NULL; - m_pObjects->QueryInterface(IID_IObjectArray, (void **)&result); - return result; -} - -bool CJumpListArray::LoadMirandaIcon(char *mir_icon, TCHAR *icon, int *id) -{ - *id = 0; - - TCHAR *path = Utils_ReplaceVarsT(_T("%miranda_userdata%\\w7ui.IconCache")); - CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)path); - - TCHAR *name = mir_a2t(mir_icon); - for (TCHAR *ch = name; *ch; ++ch) if (_tcschr(_T("\\/:*?<>|"), *ch)) *ch = _T('_'); - mir_sntprintf(icon, MAX_PATH, _T("%s\\%s.ico"), path, name); - - mir_free(name); - mir_free(path); - - HICON hIcon = Skin_GetIcon(mir_icon); - SaveIconToFile(hIcon, icon); - - return true; -} - -bool CJumpListArray::LoadMirandaIcon(int skinicon, TCHAR *icon, int *id) -{ - *id = 0; - - TCHAR *path = Utils_ReplaceVarsT(_T("%miranda_userdata%\\w7ui.IconCache")); - CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)path); - mir_sntprintf(icon, MAX_PATH, _T("%s\\skinicon$%d.ico"), path, skinicon); - mir_free(path); - - HICON hIcon = LoadSkinnedIcon(skinicon); - SaveIconToFile(hIcon, icon); - - return true; -} - -bool CJumpListArray::LoadMirandaIcon(char *proto, int status, TCHAR *icon, int *id) -{ - *id = 0; - - TCHAR *path = Utils_ReplaceVarsT(_T("%miranda_userdata%\\w7ui.IconCache")); - CallService(MS_UTILS_CREATEDIRTREET, 0, (LPARAM)path); - mir_sntprintf(icon, MAX_PATH, _T("%s\\skinprotoicon$") _T(TCHAR_STR_PARAM) _T("$%d.ico"), path, proto, status); - mir_free(path); - - HICON hIcon = LoadSkinnedProtoIcon(proto, status); - SaveIconToFile(hIcon, icon); - - return true; -} - -IShellLink *CJumpListArray::NewShellLink(TCHAR *icon, int iIcon, TCHAR *title, TCHAR *path, TCHAR *args) -{ - IShellLink *pShellLink = NULL; - CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pShellLink); - - pShellLink->SetPath(path); - pShellLink->SetIconLocation(icon, iIcon); - pShellLink->SetArguments(args); - pShellLink->SetShowCmd(SW_SHOWDEFAULT); - - IPropertyStore *pPropStore = NULL; - if (SUCCEEDED(pShellLink->QueryInterface(IID_IPropertyStore, (void **)&pPropStore))) - { - PROPVARIANT pv; - - InitPropVariantFromString(title, &pv); - pPropStore->SetValue(PKEY_Title, pv); - PropVariantClear(&pv); - - pPropStore->Commit(); - pPropStore->Release(); - } - - return pShellLink; -} \ No newline at end of file diff --git a/plugins/!Deprecated/W7UI/src/jumplistarray.h b/plugins/!Deprecated/W7UI/src/jumplistarray.h deleted file mode 100644 index c9f2a8b979..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplistarray.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef jumplistarray_h__ -#define jumplistarray_h__ - -class CJumpListArray -{ -private: - IObjectCollection *m_pObjects; - -public: - CJumpListArray(); - ~CJumpListArray(); - - void AddItem(char *mir_icon, TCHAR *title, TCHAR *path, TCHAR *args); - void AddItem(int skinicon, TCHAR *title, TCHAR *path, TCHAR *args); - void AddItem(char *proto, int skinicon, TCHAR *title, TCHAR *path, TCHAR *args); - - IObjectArray *GetArray(); - -private: - void AddItemImpl(TCHAR *icon, int iIcon, TCHAR *title, TCHAR *path, TCHAR *args); - - bool LoadMirandaIcon(char *mir_icon, TCHAR *icon, int *id); - bool LoadMirandaIcon(int skinicon, TCHAR *icon, int *id); - bool LoadMirandaIcon(char *proto, int status, TCHAR *icon, int *id); - - static IShellLink *NewShellLink(TCHAR *icon, int iIcon, TCHAR *title, TCHAR *path, TCHAR *args); -}; - -#endif // jumplistarray_h__ diff --git a/plugins/!Deprecated/W7UI/src/jumplistbuilder.cpp b/plugins/!Deprecated/W7UI/src/jumplistbuilder.cpp deleted file mode 100644 index 5e5f1d9f65..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplistbuilder.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include "headers.h" - -CJumpListBuilder *CJumpListBuilder::m_instance = 0; - -CJumpListBuilder::CJumpListBuilder() -{ - m_hBuildCategories = CreateHookableEvent(ME_JUMPLIST_BUILDCATEGORIES); - m_hBuildItems = CreateHookableEvent(ME_JUMPLIST_BUILDITEMS); - CreateSvc(MS_JUMPLIST_REBUILD, &CJumpListBuilder::Rebuild); - CreateSvc(MS_JUMPLIST_ADDCATEGORY, &CJumpListBuilder::AddCategory); - CreateSvc(MS_JUMPLIST_ADDITEM, &CJumpListBuilder::AddItem); -} - -CJumpListBuilder::~CJumpListBuilder() -{ - KillObjectServices(this); - DestroyHookableEvent(m_hBuildCategories); - DestroyHookableEvent(m_hBuildItems); -} - -void CJumpListBuilder::BuildJumpList() -{ - m_lists = new LIST(5, _tcscmp); - NotifyEventHooks(m_hBuildCategories, 0, 0); - - UINT maxSlots; - IObjectArray *pRemoved; - CoCreateInstance(CLSID_CustomDestinationList, NULL, CLSCTX_INPROC_SERVER, IID_ICustomDestinationList, (void **)&m_pList); - m_pList->BeginList(&maxSlots, IID_IObjectArray, (void **)&pRemoved); - BuildCategory(NULL); - for (int i = 0; i < m_lists->getCount(); ++i) - BuildCategory((*m_lists)[i]); - m_pList->CommitList(); - m_pList->Release(); - pRemoved->Release(); - - m_lists->destroy(); - delete m_lists; -} - -int __cdecl CJumpListBuilder::Rebuild(WPARAM wParam, LPARAM lParam) -{ - BuildJumpList(); - return 0; -} - -int __cdecl CJumpListBuilder::AddCategory(WPARAM wParam, LPARAM lParam) -{ - TCHAR *category = (TCHAR *)lParam; - if (!m_lists->find(category)) m_lists->insert(mir_wstrdup(category)); - return 0; -} - -int __cdecl CJumpListBuilder::AddItem(WPARAM wParam, LPARAM lParam) -{ - MIRANDAJUMPLISTITEM *item = (MIRANDAJUMPLISTITEM *)lParam; - switch (item->iconSource) - { - case MIS_ICOLIB: - m_pCurrentList->AddItem(item->iconName, item->szTitle, _T("rundll32.exe"), BuildJumpListCommand(item->szPrefix, item->szArgument)); - break; - case MIS_GENERAL: - m_pCurrentList->AddItem(item->iconIdx, item->szTitle, _T("rundll32.exe"), BuildJumpListCommand(item->szPrefix, item->szArgument)); - break; - case MIS_PROTOCOL: - m_pCurrentList->AddItem(item->iconName, item->iconIdx, item->szTitle, _T("rundll32.exe"), BuildJumpListCommand(item->szPrefix, item->szArgument)); - break; - } - return 0; -} - -void CJumpListBuilder::BuildCategory(TCHAR *category) -{ - m_pCurrentList = new CJumpListArray; - NotifyEventHooks(m_hBuildItems, 0, (LPARAM)category); - - if (category) - m_pList->AppendCategory(category, m_pCurrentList->GetArray()); - else - m_pList->AddUserTasks(m_pCurrentList->GetArray()); - delete m_pCurrentList; - -} - -TCHAR *CJumpListBuilder::BuildJumpListCommand(TCHAR *prefix, TCHAR *argument) -{ - TCHAR path[MAX_PATH]; - GetModuleFileName(g_hInst, path, SIZEOF(path)); - mir_sntprintf(m_cmdBuf, SIZEOF(m_cmdBuf), _T("\"%s\",ProcessJumpList %s:%s"), path, prefix, argument); - return m_cmdBuf; -} - -HANDLE CJumpListBuilder::CreateSvc(char *svc, int (__cdecl CJumpListBuilder::*fn)(WPARAM, LPARAM)) -{ - return CreateServiceFunctionObj(svc, *(MIRANDASERVICEOBJ *)&fn, this); -} - -/* -static TCHAR *BuildJumpListCommand(TCHAR *buf, int size, TCHAR *arg); - -static void SetupTasks() -{ - TCHAR buf[MAX_PATH * 2]; - - CJumpListArray tasks; - tasks.AddItem(SKINICON_STATUS_ONLINE, TranslateT("Online"), _T("rundll32.exe"), BuildJumpListCommand(buf, SIZEOF(buf), _T("status:online"))); - tasks.AddItem(SKINICON_STATUS_DND, TranslateT("Do not disturb"), _T("rundll32.exe"), BuildJumpListCommand(buf, SIZEOF(buf), _T("status:dnd"))); - tasks.AddItem(SKINICON_STATUS_INVISIBLE, TranslateT("Invisible"), _T("rundll32.exe"), BuildJumpListCommand(buf, SIZEOF(buf), _T("status:invisible"))); - tasks.AddItem(SKINICON_STATUS_OFFLINE, TranslateT("Offline"), _T("rundll32.exe"), BuildJumpListCommand(buf, SIZEOF(buf), _T("status:offline"))); - -// CJumpListArray contacts; -// contacts.AddItem("core_status_*0", TranslateT("Nickname"), L"taskhost.exe", L"profile.dat -contact:hcontact"); - - UINT maxSlots; - IObjectArray *pRemoved; - - ICustomDestinationList *pList; - CoCreateInstance(CLSID_CustomDestinationList, NULL, CLSCTX_INPROC_SERVER, IID_ICustomDestinationList, (void **)&pList); - pList->BeginList(&maxSlots, IID_IObjectArray, (void **)&pRemoved); - pList->AddUserTasks(tasks.GetArray()); -// pList->AppendCategory(L"Contacts", contacts.GetArray()); - pList->CommitList(); - pList->Release(); - - pRemoved->Release(); -} -*/ \ No newline at end of file diff --git a/plugins/!Deprecated/W7UI/src/jumplistbuilder.h b/plugins/!Deprecated/W7UI/src/jumplistbuilder.h deleted file mode 100644 index 6a0bde2fd4..0000000000 --- a/plugins/!Deprecated/W7UI/src/jumplistbuilder.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef jumplistbuilder_h__ -#define jumplistbuilder_h__ - -class CJumpListBuilder -{ -public: - static void Load(void) - { - m_instance = new CJumpListBuilder; - } - - static void Unload() - { - delete m_instance; - } - - static void Rebuild() - { - m_instance->BuildJumpList(); - } - -private: - static CJumpListBuilder *m_instance; - - LIST *m_lists; - ICustomDestinationList *m_pList; - CJumpListArray *m_pCurrentList; - TCHAR m_cmdBuf[MAX_PATH * 2]; - - HANDLE m_hBuildCategories; - HANDLE m_hBuildItems; - - CJumpListBuilder(); - ~CJumpListBuilder(); - void BuildJumpList(); - - int __cdecl Rebuild(WPARAM wParam, LPARAM lParam); - int __cdecl AddCategory(WPARAM wParam, LPARAM lParam); - int __cdecl AddItem(WPARAM wParam, LPARAM lParam); - - void BuildCategory(TCHAR *category); - - TCHAR *BuildJumpListCommand(TCHAR *prefix, TCHAR *argument); - HANDLE CreateSvc(char *svc, int (__cdecl CJumpListBuilder::*fn)(WPARAM, LPARAM)); -}; - -#endif // jumplistbuilder_h__ diff --git a/plugins/!Deprecated/W7UI/src/main.cpp b/plugins/!Deprecated/W7UI/src/main.cpp deleted file mode 100644 index 17c810d2ea..0000000000 --- a/plugins/!Deprecated/W7UI/src/main.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* -Miranda core extensions - -Copyright (c) 2000-07 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 "headers.h" -#include - -int LoadW7UI(); -int UnloadW7UI(); - -HINSTANCE g_hInst; -int hLangpack; - -// {3625ACB8-794C-4727-88EA-76DBBAC6D200} -#define MIID_W7UI { 0x3625acb8, 0x794c, 0x4727, { 0x88, 0xea, 0x76, 0xdb, 0xba, 0xc6, 0xd2, 0x0 } } - - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - "Windows 7 UI", - PLUGIN_MAKE_VERSION(0, 0, 0, 1), - "Provides support for Windows 7 Taskbar feautures such as Aero Peek, Overlay icons, Jump Lists, Progress Bar", - "nullbie, persei", - "nullbie@miranda.im", - "2009 Victor Pavlychko, Vitaliy Igonin", - "http://miranda-ng.org/", - UNICODE_AWARE, // replace internal version (if any) - // {D38EEB0B-B8EE-4177-B9E5-91EBE101E054} - { 0xd38eeb0b, 0xb8ee, 0x4177, { 0xb9, 0xe5, 0x91, 0xeb, 0xe1, 0x1, 0xe0, 0x54 } } -}; - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - g_hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_W7UI, MIID_LAST }; - -extern "C" __declspec(dllexport) int Load(void) -{ - if (!IsWinVer7Plus()) return 1; - - - mir_getLP(&pluginInfo); - - LoadW7UI(); - - return 0; -} - -extern "C" __declspec(dllexport) int Unload(void) -{ - UnloadW7UI(); - return 0; -} diff --git a/plugins/!Deprecated/W7UI/src/srmmproxywindow.cpp b/plugins/!Deprecated/W7UI/src/srmmproxywindow.cpp deleted file mode 100644 index a70ca1b672..0000000000 --- a/plugins/!Deprecated/W7UI/src/srmmproxywindow.cpp +++ /dev/null @@ -1,374 +0,0 @@ -#include "headers.h" - -extern int g_eventSlotMessage; -extern ITaskbarList3 *g_pTaskbarList; - -/////////////////////////////////////////////////////////////////////////////// -// srmm processing - -CSrmmProxyWindow::CSrmmProxyWindow(HANDLE hContact, HWND hwndWindow, HWND hwndParent) -{ - m_hContact = hContact; - m_hwndWindow = hwndWindow; - m_hwndParent = hwndParent; - - m_hbmpPreview = NULL; - m_refreshPreview = true; - - m_bActive = false; - m_bUnread = false; - m_bTyping = false; - - UpdateIcon(); - SetWindowText(hwnd(), (TCHAR *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)m_hContact, GCDNF_TCHAR)); - SetTimer(1, 1000); - - SetEventHook(ME_DB_EVENT_ADDED, &CSrmmProxyWindow::OnDbEventAdded); - SetEventHook(ME_DB_CONTACT_SETTINGCHANGED, &CSrmmProxyWindow::OnDbSettingChanged); - SetEventHook(ME_AV_AVATARCHANGED, &CSrmmProxyWindow::OnAvatarChanged); - SetEventHook(ME_PROTO_CONTACTISTYPING, &CSrmmProxyWindow::OnContactTyping); - - AddButton(LoadSkinnedIcon(SKINICON_OTHER_USERDETAILS), TranslateT("User Details"), 1, THBF_DISMISSONCLICK); - AddButton(LoadSkinnedIcon(SKINICON_OTHER_HISTORY), TranslateT("History"), 2, THBF_DISMISSONCLICK); - AddButton(LoadSkinnedIcon(SKINICON_EVENT_FILE), TranslateT("File"), 3, THBF_DISMISSONCLICK); - UpdateButtons(g_pTaskbarList); -} - -CSrmmProxyWindow::~CSrmmProxyWindow() -{ - DeleteObject(m_hbmpPreview); - KillObjectEventHooks(this); -} - - -void CSrmmProxyWindow::Refresh() -{ - InvalidateThumbnail(); - m_refreshPreview = true; -} - -int __cdecl CSrmmProxyWindow::OnDbEventAdded(WPARAM wParam, LPARAM lParam) -{ - if ((HANDLE)wParam == m_hContact) - { - Refresh(); - - if (!m_bUnread && !IsActive()) - { - DBEVENTINFO dbei = {0}; - dbei.cbSize = sizeof(dbei); - if (!CallService(MS_DB_EVENT_GET, (WPARAM)lParam, (LPARAM)&dbei)) - if (dbei.eventType == EVENTTYPE_MESSAGE && !(dbei.flags & (DBEF_READ|DBEF_SENT))) - { - g_clistProxyWnd->Flash(); - g_clistProxyWnd->AddOverlayEvent(g_eventSlotMessage); - m_bUnread = true; - UpdateIcon(); - } - } - } - return 0; -} - -int __cdecl CSrmmProxyWindow::OnDbSettingChanged(WPARAM wParam, LPARAM lParam) -{ - if ((HANDLE)wParam == m_hContact) - { - UpdateIcon(); - Refresh(); - } - return 0; -} - -int __cdecl CSrmmProxyWindow::OnAvatarChanged(WPARAM wParam, LPARAM lParam) -{ - if ((HANDLE)wParam == m_hContact) - Refresh(); - return 0; -} - -int __cdecl CSrmmProxyWindow::OnContactTyping(WPARAM wParam, LPARAM lParam) -{ - if ((HANDLE)wParam == m_hContact) - { - m_bTyping = lParam ? true : false; - UpdateIcon(); - } - return 0; -} - -HANDLE CSrmmProxyWindow::SetEventHook(char *evt, int (__cdecl CSrmmProxyWindow::*fn)(WPARAM, LPARAM)) -{ - return HookEventObj(evt, *(MIRANDAHOOKOBJ *)&fn, this); -} - -void CSrmmProxyWindow::OnTabActive() -{ - m_bActive = true; - if (m_bUnread) - { - g_clistProxyWnd->RemoveOverlayEvent(g_eventSlotMessage); - m_bUnread = false; - UpdateIcon(); - } -} - -void CSrmmProxyWindow::OnTabInactive() -{ - m_bActive = false; -} - -bool CSrmmProxyWindow::IsActive() -{ - for (HWND hwnd = GetFocus(); hwnd; hwnd = GetParent(hwnd)) - if (hwnd == m_hwndWindow) - return m_bActive = true; - return m_bActive = false; -} - -void CSrmmProxyWindow::UpdateIcon() -{ - HICON hIcon; - if (m_bTyping) - { - hIcon = LoadSkinnedIcon(SKINICON_OTHER_TYPING); - } else - if (m_bUnread) - { - hIcon = LoadSkinnedIcon(SKINICON_EVENT_MESSAGE); - } else - { - char *szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)m_hContact, 0); - if (!szProto) return; - int iStatus = DBGetContactSettingWord(m_hContact, szProto, "Status", ID_STATUS_OFFLINE); - hIcon = (HICON)LoadSkinnedProtoIcon(szProto, iStatus); - } - - SendMessage(hwnd(), WM_SETICON, ICON_BIG, (LPARAM)hIcon); - SendMessage(hwnd(), WM_SETICON, ICON_SMALL, (LPARAM)hIcon); -} - -void CSrmmProxyWindow::OnActivate(HWND hwndFrom) -{ - CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)m_hContact, 0); -} - -void CSrmmProxyWindow::OnToolbar(int id, INT_PTR data) -{ - POINT pt; GetCursorPos(&pt); - HMENU hMenu = NULL; - HWND hwndClui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - - switch (data) - { - case 1: - CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)m_hContact, 0); - break; - - case 2: - CallService(MS_HISTORY_SHOWCONTACTHISTORY, (WPARAM)m_hContact, 0); - break; - - case 3: - CallService(MS_FILE_SENDFILE, (WPARAM)m_hContact, 0); - break; - } -} - -void CSrmmProxyWindow::OnRenderThumbnail(int width, int height) -{ - HBITMAP hbmp = CreateDwmBitmap(width, height); - HDC hdc = CreateCompatibleDC(0); - SelectObject(hdc, hbmp); - - RGBQUAD rgb0, rgb1; - rgb0.rgbRed = 0; rgb0.rgbGreen = 0; rgb0.rgbBlue = 0; - rgb1.rgbRed = 19; rgb1.rgbGreen = 58; rgb1.rgbBlue = 89; - DrawGradient(hdc, 0, 0, width, height, &rgb0, &rgb1); - - HFONT hfntSave = (HFONT)SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT)); - SetTextColor(hdc, RGB(255, 255, 255)); - SetBkMode(hdc, TRANSPARENT); - - RECT rc; - SIZE sz; - SetRect(&rc, 5, 5, width-10, height-10); - - int avatarWidth = 0; - int avatarHeight = 0; - if (true) - { - AVATARCACHEENTRY *ace = (AVATARCACHEENTRY *)CallService(MS_AV_GETAVATARBITMAP, (WPARAM)m_hContact, 0); - if (ace && (ace != (AVATARCACHEENTRY *)CALLSERVICE_NOTFOUND)) - { - if (ace->bmWidth < width / 4) - { - avatarWidth = ace->bmWidth; - avatarHeight = ace->bmHeight; - } else - { - avatarWidth = width / 4; - avatarHeight = avatarWidth * ace->bmHeight / ace->bmWidth; - } - - AVATARDRAWREQUEST avdr = {0}; - avdr.cbSize = sizeof(avdr); - avdr.hContact = m_hContact; - avdr.hTargetDC = hdc; - avdr.rcDraw = rc; - avdr.rcDraw.bottom = avdr.rcDraw.top + avatarHeight; - avdr.rcDraw.right = avdr.rcDraw.left + avatarWidth; - avdr.dwFlags = AVDRQ_FALLBACKPROTO | AVDRQ_FORCEALPHA; - - avdr.alpha = 255; - CallService(MS_AV_DRAWAVATAR, 0, (LPARAM)&avdr); - - rc.left += avatarWidth + 5; - } - } - - char *proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)m_hContact, 0); - - if (true) - { - CONTACTINFO ci = {0}; - ci.cbSize = sizeof(ci); - ci.hContact = m_hContact; - ci.szProto = proto; - ci.dwFlag = CNF_UNIQUEID | CNF_TCHAR; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) - { - TCHAR name[128]; name[0] = 0; - switch (ci.type) - { - case CNFT_ASCIIZ: - mir_sntprintf(name, SIZEOF(name), _T("%s"), ci.pszVal); - mir_free((void *)ci.pszVal); - break; - case CNFT_DWORD: - mir_sntprintf(name, SIZEOF(name), _T("%u"), ci.dVal); - break; - } - - TextOut(hdc, rc.left + 20, rc.top, name, lstrlen(name)); - GetTextExtentPoint32(hdc, name, lstrlen(name), &sz); - } - } - - if (true) - { - HIMAGELIST hIml = (HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST, 0, 0); - int iIcon = CallService(MS_CLIST_GETCONTACTICON, (WPARAM)m_hContact, 0); - ImageList_Draw(hIml, iIcon, hdc, rc.left, rc.top + (sz.cy - 16) / 2, ILD_TRANSPARENT); - } - - rc.top += sz.cy + 5; - - rc.left += 10; - - struct - { - TCHAR *text; - bool out; - } msgs[10] = {0}; - - if (true) - { - int hMsgs = 0; - int n = 0; - HANDLE hEvent = (HANDLE)CallService(MS_DB_EVENT_FINDLAST, (WPARAM)m_hContact, 0); - while (hEvent) - { - BYTE buf[1024]; - DBEVENTINFO dbei = {0}; - dbei.cbSize = sizeof(dbei); - dbei.cbBlob = sizeof(buf); - dbei.pBlob = buf; - if (!CallService(MS_DB_EVENT_GET, (WPARAM)hEvent, (LPARAM)&dbei)) - { - if (dbei.eventType == EVENTTYPE_MESSAGE) - { - msgs[n].text = DbGetEventTextT(&dbei, CP_ACP); - msgs[n].out = dbei.flags & DBEF_SENT ? true : false; - - RECT rcCopy = rc; - hMsgs += DrawText(hdc, msgs[n].text, -1, &rcCopy, DT_LEFT|DT_NOPREFIX|DT_WORDBREAK|DT_TOP|DT_CALCRECT); - if (n && hMsgs > rc.bottom - rc.top) - { - mir_free(msgs[n].text); - msgs[n].text = 0; - break; - } - - hMsgs += 3; - - if (++n >= SIZEOF(msgs)) break; - } - } - hEvent = (HANDLE)CallService(MS_DB_EVENT_FINDPREV, (WPARAM)hEvent, 0); - } - } - - if (true) - { - for (int i = SIZEOF(msgs); i--; ) - { - if (!msgs[i].text) continue; - - TCHAR szDir[] = { (msgs[i].out ? (WCHAR)0xbb : (WCHAR)0xab), 0 }; - rc.left -= 10; - DrawText(hdc, szDir, -1, &rc, DT_LEFT|DT_NOPREFIX|DT_WORDBREAK|DT_TOP); - rc.left += 10; - - rc.top += 3 + DrawText(hdc, msgs[i].text, -1, &rc, DT_LEFT|DT_NOPREFIX|DT_WORDBREAK|DT_TOP); - mir_free(msgs[i].text); - } - } - - SelectObject(hdc, hfntSave); - - DeleteDC(hdc); - MakeBitmapOpaque(hbmp); - SetThumbnail(hbmp); - DeleteObject(hbmp); -} - -void CSrmmProxyWindow::OnRenderPreview() -{ - if (!m_hbmpPreview) return; - - RECT rc; - GetWindowRect(m_hwndWindow, &rc); - MapWindowPoints(NULL, m_hwndParent, (POINT *)&rc, 2); - SetPreview(m_hbmpPreview, rc.left, rc.top); -} - -void CSrmmProxyWindow::OnTimer(int) -{ - g_pTaskbarList->UnregisterTab(m_hwndParent); - - if (!m_refreshPreview) return; - if (!IsWindowVisible(m_hwndWindow) || !IsWindowVisible(m_hwndParent) || IsIconic(m_hwndParent)) return; - if (m_hbmpPreview) DeleteObject(m_hbmpPreview); - - m_refreshPreview = false; - - RECT rc; - GetWindowRect(m_hwndWindow, &rc); - - m_hbmpPreview = CreateDwmBitmap(rc.right - rc.left, rc.bottom - rc.top); - HDC hdc = CreateCompatibleDC(0); - HBITMAP hbmpSave = (HBITMAP)SelectObject(hdc, m_hbmpPreview); - PrintWindow(m_hwndWindow, hdc, PW_CLIENTONLY); - SelectObject(hdc, hbmpSave); - DeleteDC(hdc); - - MakeBitmapOpaque(m_hbmpPreview); - - InvalidateThumbnail(); -} - -void CSrmmProxyWindow::OnClose() -{ - SendMessage(m_hwndWindow, WM_CLOSE, 1, 0); -} \ No newline at end of file diff --git a/plugins/!Deprecated/W7UI/src/srmmproxywindow.h b/plugins/!Deprecated/W7UI/src/srmmproxywindow.h deleted file mode 100644 index f1c447d4e8..0000000000 --- a/plugins/!Deprecated/W7UI/src/srmmproxywindow.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef srmmproxywindow_h__ -#define srmmproxywindow_h__ - -class CSrmmProxyWindow: public CDwmWindow -{ -public: - CSrmmProxyWindow(HANDLE hContact, HWND hwndWindow, HWND hwndParent); - ~CSrmmProxyWindow(); - - void OnTabActive(); - void OnTabInactive(); - -private: - HANDLE m_hContact; - HWND m_hwndWindow, m_hwndParent; - HBITMAP m_hbmpPreview; - bool m_refreshPreview; - bool m_bActive, m_bUnread, m_bTyping; - - void Refresh(); - - int __cdecl OnDbEventAdded(WPARAM wParam, LPARAM lParam); - int __cdecl OnDbSettingChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnAvatarChanged(WPARAM wParam, LPARAM lParam); - int __cdecl OnContactTyping(WPARAM wParam, LPARAM lParam); - - HANDLE SetEventHook(char *evt, int (__cdecl CSrmmProxyWindow::*fn)(WPARAM, LPARAM)); - - void UpdateIcon(); - - bool IsActive(); - -protected: - void OnActivate(HWND hwndFrom); - void OnToolbar(int id, INT_PTR data); - void OnRenderThumbnail(int width, int height); - void OnRenderPreview(); - void OnTimer(int); - void OnClose(); -}; - -#endif // srmmproxywindow_h__ diff --git a/plugins/!Deprecated/W7UI/src/subclassmgr.cpp b/plugins/!Deprecated/W7UI/src/subclassmgr.cpp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/plugins/!Deprecated/W7UI/src/subclassmgr.h b/plugins/!Deprecated/W7UI/src/subclassmgr.h deleted file mode 100644 index 1cf2433254..0000000000 --- a/plugins/!Deprecated/W7UI/src/subclassmgr.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef subclassmgr_h__ -#define subclassmgr_h__ - -struct TSubclassData -{ - WNDPROC oldWndProc; - LPARAM lParam; -}; - -typedef LRESULT (*TSubclassProc)(MSG *msg, TSubclassData *data); - -class CSubclassMgr -{ -public: - static void Subclass(HWND hwnd, TSubclassProc newWndProc, LPARAM lParam) - { - TWindowInfo *wi = new TWindowInfo; - wi->hwnd = hwnd; - wi->newWndProc = newWndProc; - wi->lParam = lParam; - Instance().m_windows.insert(wi); - wi->oldWndProc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)GlobalSubclassProc); - } - -private: - CSubclassMgr(): m_windows(5, TWindowInfo::Compare) {} - CSubclassMgr(const CSubclassMgr &); - CSubclassMgr &operator=(const CSubclassMgr &); - - static CSubclassMgr &Instance() - { - static CSubclassMgr theInstance; - return theInstance; - } - - struct TWindowInfo - { - HWND hwnd; - WNDPROC oldWndProc; - TSubclassProc newWndProc; - LPARAM lParam; - - static int Compare(const TWindowInfo *p1, const TWindowInfo *p2) - { - return (int)p1->hwnd - (int)p2->hwnd; - } - }; - - OBJLIST m_windows; - - static LRESULT CALLBACK GlobalSubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) - { - TWindowInfo search = { hwnd }; - TWindowInfo *wnd = Instance().m_windows.find(&search); - if (!wnd) return DefWindowProc(hwnd, message, wParam, lParam); - - MSG msg = { hwnd, message, wParam, lParam }; - TSubclassData data = { wnd->oldWndProc, wnd->lParam }; - LRESULT result = wnd->newWndProc(&msg, &data); - - if (message == WM_DESTROY) - { - SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)wnd->oldWndProc); - Instance().m_windows.remove(wnd); - } - - return result; - } -}; - -#endif // subclassmgr_h__ diff --git a/plugins/!Deprecated/W7UI/src/w7ui.cpp b/plugins/!Deprecated/W7UI/src/w7ui.cpp deleted file mode 100644 index c94f7b31ca..0000000000 --- a/plugins/!Deprecated/W7UI/src/w7ui.cpp +++ /dev/null @@ -1,180 +0,0 @@ -#include "headers.h" - -ITaskbarList3 *g_pTaskbarList = NULL; -UINT g_wm_TaskbarButtonCreated = 0; -HANDLE hSrmmWindows = NULL; - -int g_eventSlotTyping = 0; -int g_eventSlotMessage = 0; - -void InitJumpList(); - -static LRESULT CALLBACK W7UIHostWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); -static LRESULT CALLBACK W7SrmmProxyWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -static int OnModulesLoaded(WPARAM, LPARAM); -static int OnProcessSrmmEvent(WPARAM, LPARAM lParam); -static int OnStatusModeChanged(WPARAM wParam, LPARAM); - -int LoadW7UI() -{ - CoInitialize(NULL); - - CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, (void **)&g_pTaskbarList); - g_pTaskbarList->HrInit(); - - g_wm_TaskbarButtonCreated = RegisterWindowMessage(_T("TaskbarButtonCreated")); - - CJumpListBuilder::Load(); - LoadJumpList(); - - HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - HookEvent(ME_CLIST_STATUSMODECHANGE, OnStatusModeChanged); - - hSrmmWindows = (HANDLE)CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); - new CClistProxyWindow(); - - return 0; -} - -int UnloadW7UI() -{ - CJumpListBuilder::Unload(); - return 0; -} - -static int OnContactIsTyping(WPARAM wParam, LPARAM lParam) -{ - if (!wParam) return 0; - - if (lParam) g_clistProxyWnd->AddOverlayEvent(g_eventSlotTyping); - else g_clistProxyWnd->RemoveOverlayEvent(g_eventSlotTyping); - - return 0; -} - -static int OnModulesLoaded(WPARAM, LPARAM) -{ - InitJumpList(); - g_eventSlotMessage = g_clistProxyWnd->AllocateOverlayEvent(LoadSkinnedIconHandle(SKINICON_EVENT_MESSAGE)); - g_eventSlotTyping = g_clistProxyWnd->AllocateOverlayEvent(LoadSkinnedIconHandle(SKINICON_OTHER_TYPING)); - OnStatusModeChanged(CallService(MS_CLIST_GETSTATUSMODE, 0, 0), 0); - HookEvent(ME_MSG_WINDOWEVENT, OnProcessSrmmEvent); - HookEvent(ME_PROTO_CONTACTISTYPING, OnContactIsTyping); - return 0; -} - -static LRESULT SrmmSubclassProc(MSG *msg, TSubclassData *data) -{ - HWND hwndProxy = WindowList_Find(hSrmmWindows, (HANDLE)data->lParam); - CSrmmProxyWindow *wnd = CDwmWindow::GetWindow(hwndProxy); - - if (wnd) - { - switch (msg->message) - { - case WM_SETFOCUS: - wnd->OnTabActive(); - break; - case WM_ACTIVATE: - switch (msg->wParam) - { - case WA_ACTIVE: - case WA_CLICKACTIVE: - wnd->OnTabActive(); - break; - case WA_INACTIVE: - wnd->OnTabInactive(); - } - break; - case WM_NCACTIVATE: - if (msg->wParam) - wnd->OnTabActive(); - else - wnd->OnTabInactive(); - break; - } - } - - return CallWindowProc(data->oldWndProc, msg->hwnd, msg->message, msg->wParam, msg->lParam); -} - -static HWND FindParent(HWND hwnd) -{ - while (1) - { - HWND hwndParent = GetParent(hwnd); - if (hwndParent == NULL) - return hwnd; - hwnd = hwndParent; - } -} - -int OnProcessSrmmEvent(WPARAM, LPARAM lParam) -{ - MessageWindowEventData *evt = (MessageWindowEventData *)lParam; - - switch (evt->uType) - { - case MSG_WINDOW_EVT_OPENING: - { - CSubclassMgr::Subclass(evt->hwndWindow, SrmmSubclassProc, (LPARAM)evt->hContact); - break; - } - - case MSG_WINDOW_EVT_OPEN: - { - HWND hwndParent = FindParent(evt->hwndWindow); - if (hwndParent != evt->hwndWindow) - { - SetWindowLongPtr(hwndParent, GWL_EXSTYLE, GetWindowLongPtr(hwndParent, GWL_EXSTYLE) & ~WS_EX_APPWINDOW); - CSrmmProxyWindow *wnd = new CSrmmProxyWindow(evt->hContact, evt->hwndWindow, hwndParent); - HWND hwndProxy = wnd->hwnd(); - g_pTaskbarList->UnregisterTab(hwndParent); - g_pTaskbarList->RegisterTab(hwndProxy, hwndParent); - g_pTaskbarList->SetTabOrder(hwndProxy, 0); - g_pTaskbarList->SetTabActive(hwndProxy, hwndParent, TBATF_USEMDITHUMBNAIL); - WindowList_Add(hSrmmWindows, hwndProxy, evt->hContact); - } - break; - } - - case MSG_WINDOW_EVT_CLOSING: - { - HWND hwndProxy = WindowList_Find(hSrmmWindows, evt->hContact); - if (hwndProxy) - { - WindowList_Remove(hSrmmWindows, hwndProxy); - g_pTaskbarList->UnregisterTab(hwndProxy); - DestroyWindow(hwndProxy); - } - break; - } - } - - return 0; -} - -/////////////////////////////////////////////////////////////////////////////// -// status processing - -int OnStatusModeChanged(WPARAM wParam, LPARAM) -{ - static int icons[] = - { - SKINICON_STATUS_OFFLINE, - SKINICON_STATUS_ONLINE, - SKINICON_STATUS_AWAY, - SKINICON_STATUS_DND, - SKINICON_STATUS_NA, - SKINICON_STATUS_OCCUPIED, - SKINICON_STATUS_FREE4CHAT, - SKINICON_STATUS_INVISIBLE, - SKINICON_STATUS_ONTHEPHONE, - SKINICON_STATUS_OUTTOLUNCH, - }; - - g_clistProxyWnd->SetOverlayIcon(LoadSkinnedIcon(icons[wParam - ID_STATUS_OFFLINE])); - - return 0; -} diff --git a/plugins/!Deprecated/W7UI/src/win7api.cpp b/plugins/!Deprecated/W7UI/src/win7api.cpp deleted file mode 100644 index dcfb6058ec..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include - -//extern "C" const CLSID CLSID_TaskbarList = {0x56fdf344,0xfd6d,0x11d0,{0x95,0x8a,0x00,0x60,0x97,0xc9,0xa0,0x90}}; // 56fdf344-fd6d-11d0-958a-006097c9a090; -//extern "C" const IID IID_ITaskbarList = {0x56FDF342,0xFD6D,0x11d0,{0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90}}; // 56FDF342-FD6D-11d0-958A-006097C9A090; -//extern "C" const IID IID_ITaskbarList2 = {0x602D4995,0xB13A,0x429b,{0xA6,0x6E,0x19,0x35,0xE4,0x4F,0x43,0x17}}; // 602D4995-B13A-429b-A66E-1935E44F4317; -//extern "C" const IID IID_ICustomDestinationList = {0x6332debf,0x87b5,0x4670,{0x90,0xc0,0x5e,0x57,0xb4,0x08,0xa4,0x9e}}; // 6332debf-87b5-4670-90c0-5e57b408a49e -//extern "C" const IID IID_IObjectArray = {0x92CA9DCD,0x5622,0x4bba,{0xA8,0x05,0x5E,0x9F,0x54,0x1B,0xD8,0xC9}}; // 92CA9DCD-5622-4bba-A805-5E9F541BD8C9 -//extern "C" const IID IID_IObjectCollection = {0x5632b1a4,0xe38a,0x400a,{0x92,0x8a,0xd4,0xcd,0x63,0x23,0x02,0x95}}; // 5632b1a4-e38a-400a-928a-d4cd63230295 -//extern "C" const IID IID_ITaskbarList3 = {0xea1afb91,0x9e28,0x4b86,{0x90,0xe9,0x9e,0x9f,0x8a,0x5e,0xef,0xaf}}; // ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf -extern "C" const CLSID CLSID_CustomDestinationList = {0x77f10cf0,0x3db5,0x4966,{0xb5,0x20,0xb7,0xc5,0x4f,0xd3,0x5e,0xd6}}; -//extern "C" const CLSID CLSID_EnumerableObjectCollection = {0x2d3468c1,0x36a7,0x43b6,{0xac,0x24,0xd3,0xf0,0x2f,0xd9,0x60,0x7a}}; - -HRESULT (WINAPI *dwmInvalidateIconicBitmaps)(HWND) = - (HRESULT (WINAPI *)(HWND))GetProcAddress(LoadLibraryA("dwmapi.dll"), "DwmInvalidateIconicBitmaps"); -HRESULT (WINAPI *dwmSetIconicThumbnail)(HWND, HBITMAP, DWORD) = - (HRESULT (WINAPI *)(HWND, HBITMAP, DWORD))GetProcAddress(LoadLibraryA("dwmapi.dll"), "DwmSetIconicThumbnail"); -HRESULT (WINAPI *dwmSetIconicLivePreviewBitmap)(HWND, HBITMAP, LPPOINT, DWORD) = - (HRESULT (WINAPI *)(HWND, HBITMAP, LPPOINT, DWORD))GetProcAddress(LoadLibraryA("dwmapi.dll"), "DwmSetIconicLivePreviewBitmap"); - -HANDLE (STDAPICALLTYPE *openThemeData)(HWND, LPCWSTR) = - (HANDLE (STDAPICALLTYPE *)(HWND, LPCWSTR))GetProcAddress(LoadLibraryA("uxtheme.dll"), "OpenThemeData"); -HRESULT (STDAPICALLTYPE *drawThemeTextEx)(HANDLE, HDC, int, int, LPCWSTR, int, DWORD, LPRECT, const struct _DTTOPTS *) = - (HRESULT (STDAPICALLTYPE *)(HANDLE, HDC, int, int, LPCWSTR, int, DWORD, LPRECT, const struct _DTTOPTS *))GetProcAddress(LoadLibraryA("uxtheme.dll"), "DrawThemeTextEx"); -HRESULT (STDAPICALLTYPE *closeThemeData)(HANDLE) = - (HRESULT (STDAPICALLTYPE *)(HANDLE))GetProcAddress(LoadLibraryA("uxtheme.dll"), "CloseThemeData"); diff --git a/plugins/!Deprecated/W7UI/src/win7api.h b/plugins/!Deprecated/W7UI/src/win7api.h deleted file mode 100644 index f9fa806335..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef win7api_h__ -#define win7api_h__ - -#define WM_DWMSENDICONICTHUMBNAIL 0x0323 -#define WM_DWMSENDICONICLIVEPREVIEWBITMAP 0x0326 - -#define DWMWA_HAS_ICONIC_BITMAP 10 - -#define DWM_SIT_DISPLAYFRAME 0x00000001 - -enum TBATFLAG -{ TBATF_USEMDITHUMBNAIL = 0x1, - TBATF_USEMDILIVEPREVIEW = 0x2 -}; - -#define THBN_CLICKED 0x1800 - -extern HRESULT (WINAPI *dwmInvalidateIconicBitmaps)(HWND); -extern HRESULT (WINAPI *dwmSetIconicThumbnail)(HWND, HBITMAP, DWORD); -extern HRESULT (WINAPI *dwmSetIconicLivePreviewBitmap)(HWND, HBITMAP, LPPOINT, DWORD); - -extern HANDLE (STDAPICALLTYPE *openThemeData)(HWND, LPCWSTR); -extern HRESULT (STDAPICALLTYPE *drawThemeTextEx)(HANDLE, HDC, int, int, LPCWSTR, int, DWORD, LPRECT, const struct _DTTOPTS *); -extern HRESULT (STDAPICALLTYPE *closeThemeData)(HANDLE); - -extern "C" const IID IID_ICustomDestinationList; -extern "C" const IID IID_IObjectArray; -extern "C" const IID IID_IObjectCollection; -extern "C" const IID IID_ITaskbarList3; -extern "C" const CLSID CLSID_CustomDestinationList; -extern "C" const CLSID CLSID_EnumerableObjectCollection; - -#include "win7api_IObjectArray.h" -#include "win7api_IObjectCollection.h" -#include "win7api_ICustomDestinationList.h" -//#include "win7api_ITaskbarList3.h" - -#endif // win7api_h__ diff --git a/plugins/!Deprecated/W7UI/src/win7api_ICustomDestinationList.h b/plugins/!Deprecated/W7UI/src/win7api_ICustomDestinationList.h deleted file mode 100644 index 6d3f770d29..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api_ICustomDestinationList.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __ICustomDestinationList_INTERFACE_DEFINED__ -#define __ICustomDestinationList_INTERFACE_DEFINED__ - -typedef /* [v1_enum] */ enum tagKNOWNDESTCATEGORY { - KDC_FREQUENT = 1, - KDC_RECENT = (KDC_FREQUENT + 1) -} KNOWNDESTCATEGORY; - -MIDL_INTERFACE("6332debf-87b5-4670-90c0-5e57b408a49e") -ICustomDestinationList : public IUnknown { - public: - virtual HRESULT STDMETHODCALLTYPE SetAppID( - /* [string][in] */__RPC__in_string LPCWSTR pszAppID) = 0; - virtual HRESULT STDMETHODCALLTYPE BeginList( - /* [out] */ __RPC__out UINT *pcMaxSlots, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - virtual HRESULT STDMETHODCALLTYPE AppendCategory( - /* [string][in] */ __RPC__in_string LPCWSTR pszCategory, - /* [in] */ __RPC__in_opt IObjectArray *poa) = 0; - virtual HRESULT STDMETHODCALLTYPE AppendKnownCategory( - /* [in] */ KNOWNDESTCATEGORY category) = 0; - virtual HRESULT STDMETHODCALLTYPE AddUserTasks( - /* [in] */ __RPC__in_opt IObjectArray *poa) = 0; - virtual HRESULT STDMETHODCALLTYPE CommitList(void) = 0; - virtual HRESULT STDMETHODCALLTYPE GetRemovedDestinations( - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; - virtual HRESULT STDMETHODCALLTYPE DeleteList( - /* [string][in] */ __RPC__in_string LPCWSTR pszAppID) = 0; - virtual HRESULT STDMETHODCALLTYPE AbortList(void) = 0; -}; - -#endif // __ICustomDestinationList_INTERFACE_DEFINED__ diff --git a/plugins/!Deprecated/W7UI/src/win7api_IObjectArray.h b/plugins/!Deprecated/W7UI/src/win7api_IObjectArray.h deleted file mode 100644 index 2102276989..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api_IObjectArray.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __IObjectArray_INTERFACE_DEFINED__ -#define __IObjectArray_INTERFACE_DEFINED__ - -MIDL_INTERFACE("92CA9DCD-5622-4bba-A805-5E9F541BD8C9") -IObjectArray : public IUnknown { - public: - virtual HRESULT STDMETHODCALLTYPE GetCount( - /* [out] */ __RPC__out UINT *pcObjects) = 0; - virtual HRESULT STDMETHODCALLTYPE GetAt( - /* [in] */ UINT uiIndex, - /* [in] */ __RPC__in REFIID riid, - /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; -}; - -#endif // __IObjectArray_INTERFACE_DEFINED__ diff --git a/plugins/!Deprecated/W7UI/src/win7api_IObjectCollection.h b/plugins/!Deprecated/W7UI/src/win7api_IObjectCollection.h deleted file mode 100644 index 71b37d0e99..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api_IObjectCollection.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __IObjectCollection_INTERFACE_DEFINED__ -#define __IObjectCollection_INTERFACE_DEFINED__ - -MIDL_INTERFACE("5632b1a4-e38a-400a-928a-d4cd63230295") -IObjectCollection : public IObjectArray { - public: - virtual HRESULT STDMETHODCALLTYPE AddObject( - /* [in] */ __RPC__in_opt IUnknown *punk) = 0; - virtual HRESULT STDMETHODCALLTYPE AddFromArray( - /* [in] */ __RPC__in_opt IObjectArray *poaSource) = 0; - virtual HRESULT STDMETHODCALLTYPE RemoveObjectAt( - /* [in] */ UINT uiIndex) = 0; - virtual HRESULT STDMETHODCALLTYPE Clear(void) = 0; -}; - -#endif // __IObjectCollection_INTERFACE_DEFINED__ diff --git a/plugins/!Deprecated/W7UI/src/win7api_ITaskbarList3.h b/plugins/!Deprecated/W7UI/src/win7api_ITaskbarList3.h deleted file mode 100644 index 8c39fb5c41..0000000000 --- a/plugins/!Deprecated/W7UI/src/win7api_ITaskbarList3.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef __ITaskbarList3_FWD_DEFINED__ -#define __ITaskbarList3_FWD_DEFINED__ -typedef interface ITaskbarList3 ITaskbarList3; -#endif /* __ITaskbarList3_FWD_DEFINED__ */ - -/* interface ITaskbarList3 */ -/* [object][uuid] */ - -MIDL_INTERFACE("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf") -ITaskbarList3 : public ITaskbarList2 -{ -public: - virtual HRESULT STDMETHODCALLTYPE SetProgressValue( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ ULONGLONG ullCompleted, - /* [in] */ ULONGLONG ullTotal) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetProgressState( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ TBPFLAG tbpFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterTab( - /* [in] */ __RPC__in HWND hwndTab, - /* [in] */ __RPC__in HWND hwndMDI) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterTab( - /* [in] */ __RPC__in HWND hwndTab) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTabOrder( - /* [in] */ __RPC__in HWND hwndTab, - /* [in] */ __RPC__in HWND hwndInsertBefore) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTabActive( - /* [in] */ __RPC__in HWND hwndTab, - /* [in] */ __RPC__in HWND hwndMDI, - /* [in] */ TBATFLAG tbatFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ UINT cButtons, - /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton) = 0; - - virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ UINT cButtons, - /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton) = 0; - - virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ __RPC__in_opt HIMAGELIST himl) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ __RPC__in HICON hIcon, - /* [string][in] */ __RPC__in_string LPCWSTR pszDescription) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip( - /* [in] */ __RPC__in HWND hwnd, - /* [string][in] */ __RPC__in_string LPCWSTR pszTip) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip( - /* [in] */ __RPC__in HWND hwnd, - /* [in] */ __RPC__in RECT *prcClip) = 0; - -}; diff --git a/plugins/!Deprecated/W7UI/w7ui_10.vcxproj b/plugins/!Deprecated/W7UI/w7ui_10.vcxproj deleted file mode 100644 index 9706a07d67..0000000000 --- a/plugins/!Deprecated/W7UI/w7ui_10.vcxproj +++ /dev/null @@ -1,184 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - W7UI - {86704897-EABF-439D-BE0E-52CEA67C2C43} - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)\Plugins\ - $(SolutionDir)$(Configuration)64\Plugins\ - $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ - $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ - true - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level3 - EditAndContinue - - - dwmapi.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - true - Windows - $(IntDir)$(TargetName).lib - false - $(SolutionDir)\lib - - - - - Disabled - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - - - dwmapi.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - true - Windows - $(IntDir)$(TargetName).lib - false - $(SolutionDir)\lib - - - - - Full - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Level3 - OnlyExplicitInline - - - dwmapi.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(SolutionDir)\lib - /PDBALTPATH:%_PDB% - - - - - Full - Size - ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Level3 - OnlyExplicitInline - - - dwmapi.lib;comctl32.lib;shlwapi.lib;%(AdditionalDependencies) - true - Windows - true - true - $(IntDir)$(TargetName).lib - false - $(SolutionDir)\lib - /PDBALTPATH:%_PDB% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/!NotAdopted/Chess4Net/BitmapResUnit.pas b/plugins/!NotAdopted/Chess4Net/BitmapResUnit.pas deleted file mode 100644 index 28551b3887..0000000000 --- a/plugins/!NotAdopted/Chess4Net/BitmapResUnit.pas +++ /dev/null @@ -1,282 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit BitmapResUnit; - -interface - -uses - Graphics, Types, - // Chess4Net - ChessBoardHeaderUnit, ChessRulesEngine; - -type - // Bitmap resources - introduced for 2009.1 (sizable board feature) - TBitmapRes = class // parametrizable class factory - private - m_ResSet: TBitmap; - m_iSetNumber: integer; - m_iSquareSize: integer; - procedure FCalculateClientBoardSizes(InitialSize: TSize); - function FGetOptimalBoardSize(const ClientSize: TSize; out iSetNumber: integer): TSize; - procedure FCalculateSetNumberFromSquareSize; - procedure FLoadPieceSet(iSetNumber: integer); - function FGetBoardResName(iSetNumber: integer): string; - function FGetSetResName(iSetNumber: integer): string; - public - constructor Create(const ClientBoardSize: TSize); overload; - constructor Create(iSquareSize: integer); overload; - destructor Destroy; override; - procedure CreateBoardBitmap(ClientBoardSize: TSize; const BackgroundColor: TColor; - out Bitmap: TBitmap); - procedure CreateFigureBitmap(const Figure: TFigure; out Bitmap: TBitmap); - function GetOptimalBoardSize(ClientSize: TSize): TSize; - property SquareSize: integer read m_iSquareSize; - end; - -implementation - -{$R ChessSet_PNG.RES} - -uses - SysUtils, Classes, Math, pngimage; - -{$J+} - -const - CHB_RES_X = 4; CHB_RES_Y = 4; // starting coordinates of A8 field in resources - -var - arrClientBoardSizes: array[1..7] of TSize; - g_bClientBoardSizesCalculated: boolean = FALSE; - -//////////////////////////////////////////////////////////////////////////////// -// TBitmapRes - -constructor TBitmapRes.Create(const ClientBoardSize: TSize); -begin - inherited Create; - FCalculateClientBoardSizes(ClientBoardSize); -end; - - -constructor TBitmapRes.Create(iSquareSize: integer); -begin - inherited Create; - m_iSquareSize := iSquareSize; -end; - - -destructor TBitmapRes.Destroy; -begin - m_ResSet.Free; - inherited; -end; - - -procedure TBitmapRes.CreateBoardBitmap(ClientBoardSize: TSize; const BackgroundColor: TColor; - out Bitmap: TBitmap); -var - Png: TPngObject; - ResBoard: TBitmap; - iSetNumber: integer; -begin - Png := nil; - ResBoard := nil; - - FGetOptimalBoardSize(ClientBoardSize, iSetNumber); - - if (iSetNumber = 0) then - exit; - - Bitmap := TBitMap.Create; - with Bitmap do - try - Png := TPngObject.Create; - Png.LoadFromResourceName(HInstance, FGetBoardResName(iSetNumber)); - ResBoard := TBitmap.Create; - ResBoard.Assign(Png); - - Width := arrClientBoardSizes[iSetNumber].cx; - Height := arrClientBoardSizes[iSetNumber].cy; - Canvas.Brush.Color := BackgroundColor; - Canvas.FillRect(Bounds(0, 0, Width, Height)); - Canvas.Draw(CHB_X - CHB_RES_X, CHB_Y - CHB_RES_Y, ResBoard); - - // Load appropriate set - FLoadPieceSet(iSetNumber); - - finally; - m_iSetNumber := iSetNumber; - ResBoard.Free; - Png.Free; - end; -end; - - -procedure TBitmapRes.FLoadPieceSet(iSetNumber: integer); -var - Png: TPngObject; -begin - if (Assigned(m_ResSet) and (iSetNumber = m_iSetNumber)) then - exit; - - FreeAndNil(m_ResSet); - - Png := TPngObject.Create; - try - Png.LoadFromResourceName(HInstance, FGetSetResName(iSetNumber)); - m_ResSet := TBitmap.Create; - m_ResSet.Assign(Png); - - m_iSquareSize := m_ResSet.Height; - finally - Png.Free; - end; -end; - - -procedure TBitmapRes.CreateFigureBitmap(const Figure: TFigure; out Bitmap: TBitmap); -const - PNG_SET_POS: array[TFigure] of integer = (2, 4, 6, 8, 10, 12, 0, 3, 5, 7, 9, 11, 13); -var - iWidth: integer; -begin - if (m_iSetNumber = 0) then - begin - FCalculateSetNumberFromSquareSize; - if (m_iSetNumber = 0) then - exit; - end; - - FLoadPieceSet(m_iSetNumber); - - iWidth := IfThen((Figure = ES), m_iSquareSize + m_iSquareSize, m_iSquareSize); - - Bitmap := TBitMap.Create; - Bitmap.Width := iWidth; - Bitmap.Height := m_iSquareSize; - - Bitmap.Canvas.CopyRect(Bounds(0, 0, iWidth, m_iSquareSize), m_ResSet.Canvas, - Bounds(m_iSquareSize * PNG_SET_POS[Figure], 0, iWidth, m_iSquareSize)); - Bitmap.Transparent:= TRUE; -end; - - -procedure TBitmapRes.FCalculateSetNumberFromSquareSize; -var - i: integer; -begin - m_iSetNumber := 0; - - with TPngObject.Create do - try - for i := High(arrClientBoardSizes) downto Low(arrClientBoardSizes) do - begin - LoadFromResourceName(HInstance, FGetSetResName(i)); - - if (Height <= m_iSquareSize) then - begin - m_iSetNumber := i; - exit; - end; - end; - - finally - Free; - end; - -end; - - -function TBitmapRes.GetOptimalBoardSize(ClientSize: TSize): TSize; -var - iDummy: integer; -begin - Result := FGetOptimalBoardSize(ClientSize, iDummy); -end; - - -function TBitmapRes.FGetOptimalBoardSize(const ClientSize: TSize; out iSetNumber: integer): TSize; -var - i: integer; -begin - iSetNumber := 0; - - for i := High(arrClientBoardSizes) downto Low(arrClientBoardSizes) do - begin - if ((ClientSize.cx >= arrClientBoardSizes[i].cx) and - (ClientSize.cy >= arrClientBoardSizes[i].cy)) then - begin - Result := arrClientBoardSizes[i]; - iSetNumber := i; - exit; - end; - end; { for i } - - Result := Size(0, 0); -end; - - -procedure TBitmapRes.FCalculateClientBoardSizes(InitialSize: TSize); -var - i: integer; - iOptimal: integer; - iAddX, iAddY: integer; -begin - if (g_bClientBoardSizesCalculated) then - exit; - - // Load board sizes from resources - with TPngObject.Create do - try - for i := Low(arrClientBoardSizes) to High(arrClientBoardSizes) do - begin - LoadFromResourceName(HInstance, FGetBoardResName(i)); - arrClientBoardSizes[i] := Size(Width, Height); - end; - finally - Free; - end; - - // Find optimal board size from resources - iOptimal := 0; - for i := High(arrClientBoardSizes) downto Low(arrClientBoardSizes) do - begin - if ((InitialSize.cx > (arrClientBoardSizes[i].cx + CHB_X - CHB_RES_X)) and - (InitialSize.cy > (arrClientBoardSizes[i].cy + CHB_Y - CHB_RES_Y))) then - begin - iOptimal := i; - break; - end; - end; - Assert(iOptimal > 0); - - // Calculate board sizes for client - iAddX := InitialSize.cx - arrClientBoardSizes[iOptimal].cx; - iAddY := InitialSize.cy - arrClientBoardSizes[iOptimal].cy; - for i := Low(arrClientBoardSizes) to High(arrClientBoardSizes) do - begin - inc(arrClientBoardSizes[i].cx, iAddX); - inc(arrClientBoardSizes[i].cy, iAddY); - end; - - g_bClientBoardSizesCalculated := TRUE; -end; - - -function TBitmapRes.FGetBoardResName(iSetNumber: integer): string; -begin - Result := 'BOARD' + IntToStr(iSetNumber); -end; - - -function TBitmapRes.FGetSetResName(iSetNumber: integer): string; -begin - Result := 'SET' + IntToStr(iSetNumber); -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/Build/Chigorin.mov b/plugins/!NotAdopted/Chess4Net/Build/Chigorin.mov deleted file mode 100644 index d52fb6b2c4..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Chigorin.mov and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/Chigorin.pos b/plugins/!NotAdopted/Chess4Net/Build/Chigorin.pos deleted file mode 100644 index ed7f8eb36d..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Chigorin.pos and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/Fischer.mov b/plugins/!NotAdopted/Chess4Net/Build/Fischer.mov deleted file mode 100644 index 8000a1934e..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Fischer.mov and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/Fischer.pos b/plugins/!NotAdopted/Chess4Net/Build/Fischer.pos deleted file mode 100644 index 9f64528cdc..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Fischer.pos and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/Tal.mov b/plugins/!NotAdopted/Chess4Net/Build/Tal.mov deleted file mode 100644 index db9fcd6798..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Tal.mov and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/Tal.pos b/plugins/!NotAdopted/Chess4Net/Build/Tal.pos deleted file mode 100644 index 6a5199294b..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/Tal.pos and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/eco.mov b/plugins/!NotAdopted/Chess4Net/Build/eco.mov deleted file mode 100644 index c041d1a6d0..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/eco.mov and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Build/eco.pos b/plugins/!NotAdopted/Chess4Net/Build/eco.pos deleted file mode 100644 index 361375d6f3..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Build/eco.pos and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Chess4Net.bpg b/plugins/!NotAdopted/Chess4Net/Chess4Net.bpg deleted file mode 100644 index a347fd3148..0000000000 --- a/plugins/!NotAdopted/Chess4Net/Chess4Net.bpg +++ /dev/null @@ -1,36 +0,0 @@ -#------------------------------------------------------------------------------ -VERSION = BWS.01 -#------------------------------------------------------------------------------ -!ifndef ROOT -ROOT = $(MAKEDIR)\.. -!endif -#------------------------------------------------------------------------------ -MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** -DCC = $(ROOT)\bin\dcc32.exe $** -BRCC = $(ROOT)\bin\brcc32.exe $** -#------------------------------------------------------------------------------ -PROJECTS = Chess4Net.exe Chess4Net_MI.dll Chess4Net_Trillian.dll \ - Chess4Net_AndRQ.dll Chess4Net_QIP.dll Chess4Net_Skype.exe -#------------------------------------------------------------------------------ -default: $(PROJECTS) -#------------------------------------------------------------------------------ - -Chess4Net.exe: Socket\Chess4Net.dpr - $(DCC) - -Chess4Net_MI.dll: MI\Chess4Net_MI.dpr - $(DCC) - -Chess4Net_Trillian.dll: Trillian\Chess4Net_Trillian.dpr - $(DCC) - -Chess4Net_AndRQ.dll: AndRQ\Chess4Net_AndRQ.dpr - $(DCC) - -Chess4Net_QIP.dll: QIP\Chess4Net_QIP.dpr - $(DCC) - -Chess4Net_Skype.exe: Skype\Chess4Net_Skype.dpr - $(DCC) - - diff --git a/plugins/!NotAdopted/Chess4Net/Chess4Net.ico b/plugins/!NotAdopted/Chess4Net/Chess4Net.ico deleted file mode 100644 index 405fc6e6e7..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Chess4Net.ico and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Chess4Net.res b/plugins/!NotAdopted/Chess4Net/Chess4Net.res deleted file mode 100644 index a42efffac4..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Chess4Net.res and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/Chess4Net_16.ico b/plugins/!NotAdopted/Chess4Net/Chess4Net_16.ico deleted file mode 100644 index 01b3cb90d7..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Chess4Net_16.ico and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/ChessBoardHeaderUnit.pas b/plugins/!NotAdopted/Chess4Net/ChessBoardHeaderUnit.pas deleted file mode 100644 index b0226e3321..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ChessBoardHeaderUnit.pas +++ /dev/null @@ -1,27 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ChessBoardHeaderUnit; - -interface - -uses - Types; - -const - CHB_X = 20; CHB_Y = 6; // starting coordinates of A8 field - -function Size(const iX, iY: integer): TSize; - -implementation - -function Size(const iX, iY: integer): TSize; -begin - Result.cx := iX; - Result.cy := iY; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.dfm b/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.dfm deleted file mode 100644 index 3976a60187..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.dfm +++ /dev/null @@ -1,51 +0,0 @@ -object ChessBoard: TChessBoard - Left = 715 - Top = 238 - Width = 364 - Height = 381 - Caption = 'ChessBoard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCanResize = FormCanResize - OnCreate = FormCreate - OnDestroy = FormDestroy - OnResize = FormResize - PixelsPerInch = 96 - TextHeight = 13 - object PBoxBoard: TPaintBox - Left = 0 - Top = 0 - Width = 356 - Height = 354 - Align = alClient - Color = clSilver - DragCursor = crHandPoint - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - OnDragDrop = PBoxBoardDragDrop - OnDragOver = PBoxBoardDragOver - OnEndDrag = PBoxBoardEndDrag - OnMouseDown = PBoxBoardMouseDown - OnMouseMove = PBoxBoardMouseMove - OnMouseUp = PBoxBoardMouseUp - OnPaint = PBoxBoardPaint - OnStartDrag = PBoxBoardStartDrag - end - object AnimateTimer: TTimer - Enabled = False - Interval = 1 - OnTimer = AnimateTimerTimer - Left = 8 - Top = 8 - end -end diff --git a/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.pas b/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.pas deleted file mode 100644 index 8a7042f292..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ChessBoardUnit.pas +++ /dev/null @@ -1,1381 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ChessBoardUnit; - -interface - -uses - Forms, ExtCtrls, Classes, Controls, Graphics, Types, Messages, - // - ChessRulesEngine, BitmapResUnit, PromotionUnit; - -type - TMode = (mView, mGame, mAnalyse, mEdit); // Board mode - - TAnimation = (aNo, aSlow, aQuick); - - TChessBoardEvent = (cbeMate, cbeStaleMate, cbeMoved, cbePosSet, cbeMenu); - TChessBoardHandler = procedure(e: TChessBoardEvent; - d1: pointer = nil; d2: pointer = nil) of object; - - TChessBoardLayerBase = class; - - TChessBoard = class(TForm, IChessRulesEngineable) - PBoxBoard: TPaintBox; - AnimateTimer: TTimer; - - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure FormCanResize(Sender: TObject; var NewWidth, - NewHeight: Integer; var Resize: Boolean); - procedure FormResize(Sender: TObject); - procedure AnimateTimerTimer(Sender: TObject); - procedure PBoxBoardPaint(Sender: TObject); - procedure PBoxBoardDragDrop(Sender, Source: TObject; X, Y: Integer); - procedure PBoxBoardDragOver(Sender, Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); - procedure PBoxBoardEndDrag(Sender, Target: TObject; X, Y: Integer); - procedure PBoxBoardMouseDown(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure PBoxBoardMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - procedure PBoxBoardMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure PBoxBoardStartDrag(Sender: TObject; var DragObject: TDragObject); - - private - m_ChessRulesEngine: TChessRulesEngine; - m_BitmapRes: TBitmapRes; // Manager for bitmaps - - FHandler: TChessBoardHandler; - - dx, dy: integer; // Ðàññòîÿíèå îò êóðñîðà äî âåðõíåãî ëåâîãî óãëà - x0, y0: integer; // Ïðåäûäóùèå êîîðäèíàòû êóðñîðà - _flipped: boolean; // Äîñêà ïåðåâ¸ðíóòà èëè íåò - m_bHilighted: boolean; // Hilight the move that is being done - - m_i0, m_j0: integer; - m_fig: TFigure; - - m_Mode: TMode; - m_bViewGaming: boolean; - - m_bmHiddenBoard: TBitmap; - m_bmChessBoard: TBitmap; - m_bmFigure: array[TFigure] of TBitmap; - m_bmBuf: TBitmap; - - m_iSquareSize: integer; // Size of one chess board field - - m_animation: TAnimation; // Animation speed - m_iAnimStep, m_iPrevAnimStep, m_iAnimStepsCount: integer; - anim_dx, anim_dy: real; // Variables for animation of a dragged piece - - m_PlayerColor: TFigureColor; // Color of player client - m_bDraggedMoved: boolean; // Flag for switching of dragging - last_hilight: boolean; // Flag for hilighting of the last move done - coord_show: boolean; // Flag for showing coordinates - - // Resizing - m_ResizingType: (rtNo, rtHoriz, rtVert); - m_iDeltaWidthHeight: integer; - m_bDeltaWidthHeightFlag: boolean; - - m_PromotionForm: TPromotionForm; - - m_EditPiece: TFigure; - - m_iUpdateCounter: integer; - - m_lstLayers: TList; - - procedure HilightLastMove; - procedure Evaluate; - - function FGetLastMove: PMoveAbs; - property lastMove: PMoveAbs read FGetLastMove; - - function FGetPosition: PChessPosition; - property Position: PChessPosition read FGetPosition; - - function AskPromotionFigure(FigureColor: TFigureColor): TFigureName; - - procedure FSetMode(const Value: TMode); - - function FDoMove(i, j: integer; prom_fig: TFigureName = K): boolean; - procedure FOnAfterMoveDone; - procedure FOnAfterSetPosition; - - procedure FAnimate(const i, j: integer); // Animates a disposition of a piece from (i0,j0) to (i,j) - procedure FDoAnimationStep; - procedure FEndAnimation; - - procedure FWhatSquare(const P: TPoint; var i: Integer; var j: Integer); - - procedure FSetPlayerColor(const Value: TFigureColor); - procedure FCancelAnimationDragging; // Caneling of animation and dragging for trace removal after draw - procedure FSetFlipped(Value: boolean); // Flips chess position - procedure FSetCoordinatesShown(Value: boolean); - procedure FSetLastMoveHilighted(Value: boolean); - function FGetPositionsList: TList; - function FGetPositionColor: TFigureColor; - function FGetMoveNotationFormat: TMoveNotationFormat; - procedure FSetMoveNotationFormat(Value: TMoveNotationFormat); - function FGetFENFormat: boolean; - procedure FSetFENFormat(bValue: boolean); - - procedure FDrawHiddenBoard; - function FGetHiddenBoardCanvas: TCanvas; - - procedure FDrawBoard; - procedure FOnDrawLayerUpdate(const ADrawLayer: TChessBoardLayerBase); - - function FGetMovesOffset: integer; - function FGetColorStarts: TFigureColor; - - procedure WMSizing(var Msg: TMessage); message WM_SIZING; - - procedure FDoHandler(e: TChessBoardEvent; d1: pointer = nil; d2: pointer = nil); - - property SquareSize: integer read m_iSquareSize; - property PositionsList: TList read FGetPositionsList; - - public - constructor Create(Owner: TComponent; AHandler: TChessBoardHandler = nil); reintroduce; - - function DoMove(const strMove: string): boolean; - procedure ResetMoveList; - function SetPosition(const strPosition: string): boolean; - function GetPosition: string; - procedure InitPosition; - procedure PPRandom; - procedure TakeBack; - function NMoveDone: integer; - function NPlysDone: integer; - - function IsMoveAnimating: boolean; - - procedure BeginUpdate; - procedure EndUpdate; - - procedure AddLayer(const ALayer: TChessBoardLayerBase); - procedure RemoveLayer(const ALayer: TChessBoardLayerBase); - - property PlayerColor: TFigureColor read m_PlayerColor write FSetPlayerColor; - property Mode: TMode read m_Mode write FSetMode; - property CoordinatesShown: boolean read coord_show write FSetCoordinatesShown; - property Flipped: boolean read _flipped write FSetFlipped; - property LastMoveHilighted: boolean read last_hilight write FSetLastMoveHilighted; - property Animation: TAnimation read m_animation write m_animation; - property ViewGaming: boolean read m_bViewGaming write m_bViewGaming; - property PositionColor: TFigureColor read FGetPositionColor; // Whos move it is in the current position - property MoveNotationFormat: TMoveNotationFormat - read FGetMoveNotationFormat write FSetMoveNotationFormat; - property MovesOffset: integer read FGetMovesOffset; - property FENFormat: boolean read FGetFENFormat write FSetFENFormat; - property EditPiece: TFigure read m_EditPiece write m_EditPiece; - end; - - - TChessBoardLayerBase = class - private - m_ChessBoard: TChessBoard; - function FGetSquareSize: integer; - function FGetCanvas: TCanvas; - function FGetPosition: PChessPosition; - function FGetPositionsList: TList; - protected - procedure RDraw; virtual; abstract; - function RGetColorStarts: TFigureColor; - - procedure RDoUpdate; - - procedure ROnAfterMoveDone; virtual; - procedure ROnAfterSetPosition; virtual; - procedure ROnAfterModeSet(const OldValue, NewValue: TMode); virtual; - procedure ROnResetMoveList; virtual; - - property ChessBoard: TChessBoard read m_ChessBoard write m_ChessBoard; - property SquareSize: integer read FGetSquareSize; - property Canvas: TCanvas read FGetCanvas; - property Position: PChessPosition read FGetPosition; - property PositionsList: TList read FGetPositionsList; - end; - -implementation - -{$R *.dfm} - -uses - Math, SysUtils, Windows, - // - ChessBoardHeaderUnit; - -const - HILIGHT_WIDTH = 1; - HILIGHT_COLOR: TColor = clRed; - HILIGHT_LAST_MOVE_WIDTH = 1; - HILIGHT_LAST_MOVE_COLOR: TColor = clBlue; - ANIMATION_SLOW = 30; // Time of animation in frames >= 1 - ANIMATION_QUICK = 9; - CHB_WIDTH = 4; - -//////////////////////////////////////////////////////////////////////////////// -// TChessBoard - -constructor TChessBoard.Create(Owner: TComponent; AHandler: TChessBoardHandler = nil); -begin - FHandler := AHandler; - inherited Create(Owner); -end; - - -procedure TChessBoard.AnimateTimerTimer(Sender: TObject); -begin - FDoAnimationStep; - if (m_iAnimStep >= m_iAnimStepsCount) then - FEndAnimation; -end; - - -procedure TChessBoard.FDoAnimationStep; -var - iX, iY: integer; - rect: TRect; -begin - if (m_iAnimStep < m_iAnimStepsCount) then - begin - inc(m_iAnimStep); - - iX := round(x0 + anim_dx * m_iAnimStep); - iY := round(y0 + anim_dy * m_iAnimStep); - dx := iX - x0 - Round(anim_dx * m_iPrevAnimStep); - dy := iY - y0 - Round(anim_dy * m_iPrevAnimStep); - - // Âîññòàíîâèòü ôðàãìåíò íà m_bmHiddenBoard - m_bmHiddenBoard.Canvas.Draw(iX - dx, iY - dy, m_bmBuf); - // Êîïèðîâàòü íîâûé ôðàãìåíò â áóôåð - m_bmBuf.Canvas.CopyRect(Bounds(0, 0, m_iSquareSize, m_iSquareSize), - m_bmHiddenBoard.Canvas, Bounds(iX, iY, m_iSquareSize, m_iSquareSize)); - // Íàðèñîâàòü ïåðåòàñêèâàåìóþ ôèãóðó â íîâîé ïîçèöèè - m_bmHiddenBoard.Canvas.Draw(iX, iY, m_bmFigure[m_fig]); - // Ïåðåíåñòè íîâûé ôðàãìåíò íà ýêðàí - rect := Bounds(Min(iX - dx, iX), Min(iY - dy, iY), - abs(dx) + m_iSquareSize, abs(dy) + m_iSquareSize); - PBoxBoard.Canvas.CopyRect(rect, m_bmHiddenBoard.Canvas, rect); - end; - - m_iPrevAnimStep := m_iAnimStep; - -end; - - -procedure TChessBoard.FEndAnimation; -begin - AnimateTimer.Enabled := FALSE; - - m_iAnimStep := m_iAnimStepsCount; - - FDrawBoard; - HilightLastMove; - Evaluate; -end; - - -procedure TChessBoard.FDrawBoard; -var - i: integer; -begin - if (csDestroying in ComponentState) then - exit; - - if (m_iUpdateCounter > 0) then - exit; - - FDrawHiddenBoard; - - for i := 0 to m_lstLayers.Count - 1 do - TChessBoardLayerBase(m_lstLayers[i]).RDraw; - - PBoxBoardPaint(nil); -end; - - -procedure TChessBoard.HilightLastMove; -var - i, j, l, - _i0, _j0, x, y: integer; -begin - if (not (m_Mode in [mGame, mAnalyse])) then - exit; - - // Output the last move done - if (last_hilight and (lastMove.i0 <> 0)) then - begin - if (_flipped) then - begin - _i0 := 9 - lastMove.i0; - _j0 := lastMove.j0; - i := 9 - lastMove.i; - j := lastMove.j; - end - else - begin - _i0 := lastMove.i0; - _j0 := 9 - lastMove.j0; - i := lastMove.i; - j := 9 - lastMove.j; - end; - - x := m_iSquareSize * (_i0 - 1) + CHB_X; - y := m_iSquareSize * (_j0 - 1) + CHB_Y; - m_bmHiddenBoard.Canvas.Pen.Color := HILIGHT_LAST_MOVE_COLOR; - m_bmHiddenBoard.Canvas.Pen.Width := HILIGHT_LAST_MOVE_WIDTH; - - for l := 1 to 2 do - with m_bmHiddenBoard.Canvas do - begin - MoveTo(x, y); - LineTo(x + m_iSquareSize - 1, y); - LineTo(x + m_iSquareSize - 1, y + m_iSquareSize - 1); - LineTo(x, y + m_iSquareSize - 1); - LineTo(x, y); - - x := m_iSquareSize * (i - 1) + CHB_X; - y := m_iSquareSize * (j - 1) + CHB_Y; - end; - PBoxBoardPaint(nil); - end; -end; - - -procedure TChessBoard.FDrawHiddenBoard; -var - i, j: integer; - x, y: integer; -begin - if (not Assigned(m_bmHiddenBoard)) then - exit; - - // Copy empty board to the hidden one - with m_bmHiddenBoard do - begin - Canvas.CopyRect(Bounds(0,0, Width,Height), m_bmChessBoard.Canvas, Bounds(0,0, Width,Height)); - end; - - // Draw coordinates - if (coord_show) then - with m_bmHiddenBoard, m_bmHiddenBoard.Canvas do - begin - x:= CHB_X + m_iSquareSize div 2; - y:= (m_bmHiddenBoard.Height + CHB_Y + 8 * m_iSquareSize + CHB_WIDTH) div 2; - if _flipped then j := ord('h') - else j:= ord('a'); - for i:= 1 to 8 do // áóêâû - begin - TextOut(x - TextWidth(chr(j)) div 2, - y + 1 - TextHeight(chr(j)) div 2 , chr(j)); - x := x + m_iSquareSize; - if _flipped then dec(j) - else inc(j); - end; - x:= (CHB_X - CHB_WIDTH) div 2; - y:= CHB_Y + m_iSquareSize div 2; - if _flipped then j:= ord('1') - else j := ord('8'); - for i := 1 to 8 do // öèôðû - begin - TextOut(x - TextWidth(chr(j)) div 2, - y - TextHeight(chr(j)) div 2, chr(j)); - y:= y + m_iSquareSize; - if _flipped then inc(j) - else dec(j); - end; - end; - - // Draw pieces - for i := 1 to 8 do - for j := 1 to 8 do - begin - if ((Position.board[i,j] = ES)) then - continue; // There's nothing to draw - if not _flipped then // Çàãðóçèòü íóæíóþ ôèãóðó èç ðåñóðñà è íàðèñîâàòü - m_bmHiddenBoard.Canvas.Draw(CHB_X + m_iSquareSize * (i-1), - CHB_Y + m_iSquareSize * (8-j), - m_bmFigure[Position.board[i,j]]) - else // Black is below - m_bmHiddenBoard.Canvas.Draw(CHB_X + m_iSquareSize * (8-i), - CHB_Y + m_iSquareSize * (j-1), - m_bmFigure[Position.board[i,j]]); - end; -end; - - -function TChessBoard.FGetHiddenBoardCanvas: TCanvas; -begin - if (Assigned(m_bmHiddenBoard)) then - Result := m_bmHiddenBoard.Canvas - else - Result := nil; -end; - - -procedure TChessBoard.Evaluate; -begin - case m_ChessRulesEngine.GetEvaluation of - evMate: - FDoHandler(cbeMate, self); - evStaleMate: - FDoHandler(cbeStaleMate, self); - end; -end; - - -procedure TChessBoard.PBoxBoardPaint(Sender: TObject); -begin - PBoxBoard.Canvas.Draw(0, 0, m_bmHiddenBoard); // Draw hidden board on the form -// PBoxBoard.Canvas.StretchDraw(Bounds(0, 0, PBoxBoard.Width, PBoxBoard.Height), m_bmHiddenBoard); -end; - - -function TChessBoard.FGetLastMove: PMoveAbs; -begin - Result := m_ChessRulesEngine.lastMove; -end; - - -function TChessBoard.FGetPosition: PChessPosition; -begin - Result := m_ChessRulesEngine.Position; -end; - - -function TChessBoard.AskPromotionFigure(FigureColor: TFigureColor): TFigureName; -var - frmOwner: TForm; -begin - if (Owner is TForm) then - frmOwner := TForm(Owner) - else - frmOwner := self; - - if (Showing) then - begin - m_PromotionForm := TPromotionForm.Create(frmOwner, m_BitmapRes); - try - Result := m_PromotionForm.ShowPromotion(FigureColor); - finally - FreeAndNil(m_PromotionForm); - end; - end - else - Result := Q; -end; - - -procedure TChessBoard.FSetPlayerColor(const Value: TFigureColor); -begin - FCancelAnimationDragging; - m_PlayerColor := Value; - if (m_PlayerColor = fcWhite) then - FSetFlipped(FALSE) - else // fcBlack - FSetFlipped(TRUE); -end; - - -procedure TChessBoard.FCancelAnimationDragging; -begin - // Cancel animation and dragging - if (AnimateTimer.Enabled) then - begin - AnimateTimer.Enabled := FALSE; - // iAnimStep := iAnimStepsCount; - // AnimateTimerTimer(nil); - end; - - if (PBoxBoard.Dragging) then - begin - m_bDraggedMoved := FALSE; - PBoxBoard.EndDrag(FALSE); - end; -end; - - -procedure TChessBoard.FSetFlipped(Value: boolean); -begin - // TODO: ??? - _flipped := Value; - FDrawBoard; -end; - - -procedure TChessBoard.FSetMode(const Value: TMode); -var - OldMode: TMode; - i: integer; -begin - if (m_Mode = Value) then - exit; - - OldMode := m_Mode; - m_Mode := Value; - - if ((m_Mode in [mView, mEdit]) and (Assigned(m_PromotionForm))) then - m_PromotionForm.Close; - - for i := 0 to m_lstLayers.Count - 1 do - TChessBoardLayerBase(m_lstLayers[i]).ROnAfterModeSet(OldMode, m_Mode); - - FDrawBoard; - HilightLastMove; -end; - - -procedure TChessBoard.FSetCoordinatesShown(Value: boolean); -begin - coord_show := Value; - FDrawBoard; - HilightLastMove; -end; - - -procedure TChessBoard.FSetLastMoveHilighted(Value: boolean); -begin - last_hilight := Value; - FDrawBoard; - HilightLastMove; -end; - - -function TChessBoard.DoMove(const strMove: string): boolean; -begin - Result := FALSE; - - if (m_Mode = mEdit) then - exit; - - // Animation canceling - if (AnimateTimer.Enabled) then - FEndAnimation; - - Result := m_ChessRulesEngine.DoMove(strMove); - - if (Result) then - begin - FOnAfterMoveDone; - FAnimate(lastMove.i, lastMove.j); - end; -end; - - -procedure TChessBoard.FOnAfterMoveDone; -var - _fig: TFigure; - strLastMove: string; - i: integer; -begin - m_i0 := lastMove.i0; - m_j0 := lastMove.j0; - - _fig := Position.board[lastMove.i, lastMove.j]; - if (lastMove.prom_fig in [Q, R, B, N]) then - begin - if (_fig < ES) then - m_fig := WP - else - m_fig := BP; - end - else - m_fig := _fig; - - strLastMove := m_ChessRulesEngine.LastMoveStr; - FDoHandler(cbeMoved, @strLastMove, self); - - if (m_Mode = mAnalyse) then - m_PlayerColor := PositionColor; - - for i := 0 to m_lstLayers.Count - 1 do - TChessBoardLayerBase(m_lstLayers[i]).ROnAfterMoveDone; -end; - - -procedure TChessBoard.FAnimate(const i, j: integer); -var - x, y: integer; -begin - if (not Showing) then - exit; - - if ((m_i0 = 0) or (m_j0 = 0)) then - exit; - - if (AnimateTimer.Enabled) then - begin - m_iAnimStep := m_iAnimStepsCount; - exit; - end; - - case animation of - aNo: - m_iAnimStepsCount := 1; - aSlow: - m_iAnimStepsCount := ANIMATION_SLOW; - aQuick: - m_iAnimStepsCount := ANIMATION_QUICK; - end; - - if (_flipped) then - begin - x0 := (8 - m_i0) * m_iSquareSize + CHB_X; - y0 := (m_j0 - 1) * m_iSquareSize + CHB_Y; - x := (8 - i) * m_iSquareSize + CHB_X; - y := (j - 1) * m_iSquareSize + CHB_Y; - end - else - begin - x0 := (m_i0 - 1) * m_iSquareSize + CHB_X; - y0 := (8 - m_j0) * m_iSquareSize + CHB_Y; - x := (i - 1) * m_iSquareSize + CHB_X; - y := (8 - j) * m_iSquareSize + CHB_Y; - end; - - anim_dx := (x - x0) / m_iAnimStepsCount; - anim_dy := (y - y0) / m_iAnimStepsCount; - - m_iAnimStep := 0; - m_iPrevAnimStep := m_iAnimStep; - - // Copy image of the empty square to m_bmBuf - m_bmBuf.Width := m_iSquareSize; - m_bmBuf.Height := m_iSquareSize; - if (((m_i0 + m_j0) and 1) <> 0) then - m_bmBuf.Canvas.CopyRect(Bounds(0, 0, m_iSquareSize, m_iSquareSize), - m_bmFigure[ES].Canvas, Bounds(0, 0, m_iSquareSize, m_iSquareSize)) - else - m_bmBuf.Canvas.CopyRect(Bounds(0, 0, m_iSquareSize, m_iSquareSize), - m_bmFigure[ES].Canvas, Bounds(m_iSquareSize, 0, m_iSquareSize, m_iSquareSize)); - - AnimateTimer.Enabled := TRUE; -end; - - -procedure TChessBoard.ResetMoveList; -var - i: integer; -begin - m_ChessRulesEngine.ResetMoveList; - - for i := 0 to m_lstLayers.Count - 1 do - TChessBoardLayerBase(m_lstLayers[i]).ROnResetMoveList; -end; - - -function TChessBoard.SetPosition(const strPosition: string): boolean; -begin - Result := m_ChessRulesEngine.SetPosition(strPosition); - if (Result) then - begin - FCancelAnimationDragging; - FOnAfterSetPosition; - FDrawBoard; - end; -end; - - -function TChessBoard.GetPosition: string; -begin - Result := m_ChessRulesEngine.GetPosition; -end; - - -procedure TChessBoard.FOnAfterSetPosition; -var - strPosition: string; - i: integer; -begin - case m_Mode of - mAnalyse: - m_PlayerColor := PositionColor; - - mEdit: - ResetMoveList; - end; - - m_i0 := 0; - m_j0 := 0; - - strPosition := GetPosition; - FDoHandler(cbePosSet, @strPosition, self); - - for i := 0 to m_lstLayers.Count - 1 do - TChessBoardLayerBase(m_lstLayers[i]).ROnAfterSetPosition; -end; - - -procedure TChessBoard.FormCreate(Sender: TObject); -begin - // m_iDeltaWidthHeight := Width - Height; - - m_BitmapRes := TBitmapRes.Create(Size(PBoxBoard.Width, PBoxBoard.Height)); - - coord_show:= TRUE; - last_hilight:= FALSE; - m_animation := aQuick; - - m_ChessRulesEngine := TChessRulesEngine.Create(self); - m_lstLayers := TList.Create; -end; - - -procedure TChessBoard.FormDestroy(Sender: TObject); -var - _fig: TFigure; - i: integer; -begin - for i := m_lstLayers.Count - 1 downto 0 do - RemoveLayer(m_lstLayers[i]); - m_lstLayers.Free; - - m_ChessRulesEngine.Free; - - m_bmHiddenBoard.Free; - m_bmBuf.Free; - - for _fig := Low(TFigure) to High(TFigure) do - m_bmFigure[_fig].Free; - m_bmChessBoard.Free; - - m_BitmapRes.Free; -end; - - -procedure TChessBoard.PBoxBoardDragDrop(Sender, Source: TObject; X, - Y: Integer); -var - i, j: Integer; -begin - FWhatSquare(Point(X, Y), i, j); - case m_Mode of - mGame, mAnalyse: - begin - if (FDoMove(i, j)) then - m_bDraggedMoved := TRUE; - end; - - mEdit: - m_bDraggedMoved := TRUE; - end; -end; - - -procedure TChessBoard.FWhatSquare(const P: TPoint; - var i: Integer; var j: Integer); -begin - with P do - begin - i := (X - CHB_X + m_iSquareSize) div m_iSquareSize; - j := 8 - (Y - CHB_Y) div m_iSquareSize; - if (_flipped) then - begin - i := 9 - i; - j := 9 - j; - end; - end; -end; - - -function TChessBoard.FDoMove(i, j: integer; prom_fig: TFigureName = K): boolean; -begin - Result := m_ChessRulesEngine.DoMove(m_i0, m_j0, i, j, prom_fig); - if (Result) then - FOnAfterMoveDone; -end; - - -procedure TChessBoard.PBoxBoardDragOver(Sender, Source: TObject; X, - Y: Integer; State: TDragState; var Accept: Boolean); -var - rect: TRect; - i, j: integer; -begin - case State of - dsDragEnter: - m_bHilighted := FALSE; - - dsDragMove: - begin - // Repaint a fragment on m_bmHiddenBoard - m_bmHiddenBoard.Canvas.Draw(x0 - dx, y0 - dy, m_bmBuf); - // Copy new fragment to the buffer - m_bmBuf.Canvas.CopyRect(Bounds(0, 0, m_iSquareSize, m_iSquareSize), - m_bmHiddenBoard.Canvas, Bounds(X - dx, Y - dy, m_iSquareSize, m_iSquareSize)); - // Draw the dragging piece in a new position - m_bmHiddenBoard.Canvas.Draw(X - dx, Y - dy, m_bmFigure[m_fig]); - // Copy the new fragment to the screen - rect:= Bounds(Min(x0,X) - dx, Min(y0, Y) - dy, - abs(X - x0) + m_iSquareSize, abs(Y - y0) + m_iSquareSize); - PBoxBoard.Canvas.CopyRect(rect, m_bmHiddenBoard.Canvas, rect); - - x0 := X; - y0 := Y; - - FWhatSquare(Point(X,Y), i, j); - - Accept := ((i in [1..8]) and (j in [1..8])); - end; - end; -end; - - -procedure TChessBoard.PBoxBoardEndDrag(Sender, Target: TObject; X, Y: Integer); -var - i, j: integer; - bRes: boolean; -begin - case m_Mode of - mGame, mAnalyse: - begin - if (m_bHilighted) then - begin - with m_bmHiddenBoard.Canvas do - begin - Pen.Color:= HILIGHT_COLOR; - Pen.Width := HILIGHT_WIDTH; - x0:= x0 - dx; - y0:= y0 - dy; - MoveTo(x0,y0); - LineTo(x0 + m_iSquareSize - 1, y0); - LineTo(x0 + m_iSquareSize - 1, y0 + m_iSquareSize - 1); - LineTo(x0, y0 + m_iSquareSize - 1); - LineTo(x0, y0); - - PBoxBoardPaint(nil); - end; - end - else - begin - if (AnimateTimer.Enabled) then - AnimateTimer.Enabled := FALSE; - FDrawBoard; - if (m_bDraggedMoved) then - begin - HilightLastMove; - Evaluate; - m_bDraggedMoved := FALSE; - end; - end; - end; - - mEdit: - begin - if (m_bDraggedMoved) then - begin - FWhatSquare(Point(X, Y), i, j); - bRes := (((i <> m_i0) or (j <> m_j0)) and Position.SetPiece(i, j, m_fig)); - end - else - bRes := TRUE; - - if (bRes) then - begin - Position.SetPiece(m_i0, m_j0, ES); - FOnAfterSetPosition; - end; - - FDrawBoard; - end; - end; // case -end; - - -procedure TChessBoard.PBoxBoardMouseDown(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -var - i, j: Integer; - f: TFigure; -begin - if (Button <> mbLeft) then - exit; - - FWhatSquare(Point(X, Y), i, j); - if (not ((i in [1..8]) and (j in [1..8]))) then - exit; - - m_bDraggedMoved := FALSE; - - f := Position.board[i,j]; - - case m_Mode of - mGame, mAnalyse: - begin - if (m_bViewGaming) then - exit; - if ((Position.color <> m_PlayerColor) or - (((Position.color <> fcWhite) or (f >= ES)) and - ((Position.color <> fcBlack) or (f <= ES)))) then - exit; - - if ((i = m_i0) and (j = m_j0)) then - m_bHilighted := (m_bHilighted xor TRUE) - else - m_bHilighted := TRUE; - end; - - mEdit: - begin - if (f = ES) then - exit; - end; - - else - exit; - end; - - if (m_iAnimStep < m_iAnimStepsCount) then - FEndAnimation; - - m_fig := f; - m_i0 := i; - m_j0 := j; - - dx := (X - CHB_X) mod m_iSquareSize; - dy := (Y - CHB_Y) mod m_iSquareSize; - x0 := X; - y0 := Y; - - m_bDraggedMoved := TRUE; - PBoxBoard.BeginDrag(FALSE); -end; - - -procedure TChessBoard.PBoxBoardMouseMove(Sender: TObject; Shift: TShiftState; - X, Y: Integer); -var - f: TFigure; - i,j: Integer; -begin - FWhatSquare(Point(X,Y), i,j); - if (not ((i in [1..8]) and (j in [1..8]))) then - begin - PBoxBoard.Cursor:= crDefault; - exit; - end; - - f := Position.board[i,j]; - - case m_Mode of - mGame, mAnalyse: - begin - if (m_bViewGaming) then - exit; - - if (m_PlayerColor = Position.color) and - (((Position.color = fcWhite) and (f < ES)) or - ((Position.color = fcBlack) and (f > ES))) then - PBoxBoard.Cursor:= crHandPoint - else - PBoxBoard.Cursor:= crDefault; - end; - - mEdit: - begin - if (f <> ES) then - PBoxBoard.Cursor:= crHandPoint - else - PBoxBoard.Cursor:= crDefault; - end; - - else - PBoxBoard.Cursor := crDefault; - end; -end; - - -function TChessBoard.FGetPositionsList: TList; -begin - Result := m_ChessRulesEngine.PositionsList; -end; - - -function TChessBoard.FGetColorStarts: TFigureColor; -begin - Result := m_ChessRulesEngine.GetColorStarts; -end; - - -procedure TChessBoard.PBoxBoardMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -var - i, j: integer; -begin - case Button of - mbLeft: - begin - case m_Mode of - mGame, mAnalyse: - begin - if (not m_bHilighted) then - exit; - FWhatSquare(Point(X, Y), i, j); - if (m_bDraggedMoved) then - FDrawBoard - else - begin - m_bHilighted := FALSE; - if (FDoMove(i, j)) then - FAnimate(i, j) - else - FDrawBoard; - end; - end; - - mEdit: - begin - if (m_bDraggedMoved) then - exit; - // Assert(empty field) - FWhatSquare(Point(X, Y), i, j); - if (Position.SetPiece(i, j, m_EditPiece)) then - begin - FOnAfterSetPosition; - FDrawBoard; - end; - end; - - end; // case - end; - - mbRight: - begin - FDoHandler(cbeMenu, self); - end; - - end; -end; - - -procedure TChessBoard.PBoxBoardStartDrag(Sender: TObject; - var DragObject: TDragObject); -begin - // Copy image of an empty square to m_bmBuf - m_bmBuf.Width := m_iSquareSize; - m_bmBuf.Height:= m_iSquareSize; - if (((m_i0 + m_j0) and 1) <> 0) then - m_bmBuf.Canvas.CopyRect(Bounds(0,0, m_iSquareSize, m_iSquareSize), - m_bmFigure[ES].Canvas, Bounds(0,0, m_iSquareSize, m_iSquareSize)) - else - m_bmBuf.Canvas.CopyRect(Bounds(0,0, m_iSquareSize, m_iSquareSize), - m_bmFigure[ES].Canvas, Bounds(m_iSquareSize,0, m_iSquareSize, m_iSquareSize)); - - m_bDraggedMoved := FALSE; -end; - - -procedure TChessBoard.InitPosition; -begin - m_ChessRulesEngine.InitNewGame; - - FCancelAnimationDragging; - FOnAfterSetPosition; - - FDrawBoard; -end; - - -procedure TChessBoard.PPRandom; -begin - m_ChessRulesEngine.InitNewPPRandomGame; - - FCancelAnimationDragging; - FOnAfterSetPosition; - - FDrawBoard; -end; - - -procedure TChessBoard.TakeBack; -begin - if (m_Mode = mEdit) then - exit; - - if (not m_ChessRulesEngine.TakeBack) then - exit; - - FOnAfterSetPosition; - // TODO: animation - FDrawBoard; -end; - - -function TChessBoard.NMoveDone: integer; -begin - Result := m_ChessRulesEngine.NMovesDone; -end; - - -function TChessBoard.NPlysDone: integer; -begin - Result := m_ChessRulesEngine.NPlysDone; -end; - - -function TChessBoard.FGetMovesOffset: integer; -begin - Result := m_ChessRulesEngine.MovesOffset; -end; - - -function TChessBoard.FGetPositionColor: TFigureColor; -begin - Result := Position.color; -end; - - -procedure TChessBoard.FormCanResize(Sender: TObject; var NewWidth, - NewHeight: Integer; var Resize: Boolean); -var - NewBoardSize: TSize; -begin - if (not m_bDeltaWidthHeightFlag) then - begin - m_iDeltaWidthHeight := Width - Height; - m_bDeltaWidthHeightFlag := TRUE; - end; - - Resize := (m_ResizingType <> rtNo); - if (not Resize) then - exit; - - if (m_ResizingType = rtVert) then - NewWidth := NewHeight + m_iDeltaWidthHeight - else // rtHoriz - NewHeight := NewWidth - m_iDeltaWidthHeight; - - NewBoardSize := m_BitmapRes.GetOptimalBoardSize( - Size(PBoxBoard.Width + (NewWidth - Width), PBoxBoard.Height + (NewHeight - Height))); - - Resize := (NewBoardSize.cx > 0) and (NewBoardSize.cy > 0) and - ((NewBoardSize.cx <> PBoxBoard.Width) or (NewBoardSize.cy <> PBoxBoard.Height)); - if (Resize) then - begin - NewWidth := Width + (NewBoardSize.cx - PBoxBoard.Width); - NewHeight := Height + (NewBoardSize.cy - PBoxBoard.Height); - end; -end; - - -procedure TChessBoard.FormResize(Sender: TObject); -var - _fig: TFigure; -begin - FreeAndNil(m_bmChessBoard); - m_BitmapRes.CreateBoardBitmap(Size(PBoxBoard.Width, PBoxBoard.Height), self.Color, - m_bmChessBoard); - m_iSquareSize := m_BitmapRes.SquareSize; - - for _fig := Low(TFigure) to High(TFigure) do - begin - FreeAndNil(m_bmFigure[_fig]); - m_BitmapRes.CreateFigureBitmap(_fig, m_bmFigure[_fig]); - end; - - // Graphics initialization - if (not Assigned(m_bmHiddenBoard)) then - begin - m_bmHiddenBoard := Graphics.TBitmap.Create; - m_bmHiddenBoard.Palette := m_bmChessBoard.Palette; - m_bmHiddenBoard.Canvas.Font := PBoxBoard.Font; // Õàðàêòåðèñòèêè øðèôòà êîîðäèíàò çàäàþòñÿ â èíñïåêòîðå - m_bmHiddenBoard.Canvas.Brush.Style := bsClear; - end; - m_bmHiddenBoard.Width := m_bmChessBoard.Width; - m_bmHiddenBoard.Height := m_bmChessBoard.Height; - - if (not Assigned(m_bmBuf)) then - begin - m_bmBuf := Graphics.TBitmap.Create; - m_bmBuf.Palette:= m_bmChessBoard.Palette; - end; - - FDrawBoard; -end; - - -procedure TChessBoard.WMSizing(var Msg: TMessage); -begin - case Msg.WParam of - WMSZ_RIGHT, WMSZ_LEFT, WMSZ_BOTTOMRIGHT, WMSZ_TOPLEFT: - m_ResizingType := rtHoriz; - WMSZ_BOTTOM, WMSZ_TOP: - m_ResizingType := rtVert; - else - begin - m_ResizingType := rtNo; - PRect(Msg.LParam).Left := Left; - PRect(Msg.LParam).Top := Top; - end; - end; // case -end; - - -procedure TChessBoard.FDoHandler(e: TChessBoardEvent; d1: pointer = nil; d2: pointer = nil); -begin - if (Assigned(FHandler)) then - FHandler(e, d1, d2); -end; - - -function TChessBoard.FGetMoveNotationFormat: TMoveNotationFormat; -begin - Result := m_ChessRulesEngine.MoveNotationFormat; -end; - - -procedure TChessBoard.FSetMoveNotationFormat(Value: TMoveNotationFormat); -begin - m_ChessRulesEngine.MoveNotationFormat := Value; -end; - - -function TChessBoard.FGetFENFormat: boolean; -begin - Result := m_ChessRulesEngine.FENFormat; -end; - - -procedure TChessBoard.FSetFENFormat(bValue: boolean); -begin - m_ChessRulesEngine.FENFormat := bValue; -end; - - -procedure TChessBoard.BeginUpdate; -begin - inc(m_iUpdateCounter); -end; - - -procedure TChessBoard.EndUpdate; -begin - if (m_iUpdateCounter > 0) then - begin - dec(m_iUpdateCounter); - if (m_iUpdateCounter = 0) then - FDrawBoard; - end; -end; - - -procedure TChessBoard.FOnDrawLayerUpdate(const ADrawLayer: TChessBoardLayerBase); -begin - if (not AnimateTimer.Enabled) then - FDrawBoard; -end; - - -procedure TChessBoard.AddLayer(const ALayer: TChessBoardLayerBase); -begin - if (m_lstLayers.IndexOf(ALayer) >= 0) then - exit; - - ALayer.ChessBoard := self; - m_lstLayers.Add(ALayer); - - FOnDrawLayerUpdate(ALayer); -end; - - -procedure TChessBoard.RemoveLayer(const ALayer: TChessBoardLayerBase); -begin - if (m_lstLayers.Remove(ALayer) >= 0) then - begin - ALayer.ChessBoard := nil; - - FOnDrawLayerUpdate(ALayer); - end; -end; - - -function TChessBoard.IsMoveAnimating: boolean; -begin - Result := AnimateTimer.Enabled; -end; - -//////////////////////////////////////////////////////////////////////////////// -// TChessBoardDrawBase - -procedure TChessBoardLayerBase.RDoUpdate; -begin - if (Assigned(m_ChessBoard)) then - m_ChessBoard.FOnDrawLayerUpdate(self); -end; - - -function TChessBoardLayerBase.FGetSquareSize: integer; -begin - if (Assigned(m_ChessBoard)) then - Result := m_ChessBoard.SquareSize - else - Result := 0; -end; - - -function TChessBoardLayerBase.FGetCanvas: TCanvas; -begin - if (Assigned(m_ChessBoard)) then - Result := m_ChessBoard.FGetHiddenBoardCanvas - else - Result := nil; -end; - - -function TChessBoardLayerBase.FGetPosition: PChessPosition; -begin - if (Assigned(m_ChessBoard)) then - Result := m_ChessBoard.Position - else - Result := nil; -end; - - -function TChessBoardLayerBase.RGetColorStarts: TFigureColor; -begin - if (Assigned(m_ChessBoard)) then - Result := m_ChessBoard.FGetColorStarts - else - Result := fcWhite; -end; - - -function TChessBoardLayerBase.FGetPositionsList: TList; -begin - if (Assigned(m_ChessBoard)) then - Result := m_ChessBoard.PositionsList - else - Result := nil; -end; - - -procedure TChessBoardLayerBase.ROnAfterMoveDone; -begin -end; - - -procedure TChessBoardLayerBase.ROnAfterSetPosition; -begin -end; - - -procedure TChessBoardLayerBase.ROnAfterModeSet(const OldValue, NewValue: TMode); -begin -end; - - -procedure TChessBoardLayerBase.ROnResetMoveList; -begin -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ChessClockUnit.pas b/plugins/!NotAdopted/Chess4Net/ChessClockUnit.pas deleted file mode 100644 index 9e587af9f2..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ChessClockUnit.pas +++ /dev/null @@ -1,113 +0,0 @@ -unit ChessClockUnit; - -interface - -type - TChessClock = class - public - class function IsZeitnot(const time: TDateTime): boolean; - class function ConvertToStr(const time: TDateTime): string; - class function ConvertToFullStr(const time: TDateTime; - bIncludeMSec: boolean = TRUE): string; - class function ConvertFromFullStr(const strTime: string): TDateTime; - end; - -implementation - -uses - SysUtils; - -const - FULL_TIME_FORMAT = 'h":"n":"s"."z'; - HOUR_TIME_FORMAT = 'h":"nn":"ss'; - MIN_TIME_FORMAT = 'n":"ss'; - ZEITNOT_FORMAT = 's"."zzz'; - ZEITNOT_BOARDER = 10; // sec. - zeitnot border - -//////////////////////////////////////////////////////////////////////////////// -// TChessClock - -class function TChessClock.IsZeitnot(const time: TDateTime): boolean; -begin - Result := ((time > 0) and (time < EncodeTime(0, 0, ZEITNOT_BOARDER, 0))); -end; - - -class function TChessClock.ConvertToStr(const time: TDateTime): string; -begin - LongTimeFormat := MIN_TIME_FORMAT; - if (time >= EncodeTime(1, 0, 0, 0)) then - LongTimeFormat := HOUR_TIME_FORMAT - else if (IsZeitnot(time)) then - LongTimeFormat := ZEITNOT_FORMAT; - - Result := TimeToStr(time); -end; - - -class function TChessClock.ConvertToFullStr(const time: TDateTime; - bIncludeMSec: boolean = TRUE): string; -begin - if (bIncludeMSec) then - LongTimeFormat := FULL_TIME_FORMAT - else - LongTimeFormat := HOUR_TIME_FORMAT; - - Result := TimeToStr(time); -end; - - -class function TChessClock.ConvertFromFullStr(const strTime: string): TDateTime; - - procedure NParse(strTime: string; out Hour, Min, Sec, MSec: Word); - const - TIME_DELIM = ':'; - MSEC_DELIM = '.'; - var - iPos: integer; - str: string; - begin - Hour := 0; - Min := 0; - Sec := 0; - MSec := 0; - - iPos := LastDelimiter(MSEC_DELIM, strTime); - if (iPos > 0) then - begin - str := Copy(strTime, iPos + 1, MaxInt); - strTime := Copy(strTime, 1, iPos - 1); - MSec := StrToInt(str); - end; - - strTime := TIME_DELIM + strTime; - - iPos := LastDelimiter(TIME_DELIM, strTime); - if (iPos = 0) then - exit; - str := Copy(strTime, iPos + 1, MaxInt); - strTime := Copy(strTime, 1, iPos - 1); - Sec := StrToInt(str); - - iPos := LastDelimiter(TIME_DELIM, strTime); - if (iPos = 0) then - exit; - str := Copy(strTime, iPos + 1, MaxInt); - strTime := Copy(strTime, 1, iPos - 1); - Min := StrToInt(str); - - iPos := LastDelimiter(TIME_DELIM, strTime); - if (iPos = 0) then - exit; - str := Copy(strTime, iPos + 1, MaxInt); - Hour := StrToInt(str); - end; - -var - Hour, Min, Sec, MSec: Word; -begin // .ConvertFromFullStr - NParse(strTime, Hour, Min, Sec, MSec); - Result := EncodeTime(Hour, Min, Sec, MSec); -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ChessRulesEngine.pas b/plugins/!NotAdopted/Chess4Net/ChessRulesEngine.pas deleted file mode 100644 index 466f7b9190..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ChessRulesEngine.pas +++ /dev/null @@ -1,1481 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ChessRulesEngine; - -interface - -uses - Classes; - -type - TFigureName = (K, Q, R, B, N, P); - TFigure = (WK, WQ, WR, WB, WN, WP, ES, - BK, BQ, BR, BB, BN, BP); // ES - Empty Square - TFigureColor = (fcWhite, fcBlack); - - TCastlingCapability = set of ( - WhiteKingSide, WhiteQueenSide, BlackKingSide, BlackQueenSide); - - PChessPosition = ^TChessPosition; - TChessPosition = object // Chess position - board: array[1..8, 1..8] of TFigure; - color: TFigureColor; // Who moves - castling: TCastlingCapability; - en_passant: 0..8; // possibility of e.p 0 - no e.p. - private - procedure FUpdateKingSideCastling(AColor: TFigureColor); - procedure FUpdateQueenSideCastling(AColor: TFigureColor); - public - function SetPiece(i, j: integer; APiece: TFigure): boolean; - end; - - PMoveAbs = ^TMoveAbs; - TMoveAbs = record - i0, j0, i, j: byte; - prom_fig: TFigureName; - end; - - IChessRulesEngineable = interface - function AskPromotionFigure(FigureColor: TFigureColor): TFigureName; - end; - - TEvaluation = (evInGame, evMate, evStaleMate); - - TMoveNotationFormat = (mnfCh4N, mnfCh4NEx); // TODO: mnfPGN - - TChessRulesEngine = class - private - m_ChessRulesEngineable: IChessRulesEngineable; - m_Position: TChessPosition; - m_iMovesOffset: integer; - m_i0, m_j0: integer; // Previous position of piece - m_fig: TFigure; // Piece that moves - m_lastMove: TMoveAbs; // Last move done - m_strLastMoveStr: string; // last move in algebraic notation - m_MoveNotationFormat: TMoveNotationFormat; - m_bFENFormat: boolean; - m_lstPosition: TList; - - function FGetPosition: PChessPosition; - function FAskPromotionFigure(FigureColor: TFigureColor): TFigureName; - procedure FAddPosMoveToList; // Add position and its move to the list - function FMove2Str(const pos: TChessPosition): string; - - function FCheckMove(const chp: TChessPosition; var chp_res: TChessPosition; - i0, j0, i, j: integer; var prom_fig: TFigureName): boolean; - - function FGetLastMove: PMoveAbs; - procedure FDeleteLastPositionFromPositionList; - - function FDoMove(i, j: integer; prom_fig: TFigureName = K): boolean; - - class function FFieldUnderAttack(const pos: TChessPosition; i0,j0: integer): boolean; - class function FCheckCheck(const pos: TChessPosition): boolean; - function FCanMove(pos: TChessPosition): boolean; - - procedure FSetMovesOffset(iValue: integer); - - property i0: integer read m_i0 write m_i0; - property j0: integer read m_j0 write m_j0; - property fig: TFigure read m_fig write m_fig; - - public - constructor Create(ChessRulesEngineable: IChessRulesEngineable = nil); - destructor Destroy; override; - - function DoMove(move_str: string): boolean; overload; - function DoMove(i0, j0, i, j: integer; prom_fig: TFigureName = K): boolean; overload; - function TakeBack: boolean; - function SetPosition(strValue: string): boolean; - function GetPosition: string; - function GetColorStarts: TFigureColor; - procedure InitNewGame; - procedure InitNewPPRandomGame; - procedure ResetMoveList; // Clears positions list - function NMovesDone: integer; // amount of moves done - function NPlysDone: integer; // amount of plys done - function GetFENMoveNumber: integer; - function GetEvaluation: TEvaluation; - - property Position: PChessPosition read FGetPosition; - property lastMove: PMoveAbs read FGetLastMove; - property lastMoveStr: string read m_strLastMoveStr; - property MovesOffset: integer read m_iMovesOffset write FSetMovesOffset; - property PositionsList: TList read m_lstPosition; - property MoveNotationFormat: TMoveNotationFormat - read m_MoveNotationFormat write m_MoveNotationFormat; - property FENFormat: boolean read m_bFENFormat write m_bFENFormat; - end; - - PPosMove = ^TPosMove; - TPosMove = record - pos: TChessPosition; - move: TMoveAbs; - end; - -const - INITIAL_CHESS_POSITION = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -'; - EMPTY_CHESS_POSITION = '8/8/8/8/8/8/8/8 w - -'; - INITIAL_FEN = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1'; - EMPTY_FEN = '8/8/8/8/8/8/8/8 w - - 0 1'; - -implementation - -{$J+} - -uses - SysUtils, StrUtils; - -type - TDeltaMove = array [TFigureName] of - record - longRange: boolean; - dx,dy: array[1..8] of Integer; - end; - -const - DELTA_MOVE: TDeltaMove = ((longRange: FALSE; // Êîðîëü - dx: (1,0,-1,0, 1,-1,-1,1); dy: (0,1,0,-1, 1,1,-1,-1)), - (longRange: TRUE; // Ôåðçü - dx: (1,0,-1,0, 1,-1,-1,1); dy: (0,1,0,-1, 1,1,-1,-1)), - (longRange: TRUE; // Ëàäüÿ - dx: (1,0,-1,0, 0,0,0,0); dy: (0,1,0,-1, 0,0,0,0)), - (longRange: TRUE; // Ñëîí - dx: (1,-1,-1,1, 0,0,0,0); dy: (1,1,-1,-1, 0,0,0,0)), - (longRange: FALSE; // Êîíü - dx: (2,1,-1,-2, 2,1,-1,-2); dy: (1,2,2,1, -1,-2,-2,-1)), - (longRange: FALSE; // Ïåøêà - dx: (0,0,-1,1, 0,0,0,0); dy: (2,1,1,1, 0,0,0,0))); - -//////////////////////////////////////////////////////////////////////////////// -// TChessRulesEngine - -constructor TChessRulesEngine.Create(ChessRulesEngineable: IChessRulesEngineable = nil); -begin - inherited Create; - - m_ChessRulesEngineable := ChessRulesEngineable; - m_lstPosition := TList.Create; - - InitNewGame; -end; - - -destructor TChessRulesEngine.Destroy; -begin - ResetMoveList; - m_lstPosition.Free; - - inherited; -end; - - -function TChessRulesEngine.FGetPosition: PChessPosition; -begin - Result := @m_Position; -end; - - -function TChessRulesEngine.FAskPromotionFigure(FigureColor: TFigureColor): TFigureName; -begin - if (Assigned(m_ChessRulesEngineable)) then - Result := m_ChessRulesEngineable.AskPromotionFigure(FigureColor) - else - Result := Q; -end; - - -class function TChessRulesEngine.FCheckCheck(const pos: TChessPosition): boolean; -label - l; -const - _i0: integer = 1; // äëÿ óâåëè÷åíèÿ ñêîðîñòè îáðàáîòêè - _j0: integer = 1; -var - i, j: integer; -begin - with pos do - begin - if ((color = fcWhite) and (board[_i0, _j0] = WK)) or - ((color = fcBlack) and (board[_i0, _j0] = BK)) then goto l; - // ïîèñê êîðîëÿ íà äîñêå - for i:= 1 to 8 do - begin - for j:= 1 to 8 do - begin - if ((color = fcWhite) and (board[i,j] = WK)) or - ((color = fcBlack) and (board[i,j] = BK)) then - begin - _i0 := i; - _j0 := j; - goto l; - end; - end; // for j - end; // for i -l: - Result := FFieldUnderAttack(pos, _i0, _j0); - end; -end; - - -class function TChessRulesEngine.FFieldUnderAttack(const pos: TChessPosition; i0, j0: integer): boolean; -var - f: TFigureName; - ef: TFigure; - l: byte; - ti,tj: Integer; - locLongRange: boolean; -begin - for f:= R to N do - for l:= 1 to 8 do - with DELTA_MOVE[f], pos do - begin - if (dx[l] = 0) and (dy[l] = 0) then break; // Âñå õîäû ïðîñìîòðåíû - ti:= i0; tj:= j0; - locLongRange:= FALSE; - repeat - ti:= ti + dx[l]; tj:= tj + dy[l]; - if not(ti in [1..8]) or not(tj in [1..8]) then break; - ef:= board[ti,tj]; - if ((color = fcWhite) and (ef < ES)) or ((color = fcBlack) and (ef > ES)) - then break; - case ef of - WK,BK: - if locLongRange or (f = N) then break; - WQ,BQ: - if f = N then break; - WR,BR: - if f <> R then break; - WB,BB: - if f <> B then break; - WN,BN: - if f <> N then break; - WP,BP: - if locLongRange or (f <> B) or - ((color = fcWhite) and not(tj > j0)) or - ((color = fcBlack) and not(tj < j0)) - then break; - ES: - begin - locLongRange:= TRUE; - continue; - end; - end; - Result:= TRUE; - exit; - until (not longRange); - end; - - Result := FALSE; -end; - - -function TChessRulesEngine.FCheckMove(const chp: TChessPosition; var chp_res: TChessPosition; - i0, j0, i, j: integer; var prom_fig: TFigureName): boolean; -label - here; -var - ti,tj: integer; - l: byte; - f: TFigureName; - _fig: TFigure; - pos: TChessPosition; -begin - Result := FALSE; - - if (not ((i0 in [1..8]) and (j0 in [1..8]) and - (i in [1..8]) and (j in [1..8]))) then - exit; - - _fig := chp.board[i0, j0]; - if (((chp.color = fcWhite) and (_fig > ES)) or - ((chp.color = fcBlack) and (_fig < ES))) then - exit; - - f := TFigureName(ord(_fig) - ord(chp.color) * ord(BK)); - - for l := 1 to 8 do - with DELTA_MOVE[f], chp do - begin - if (dx[l] = 0) and (dy[l] = 0) then - break; // All moves have been viewed - - ti := i0; - tj := j0; - - case f of - P: - begin - if ((l = 1) and - (not (((color = fcWhite) and (j0 = 2) and (board[i0,3] = ES)) or - ((color = fcBlack) and (j0 = 7) and (board[i0,6] = ES))))) then - continue; // Pawn is not on 2/7 row - long move is impossible - - case color of - fcWhite: - begin - inc(ti, dx[l]); - inc(tj, dy[l]); - end; - - fcBlack: - begin - dec(ti, dx[l]); - dec(tj, dy[l]); - end; - end; - - if (not (ti in [1..8]) or not(tj in [1..8])) then - continue; - if ((l <= 2) and (board[ti,tj] <> ES)) then - continue; // There's a piece before the pawn -> exit - - if ((l >= 3) and (not (((color = fcWhite) and ((board[ti,tj] > ES) or - ((j0 = 5) and (en_passant = ti)))) or - ((color = fcBlack) and ((board[ti,tj] < ES) or - ((j0 = 4) and (en_passant = ti))))))) then - continue; - - if ((ti = i) and (tj = j)) then - goto here; - end; - - else - begin - repeat - inc(ti, dx[l]); - inc(tj, dy[l]); - - if ((not (ti in [1..8])) or (not (tj in [1..8])) or - ((color = fcWhite) and ((board[ti,tj] < ES) or - ((board[ti,tj] > ES) and ((ti <> i) or (tj <> j))))) or - ((color = fcBlack) and ((board[ti,tj] > ES) or - ((board[ti,tj] < ES) and ((ti <> i) or (tj <> j)))))) then - break; - - if ((ti = i) and (tj = j)) then - goto here; - - until (not longRange); - end; - - end; { case } - end; - - if (f = K) then // Checking against castling - begin - with chp do - begin - if (i-i0 = 2) and (j = j0) and - (((color = fcWhite) and (WhiteKingSide in castling)) or - ((color = fcBlack) and (BlackKingSide in castling))) then - begin - if ((board[6,j0] <> ES) or (board[7,j0] <> ES) or // 0-0 - FFieldUnderAttack(chp,5,j0) or - FFieldUnderAttack(chp,6,j0)) then exit; - end - else if ((i-i0 = -2) and (j = j0) and - (((color = fcWhite) and (WhiteQueenSide in castling)) or - ((color = fcBlack) and (BlackQueenSide in castling)))) then - begin - if ((board[4,j0] <> ES) or (board[3,j0] <> ES) or // 0-0-0 - (board[2,j0] <> ES) or - FFieldUnderAttack(chp,5,j0) or - FFieldUnderAttack(chp,4,j0)) then - exit; - end - else - exit; - - goto here; - end; - end; - - exit; // The piece was moved not according to rules - -here: - // Making move on pos - pos := chp; - - with pos do - begin - case f of - P: - begin - if (((color = fcWhite) and (j0 = 5)) or - ((color = fcBlack) and (j0 = 4))) and (i = en_passant) then - board[i,j0]:= ES; // remove enemy pawn with e.p. - end; - - K: - begin - if i-i0 = 2 then - begin - board[6,j0]:= board[8,j0]; // 0-0 - board[8,j0]:= ES; - end - else - if i0-i = 2 then - begin - board[4,j0]:= board[1,j0]; // 0-0-0 - board[1,j0]:= ES; - end; - case color of - fcWhite: - castling:= castling - [WhiteKingSide, WhiteQueenSide]; - fcBlack: - castling:= castling - [BlackKingSide, BlackQueenSide]; - end; - end; - - R: - begin - if ((i0 = 8) and (j0 = 1)) or ((i = 8) and (j = 1)) then - castling := castling - [WhiteKingSide] - else if ((i0 = 1) and (j0 = 1)) or ((i = 1) and (j = 1)) then - castling := castling - [WhiteQueenSide] - else if ((i0 = 8) and (j0 = 8)) or ((i = 8) and (j = 8)) then - castling := castling - [BlackKingSide] - else if ((i0 = 1) and (j0 = 8)) or ((i = 1) and (j = 8)) then - castling := castling - [BlackQueenSide]; - end; - end; - - if ((f = P) and (abs(j-j0) = 2) and - (((i > 1) and (((color = fcWhite) and (board[i-1,j] = BP)) or - ((color = fcBlack) and (board[i-1,j] = WP)))) or - ((i < 8) and (((color = fcWhite) and (board[i+1,j] = BP)) or - ((color = fcBlack) and (board[i+1,j] = WP)))))) then - en_passant := i0 // e.p. on - else - en_passant := 0; // e.p. off - - // make the move - - board[i0, j0]:= ES; - board[i, j] := _fig; - - if (FCheckCheck(pos)) then - exit; // move is impossible because of check - - if (f = P) and ((j = 1) or (j = 8)) then - begin - case prom_fig of - Q..N: ; - else - prom_fig := FAskPromotionFigure(pos.color); - end; // case - board[i, j] := TFigure(ord(color) * ord(BK) + ord(prom_fig)); - end; - - if (color = fcWhite) then - color := fcBlack - else - color := fcWhite; - end; // with - - chp_res := pos; - - Result:= TRUE; -end; - - -function TChessRulesEngine.FCanMove(pos: TChessPosition): boolean; -var - i,j: integer; - ti,tj: integer; - l: byte; - f: TFigureName; - prom_fig: TFigureName; -begin - with pos do - for i:= 1 to 8 do - for j:= 1 to 8 do - begin - if ((color = fcWhite) and (board[i,j] >= ES)) or - ((color = fcBlack) and (board[i,j] <= ES)) then continue; - - f:= TFigureName(ord(board[i,j]) - ord(color) * ord(BK)); - for l:= 1 to 8 do - with DELTA_MOVE[f] do - begin - if (dx[l] = 0) and (dy[l] = 0) then break; // Âñå õîäû ïðîñìîòðåíû - ti:= i; tj:= j; - repeat - case color of - fcWhite: - begin - ti:= ti + dx[l]; tj:= tj + dy[l]; - end; - fcBlack: - begin - ti:= ti - dx[l]; tj:= tj - dy[l]; - end; - end; - if not ((ti in [1..8]) and (tj in [1..8])) then break; - prom_fig := Q; - if FCheckMove(pos, pos, i, j, ti, tj, prom_fig) then - begin - Result:= TRUE; - exit; - end; - until not longRange; - end; - end; - - Result := FALSE; -end; - - -function TChessRulesEngine.DoMove(move_str: string): boolean; -label - l1; -var - l: byte; - f, prom_f: TFigureName; - i, j: integer; - ti, tj: integer; - saved_i, saved_j: integer; -begin - Result := FALSE; - - l := length(move_str); - if ((l <= 1)) then // at least two characters - exit; - - if ((move_str[l] in ['+', '#'])) then - move_str := LeftStr(move_str, l - 1); - - // Ïðîâåðêà íà ðîêèðîâêó - if (move_str = '0-0') then - begin - if (Position.color = fcWhite) then - move_str:= 'Ke1g1' - else - move_str:= 'Ke8g8' - end - else if (move_str = '0-0-0') then - begin - if (Position.color = fcWhite) then - move_str:= 'Ke1c1' - else - move_str:= 'Ke8c8'; - end; - - l := length(move_str); - - i0 := 0; - j0 := 0; - i := 0; - j := 0; - - prom_f := K; - case move_str[l] of - 'Q': prom_f := Q; - 'R': prom_f := R; - 'B': prom_f := B; - 'N': prom_f := N; - else - inc(l); - end; - - dec(l); - - if move_str[l] in ['1'..'8'] then - begin - j := StrToInt(move_str[l]); - dec(l); - end; - if move_str[l] in ['a'..'h'] then - begin - i := ord(move_str[l]) - ord('a') + 1; - dec(l); - end; - if (l > 0) and (move_str[l] in ['1'..'8']) then - begin - j0 := StrToInt(move_str[l]); - dec(l); - end; - if (l > 0) and (move_str[l] in ['a'..'h']) then - begin - i0 := ord(move_str[l]) - ord('a') + 1; - dec(l); - end; - - if (l = 0) then - f := P - else - begin - case move_str[l] of - 'K': f:= K; - 'Q': f:= Q; - 'R': f:= R; - 'B': f:= B; - 'N': f:= N; - end; - end; - - with m_Position do - begin - fig := TFigure(ord(f) + ord(Position.color) * ord(BK)); - - case f of - K..N: // Õîä Êð - Ê - begin - if ((i0 > 0) and (j0 > 0)) then - begin - Result := FDoMove(i, j, prom_f); - exit; - end; - - for l := 1 to 8 do - begin - with DELTA_MOVE[f] do - begin - if (dx[l] = 0) and (dy[l] = 0) then break; // Âñå õîäû ïðîñìîòðåíû - ti:= i; - tj:= j; - repeat - ti:= ti + dx[l]; - tj:= tj + dy[l]; - if not ((ti in [1..8]) and (tj in [1..8])) or - ((board[ti,tj] <> ES) and (board[ti,tj] <> fig)) then - break; - - if ((i0 = 0) or (i0 = ti)) and ((j0 = 0) or (j0 = tj)) and - (board[ti, tj] = fig) then - begin // Õîäÿùàÿ ôèãóðà íàéäåíà - saved_i := i0; - saved_j := j0; - - i0 := ti; - j0 := tj; - Result := FDoMove(i, j, prom_f); - if (Result) then - exit; - - i0 := saved_i; - j0 := saved_j; - end; - until (f = K) or (f = N); // Åñëè Êð èëè Ê, òî âûõîä - end; // with - end; // for - end; // K..N - - P: // Õîä ïåøêîé - begin - if (i0 <> 0) and (i0 <> i) then // âçÿòèå ïåøêîé - begin - for l := 2 to 7 do - begin - if (board[i0, l] = fig) and ((j0 = 0) or (j0 = l)) then - begin - if color = fcWhite then - begin - if ((board[i, l + 1] > ES) or - ((l = 5) and (en_passant = i))) and - ((j = 0) or (j = l+1)) and (abs(i - i0) = 1) then - begin - j0 := l; - j := l + 1; - Result := FDoMove(i, j, prom_f); - if (Result) then - exit; - end; - end - else // color = fcBlack - if ((board[i,l - 1] < ES) or - ((l = 4) and (en_passant = i))) and - ((j = 0) or (j = l-1)) and (abs(i - i0) = 1) then - begin - j0 := l; - j := l - 1; - Result := FDoMove(i, j, prom_f); - if (Result) then - exit; - end; - end; // if - end; // for - end - else // Õîä ïðÿìî - begin - i0 := i; - if color = fcWhite then - begin - if board[i, j - 1] = fig then - j0 := j - 1 - else if (j = 4) and (board[i, 3] = ES) and - (board[i,2] = fig) then - j0 := 2; - end - else // color = fcBlack - begin - if (board[i, j + 1] = fig) then - j0 := j + 1 - else if (j = 5) and (board[i,6] = ES) and (board[i, 7] = fig) then - j0 := 7; - end; - - Result := FDoMove(i, j, prom_f); - end; // if - end; // P: - - end; // case - end; -end; - - -function TChessRulesEngine.FDoMove(i, j: integer; prom_fig: TFigureName = K): boolean; -var - newPosition: TChessPosition; -begin - Result := FCheckMove(m_Position, newPosition, i0, j0, i, j, prom_fig); - if (Result) then - begin - // Store the move done - lastMove.i0 := i0; - lastMove.j0 := j0; - lastMove.i := i; - lastMove.j := j; - lastMove.prom_fig := prom_fig; - - FAddPosMoveToList; - - m_strLastMoveStr := FMove2Str(newPosition); - - m_Position := newPosition; - end; -end; - - -function TChessRulesEngine.DoMove(i0, j0, i, j: integer; prom_fig: TFigureName = K): boolean; -begin - self.i0 := i0; - self.j0 := j0; - Result := FDoMove(i, j, prom_fig); -end; - - -function TChessRulesEngine.FGetLastMove: PMoveAbs; -begin - Result := @m_lastMove; -end; - - -procedure TChessRulesEngine.FAddPosMoveToList; -var - pm: PPosMove; -begin - new(pm); - pm.pos := m_Position; - pm.move := lastMove^; - PositionsList.Add(pm); -end; - - -function TChessRulesEngine.FMove2Str(const pos: TChessPosition): string; - - procedure NExtendWithCheckOrMate(var strMove: string); - begin - if (strMove = '') then - exit; - - if (FCheckCheck(pos)) then - begin - if (FCanMove(pos)) then - strMove := strMove + '+' - else - strMove := strMove + '#'; - end; - end; - -var - f: TFigureName; - l: byte; - ti, tj: integer; - ambig, hor, ver: boolean; - _fig: TFigure; - DummyPosition: TChessPosition; -begin // .FMove2Str - if (lastMove.i0 = 0) then // No move - begin - Result:= ''; - exit; - end; - - _fig := Position.board[lastMove.i0, lastMove.j0]; - f := TFigureName(ord(_fig) + (ord(pos.color) - 1) * ord(BK)); - - // Pawn moves - if (f = P) then - begin - with pos do - begin - if ((lastMove.i - lastMove.i0) = 0) then // move - Result := chr(ord('a') + lastMove.i - 1) + IntToStr(lastMove.j) - else // capturing - begin - Result := chr(ord('a') + lastMove.i0 - 1) + chr(ord('a') + lastMove.i - 1); - - for l := 2 to 7 do // Checking against ambiguity of capturing - begin - if (board[lastMove.i0, l] = WP) then - tj := l + 1 - else if (board[lastMove.i0, l] = BP) then - tj := l - 1 - else - continue; - - if ((((tj > l) and ((Position.board[lastMove.i, tj] > ES) or - ((Position.en_passant = lastMove.i) and (l = 5)))) and (color = fcBlack)) or - (((tj < l) and ((Position.board[lastMove.i, tj] < ES) or - ((Position.en_passant = lastMove.i) and (l = 4)))) and (color = fcWhite))) then - begin - if ((MoveNotationFormat <> mnfCh4NEx) or - FCheckMove(m_Position, DummyPosition, lastMove.i0, l, lastMove.i, tj, - lastMove.prom_fig)) then - begin - Result := Result + IntToStr(lastMove.j); - end; - end; - - end; - end; - - if (lastMove.j = 8) or (lastMove.j = 1) then // The pawn has been promoted - begin - case board[lastMove.i,lastMove.j] of - WQ,BQ: Result := Result + 'Q'; - WR,BR: Result := Result + 'R'; - WB,BB: Result := Result + 'B'; - WN,BN: Result := Result + 'N'; - end; - end; - - if (m_MoveNotationFormat = mnfCh4NEx) then - NExtendWithCheckOrMate(Result); - - exit; - - end; // with - end; // if - - // - case f of - K: Result:= 'K'; - Q: Result:= 'Q'; - R: Result:= 'R'; - B: Result:= 'B'; - N: Result:= 'N'; - end; - - // [][] - ambig:= FALSE; - hor:= FALSE; - ver:= FALSE; - - for l := 1 to 8 do - begin - with pos, DELTA_MOVE[f] do - begin - if (dx[l] = 0) and (dy[l] = 0) then - break; // All moves have been viewed - - ti := lastMove.i; - tj := lastMove.j; - - repeat - inc(ti, dx[l]); - inc(tj, dy[l]); - - if ((not (ti in [1..8])) or (not (tj in [1..8]))) then - break; - - if (board[ti,tj] = ES) then - continue; - - if (board[ti, tj] <> _fig) then - break; - - if ((m_MoveNotationFormat <> mnfCh4NEx) or - FCheckMove(m_Position, DummyPosition, ti, tj, lastMove.i, lastMove.j, - lastMove.prom_fig)) then - begin - ambig := TRUE; - ver := (ver or (ti = lastMove.i0)); - hor := (hor or (tj = lastMove.j0)); - - break; - end; - - until (f = K) or (f = N); // If K or N -> exit - - end; - end; // for l - - if (ambig) then - begin - if ((not ver) or hor) then - Result := Result + chr(ord('a') + lastMove.i0 - 1); - if (ver) then - Result := Result + IntToStr(lastMove.j0); - end; - - // - Result := Result + chr(ord('a') + lastMove.i - 1) + IntToStr(lastMove.j); - - // | - if (f = K) then - begin - if ((lastMove.i - lastMove.i0) = 2) then - Result := '0-0' - else if (lastMove.i0 - lastMove.i = 2) then - Result := '0-0-0'; - end; - - if (m_MoveNotationFormat = mnfCh4NEx) then - NExtendWithCheckOrMate(Result); -end; - - -function TChessRulesEngine.TakeBack: boolean; -begin - Result := (PositionsList.Count > 0); - if (Result) then - begin - FDeleteLastPositionFromPositionList; - lastMove.i0 := 0; - end; -end; - - -procedure TChessRulesEngine.FDeleteLastPositionFromPositionList; -var - i: integer; -begin - i := PositionsList.Count - 1; - if (i >= 0) then - begin - m_Position := PPosMove(PositionsList[i]).pos; - Dispose(PositionsList[i]); - PositionsList.Delete(i); - end; -end; - - -function TChessRulesEngine.SetPosition(strValue: string): boolean; - - function NNextToken(var str: string): string; - var - iPos: integer; - begin - str := TrimLeft(str); - if (str = '') then - Result := '' - else - begin - iPos := Pos(' ', str); - if (iPos > 0) then - begin - Result := LeftStr(str, Pred(iPos)); - str := Copy(str, iPos, MaxInt); - end - else - begin - Result := str; - str := ''; - end; - end; - end; - -var - pos: TChessPosition; - - function NSetPlacingOfPieces: boolean; - var - strPos: string; - iPos: integer; - j, i, k: integer; - begin - Result := FALSE; - - strPos := NNextToken(strValue); - - iPos := 1; - - for j := 8 downto 1 do - begin - i := 1; - repeat - if (iPos > Length(strPos)) then - exit; - - case strPos[iPos] of - 'K': pos.board[i,j]:= WK; - 'Q': pos.board[i,j]:= WQ; - 'R': pos.board[i,j]:= WR; - 'B': pos.board[i,j]:= WB; - 'N': pos.board[i,j]:= WN; - 'P': pos.board[i,j]:= WP; - - 'k': pos.board[i,j]:= BK; - 'q': pos.board[i,j]:= BQ; - 'r': pos.board[i,j]:= BR; - 'b': pos.board[i,j]:= BB; - 'n': pos.board[i,j]:= BN; - 'p': pos.board[i,j]:= BP; - - '1'..'8': // Insert empty fields - begin - k := StrToInt(strPos[iPos]); - repeat - pos.board[i,j]:= ES; - dec(k); inc(i); - until k = 0; - dec(i); - end; - - ' ': break; // Position is read -> exit from loop - - else - exit; // Error in strPos - end; - - inc(i); - inc(iPos); - - until ((i > 8) or (strPos[iPos] = '/')); // Repeat until '/' or if not on the row - - inc(iPos); - - end; // for j - - Result := TRUE; - end; - -var - i: integer; - iMovesOffset: integer; - strToken: string; -begin // .SetPosition - Result := NSetPlacingOfPieces; - if (not Result) then - exit; - - // Defaults - pos.color := fcWhite; - pos.castling := []; - pos.en_passant := 0; - iMovesOffset := 0; - - try - strToken := NNextToken(strValue); - if (strToken = '') then - exit; - - case strToken[1] of - 'w': - pos.color := fcWhite; - 'b': - pos.color := fcBlack; - else - exit; - end; - - strToken := NNextToken(strValue); - if (strToken = '') then - exit; - - for i := 1 to Length(strToken) do - begin - with pos do - begin - case strToken[i] of - 'K': - Include(castling, WhiteKingSide); - 'Q': - Include(castling, WhiteQueenSide); - 'k': - Include(castling, BlackKingSide); - 'q': - Include(castling, BlackQueenSide); - '-': - castling := []; - else - exit; - end; - end; - - end; // for - - strToken := NNextToken(strValue); - if (strToken = '') then - exit; - - with pos do - begin - case strToken[1] of - 'a'..'h': - en_passant := ord(strToken[1]) - ord('a') + 1; - end; - end; - - strToken := NNextToken(strValue); - if (strToken = '') then - exit; - - // Skip 50-moves counter - - strToken := NNextToken(strValue); - if (strToken = '') then - exit; - - iMovesOffset := StrToIntDef(strToken, 1) - 1; - if (iMovesOffset < 0) then - iMovesOffset := 0; - - finally - ResetMoveList; - m_Position := pos; - m_iMovesOffset := iMovesOffset; - end; - -end; - - -procedure TChessRulesEngine.InitNewGame; -var - bRes: boolean; -begin - bRes := SetPosition(INITIAL_CHESS_POSITION); - Assert(bRes); -end; - - -procedure TChessRulesEngine.ResetMoveList; -var - i: integer; -begin - for i := 0 to PositionsList.Count - 1 do - Dispose(PositionsList[i]); - PositionsList.Clear; - - lastMove.i0 := 0; -end; - - -function TChessRulesEngine.GetPosition: string; - - function NGetPlacingOfPieces: string; - var - i, j: Integer; - k: byte; - chFig: char; - begin - Result := ''; - - // Placing of pieces - for j := 8 downto 1 do - begin - k := 0; - - for i := 1 to 8 do - begin - case Position.board[i, j] of - WK: chFig := 'K'; - WQ: chFig := 'Q'; - WR: chFig := 'R'; - WB: chFig := 'B'; - WN: chFig := 'N'; - WP: chFig := 'P'; - BK: chFig := 'k'; - BQ: chFig := 'q'; - BR: chFig := 'r'; - BB: chFig := 'b'; - BN: chFig := 'n'; - BP: chFig := 'p'; - ES: - begin - inc(k); - continue; - end; - end; - - if (k > 0) then - begin - Result := Result + IntToStr(k); - k := 0; - end; - - Result := Result + chFig; - end; // for i - - if (k > 0) then - Result := Result + IntToStr(k); - if (j = 1) then - Result := Result + ' ' - else - Result := Result + '/'; // i <= 7 - end; // for j - - end; - -begin // .GetPosition - Result := NGetPlacingOfPieces; - - if (Position.color = fcWhite) then - Result := Result + 'w ' - else - Result := Result + 'b '; // color = fcBlack - - // Castling - if (Position.castling = []) then - Result := Result + '-' - else - begin - if (WhiteKingSide in Position.castling) then - Result := Result + 'K'; - if (WhiteQueenSide in Position.castling) then - Result := Result + 'Q'; - if (BlackKingSide in Position.castling) then - Result := Result + 'k'; - if (BlackQueenSide in Position.castling) then - Result := Result + 'q'; - end; - - // en-passant - if (Position.en_passant = 0) then - Result := Result + ' -' - else - begin - Result := Result + ' ' + Chr(Ord('a') - 1 + Position.en_passant); - end; - - if (not FENFormat) then - exit; - - if (Position.en_passant <> 0) then - begin - if (Position.color = fcWhite) then - Result := Result + '6' - else - Result := Result + '3'; // Black - end; - - Result := Result + ' 0'; // TODO: 50-moves rule - - Result := Result + ' ' + IntToStr(GetFENMoveNumber); -end; - - -function TChessRulesEngine.GetFENMoveNumber: integer; -begin - Result := NMovesDone; - if ((m_Position.color = fcWhite) or (Result = 0)) then - inc(Result); -end; - - -procedure TChessRulesEngine.FSetMovesOffset(iValue: integer); -begin - Assert(iValue >= 0); - m_iMovesOffset := iValue; -end; - - -procedure TChessRulesEngine.InitNewPPRandomGame; -const - FIG: array[0..5] of TFigureName = (B, B, Q, R, N, N); - SQR: array[0..5] of byte = (2, 3, 4, 6, 7, 0); -var - rnd_sqr: array[0..5] of byte; - i,j: integer; - f: boolean; -begin - InitNewGame; - - if (Random(2) = 0) then - SQR[5] := 1 // ñ êàêîé ñòîðîíû îñòàâëÿåì ëàäüþ - else - SQR[5] := 8; - - for i := 0 to 5 do - begin - repeat - rnd_sqr[i] := SQR[Random(6)]; - f := FALSE; - for j := 0 to i-1 do f := f or (rnd_sqr[i] = rnd_sqr[j]); - until not (f or ((i = 1) and (((rnd_sqr[0] xor rnd_sqr[1]) and 1) = 0))); - m_Position.board[rnd_sqr[i], 1] := TFigure(ord(FIG[i])); - m_Position.board[rnd_sqr[i], 8] := TFigure(ord(BK) + ord(FIG[i])); - end; -end; - - -function TChessRulesEngine.NMovesDone: integer; -var - iMovesCount: integer; -begin - if ((PositionsList.Count = 0) and (m_iMovesOffset = 0)) then - iMovesCount := 0 - else - begin - if (GetColorStarts = fcWhite) then - iMovesCount := ((PositionsList.Count + 1) div 2) - else // GetColorStarts = fcBlack - iMovesCount := ((PositionsList.Count + 2) div 2); - end; - - Result := m_iMovesOffset + iMovesCount; -end; - - -function TChessRulesEngine.GetColorStarts: TFigureColor; -begin - if (Odd(PositionsList.Count) and (m_Position.color = fcBlack)) or - (not Odd(PositionsList.Count) and (m_Position.color = fcWhite)) then - Result := fcWhite - else - Result := fcBlack; -end; - - -function TChessRulesEngine.NPlysDone: integer; // amount of plys done -begin - Result := (2 * m_iMovesOffset) + PositionsList.Count; -end; - - -function TChessRulesEngine.GetEvaluation: TEvaluation; -begin - Result := evInGame; - if (not FCanMove(m_Position)) then - begin - if (FCheckCheck(m_Position)) then - Result := evMate - else - Result := evStaleMate; - end; - // TODO: Evaluate position for possible technical draw -end; - - -function TChessPosition.SetPiece(i, j: integer; APiece: TFigure): boolean; -var - SavedPiece: TFigure; -begin - Result := ((i in [1..8]) and (j in [1..8])); - if (not Result) then - exit; - - SavedPiece := board[i, j]; - board[i, j] := APiece; - - if (SavedPiece = APiece) then - exit; - - if ((i = 5) and (j = 1)) then - begin - FUpdateKingSideCastling(fcWhite); - FUpdateQueenSideCastling(fcWhite); - end - else if ((i = 8) and (j = 1)) then - FUpdateKingSideCastling(fcWhite) - else if ((i = 1) and (j = 1)) then - FUpdateQueenSideCastling(fcWhite) - else if ((i = 5) and (j = 8)) then - begin - FUpdateKingSideCastling(fcBlack); - FUpdateQueenSideCastling(fcBlack); - end - else if ((i = 8) and (j = 8)) then - FUpdateKingSideCastling(fcBlack) - else if ((i = 1) and (j = 8)) then - FUpdateQueenSideCastling(fcBlack); -end; - - -procedure TChessPosition.FUpdateKingSideCastling(AColor: TFigureColor); -var - j: integer; - King, Rook: TFigure; -begin - if (AColor = fcWhite) then - begin - j := 1; - King := WK; - Rook := WR; - end - else // fcBlack - begin - j := 8; - King := BK; - Rook := BR; - end; - - if ((board[5, j] = King) and (board[8, j] = Rook)) then - begin - if (AColor = fcWhite) then - Include(castling, WhiteKingSide) - else - Include(castling, BlackKingSide); - end - else - begin - if (AColor = fcWhite) then - Exclude(castling, WhiteKingSide) - else - Exclude(castling, BlackKingSide); - end; - -end; - - -procedure TChessPosition.FUpdateQueenSideCastling(AColor: TFigureColor); -var - j: integer; - King, Rook: TFigure; -begin - if (AColor = fcWhite) then - begin - j := 1; - King := WK; - Rook := WR; - end - else // fcBlack - begin - j := 8; - King := BK; - Rook := BR; - end; - - if ((board[5, j] = King) and (board[1, j] = Rook)) then - begin - if (AColor = fcWhite) then - Include(castling, WhiteQueenSide) - else - Include(castling, BlackQueenSide); - end - else - begin - if (AColor = fcWhite) then - Exclude(castling, WhiteQueenSide) - else - Exclude(castling, BlackQueenSide); - end; - -end; - -initialization - -begin - Randomize; // It's for PP Random -end; - -finalization - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ChessSet.res b/plugins/!NotAdopted/Chess4Net/ChessSet.res deleted file mode 100644 index 869af68809..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/ChessSet.res and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/ChessSet_PNG.RES b/plugins/!NotAdopted/Chess4Net/ChessSet_PNG.RES deleted file mode 100644 index 31328ca9fb..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/ChessSet_PNG.RES and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/ClientQueueUnit.pas b/plugins/!NotAdopted/Chess4Net/ClientQueueUnit.pas deleted file mode 100644 index 7dd7d4c511..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ClientQueueUnit.pas +++ /dev/null @@ -1,165 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ClientQueueUnit; - -interface - -type - TClientName = string[25]; - - PClientNode = ^TClientNode; - - TClientNode = record - n: word; - name: TClientName; - handler: pointer; - next: PClientNode; - end; - - TClientQueue = object - Number: word; - procedure Add(const handler: pointer; const name: TClientName = ''); - procedure Remove(const handler: pointer); - function GetName(const handler: pointer): TClientName; - function GetNum(const handler: pointer): word; - function GetHandler(const num: word): pointer; -{ - function Contains(const handler: pointer): boolean; -} - constructor Create(const max: word); - destructor Free; - private - first: PClientNode; - MaxClientsNum: word; - end; - -implementation - -function TClientQueue.GetHandler(const num: word): pointer; -var - n: PClientNode; -begin - n:= first; - while n <> nil do - begin - if num = n^.n then - begin - Result:= n^.handler; - exit; - end; - n:= n^.next; - end; - Result:= nil; -end; - -procedure TClientQueue.Add(const handler: pointer; const name: TClientName); -var - n: PClientNode; - p: ^PClientNode; -begin - if Number = MaxClientsNum then exit; - - n:= first; p:= @first; - while n <> nil do - begin - p:= addr(n^.next); - n:= n^.next; - end; - new(n); inc(Number); - n^.name:= name; - n^.handler:= handler; - n^.next:= nil; - n^.n:= Number; - p^:= n; -end; - -procedure TClientQueue.Remove(const handler: pointer); -var - n: PClientNode; - p: ^PClientNode; -begin - n:= first; p:= @first; - while n <> nil do - begin - if n^.handler = handler then - begin - n:= n^.next; - dispose(p^); - p^:= n; - break; - end; - p:= addr(n^.next); - n:= n^.next; - end; - - while n <> nil do - begin - dec(n^.n); - n:= n^.next; - end; - dec(Number); -end; - - -function TClientQueue.GetName(const handler: pointer): TClientName; -var - n: PClientNode; -begin - n:= first; - while n <> nil do - begin - if handler = n^.handler then - begin - Result:= n^.name; - exit; - end; - n:= n^.next; - end; - Result:= ''; -end; - -function TClientQueue.GetNum(const handler: pointer): word; -var - n: PClientNode; -begin - n:= first; - while n <> nil do - begin - if handler = n^.handler then - begin - Result:= n^.n; - exit; - end; - n:= n^.next; - end; - Result:= 0; -end; - -{ -function TClientQueue.Contains(const handler: pointer): boolean; -} - -constructor TClientQueue.Create(const max: word); -begin - MaxClientsNum:= max; -end; - - -destructor TClientQueue.Free; -var - n: PClientNode; -begin - while first <> nil do - begin - n:= first^.next; - dispose(first); - first:= n; - end; - Number:= 0; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/Connecting.ico b/plugins/!NotAdopted/Chess4Net/Connecting.ico deleted file mode 100644 index 0bca90ee58..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Connecting.ico and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/ConnectingUnit.dfm b/plugins/!NotAdopted/Chess4Net/ConnectingUnit.dfm deleted file mode 100644 index b741f35ac7..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ConnectingUnit.dfm +++ /dev/null @@ -1,72 +0,0 @@ -object ConnectingForm: TConnectingForm - Left = 583 - Top = 234 - BorderStyle = bsDialog - Caption = 'Connecting...' - ClientHeight = 92 - ClientWidth = 300 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnClose = FormClose - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object ConnectingLabel: TTntLabel - Left = 64 - Top = 16 - Width = 233 - Height = 13 - AutoSize = False - Caption = 'Wait until the connection is completed.' - end - object ConnectingImage: TImage - Left = 16 - Top = 16 - Width = 33 - Height = 33 - Picture.Data = { - 055449636F6E0000010001002020100000000000E80200001600000028000000 - 2000000040000000010004000000000080020000000000000000000000000000 - 0000000000000000000080000080000000808000800000008000800080800000 - 80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000 - FFFFFF00000000000000000000A000000000000000FFFFFFFFFFF0000AA00000 - 00000000000F0F0F0F0F0000AAAAAA2A000000000000FFFFFFF0000AAAAAAAA2 - AA0000000FF800000008FF00AAAAAAAA2A2000000F9FFFFFFFF000000AA00002 - A2A000000FFFFFFFFFFFFF0000A000000A2A0000000000000000004400000000 - 02A20000000000000000444444000000002A20000000FFFFFFF0C4C4C4C40000 - 0002A0000000F00000F0444444444000000620000000F0EEC0F0C4C4C4C4C400 - 0002A0000040F0CEC0F04C444C444C40000620000040F00000F0C4C4C4C4C4C0 - 0002A0000440FFFFFFF04CCC4C4C4C4400062000044000000000C4C4C4C4C4C3 - 0002600044444C4433333CCCCC4CCC433006200044C4C4C4333333C4C4C4C4C3 - 3002600044444C43333333CCCCCCCC43322222224444C4C333333CC4CCC4C4C3 - 3222222244444C433333CCCCCCCC33333E22E22244C4C4C334C4C4CCCCCC3333 - 3E22E222444444433CCCC3CCCCCC33333E22E2220444C4C433C433C4CCC4C333 - 2EEEE22204444343333333CCCCCCCC4C2EEEE2220044C333333333C4C4C433E2 - 2EEEE22E00444333333333CCCCCC33EE2EEEE2EE0004C333333333C4C3C4332E - EEEEEEE200004333333C333CC3433022EEEEEE22000004333334C333C4C30022 - 22EE2222000000044433444C440000222EEEE2220000000004C4C4C400000022 - 22EE22228003DFFF80039FFFC00700FF0000003F0001001F00019E1F0001DF8F - 8000FF8FE0003FC7E0000FE7E00007E7E00003E7C00001E7C00001E7800000E7 - 800000E700000067000000670000000000000000000000000000000000000000 - 8000000080000000C0000000C0000000E0000000F0000400F8000C00FE003C00 - FF80FC00} - end - object AbortButton: TTntButton - Left = 112 - Top = 56 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Abort' - Default = True - ModalResult = 3 - TabOrder = 0 - OnClick = AbortButtonClick - end -end diff --git a/plugins/!NotAdopted/Chess4Net/ConnectingUnit.pas b/plugins/!NotAdopted/Chess4Net/ConnectingUnit.pas deleted file mode 100644 index 567f049b46..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ConnectingUnit.pas +++ /dev/null @@ -1,116 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ConnectingUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, TntStdCtrls, - Forms, {Dialogs, }ExtCtrls, StdCtrls, - DialogUnit, ModalForm; - -type - TConnectingHandler = procedure of object; - - TConnectingForm = class(TModalForm) - AbortButton: TTntButton; - ConnectingLabel: TTntLabel; - ConnectingImage: TImage; - procedure AbortButtonClick(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure FormShow(Sender: TObject); - procedure FormCreate(Sender: TObject); - private -// dlgOwner: TDialogs; - ConnectingHandler: TConnectingHandler; - shuted: boolean; - procedure FLocalize; - protected - function GetModalID : TModalFormID; override; - public - procedure Shut; - constructor Create(Owner: TForm; h: TConnectingHandler = nil); reintroduce; overload; -// constructor Create(dlgOwner: TDialogs; h: TConnectingHandler); reintroduce; overload; - end; - -implementation - -{$R *.dfm} - -uses - LocalizerUnit; - -//////////////////////////////////////////////////////////////////////////////// -// TConnectiongForm - -procedure TConnectingForm.AbortButtonClick(Sender: TObject); -begin - Close; -end; - - -procedure TConnectingForm.FormShow(Sender: TObject); -var - frmOwner: TForm; -begin - frmOwner := (Owner as TForm); - Left:= frmOwner.Left + (frmOwner.Width - Width) div 2; - Top:= frmOwner.Top + (frmOwner.Height - Height) div 2; -end; - -constructor TConnectingForm.Create(Owner: TForm; h: TConnectingHandler = nil); -begin - self.FormStyle := Owner.FormStyle; - inherited Create(Owner); - shuted := FALSE; - ConnectingHandler := h; -end; - - -procedure TConnectingForm.FormClose(Sender: TObject; - var Action: TCloseAction); -begin - if not shuted then - begin - ModalResult := AbortButton.ModalResult; - if Assigned(ConnectingHandler) then - ConnectingHandler; - end - else - ModalResult := mrNone; -end; - - -procedure TConnectingForm.Shut; -begin - shuted:= TRUE; - Close; -end; - -function TConnectingForm.GetModalID: TModalFormID; -begin - Result := mfConnecting; -end; - - -procedure TConnectingForm.FLocalize; -begin - with TLocalizer.Instance do - begin - Caption := GetLabel(19); - ConnectingLabel.Caption := GetLabel(20); - AbortButton.Caption := GetLabel(21); - end; -end; - - -procedure TConnectingForm.FormCreate(Sender: TObject); -begin - FLocalize; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ConnectionUnit.dfm b/plugins/!NotAdopted/Chess4Net/ConnectionUnit.dfm deleted file mode 100644 index 859a295178..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ConnectionUnit.dfm +++ /dev/null @@ -1,118 +0,0 @@ -object ConnectionForm: TConnectionForm - Left = 298 - Top = 145 - BorderIcons = [biSystemMenu] - BorderStyle = bsDialog - Caption = 'Connection Setup' - ClientHeight = 171 - ClientWidth = 292 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - KeyPreview = True - OldCreateOrder = False - OnKeyPress = FormKeyPress - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object NickLabel: TLabel - Left = 8 - Top = 8 - Width = 50 - Height = 13 - Caption = 'Your Nick:' - end - object IPLabel: TLabel - Left = 8 - Top = 115 - Width = 95 - Height = 13 - Caption = 'IP or Domain Name:' - end - object PortLabel: TLabel - Left = 152 - Top = 115 - Width = 32 - Height = 13 - Caption = 'Port #:' - end - object NickEdit: TEdit - Left = 8 - Top = 24 - Width = 121 - Height = 21 - MaxLength = 15 - TabOrder = 0 - Text = 'NN' - OnExit = NickEditExit - end - object ConnectionRadioGroup: TRadioGroup - Left = 8 - Top = 56 - Width = 185 - Height = 49 - Caption = 'Connect as' - TabOrder = 1 - end - object ServerRadioButton: TRadioButton - Left = 24 - Top = 72 - Width = 57 - Height = 17 - Caption = 'Server' - Checked = True - TabOrder = 2 - TabStop = True - OnClick = ServerRadioButtonClick - end - object ClientRadioButton: TRadioButton - Left = 120 - Top = 72 - Width = 49 - Height = 17 - Caption = 'Client' - TabOrder = 3 - OnClick = ClientRadioButtonClick - end - object OKButton: TButton - Left = 208 - Top = 16 - Width = 75 - Height = 25 - Caption = '&OK' - ModalResult = 1 - TabOrder = 6 - end - object CancelButton: TButton - Left = 208 - Top = 56 - Width = 75 - Height = 25 - Caption = '&Cancel' - ModalResult = 2 - TabOrder = 7 - end - object IPEdit: TEdit - Left = 8 - Top = 131 - Width = 133 - Height = 21 - Enabled = False - TabOrder = 4 - OnChange = IPEditChange - end - object PortEdit: TMaskEdit - Left = 152 - Top = 131 - Width = 42 - Height = 21 - EditMask = '09999;; ' - MaxLength = 5 - TabOrder = 5 - Text = '5555 ' - OnExit = PortEditExit - end -end diff --git a/plugins/!NotAdopted/Chess4Net/ConnectionUnit.pas b/plugins/!NotAdopted/Chess4Net/ConnectionUnit.pas deleted file mode 100644 index b5c12fef1e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ConnectionUnit.pas +++ /dev/null @@ -1,113 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ConnectionUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, Mask; - -type - TConnectionForm = class(TForm) - NickLabel: TLabel; - NickEdit: TEdit; - ConnectionRadioGroup: TRadioGroup; - ServerRadioButton: TRadioButton; - ClientRadioButton: TRadioButton; - OKButton: TButton; - CancelButton: TButton; - IPEdit: TEdit; - IPLabel: TLabel; - PortLabel: TLabel; - PortEdit: TMaskEdit; - procedure FormShow(Sender: TObject); - procedure ServerRadioButtonClick(Sender: TObject); - procedure ClientRadioButtonClick(Sender: TObject); - procedure NickEditExit(Sender: TObject); - procedure FormKeyPress(Sender: TObject; var Key: Char); - procedure IPEditChange(Sender: TObject); - procedure PortEditExit(Sender: TObject); - public - function GetPort: word; - constructor Create(Owner: TComponent); reintroduce; - end; - -implementation - -{$R *.dfm} - -uses - GlobalsLocalUnit; - -procedure TConnectionForm.ServerRadioButtonClick(Sender: TObject); -begin - IPEdit.Enabled := FALSE; - OKButton.Enabled := TRUE; -end; - -procedure TConnectionForm.FormShow(Sender: TObject); -var - frmOwner: TForm; -begin - frmOwner := (Owner as TForm); - Left:= frmOwner.Left + (frmOwner.Width - Width) div 2; - Top:= frmOwner.Top + (frmOwner.Height - Height) div 2; -end; - -procedure TConnectionForm.ClientRadioButtonClick(Sender: TObject); -begin - IPEdit.Enabled:= TRUE; - if IPEdit.Text <> '' then OKButton.Enabled:= TRUE - else OKButton.Enabled:= FALSE; -end; - -procedure TConnectionForm.PortEditExit(Sender: TObject); -begin - PortEdit.Text := IntToStr(GetPort); -end; - -procedure TConnectionForm.NickEditExit(Sender: TObject); -begin - if NickEdit.Text = '' then NickEdit.Text:= 'NN'; -end; - -procedure TConnectionForm.FormKeyPress(Sender: TObject; var Key: Char); -begin - if Key = #13 then ModalResult:= mrOk; -end; - -procedure TConnectionForm.IPEditChange(Sender: TObject); -begin - if IPEdit.Text <> '' then OKButton.Enabled:= TRUE - else OKButton.Enabled:= FALSE; -end; - -constructor TConnectionForm.Create(Owner: TComponent); -begin - FormStyle := (Owner as TForm).FormStyle; - inherited; - PortEdit.Text := IntToStr(DEFAULT_PORT); -end; - -function TConnectionForm.GetPort: word; -var - port: integer; -begin - try - port := StrToInt(Trim(PortEdit.Text)); - if (port > 0) and (port <= $FFFF) then - Result := port - else - Result := DEFAULT_PORT - except - on EConvertError do - Result := DEFAULT_PORT; - end; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/ContinueUnit.dfm b/plugins/!NotAdopted/Chess4Net/ContinueUnit.dfm deleted file mode 100644 index f2e442ef9e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ContinueUnit.dfm +++ /dev/null @@ -1,40 +0,0 @@ -object ContinueForm: TContinueForm - Left = 649 - Top = 305 - BorderStyle = bsDialog - ClientHeight = 75 - ClientWidth = 210 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnClose = FormClose - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object ContinueLabel: TTntLabel - Left = 0 - Top = 12 - Width = 209 - Height = 13 - Alignment = taCenter - AutoSize = False - Caption = 'Press button to continue the game.' - end - object ContinueButton: TTntButton - Left = 67 - Top = 38 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Continue' - Default = True - ModalResult = 1 - TabOrder = 0 - OnClick = ContinueButtonClick - end -end diff --git a/plugins/!NotAdopted/Chess4Net/ContinueUnit.pas b/plugins/!NotAdopted/Chess4Net/ContinueUnit.pas deleted file mode 100644 index d6a38a662f..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ContinueUnit.pas +++ /dev/null @@ -1,117 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ContinueUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - {Dialogs, }ExtCtrls, StdCtrls, TntStdCtrls, - DialogUnit, ModalForm; - -type - TContinueHandler = procedure of object; - - TContinueForm = class(TModalForm) - ContinueButton: TTntButton; - ContinueLabel: TTntLabel; - procedure ContinueButtonClick(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure FormShow(Sender: TObject); - procedure FormCreate(Sender: TObject); - private -// dlgOwner: TDialogs; - ContinueHandler: TContinueHandler; - shuted: boolean; - procedure FLocalize; - protected - function GetModalID: TModalFormID; override; - public - procedure Shut; - constructor Create(Owner: TForm; h: TContinueHandler = nil); reintroduce; overload; -// constructor Create(dlgOwner: TDialogs; h: TContinueHandler); reintroduce; overload; - end; - -implementation - -{$R *.dfm} - -uses - GlobalsUnit, LocalizerUnit; - -//////////////////////////////////////////////////////////////////////////////// -// TContinueForm - -procedure TContinueForm.ContinueButtonClick(Sender: TObject); -begin - Close; -end; - - -procedure TContinueForm.FormShow(Sender: TObject); -var - frmOwner: TForm; -begin - frmOwner := (Owner as TForm); - Left:= frmOwner.Left + (frmOwner.Width - Width) div 2; - Top:= frmOwner.Top + (frmOwner.Height - Height) div 2; -end; - - -constructor TContinueForm.Create(Owner: TForm; h: TContinueHandler = nil); -begin - self.FormStyle := Owner.FormStyle; - inherited Create(Owner); - shuted := FALSE; - ContinueHandler := h; -end; - - -procedure TContinueForm.FormClose(Sender: TObject; - var Action: TCloseAction); -begin - if not shuted then - begin - ModalResult := ContinueButton.ModalResult; - if Assigned(ContinueHandler) then - ContinueHandler; - end - else - ModalResult := mrNone; -end; - - -procedure TContinueForm.Shut; -begin - shuted:= TRUE; - Close; -end; - - -function TContinueForm.GetModalID: TModalFormID; -begin - Result := mfContinue; -end; - - -procedure TContinueForm.FormCreate(Sender: TObject); -begin - Caption := DIALOG_CAPTION; - FLocalize; -end; - - -procedure TContinueForm.FLocalize; -begin - with TLocalizer.Instance do - begin - ContinueLabel.Caption := GetLabel(22); - ContinueButton.Caption := GetLabel(23); - end; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/DialogUnit.pas b/plugins/!NotAdopted/Chess4Net/DialogUnit.pas deleted file mode 100644 index a8eeeb006e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/DialogUnit.pas +++ /dev/null @@ -1,217 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit DialogUnit; - -interface - -uses - Forms, Dialogs, Controls, Classes, Windows, - ModalForm; - -type - TDialogForm = class(TModalForm) - procedure FormShow(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure ButtonClick(Sender: TObject); - private - m_ModID: TModalFormID; - m_MsgDlg: TForm; - function GetCaption: TCaption; - procedure SetCaption(capt: TCaption); - protected - function GetHandle: hWnd; override; - function GetEnabled_: boolean; override; - procedure SetEnabled_(flag: boolean); override; - function GetLeft_: integer; override; - procedure SetLeft_(x: integer); override; - function GetTop_: integer; override; - procedure SetTop_(y: integer); override; - function GetModalID: TModalFormID; override; - function RGetModalResult: TModalResult; override; - procedure RSetModalResult(Value: TModalResult); override; - - property MsgDlg: TForm read m_MsgDlg; - public - constructor Create(frmOwner: TForm; const wstrMsg: WideString; - DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; modID: TModalFormID = mfNone; - msgDlgHandler: TModalFormHandler = nil; bStayOnTopIfNoOwner: boolean = FALSE); overload; - constructor Create(dlgOwner: TDialogs; const wstrMsg: WideString; - DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; modID: TModalFormID; - msgDlgHandler: TModalFormHandler; bStayOnTopIfNoOwner: boolean = FALSE); overload; - destructor Destroy; override; - - procedure Show; override; - procedure Close; override; - function ShowModal: integer; reintroduce; - procedure SetFocus; override; - - property Caption: TCaption read GetCaption write SetCaption; - end; - -implementation - -uses - StdCtrls, SysUtils, MessageDialogUnit; - -constructor TDialogForm.Create(frmOwner: TForm; const wstrMsg: WideString; - DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; modID: TModalFormID = mfNone; - msgDlgHandler: TModalFormHandler = nil; bStayOnTopIfNoOwner: boolean = FALSE); -var - i: integer; -begin - inherited CreateNew(frmOwner); - - m_ModID := modID; - RHandler := msgDlgHandler; - - m_MsgDlg := MessageDialogUnit.CreateMessageDialog(frmOwner, wstrMsg, DlgType, Buttons, - bStayOnTopIfNoOwner); - // msgDlg.FormStyle := frmOwner.FormStyle; - m_MsgDlg.OnShow := FormShow; - m_MsgDlg.OnClose := FormClose; - - for i := 0 to (m_MsgDlg.ComponentCount - 1) do - begin - if (m_MsgDlg.Components[i] is TButton) then - TButton(m_MsgDlg.Components[i]).OnClick := ButtonClick; - end; -end; - - -constructor TDialogForm.Create(dlgOwner: TDialogs; const wstrMsg: WideString; - DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; modID: TModalFormID; - msgDlgHandler: TModalFormHandler; bStayOnTopIfNoOwner: boolean = FALSE); -begin - self.dlgOwner := dlgOwner; - Create((dlgOwner.Owner as TForm), wstrMsg, DlgType, Buttons, modID, msgDlgHandler, bStayOnTopIfNoOwner); -end; - - -procedure TDialogForm.FormShow(Sender: TObject); -begin - inherited FormShow(m_MsgDlg); -end; - - -procedure TDialogForm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - if Assigned(dlgOwner) then - dlgOwner.UnsetShowing(self); - if (fsModal in m_MsgDlg.FormState) then - exit; - if (Assigned(RHandler)) then - RHandler(self, GetModalID); -// Action := caFree; - Release; -end; - - -procedure TDialogForm.Show; -begin - m_MsgDlg.Show; -end; - - -procedure TDialogForm.Close; -begin - m_MsgDlg.Close; -end; - - -function TDialogForm.ShowModal: integer; -begin - Result := m_MsgDlg.ShowModal; -end; - -procedure TDialogForm.ButtonClick(Sender: TObject); -begin - if not (fsModal in m_MsgDlg.FormState) then - m_MsgDlg.Close; -end; - -destructor TDialogForm.Destroy; -begin - m_MsgDlg.Release; - inherited; -end; - -function TDialogForm.GetCaption: TCaption; -begin - Result := m_MsgDlg.Caption; -end; - -procedure TDialogForm.SetCaption(capt: TCaption); -begin - m_MsgDlg.Caption := capt; -end; - -function TDialogForm.GetHandle: hWnd; -begin - Result := m_MsgDlg.Handle; -end; - - -function TDialogForm.GetEnabled_: boolean; -begin - Result := m_MsgDlg.Enabled; -end; - - -procedure TDialogForm.SetEnabled_(flag: boolean); -begin - m_MsgDlg.Enabled := flag; -end; - - -procedure TDialogForm.SetFocus; -begin - m_MsgDlg.SetFocus; - m_MsgDlg.Show; -end; - - -function TDialogForm.GetLeft_: integer; -begin - Result := m_MsgDlg.Left; -end; - - -procedure TDialogForm.SetLeft_(x: integer); -begin - m_MsgDlg.Left := x; -end; - - -function TDialogForm.GetTop_: integer; -begin - Result := m_MsgDlg.Top; -end; - - -procedure TDialogForm.SetTop_(y: integer); -begin - m_MsgDlg.Top := y; -end; - - -function TDialogForm.GetModalID: TModalFormID; -begin - Result := m_ModID; -end; - -function TDialogForm.RGetModalResult: TModalResult; -begin - Result := m_MsgDlg.ModalResult; -end; - - -procedure TDialogForm.RSetModalResult(Value: TModalResult); -begin - m_MsgDlg.ModalResult := Value; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/DontShowMessageDlgUnit.pas b/plugins/!NotAdopted/Chess4Net/DontShowMessageDlgUnit.pas deleted file mode 100644 index 357b56c8be..0000000000 --- a/plugins/!NotAdopted/Chess4Net/DontShowMessageDlgUnit.pas +++ /dev/null @@ -1,82 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit DontShowMessageDlgUnit; - -interface - -uses - Forms, StdCtrls, - // - DialogUnit, ModalForm; - -type - TDontShowMessageDlg = class(TDialogForm) - private - m_DontShowCheckBox: TCheckBox; - function FGetDontShow: boolean; - procedure FSetDontShow(bValue: boolean); - protected - function GetModalID: TModalFormID; override; - public - class function Create(const ADialogs: TDialogs; const wstrMsg: WideString): TDontShowMessageDlg; overload; - constructor Create(Owner: TForm; modHandler: TModalFormHandler = nil); overload; override; - property DontShow: boolean read FGetDontShow write FSetDontShow; - end; - -implementation - -uses - Dialogs, Controls; - -//////////////////////////////////////////////////////////////////////////////// -// TDontShowMessageDlg - -var - g_wstrMsg: WideString; - -constructor TDontShowMessageDlg.Create(Owner: TForm; modHandler: TModalFormHandler = nil); -begin - inherited Create(Owner, g_wstrMsg, mtInformation, [mbOK], GetModalID, modHandler); - - MsgDlg.Height := MsgDlg.Height + 10; - - m_DontShowCheckBox := TCheckBox.Create(MsgDlg); - m_DontShowCheckBox.Parent := MsgDlg; - m_DontShowCheckBox.Caption := 'Don''t Show'; // TODO: Localize - - m_DontShowCheckBox.Left := 10; - m_DontShowCheckBox.Top := MsgDlg.ClientHeight - m_DontShowCheckBox.Height - 5; -end; - - -class function TDontShowMessageDlg.Create(const ADialogs: TDialogs; - const wstrMsg: WideString): TDontShowMessageDlg; -begin - g_wstrMsg := wstrMsg; - Result := ADialogs.CreateDialog(TDontShowMessageDlg) as TDontShowMessageDlg; - g_wstrMsg := ''; -end; - - -function TDontShowMessageDlg.FGetDontShow: boolean; -begin - Result := m_DontShowCheckBox.Checked; -end; - - -procedure TDontShowMessageDlg.FSetDontShow(bValue: boolean); -begin - m_DontShowCheckBox.Checked := bValue; -end; - - -function TDontShowMessageDlg.GetModalID: TModalFormID; -begin - Result := mfDontShowDlg; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.dfm b/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.dfm deleted file mode 100644 index 530e34cf18..0000000000 --- a/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.dfm +++ /dev/null @@ -1,59 +0,0 @@ -object DraggedFigure: TDraggedFigure - Left = 347 - Top = 288 - Cursor = crHandPoint - BorderIcons = [] - BorderStyle = bsNone - ClientHeight = 40 - ClientWidth = 104 - Color = clBlack - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Image1: TImage - Left = 0 - Top = 0 - Width = 40 - Height = 40 - Picture.Data = { - 07544269746D617096030000424D960300000000000076000000280000002800 - 0000280000000100040000000000200300000000000000000000100000000000 - 000000000000000080000080000000808000800000008000800080800000C0C0 - C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF - FF00666666666666666666666666666666666666666666666666666666666666 - 6666666666666666666666666666666666666666666666666666666666666666 - 6666666660000000000000000000000006666666666666666000000000000000 - 000000000666666666666666600FFFFFFFFFFFFFFFFFFFF00666666666666666 - 6600FFFFFFFFFFFFFFFFFFF006666666666666666600FFFFFFFFFFFFFFFFFFF0 - 066666666666666666600FFFFFFFFFFFFFFFFFF00666666666666666666000FF - FFFFFFFFFFFFFFF006666666666660066666000FFFFFFFFFFFFFFFF006666666 - 6600000066666000FFFFFFFFFFFFFFF00666666660000000066666000FFFFFFF - FFFFFFF006666666000F00F0066666600FFFFFFFFFFFFF006666666600FFFFFF - 0066666000FFFFFFFFFFFF006666666600F00FFFF000666600FFFFFFFFFFFF00 - 6666666600F00FFFFF00006600FFFFFFFFFFFF0066666666600FFFFFFFFF0000 - F00FFFFFFFFFFF0066666666600FFFFFFFFFFF00000FFFFFFFFFF00666666666 - 6600FFFFFFFFFFFF000FFFFFFFFFF006666666666600FFFFFFFFFFFFF00FFFFF - FFFF00066666666666600FFFFFFFFFFFF00FFFFFFFFF00666666666666600FFF - FFFFFFFFFF00FFFFFFF0006666666666666600F0FFFFFFFFFF00FFFFFFF00666 - 66666666666600F00FFFFFFFFFFFFFFFFF00066666666666666600F000FFFFFF - FFFFFFFFFF006666666666666666600F000FFFFFFFFFFFFFF000666666666666 - 6666600FFFFFFFFFFFFFFFFF000666666666666666666600F00FFFFFFFFFFFF0 - 006666666666666666666600000FFFFF00FFF000066666666666666666666660 - 0F000FFF000000066666666666666666666666600FF000FF0000066666666666 - 6666666666666660000000F00666666666666666666666666666666000066000 - 0666666666666666666666666666660006666000666666666666666666666666 - 6666660066666606666666666666666666666666666666666666666666666666 - 6666666666666666666666666666666666666666666666666666666666666666 - 6666666666666666666666666666666666666666666666666666666666666666 - 6666} - Transparent = True - OnMouseDown = Image1MouseDown - end -end diff --git a/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.pas b/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.pas deleted file mode 100644 index 780e3bb840..0000000000 --- a/plugins/!NotAdopted/Chess4Net/DraggedFigureUnit.pas +++ /dev/null @@ -1,48 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit DraggedFigureUnit; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ExtCtrls; - -type - TDraggedFigure = class(TForm) - Image1: TImage; - procedure FormCreate(Sender: TObject); - procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - private - { Private declarations } - public - { Public declarations } - end; - -var - DraggedFigure: TDraggedFigure; - -implementation - -{$R *.dfm} - -procedure TDraggedFigure.FormCreate(Sender: TObject); -begin - ClientWidth:= 40; -end; - - - -procedure TDraggedFigure.Image1MouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -const SC_DRAGMOVE = $F012; -begin ReleaseCapture; - Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0 ); -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/Flag.bmp b/plugins/!NotAdopted/Chess4Net/Flag.bmp deleted file mode 100644 index 52360c210b..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Flag.bmp and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.dfm b/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.dfm deleted file mode 100644 index 33bbfcefee..0000000000 --- a/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.dfm +++ /dev/null @@ -1,166 +0,0 @@ -object GameChessBoard: TGameChessBoard - Left = 429 - Top = 209 - Width = 372 - Height = 421 - BorderIcons = [biSystemMenu] - Color = clBtnFace - TransparentColorValue = clBackground - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - KeyPreview = True - OldCreateOrder = False - OnActivate = FormActivate - OnCanResize = FormCanResize - OnClose = FormClose - OnCreate = FormCreate - OnDestroy = FormDestroy - OnKeyDown = FormKeyDown - DesignSize = ( - 356 - 385) - PixelsPerInch = 96 - TextHeight = 16 - object ChessBoardPanel: TPanel - Left = 0 - Top = 32 - Width = 354 - Height = 352 - Anchors = [akLeft, akTop, akRight, akBottom] - BevelOuter = bvNone - TabOrder = 1 - end - object TimePanel: TPanel - Left = 0 - Top = 0 - Width = 356 - Height = 33 - Align = alTop - BevelInner = bvLowered - TabOrder = 0 - OnResize = TimePanelResize - object WhitePanel: TPanel - Left = 8 - Top = 4 - Width = 145 - Height = 25 - BevelOuter = bvNone - TabOrder = 0 - DesignSize = ( - 145 - 25) - object WhiteTimeLabel: TLabel - Left = 71 - Top = 0 - Width = 68 - Height = 25 - Align = alLeft - AutoSize = False - Caption = '0:00:00' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - Layout = tlCenter - end - object WhiteFlagButton: TSpeedButton - Left = 115 - Top = 2 - Width = 23 - Height = 22 - Anchors = [akTop, akRight] - Glyph.Data = { - 66010000424D6601000000000000760000002800000014000000140000000100 - 040000000000F000000000000000000000001000000000000000000000000000 - 8000008000000080800080000000800080008080000080808000C0C0C0000000 - FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF - FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF - FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF83FFF - 0000FFFF99FFFFFFFFF33FFF0000FFFFF99FFFFFFF83FFFF0000FFFFF999FFFF - FF33FFFF0000F99999999FFFF33FFFFF0000FF99999999FF83FFFFFF0000FFF9 - 9999999F33FFFFFF0000FFFF999999983FFFFFFF0000FFFFFF9999993FFFFFFF - 0000FFFFFF999999FFFFFFFF0000FFFFFFF9999FFFFFFFFF0000FFFFFFF9999F - FFFFFFFF0000FFFFFFFF99FFFFFFFFFF0000FFFFFFFF9FFFFFFFFFFF0000FFFF - FFFFFFFFFFFFFFFF0000} - Visible = False - OnClick = FlagButtonClick - end - object WhiteLabel: TTntLabel - Left = 0 - Top = 0 - Width = 71 - Height = 25 - Align = alLeft - Caption = 'White ' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - end - object BlackPanel: TPanel - Left = 184 - Top = 4 - Width = 145 - Height = 25 - BevelOuter = bvNone - TabOrder = 1 - DesignSize = ( - 145 - 25) - object BlackTimeLabel: TLabel - Left = 68 - Top = 0 - Width = 68 - Height = 25 - Align = alLeft - AutoSize = False - Caption = '0:00:00' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - Layout = tlCenter - end - object BlackLabel: TTntLabel - Left = 0 - Top = 0 - Width = 68 - Height = 25 - Align = alLeft - Caption = 'Black ' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object BlackFlagButton: TSpeedButton - Left = 115 - Top = 2 - Width = 23 - Height = 22 - Anchors = [akTop, akRight] - Visible = False - OnClick = FlagButtonClick - end - end - end - object GameTimer: TTimer - Enabled = False - Interval = 100 - OnTimer = GameTimerTimer - Left = 8 - Top = 40 - end -end diff --git a/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.pas b/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.pas deleted file mode 100644 index 779d90f309..0000000000 --- a/plugins/!NotAdopted/Chess4Net/GameChessBoardUnit.pas +++ /dev/null @@ -1,849 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit GameChessBoardUnit; - -interface - -uses - ExtCtrls, TntStdCtrls, Buttons, Controls, StdCtrls, Classes, Forms, TntForms, - Graphics, Messages, - // Chess4net - ChessBoardHeaderUnit, ChessBoardUnit, ChessRulesEngine, - LocalizerUnit, PosBaseChessBoardLayerUnit; - -type - TGameChessBoardEvent = - (cbeMoved, cbeMate, cbeStaleMate, cbeInsuffMaterial, cbeKeyPressed, - cbeClockSwitched, cbeTimeOut, cbeExit, cbeMenu, cbeActivate, cbeFormMoving, - cbeRefreshAll); - // It's possible to add new events. cbeRefreshAll signals that global options had been changed - - TGameChessBoardHandler = procedure(e: TGameChessBoardEvent; - d1: pointer = nil; d2: pointer = nil) of object; - -{$IFDEF THREADED_CHESSCLOCK} - TGameChessBoard = class; - - TTimeLabelThread = class(TThread) - private - ChessBoard: TGameChessBoard; - player_time: array[TFigureColor] of TDateTime; - protected - procedure Execute; override; - public - WhiteTime, BlackTime: string; - constructor Create(ChessBoard: TGameChessBoard); - end; -{$ENDIF} - - TGameChessBoard = class(TTntForm, ILocalizable) - TimePanel: TPanel; - WhiteLabel: TTntLabel; - WhiteTimeLabel: TLabel; - BlackLabel: TTntLabel; - BlackTimeLabel: TLabel; - GameTimer: TTimer; - WhiteFlagButton: TSpeedButton; - BlackFlagButton: TSpeedButton; - WhitePanel: TPanel; - BlackPanel: TPanel; - ChessBoardPanel: TPanel; - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure GameTimerTimer(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure FormKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); - procedure FormActivate(Sender: TObject); - procedure FlagButtonClick(Sender: TObject); - procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; - var Resize: Boolean); - procedure TimePanelResize(Sender: TObject); - - private - m_ChessBoard: TChessBoard; - m_PosBaseChessBoardLayer: TPosBaseChessBoardLayer; - - FHandler: TGameChessBoardHandler; - - auto_flag: boolean; // èíäèêàòîð àâòîôëàãà - player_time: array[TFigureColor] of TDateTime; // âðåìÿ áåëûõ è ÷¸ðíûõ - past_time: TDateTime; // âðåìÿ íà÷àëà îáäóìûâàíèÿ õîäà - unlimited_var: array[TFigureColor] of boolean; // ïàðòèÿ áåç âðåìåííîãî êîíòðîëÿ - clock_color: TFigureColor; // öâåò àíèìèðóåìîé ôèãóðû - - shuted: boolean; // èíäèêàòîð âíåøíåãî çàêðûòèÿ îêíà - - // Resizing - m_ResizingType: (rtNo, rtHoriz, rtVert); -// m_iDeltaWidthHeight: integer; - - m_iTimePanelInitialWidth: integer; - m_iWhitePanelInitialLeft, m_iBlackPanelInitialLeft: integer; - m_iWhitePanelInitialWidth, m_iBlackPanelInitialWidth: integer; - m_TimeFont: TFont; - - m_bFlashOnMove: boolean; // flag for flashing window on icoming move - -{$IFDEF THREADED_CHESSCLOCK} - TimeLabelThread: TTimeLabelThread; // íèòü èñïîëüçóåòñÿ äëÿ áîðüáû ñ ëàãîì â Ìèðàíäå -{$ENDIF} - - function FGetMode: TMode; - procedure FSetMode(const Value: TMode); - procedure ShowTime(const c: TFigureColor); - function FGetPlayerColor: TFigureColor; - procedure FSetPlayerColor(const Value: TFigureColor); - function FGetFlipped: boolean; - procedure FSetFlipped(bValue: boolean); - function FGetTime(color: TFigureColor): TDateTime; - procedure FSetTime(color: TFigureColor; const tm: TDateTime); - procedure FSetUnlimited(color: TFigureColor; const unl: boolean); - function FGetUnlimited(color: TFigureColor): boolean; - function FGetLastMoveHilighted: boolean; - procedure FSetLastMoveHilighted(bValue: boolean); - function FGetCoordinatesShown: boolean; - procedure FSetCoordinatesShown(bValue: boolean); - function GetStayOnTop: boolean; - procedure FSetStayOnTop(onTop: boolean); - procedure FSetAutoFlag(auto_flag: boolean); - procedure FFlashWindow; - function FGetAnimation: TAnimation; - procedure FSetAnimation(const Value: TAnimation); - function FGetViewGaming: boolean; - procedure FSetViewGaming(bValue: boolean); - - // Localization - procedure ILocalizable.Localize = FLocalize; - procedure FLocalize; - - procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; - procedure WMSizing(var Msg: TMessage); message WM_SIZING; - - function FGetPositionColor: TFigureColor; - - function FGetTrainingMode: boolean; - procedure FSetTrainingMode(bValue: boolean); - - function FGetUseUserBase: boolean; - procedure FSetUseUserBase(bValue: boolean); - - procedure FChessBoardHandler(e: TChessBoardEvent; d1: pointer = nil; - d2: pointer = nil); - procedure FDoHandler(e: TGameChessBoardEvent; d1: pointer = nil; - d2: pointer = nil); - - public - constructor Create(Owner: TComponent; AHandler: TGameChessBoardHandler = nil; - const strPosBaseName: string = ''); reintroduce; - - procedure FCreateChessBoard(const strPosBaseName: string); - procedure FDestroyChessBoard; - - procedure TakeBack; // âçÿòèå õîäà îáðàòíî - procedure SwitchClock(clock_color: TFigureColor); - procedure InitPosition; - procedure PPRandom; - procedure StopClock; - - procedure ResetMoveList; - function SetPosition(const strPosition: string): boolean; - function GetPosition: string; - function NMoveDone: integer; // êîëè÷åñòâî ñäåëàííûõ õîäîâ - function DoMove(const strMove: string): boolean; - procedure Shut; - - procedure WriteGameToBase(vGameResult: TGameResult); - procedure SetExternalBase(const strExtPosBaseName: string); - procedure UnsetExternalBase; - - property Unlimited[color: TFigureColor]: boolean read FGetUnlimited write FSetUnlimited; - property Time[color: TFigureColor]: TDateTime read FGetTime write FSetTime; - property PlayerColor: TFigureColor read FGetPlayerColor write FSetPlayerColor; - property PositionColor: TFigureColor read FGetPositionColor; // Whos move it is in the current position - property ClockColor: TFigureColor read clock_color; - property Mode: TMode read FGetMode write FSetMode; - property CoordinatesShown: boolean read FGetCoordinatesShown write FSetCoordinatesShown; - - property Flipped: boolean read FGetFlipped write FSetFlipped; - property LastMoveHilighted: boolean read FGetLastMoveHilighted write FSetLastMoveHilighted; - property FlashOnMove: boolean read m_bFlashOnMove write m_bFlashOnMove; - property StayOnTop: boolean read GetStayOnTop write FSetStayOnTop; - property AutoFlag: boolean read auto_flag write FSetAutoFlag; - property Animation: TAnimation read FGetAnimation write FSetAnimation; - property ViewGaming: boolean read FGetViewGaming write FSetViewGaming; - - property pTrainingMode: boolean read FGetTrainingMode write FSetTrainingMode; - property pUseUserBase: boolean read FGetUseUserBase write FSetUseUserBase; - end; - -implementation - -{$J+} - -{$R *.dfm} - -uses - SysUtils, Types, Windows, - // - ChessClockUnit; - -const - TIME_COLOR = clBlack; - - ZEITNOT_COLOR = clMaroon; -// CHEAT_TIME_CONST = 1.5; // > 1 - WHITE_LONG_LABEL: WideString = 'White '; - WHITE_MEDIUM_LABEL: WideString = 'White '; - WHITE_SHORT_LABEL: WideString = 'W '; - BLACK_LONG_LABEL: WideString = 'Black '; - BLACK_MEDIUM_LABEL: WideString = 'Black '; - BLACK_SHORT_LABEL: WideString = 'B '; - -//////////////////////////////////////////////////////////////////////////////// -// TTimeLabelThread - -{$IFDEF THREADED_CHESSCLOCK} -procedure TTimeLabelThread.Execute; -begin - while ChessBoard.GameTimer.Enabled do - begin - if self.player_time[fcWhite] <> ChessBoard.player_time[fcWhite] then - ChessBoard.ShowTime(fcWhite); - if self.player_time[fcBlack] <> ChessBoard.player_time[fcBlack] then - ChessBoard.ShowTime(fcBlack); - Sleep(ChessBoard.GameTimer.Interval div 2); - end; - ChessBoard.TimeLabelThread := nil; -end; - - -constructor TTimeLabelThread.Create(ChessBoard: TGameChessBoard); -begin - self.ChessBoard := ChessBoard; - self.player_time[fcWhite] := ChessBoard.player_time[fcWhite]; - self.player_time[fcBlack] := ChessBoard.player_time[fcBlack]; - - inherited Create(TRUE); -//Priority := tpNormal; - FreeOnTerminate := TRUE; - Resume; -end; -{$ENDIF} - -//////////////////////////////////////////////////////////////////////////////// -// TGameChessBoard - -function TGameChessBoard.DoMove(const strMove: string): boolean; -begin - Result := m_ChessBoard.DoMove(strMove); - if (Result) then - begin - if (m_bFlashOnMove and (Mode = mGame)) then - FFlashWindow; - end; -end; - - -procedure TGameChessBoard.ShowTime(const c: TFigureColor); -var - time_label: TLabel; -begin - if c = fcWhite then time_label:= WhiteTimeLabel - else time_label:= BlackTimeLabel; - - if unlimited_var[c] then - begin - time_label.Caption:= ''; - exit; - end; - - if (TChessClock.IsZeitnot(player_time[c])) then - time_label.Font.Color := ZEITNOT_COLOR - else - time_label.Font.Color := TIME_COLOR; - - time_label.Caption := TChessClock.ConvertToStr(player_time[c]); -end; - - -procedure TGameChessBoard.ResetMoveList; -begin - m_ChessBoard.ResetMoveList; -end; - - -function TGameChessBoard.SetPosition(const strPosition: string): boolean; -begin - Result := m_ChessBoard.SetPosition(strPosition); - if (Result) then - clock_color := PositionColor; -end; - - -function TGameChessBoard.GetPosition: string; -begin - Result := m_ChessBoard.GetPosition; -end; - - -procedure TGameChessBoard.FormCreate(Sender: TObject); -begin - m_iTimePanelInitialWidth := TimePanel.Width; - m_iWhitePanelInitialLeft := WhitePanel.Left; - m_iWhitePanelInitialWidth := WhitePanel.Width; - m_iBlackPanelInitialLeft := BlackPanel.Left; - m_iBlackPanelInitialWidth := BlackPanel.Width; - - m_TimeFont := TFont.Create; - m_TimeFont.Assign(WhiteTimeLabel.Font); - - BlackFlagButton.Glyph := WhiteFlagButton.Glyph; // For size minimization - - TLocalizer.Instance.AddSubscriber(self); - FLocalize; - - // Clock initialization - FSetUnlimited(fcWhite, TRUE); - FSetUnlimited(fcBlack, TRUE); -end; - - -constructor TGameChessBoard.Create(Owner: TComponent; - AHandler: TGameChessBoardHandler = nil; const strPosBaseName: string = ''); -begin - FHandler := AHandler; - inherited Create(Owner); - FCreateChessBoard(strPosBaseName); -end; - - -procedure TGameChessBoard.FCreateChessBoard(const strPosBaseName: string); -begin - m_ChessBoard := TChessBoard.Create(self, FChessBoardHandler); - m_PosBaseChessBoardLayer := TPosBaseChessBoardLayer.Create(strPosBaseName); - - m_ChessBoard.AddLayer(m_PosBaseChessBoardLayer); - - with ChessBoardPanel do - SetBounds(Left, Top, m_ChessBoard.ClientWidth, m_ChessBoard.ClientHeight); - - m_ChessBoard.BorderStyle := bsNone; - m_ChessBoard.Align := alClient; - m_ChessBoard.Parent := ChessBoardPanel; - m_ChessBoard.Visible := TRUE; - - InitPosition; -end; - - -procedure TGameChessBoard.FDestroyChessBoard; -begin - m_ChessBoard.RemoveLayer(m_PosBaseChessBoardLayer); // m_ChessBoard is destroyed by its parent - FreeAndNil(m_PosBaseChessBoardLayer); -end; - - -procedure TGameChessBoard.FormDestroy(Sender: TObject); -begin - TLocalizer.Instance.DeleteSubscriber(self); - - m_TimeFont.Free; - - FDestroyChessBoard; -end; - - -procedure TGameChessBoard.InitPosition; -begin - m_ChessBoard.InitPosition; -end; - - -procedure TGameChessBoard.FSetMode(const Value: TMode); -begin - m_ChessBoard.Mode := Value; - if (Value <> mGame) then - begin - WhiteFlagButton.Visible := FALSE; - BlackFlagButton.Visible := FALSE; - end; -end; - - -function TGameChessBoard.FGetMode: TMode; -begin - Result := m_ChessBoard.Mode; -end; - - -procedure TGameChessBoard.FSetTime(color: TFigureColor; const tm: TDateTime); -begin - if (not Unlimited[color]) then - begin - if ((not auto_flag) and (not ViewGaming)) then - begin - case color of - fcWhite: - WhiteFlagButton.Visible := ((PlayerColor = fcBlack) and (tm = 0.0)); - fcBlack: - BlackFlagButton.Visible := ((PlayerColor = fcWhite) and (tm = 0.0)); - end; - end; - player_time[color] := tm; - ShowTime(color); - end; -end; - - -function TGameChessBoard.FGetTime(color: TFigureColor): TDateTime; -begin - Result:= player_time[color]; -end; - - -procedure TGameChessBoard.GameTimerTimer(Sender: TObject); -begin - if unlimited_var[clock_color] then - begin - GameTimer.Enabled := FALSE; - exit; - end; - // TODO: cheating check - player_time[clock_color] := player_time[clock_color] - (Now - past_time); - if player_time[clock_color] <= 0.0 then - begin - player_time[clock_color] := 0.0; - ShowTime(clock_color); - if ((not auto_flag) and (PlayerColor <> clock_color) and (not ViewGaming)) then - begin - case clock_color of - fcWhite: - WhiteFlagButton.Visible := TRUE; - fcBlack: - BlackFlagButton.Visible := TRUE; - end; - end; - if ((PlayerColor <> clock_color) and (Mode = mGame) and (auto_flag)) then - FDoHandler(cbeTimeOut, self); - GameTimer.Enabled := FALSE; - end; -{$IFNDEF THREADED_CHESSCLOCK} - ShowTime(clock_color); -{$ENDIF} - - past_time:= Now; -end; - - -procedure TGameChessBoard.FSetUnlimited(color: TFigureColor; const unl: boolean); -begin - unlimited_var[color]:= unl; - ShowTime(color); -end; - - -function TGameChessBoard.FGetUnlimited(color: TFigureColor): boolean; -begin - Result := unlimited_var[color]; -end; - - -procedure TGameChessBoard.SwitchClock(clock_color: TFigureColor); -begin - self.clock_color := clock_color; - if (not GameTimer.Enabled) then - begin - past_time := Now; - GameTimer.Enabled := TRUE; - end; - if (Mode = mGame) then - FDoHandler(cbeClockSwitched, self); - ShowTime(clock_color); - -{$IFDEF THREADED_CHESSCLOCK} - if (not Assigned(TimeLabelThread)) then - TimeLabelThread := TTimeLabelThread.Create(self); -{$ENDIF} -end; - - -procedure TGameChessBoard.FSetPlayerColor(const Value: TFigureColor); -begin - m_ChessBoard.PlayerColor := Value; -end; - - -function TGameChessBoard.FGetPlayerColor: TFigureColor; -begin - Result := m_ChessBoard.PlayerColor; -end; - - -procedure TGameChessBoard.StopClock; -begin - GameTimer.Enabled := FALSE; - WhiteFlagButton.Visible := FALSE; - BlackFlagButton.Visible := FALSE; -end; - - -procedure TGameChessBoard.FormCanResize(Sender: TObject; var NewWidth, - NewHeight: Integer; var Resize: Boolean); -var - iNewChessBoardWidth, iNewChessBoardHeight: integer; -begin - Resize := (m_ResizingType <> rtNo); - if (not Resize) then - exit; - - iNewChessBoardWidth := m_ChessBoard.Width + (NewWidth - self.Width); - iNewChessBoardHeight := m_ChessBoard.Height + (NewHeight - self.Height); - - m_ChessBoard.FormCanResize(self, iNewChessBoardWidth, iNewChessBoardHeight, Resize); - if (Resize) then - begin - NewWidth := self.Width + (iNewChessBoardWidth - m_ChessBoard.Width); - NewHeight := self.Height + (iNewChessBoardHeight - m_ChessBoard.Height); - end; -end; - -procedure TGameChessBoard.FormClose(Sender: TObject; var Action: TCloseAction); -begin - if (not shuted) then - begin - FDoHandler(cbeExit, self); - Action:= caNone; - end - else - shuted := FALSE; -end; - - -procedure TGameChessBoard.Shut; -begin - shuted:= TRUE; - Close; -end; - - -procedure TGameChessBoard.PPRandom; -begin - m_ChessBoard.PPRandom; -end; - - -procedure TGameChessBoard.TakeBack; -begin - m_ChessBoard.TakeBack; -end; - - -function TGameChessBoard.FGetLastMoveHilighted: boolean; -begin - Result := m_ChessBoard.LastMoveHilighted; -end; - - -procedure TGameChessBoard.FSetLastMoveHilighted(bValue: boolean); -begin - m_ChessBoard.LastMoveHilighted := bValue; -end; - - -procedure TGameChessBoard.FSetCoordinatesShown(bValue: boolean); -begin - m_ChessBoard.CoordinatesShown := bValue; -end; - - -function TGameChessBoard.FGetCoordinatesShown: boolean; -begin - Result := m_ChessBoard.CoordinatesShown; -end; - - -function TGameChessBoard.NMoveDone: integer; -begin - Result := m_ChessBoard.NMoveDone; -end; - - -procedure TGameChessBoard.FormKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); -begin - FDoHandler(cbeKeyPressed, Pointer(Key), self); -end; - - -function TGameChessBoard.GetStayOnTop: boolean; -begin - Result := (self.FormStyle = fsStayOnTop); -end; - - -procedure TGameChessBoard.FSetStayOnTop(onTop: boolean); -begin - if (onTop) then - self.FormStyle := fsStayOnTop - else - self.FormStyle := fsNormal; -end; - - -procedure TGameChessBoard.FormActivate(Sender: TObject); -begin - FDoHandler(cbeActivate, self); -end; - - -procedure TGameChessBoard.WMMoving(var Msg: TWMMoving); -begin - // TODO: it's possible to handle if form is outside of the screen - FDoHandler(cbeFormMoving, Pointer(Msg.DragRect.Left - Left), Pointer(Msg.DragRect.Top - Top)); - inherited; -end; - - -procedure TGameChessBoard.WMSizing(var Msg: TMessage); -begin - m_ChessBoard.Perform(Msg.Msg, Msg.WParam, Msg.LParam); - - case Msg.WParam of - WMSZ_RIGHT, WMSZ_LEFT, WMSZ_BOTTOMRIGHT, WMSZ_TOPLEFT: - m_ResizingType := rtHoriz; - WMSZ_BOTTOM, WMSZ_TOP: - m_ResizingType := rtVert; - else - begin - m_ResizingType := rtNo; - PRect(Msg.LParam).Left := Left; - PRect(Msg.LParam).Top := Top; - end; - end; // case -end; - - -function TGameChessBoard.FGetPositionColor: TFigureColor; -begin - Result := m_ChessBoard.PositionColor; -end; - - -procedure TGameChessBoard.FlagButtonClick(Sender: TObject); -begin - if (Mode = mGame) then - FDoHandler(cbeTimeOut, self); -end; - - -procedure TGameChessBoard.FSetAutoFlag(auto_flag: boolean); -begin - self.auto_flag := auto_flag; - if (auto_flag) then - begin - WhiteFlagButton.Visible := FALSE; - BlackFlagButton.Visible := FALSE; - end; -end; - - -procedure TGameChessBoard.TimePanelResize(Sender: TObject); -var - rRatio: real; -begin - // Adjust panels on TimePanel - rRatio := TimePanel.Width / m_iTimePanelInitialWidth; - WhitePanel.Left := Round(rRatio * m_iWhitePanelInitialLeft); - WhitePanel.Width := m_iWhitePanelInitialWidth; - BlackPanel.Left := Round(rRatio * m_iBlackPanelInitialLeft); - BlackPanel.Width := m_iBlackPanelInitialWidth; - - - WhiteTimeLabel.Font.Assign(m_TimeFont); - BlackTimeLabel.Font.Assign(m_TimeFont); - - if (WhitePanel.Left + WhitePanel.Width < BlackPanel.Left) then - begin - WhiteLabel.Caption := WHITE_LONG_LABEL; - BlackLabel.Caption := BLACK_LONG_LABEL; - end - else - begin - WhitePanel.Left := 4; - WhitePanel.Width := TimePanel.Width div 2; - BlackPanel.Left := TimePanel.Width div 2; - BlackPanel.Width := TimePanel.Width div 2 - 4; - - WhiteLabel.Caption := WHITE_MEDIUM_LABEL; - BlackLabel.Caption := BLACK_MEDIUM_LABEL; - end; - - // Adjust color labels - if ((WhiteTimeLabel.Left + WhiteTimeLabel.Width > WhitePanel.Width) or - (BlackTimeLabel.Left + BlackTimeLabel.Width > BlackPanel.Width)) then - begin - WhiteLabel.Caption := WHITE_MEDIUM_LABEL; - BlackLabel.Caption := BLACK_MEDIUM_LABEL; - if ((WhiteTimeLabel.Left + WhiteTimeLabel.Width <= WhitePanel.Width) and - (BlackTimeLabel.Left + BlackTimeLabel.Width <= BlackPanel.Width)) then - exit; // TODO: a KLUDGE - make it nice! - - WhiteTimeLabel.Font.Size := WhiteTimeLabel.Font.Size - 4; - BlackTimeLabel.Font.Size := BlackTimeLabel.Font.Size - 4; - WhiteLabel.Caption := WHITE_SHORT_LABEL; - BlackLabel.Caption := BLACK_SHORT_LABEL; - end; -end; - - -procedure TGameChessBoard.FFlashWindow; -var - flushWindowInfo: TFlashWInfo; -begin - // Flash with taskbar - flushWindowInfo.cbSize := SizeOf(flushWindowInfo); - flushWindowInfo.hwnd := Application.Handle; - flushWindowInfo.dwflags := FLASHW_TRAY; // FLASHW_ALL; //FLASHW_TRAY; - flushWindowInfo.ucount := 3; // Flash times - flushWindowInfo.dwtimeout := 0; // speed in msec, 0 - frequency of cursor flashing - FlashWindowEx(flushWindowInfo); - - if (self.Focused) then - exit; - // Flash window - flushWindowInfo.hwnd := self.Handle; // handle of the flashing window - flushWindowInfo.dwflags := FLASHW_CAPTION; // FLASHW_TRAY; // FLASHW_ALL; //FLASHW_TRAY; - FlashWindowEx(flushWindowInfo); -end; - - -procedure TGameChessBoard.FLocalize; -begin - with TLocalizer.Instance do - begin - WHITE_LONG_LABEL := GetLabel(13); - WHITE_MEDIUM_LABEL := GetLabel(14); - WHITE_SHORT_LABEL := GetLabel(15); - BLACK_LONG_LABEL := GetLabel(16); - BLACK_MEDIUM_LABEL := GetLabel(17); - BLACK_SHORT_LABEL := GetLabel(18); - end; - - TimePanelResize(nil); -end; - - -procedure TGameChessBoard.WriteGameToBase(vGameResult: TGameResult); -begin - m_PosBaseChessBoardLayer.WriteGameToBase(vGameResult); -end; - - -procedure TGameChessBoard.SetExternalBase(const strExtPosBaseName: string); -begin - m_PosBaseChessBoardLayer.SetExternalBase(strExtPosBaseName); -end; - - -procedure TGameChessBoard.UnsetExternalBase; -begin - m_PosBaseChessBoardLayer.UnsetExternalBase; -end; - - -function TGameChessBoard.FGetTrainingMode: boolean; -begin - Result := m_PosBaseChessBoardLayer.TrainingMode; -end; - - -procedure TGameChessBoard.FSetTrainingMode(bValue: boolean); -begin - m_PosBaseChessBoardLayer.TrainingMode := bValue; -end; - - -function TGameChessBoard.FGetUseUserBase: boolean; -begin - Result := m_PosBaseChessBoardLayer.UseUserBase; -end; - - -procedure TGameChessBoard.FSetUseUserBase(bValue: boolean); -begin - m_PosBaseChessBoardLayer.UseUserBase := bValue; -end; - - -function TGameChessBoard.FGetFlipped: boolean; -begin - Result := m_ChessBoard.Flipped; -end; - - -procedure TGameChessBoard.FSetFlipped(bValue: boolean); -begin - m_ChessBoard.Flipped := bValue; -end; - - -function TGameChessBoard.FGetAnimation: TAnimation; -begin - Result := m_ChessBoard.Animation; -end; - - -procedure TGameChessBoard.FSetAnimation(const Value: TAnimation); -begin - m_ChessBoard.Animation := Value; -end; - - -function TGameChessBoard.FGetViewGaming: boolean; -begin - Result := m_ChessBoard.ViewGaming; -end; - - -procedure TGameChessBoard.FSetViewGaming(bValue: boolean); -begin - m_ChessBoard.ViewGaming := bValue; -end; - - -procedure TGameChessBoard.FChessBoardHandler(e: TChessBoardEvent; d1: pointer = nil; - d2: pointer = nil); -begin - case e of - ChessBoardUnit.cbeMate: - FDoHandler(cbeMate, self); - - ChessBoardUnit.cbeStaleMate: - FDoHandler(cbeStaleMate, self); - - ChessBoardUnit.cbeMoved: - begin - if ((Mode = mGame) and (PositionColor <> PlayerColor)) then - FDoHandler(cbeMoved, d1, self); - SwitchClock(PositionColor); - end; - - ChessBoardUnit.cbeMenu: - FDoHandler(cbeMenu, self); - end; -end; - - -procedure TGameChessBoard.FDoHandler(e: TGameChessBoardEvent; d1: pointer = nil; - d2: pointer = nil); -begin - if (Assigned(FHandler)) then - FHandler(e, d1, d2); -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.dfm b/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.dfm deleted file mode 100644 index 6c529ecf8c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.dfm +++ /dev/null @@ -1,317 +0,0 @@ -object GameOptionsForm: TGameOptionsForm - Left = 565 - Top = 197 - BorderIcons = [biSystemMenu] - BorderStyle = bsDialog - Caption = 'Game Options' - ClientHeight = 503 - ClientWidth = 412 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object OkButton: TTntButton - Left = 328 - Top = 16 - Width = 75 - Height = 25 - Caption = '&OK' - Default = True - ModalResult = 1 - TabOrder = 3 - end - object CancelButton: TTntButton - Left = 328 - Top = 48 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Cancel' - ModalResult = 2 - TabOrder = 4 - end - object TimeControlGroupBox: TTntGroupBox - Left = 8 - Top = 8 - Width = 305 - Height = 265 - Caption = 'Time Control' - TabOrder = 0 - object EqualTimeCheckBox: TTntCheckBox - Left = 16 - Top = 24 - Width = 233 - Height = 17 - Caption = 'Equal time for both players' - Checked = True - State = cbChecked - TabOrder = 0 - OnClick = EqualTimeCheckBoxClick - end - object YouGroupBox: TTntGroupBox - Left = 32 - Top = 48 - Width = 249 - Height = 97 - Caption = 'Your time' - TabOrder = 1 - DesignSize = ( - 249 - 97) - object YouMinLabel: TTntLabel - Left = 16 - Top = 42 - Width = 145 - Height = 14 - AutoSize = False - Caption = 'Minutes per game:' - end - object YouIncLabel: TTntLabel - Left = 16 - Top = 66 - Width = 145 - Height = 14 - AutoSize = False - Caption = 'Increment in seconds:' - end - object YouMinEdit: TEdit - Left = 168 - Top = 40 - Width = 41 - Height = 21 - BiDiMode = bdLeftToRight - MaxLength = 3 - ParentBiDiMode = False - TabOrder = 1 - Text = '5' - OnChange = YouEditChange - end - object YouIncEdit: TEdit - Left = 168 - Top = 64 - Width = 41 - Height = 21 - TabOrder = 2 - Text = '0' - OnChange = YouEditChange - end - object YouUnlimitedCheckBox: TTntCheckBox - Left = 16 - Top = 16 - Width = 217 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Unlimited' - TabOrder = 0 - OnClick = UnlimitedCheckBoxClick - end - object YouMinUpDown: TUpDown - Left = 209 - Top = 40 - Width = 15 - Height = 21 - Associate = YouMinEdit - Min = 1 - Max = 999 - Position = 5 - TabOrder = 3 - end - object YouIncUpDown: TUpDown - Left = 209 - Top = 64 - Width = 15 - Height = 21 - Associate = YouIncEdit - Max = 999 - TabOrder = 4 - end - end - object OpponentGroupBox: TTntGroupBox - Left = 32 - Top = 152 - Width = 249 - Height = 97 - Caption = 'Opponent'#39's time' - TabOrder = 2 - DesignSize = ( - 249 - 97) - object OpponentMinLabel: TTntLabel - Left = 16 - Top = 42 - Width = 145 - Height = 13 - AutoSize = False - Caption = 'Minutes per game:' - end - object OpponentIncLabel: TTntLabel - Left = 16 - Top = 66 - Width = 145 - Height = 13 - AutoSize = False - Caption = 'Increment in seconds:' - end - object OpponentIncEdit: TEdit - Left = 168 - Top = 64 - Width = 41 - Height = 21 - TabOrder = 2 - Text = '0' - OnChange = OpponentEditChange - end - object OpponentMinEdit: TEdit - Left = 168 - Top = 40 - Width = 41 - Height = 21 - BiDiMode = bdLeftToRight - MaxLength = 3 - ParentBiDiMode = False - TabOrder = 1 - Text = '5' - OnChange = OpponentEditChange - end - object OpponentUnlimitedCheckBox: TTntCheckBox - Left = 16 - Top = 16 - Width = 217 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Unlimited' - TabOrder = 0 - OnClick = UnlimitedCheckBoxClick - end - object OpponentMinUpDown: TUpDown - Left = 209 - Top = 40 - Width = 15 - Height = 21 - Associate = OpponentMinEdit - Min = 1 - Max = 999 - Position = 5 - TabOrder = 3 - end - object OpponentIncUpDown: TUpDown - Left = 209 - Top = 64 - Width = 15 - Height = 21 - Associate = OpponentIncEdit - Max = 999 - TabOrder = 4 - end - end - end - object Panel1: TPanel - Left = 8 - Top = 390 - Width = 305 - Height = 105 - BevelInner = bvRaised - BevelOuter = bvLowered - TabOrder = 2 - DesignSize = ( - 305 - 105) - object AutoFlagCheckBox: TTntCheckBox - Left = 8 - Top = 80 - Width = 289 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Auto Flag' - Checked = True - State = cbChecked - TabOrder = 3 - end - object TakeBackCheckBox: TTntCheckBox - Left = 8 - Top = 56 - Width = 289 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Allow takebacks to your partner' - TabOrder = 2 - end - object GamePauseCheckBox: TTntCheckBox - Left = 8 - Top = 8 - Width = 289 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Game can be paused' - TabOrder = 0 - end - object GameAdjournCheckBox: TTntCheckBox - Left = 8 - Top = 32 - Width = 289 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Game can be adjourned' - TabOrder = 1 - end - end - object TrainingModeGroupBox: TTntGroupBox - Left = 8 - Top = 280 - Width = 305 - Height = 97 - Caption = 'Training Mode' - TabOrder = 1 - DesignSize = ( - 305 - 97) - object ExtBaseLabel: TTntLabel - Left = 16 - Top = 38 - Width = 81 - Height = 13 - AutoSize = False - Caption = 'External base:' - end - object TrainingEnabledCheckBox: TTntCheckBox - Left = 16 - Top = 16 - Width = 257 - Height = 17 - Caption = 'Enabled' - TabOrder = 0 - OnClick = TrainingEnabledCheckBoxClick - end - object ExtBaseComboBox: TTntComboBox - Left = 104 - Top = 36 - Width = 169 - Height = 21 - Enabled = False - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 1 - Text = '' - OnChange = ExtBaseComboBoxChange - Items.Strings = ( - '') - end - object UsrBaseCheckBox: TTntCheckBox - Left = 40 - Top = 64 - Width = 257 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Use user base' - Enabled = False - TabOrder = 2 - end - end -end diff --git a/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.pas b/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.pas deleted file mode 100644 index 0c8fd6cdeb..0000000000 --- a/plugins/!NotAdopted/Chess4Net/GameOptionsUnit.pas +++ /dev/null @@ -1,191 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit GameOptionsUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, - Dialogs, StdCtrls, TntStdCtrls, ExtCtrls, ComCtrls, - ModalForm; - -type - TGameOptionsForm = class(TModalForm) - OkButton: TTntButton; - CancelButton: TTntButton; - TimeControlGroupBox: TTntGroupBox; - EqualTimeCheckBox: TTntCheckBox; - YouGroupBox: TTntGroupBox; - YouMinLabel: TTntLabel; - YouIncLabel: TTntLabel; - YouMinEdit: TEdit; - YouIncEdit: TEdit; - YouUnlimitedCheckBox: TTntCheckBox; - OpponentGroupBox: TTntGroupBox; - OpponentMinLabel: TTntLabel; - OpponentIncLabel: TTntLabel; - OpponentIncEdit: TEdit; - OpponentMinEdit: TEdit; - OpponentUnlimitedCheckBox: TTntCheckBox; - Panel1: TPanel; - AutoFlagCheckBox: TTntCheckBox; - TakeBackCheckBox: TTntCheckBox; - TrainingModeGroupBox: TTntGroupBox; - TrainingEnabledCheckBox: TTntCheckBox; - ExtBaseComboBox: TTntComboBox; - UsrBaseCheckBox: TTntCheckBox; - ExtBaseLabel: TTntLabel; - GamePauseCheckBox: TTntCheckBox; - YouMinUpDown: TUpDown; - YouIncUpDown: TUpDown; - OpponentMinUpDown: TUpDown; - OpponentIncUpDown: TUpDown; - GameAdjournCheckBox: TTntCheckBox; - procedure YouEditChange(Sender: TObject); - procedure OpponentEditChange(Sender: TObject); - procedure EqualTimeCheckBoxClick(Sender: TObject); - procedure UnlimitedCheckBoxClick(Sender: TObject); - procedure TrainingEnabledCheckBoxClick(Sender: TObject); - procedure ExtBaseComboBoxChange(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormCreate(Sender: TObject); - private - procedure FLocalize; - protected - function GetModalID: TModalFormID; override; - end; - -implementation - -{$R *.dfm} - -uses - LocalizerUnit; - -procedure TGameOptionsForm.YouEditChange(Sender: TObject); -begin - YouMinEdit.Text := IntToStr(YouMinUpDown.Position); - YouIncEdit.Text := IntToStr(YouIncUpDown.Position); - if EqualTimeCheckBox.Checked then - begin - OpponentMinEdit.Text := YouMinEdit.Text; - OpponentIncEdit.Text := YouIncEdit.Text; - end; -end; - - -procedure TGameOptionsForm.OpponentEditChange(Sender: TObject); -begin - OpponentMinEdit.Text := IntToStr(OpponentMinUpDown.Position); - OpponentIncEdit.Text := IntToStr(OpponentIncUpDown.Position); - if EqualTimeCheckBox.Checked then - begin - YouMinEdit.Text := OpponentMinEdit.Text; - YouIncEdit.Text := OpponentIncEdit.Text; - end; -end; - - -procedure TGameOptionsForm.EqualTimeCheckBoxClick(Sender: TObject); -begin - if EqualTimeCheckBox.Checked then - begin - OpponentMinEdit.Text := YouMinEdit.Text; - OpponentIncEdit.Text := YouIncEdit.Text; - OpponentUnlimitedCheckBox.Checked := YouUnlimitedCheckBox.Checked; - end; -end; - - -procedure TGameOptionsForm.UnlimitedCheckBoxClick(Sender: TObject); -begin - if EqualTimeCheckBox.Checked then - begin - YouUnlimitedCheckBox.Checked := TCheckBox(Sender).Checked; - OpponentUnlimitedCheckBox.Checked := TCheckBox(Sender).Checked; - end; - - YouMinEdit.Enabled := (not YouUnlimitedCheckBox.Checked); - YouMinUpDown.Enabled := (not YouUnlimitedCheckBox.Checked); - YouIncEdit.Enabled := (not YouUnlimitedCheckBox.Checked); - YouIncUpDown.Enabled := (not YouUnlimitedCheckBox.Checked); - - OpponentMinEdit.Enabled := (not OpponentUnlimitedCheckBox.Checked); - OpponentMinUpDown.Enabled := (not OpponentUnlimitedCheckBox.Checked); - OpponentIncEdit.Enabled := (not OpponentUnlimitedCheckBox.Checked); - OpponentIncUpDown.Enabled := (not OpponentUnlimitedCheckBox.Checked); -end; - - -procedure TGameOptionsForm.TrainingEnabledCheckBoxClick(Sender: TObject); -begin - ExtBaseComboBox.Enabled := TrainingEnabledCheckBox.Checked; - UsrBaseCheckBox.Enabled := TrainingEnabledCheckBox.Checked and (ExtBaseComboBox.ItemIndex <> 0); - TakeBackCheckBox.Enabled := not TrainingEnabledCheckBox.Checked; -end; - - -procedure TGameOptionsForm.ExtBaseComboBoxChange(Sender: TObject); -begin - UsrBaseCheckBox.Enabled := (ExtBaseComboBox.ItemIndex <> 0); - if ExtBaseComboBox.ItemIndex = 0 then - UsrBaseCheckBox.Checked := TRUE; -end; - - -procedure TGameOptionsForm.FormShow(Sender: TObject); -begin - ExtBaseComboBoxChange(Sender); -end; - - -function TGameOptionsForm.GetModalID: TModalFormID; -begin - Result := mfGameOptions; -end; - - -procedure TGameOptionsForm.FormCreate(Sender: TObject); -begin - FLocalize; -end; - - -procedure TGameOptionsForm.FLocalize; -begin - with TLocalizer.Instance do - begin - Caption := GetLabel(24); - - TimeControlGroupBox.Caption := GetLabel(25); - EqualTimeCheckBox.Caption := GetLabel(26); - YouGroupBox.Caption := GetLabel(27); - OpponentGroupBox.Caption := GetLabel(28); - YouUnlimitedCheckBox.Caption := GetLabel(29); - OpponentUnlimitedCheckBox.Caption := GetLabel(29); - YouMinLabel.Caption := GetLabel(30); - OpponentMinLabel.Caption := GetLabel(30); - YouIncLabel.Caption := GetLabel(31); - OpponentIncLabel.Caption := GetLabel(31); - - TrainingModeGroupBox.Caption := GetLabel(32); - TrainingEnabledCheckBox.Caption := GetLabel(33); - ExtBaseLabel.Caption := GetLabel(34); - UsrBaseCheckBox.Caption := GetLabel(35); - - GamePauseCheckBox.Caption := GetLabel(36); - GameAdjournCheckBox.Caption := GetLabel(37); - TakeBackCheckBox.Caption := GetLabel(38); - AutoFlagCheckBox.Caption := GetLabel(39); - - OkButton.Caption := GetLabel(11); - CancelButton.Caption := GetLabel(12); - end; -end; - - -end. diff --git a/plugins/!NotAdopted/Chess4Net/GlobalsUnit.pas b/plugins/!NotAdopted/Chess4Net/GlobalsUnit.pas deleted file mode 100644 index 2cd0619882..0000000000 --- a/plugins/!NotAdopted/Chess4Net/GlobalsUnit.pas +++ /dev/null @@ -1,24 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit GlobalsUnit; - -interface - -const - DIALOG_CAPTION = 'Chess4Net'; - GAME_LOG_FILE = 'Chess4Net_GAMELOG.txt'; - - INITIAL_CLOCK_TIME = '5 0 5 0'; // 5:00 5:00 - -var - Chess4NetPath: string; - Chess4NetIniFilePath: string; - Chess4NetGamesLogPath: string; - -implementation - -end. diff --git a/plugins/!NotAdopted/Chess4Net/InfoUnit.dfm b/plugins/!NotAdopted/Chess4Net/InfoUnit.dfm deleted file mode 100644 index a153dac36b..0000000000 --- a/plugins/!NotAdopted/Chess4Net/InfoUnit.dfm +++ /dev/null @@ -1,114 +0,0 @@ -object InfoForm: TInfoForm - Left = 489 - Top = 506 - BorderStyle = bsDialog - ClientHeight = 166 - ClientWidth = 233 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object PluginNameLabel: TLabel - Left = 0 - Top = 8 - Width = 233 - Height = 17 - Alignment = taCenter - AutoSize = False - Caption = 'Chess4Net ' - WordWrap = True - end - object PlayingViaLabel: TLabel - Left = 0 - Top = 27 - Width = 233 - Height = 13 - Alignment = taCenter - AutoSize = False - Caption = 'Plugin for playing chess via ' - end - object Label2: TLabel - Left = 0 - Top = 46 - Width = 233 - Height = 13 - Alignment = taCenter - AutoSize = False - Caption = 'Written by Pavel Perminov' - end - object Label3: TLabel - Left = 0 - Top = 65 - Width = 233 - Height = 13 - Alignment = taCenter - AutoSize = False - Caption = #169' 2007-2011 no rights reserved' - end - object Label4: TLabel - Left = 38 - Top = 84 - Width = 25 - Height = 13 - AutoSize = False - Caption = 'URL:' - end - object Label5: TLabel - Left = 38 - Top = 104 - Width = 32 - Height = 13 - AutoSize = False - Caption = 'E-Mail:' - end - object URLLabel: TLabel - Left = 73 - Top = 84 - Width = 65 - Height = 13 - Cursor = crHandPoint - Caption = 'http://' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsUnderline] - ParentFont = False - OnClick = URLLabelClick - end - object EMailLabel: TLabel - Left = 73 - Top = 104 - Width = 41 - Height = 13 - Cursor = crHandPoint - Caption = '' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsUnderline] - ParentFont = False - OnClick = EMailLabelClick - end - object OkButton: TButton - Left = 80 - Top = 128 - Width = 75 - Height = 25 - Cancel = True - Caption = '&OK' - Default = True - ModalResult = 1 - TabOrder = 0 - OnClick = OkButtonClick - end -end diff --git a/plugins/!NotAdopted/Chess4Net/InfoUnit.pas b/plugins/!NotAdopted/Chess4Net/InfoUnit.pas deleted file mode 100644 index f4b349a71d..0000000000 --- a/plugins/!NotAdopted/Chess4Net/InfoUnit.pas +++ /dev/null @@ -1,98 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit InfoUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ShellAPI; - -type - TInfoForm = class(TForm) - OkButton: TButton; - PluginNameLabel: TLabel; - PlayingViaLabel: TLabel; - Label2: TLabel; - Label3: TLabel; - Label4: TLabel; - Label5: TLabel; - URLLabel: TLabel; - EMailLabel: TLabel; - procedure OkButtonClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure EMailLabelClick(Sender: TObject); - procedure URLLabelClick(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - end; - -procedure ShowInfo; - -implementation - -{$R *.dfm} - -uses - GlobalsLocalUnit, ModalForm; - -var - infoForm: TInfoForm = nil; - -procedure ShowInfo; -begin - if (not Assigned(infoForm)) then - begin - infoForm := TInfoForm.Create(nil); - if (TDialogs.HasStayOnTopOwners) then - infoForm.FormStyle := fsStayOnTop; -{$IFDEF SKYPE} - infoForm.Icon := Chess4NetIcon; - infoForm.Caption := DIALOG_CAPTION; -{$ELSE} // MI, TRILLIAN, AND_RQ, QIP - infoForm.Icon := pluginIcon; - infoForm.Caption := PLUGIN_NAME; -{$ENDIF} - end; - if not infoForm.Showing then - infoForm.Show - else - infoForm.SetFocus; -end; - -procedure TInfoForm.OkButtonClick(Sender: TObject); -begin - Close; -end; - -procedure TInfoForm.FormCreate(Sender: TObject); -begin - PlayingViaLabel.Caption := PLUGIN_PLAYING_OVER; - PluginNameLabel.Caption := PLUGIN_INFO_NAME; - URLLabel.Caption := PLUGIN_URL; - EMailLabel.Caption := PLUGIN_EMAIL; -end; - -procedure TInfoForm.URLLabelClick(Sender: TObject); -begin - ShellExecute(Handle, nil, PChar(URLLabel.Caption), nil, nil, SW_SHOWNORMAL); -end; - -procedure TInfoForm.EMailLabelClick(Sender: TObject); -var - shellStr: string; -begin - shellStr := 'mailto:' + EMailLabel.Caption; - ShellExecute(Handle, nil, PChar(shellStr), nil, nil, SW_SHOWNORMAL); -end; - -procedure TInfoForm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - infoForm := nil; - Action := caFree; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/IniSettingsUnit.pas b/plugins/!NotAdopted/Chess4Net/IniSettingsUnit.pas deleted file mode 100644 index 468035404e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/IniSettingsUnit.pas +++ /dev/null @@ -1,348 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit IniSettingsUnit; - -interface - -uses - TntIniFiles, - // - ChessBoardUnit, ChessRulesEngine; - -type - TIniSettingsID = (isidLastMoveHilighted, isidFlashOnMove, isidCoordinatesShown, - isidStayOnTop, isidExtraExit, isidActiveLanguage, isidDontShowLastVersion, - isidDontShowCredits, isidClock, isidTrainingMode, isidCanPauseGame, - isidCanAdjournGame, isidExternalBaseName, isidUseUserBase, isidAllowTakebacks, - isidAutoFlag, isidAdjourned); - - TIniSettings = class - private - m_IniFile: TTntIniFile; - - m_strOpponentId: string; - - constructor FCreate; - function FGetIniFileName: string; - - function FGetBooleanValue(ID: TIniSettingsID): boolean; - procedure FSetBooleanValue(ID: TIniSettingsID; bValue: boolean); - - function FGetIntegerValue(ID: TIniSettingsID): integer; - procedure FSetIntegerValue(ID: TIniSettingsID; iValue: integer); - - function FGetStringValue(ID: TIniSettingsID): string; - procedure FSetStringValue(ID: TIniSettingsID; const strValue: string); - - function FGetAnimation: TAnimation; - procedure FSetAnimation(Value: TAnimation); - - function FGetCommonSectionName: string; - - function FGetPlayerColor: TFigureColor; - procedure FSetPlayerColor(Value: TFigureColor); - - public - destructor Destroy; override; - - class function Instance: TIniSettings; - class procedure FreeInstance; reintroduce; - - procedure SetOpponentId(const strValue: string); - function HasCommonSettings: boolean; - - // private settings - property Animation: TAnimation - read FGetAnimation write FSetAnimation; - property LastMoveHilighted: boolean index isidLastMoveHilighted - read FGetBooleanValue write FSetBooleanValue; - property FlashOnMove: boolean index isidFlashOnMove - read FGetBooleanValue write FSetBooleanValue; - property CoordinatesShown: boolean index isidCoordinatesShown - read FGetBooleanValue write FSetBooleanValue; - property StayOnTop: boolean index isidStayOnTop - read FGetBooleanValue write FSetBooleanValue; - property ExtraExit: boolean index isidExtraExit - read FGetBooleanValue write FSetBooleanValue; - property ActiveLanguage: integer index isidActiveLanguage - read FGetIntegerValue write FSetIntegerValue; - property DontShowLastVersion: integer index isidDontShowLastVersion - read FGetIntegerValue write FSetIntegerValue; - property DontShowCredits: boolean index isidDontShowCredits - read FGetBooleanValue write FSetBooleanValue; - - // common settings - property PlayerColor: TFigureColor - read FGetPlayerColor write FSetPlayerColor; - property Clock: string index isidClock - read FGetStringValue write FSetStringValue; - property TrainingMode: boolean index isidTrainingMode - read FGetBooleanValue write FSetBooleanValue; - property CanPauseGame: boolean index isidCanPauseGame - read FGetBooleanValue write FSetBooleanValue; - property CanAdjournGame: boolean index isidCanAdjournGame - read FGetBooleanValue write FSetBooleanValue; - property ExternalBaseName: string index isidExternalBaseName - read FGetStringValue write FSetStringValue; - property UseUserBase: boolean index isidUseUserBase - read FGetBooleanValue write FSetBooleanValue; - property AllowTakebacks: boolean index isidAllowTakebacks - read FGetBooleanValue write FSetBooleanValue; - property AutoFlag: boolean index isidAutoFlag - read FGetBooleanValue write FSetBooleanValue; - property Adjourned: string index isidAdjourned - read FGetStringValue write FSetStringValue; - end; - -implementation - -uses - SysUtils, - // - GlobalsUnit, GlobalsLocalUnit; - -const - INI_FILE_NAME = 'Chess4Net.ini'; - - PRIVATE_SECTION_NAME = 'Private'; - COMMON_SECTION_PREFIX = 'Common'; - ANIMATION_KEY_NAME = 'Animation'; - HILIGHT_LAST_MOVE_KEY_NAME = 'HilightLastMove'; - FLASH_ON_MOVE_NAME = 'FlashOnMove'; - SHOW_COORDINATES_KEY_NAME = 'ShowCoordinates'; - STAY_ON_TOP_KEY_NAME = 'StayOnTop'; - EXTRA_EXIT_KEY_NAME = 'ExtraExit'; - CAN_PAUSE_GAME_KEY_NAME = 'CanPauseGame'; - CAN_ADJOURN_GAME_KEY_NAME = 'CanAdjournGame'; - ALLOW_TAKEBACKS_KEY_NAME = 'AllowTakebacks'; - EXTERNAL_BASE_NAME_KEY_NAME = 'ExternalBaseName'; - USE_USER_BASE_KEY_NAME = 'UseUserBase'; - AUTO_FLAG_KEY_NAME = 'AutoFlag'; - TRAINING_MODE_KEY_NAME = 'TrainingMode'; - PLAYER_COLOR_KEY_NAME = 'PlayerColor'; - CLOCK_KEY_NAME = 'Clock'; - ADJOURNED_KEY_NAME = 'Adjourned'; - LANGUAGE_KEY_NAME = 'Language'; - DONT_SHOW_CREDITS = 'DontShowCredits'; - DONT_SHOW_LAST_VERSION = 'DontShowLastVersion'; - -var - g_Instance: TIniSettings = nil; - -//////////////////////////////////////////////////////////////////////////////// -// TIniSettings - -constructor TIniSettings.FCreate; -begin - inherited Create; - m_IniFile := TTntIniFile.Create(FGetIniFileName); -end; - - -destructor TIniSettings.Destroy; -begin - m_IniFile.Free; - inherited; -end; - - -class function TIniSettings.Instance: TIniSettings; -begin - if (not Assigned(g_Instance)) then - g_Instance := TIniSettings.FCreate; - Result := g_Instance; -end; - - -class procedure TIniSettings.FreeInstance; -begin - FreeAndNil(g_Instance); -end; - - -function TIniSettings.FGetIniFileName: string; -begin - Result := Chess4NetIniFilePath + INI_FILE_NAME; -end; - - -function TIniSettings.FGetAnimation: TAnimation; -begin - Result := TAnimation(m_IniFile.ReadInteger(PRIVATE_SECTION_NAME, ANIMATION_KEY_NAME, Ord(aQuick))) -end; - - -procedure TIniSettings.FSetAnimation(Value: TAnimation); -begin - m_IniFile.WriteInteger(PRIVATE_SECTION_NAME, ANIMATION_KEY_NAME, Ord(Value)); -end; - - -function TIniSettings.FGetBooleanValue(ID: TIniSettingsID): boolean; -begin - case ID of - isidLastMoveHilighted: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, HILIGHT_LAST_MOVE_KEY_NAME, FALSE); - isidFlashOnMove: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, FLASH_ON_MOVE_NAME, FALSE); - isidCoordinatesShown: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, SHOW_COORDINATES_KEY_NAME, TRUE); - isidStayOnTop: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, STAY_ON_TOP_KEY_NAME, FALSE); - isidExtraExit: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, EXTRA_EXIT_KEY_NAME, FALSE); - isidDontShowCredits: - Result := m_IniFile.ReadBool(PRIVATE_SECTION_NAME, DONT_SHOW_CREDITS, FALSE); - isidTrainingMode: - Result := m_IniFile.ReadBool(FGetCommonSectionName, TRAINING_MODE_KEY_NAME, FALSE); - isidCanPauseGame: - Result := m_IniFile.ReadBool(FGetCommonSectionName, CAN_PAUSE_GAME_KEY_NAME, FALSE); - isidCanAdjournGame: - Result := m_IniFile.ReadBool(FGetCommonSectionName, CAN_ADJOURN_GAME_KEY_NAME, FALSE); - isidUseUserBase: - Result := m_IniFile.ReadBool(FGetCommonSectionName, USE_USER_BASE_KEY_NAME, FALSE); - isidAllowTakebacks: - Result := m_IniFile.ReadBool(FGetCommonSectionName, ALLOW_TAKEBACKS_KEY_NAME, FALSE); - isidAutoFlag: - Result := m_IniFile.ReadBool(FGetCommonSectionName, AUTO_FLAG_KEY_NAME, FALSE); - else - Result := FALSE; - Assert(FALSE); - end; -end; - - -procedure TIniSettings.FSetBooleanValue(ID: TIniSettingsID; bValue: boolean); -begin - case ID of - isidLastMoveHilighted: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, HILIGHT_LAST_MOVE_KEY_NAME, bValue); - isidFlashOnMove: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, FLASH_ON_MOVE_NAME, bValue); - isidCoordinatesShown: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, SHOW_COORDINATES_KEY_NAME, bValue); - isidStayOnTop: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, STAY_ON_TOP_KEY_NAME, bValue); - isidExtraExit: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, EXTRA_EXIT_KEY_NAME, bValue); - isidDontShowCredits: - m_IniFile.WriteBool(PRIVATE_SECTION_NAME, DONT_SHOW_CREDITS, bValue); - isidTrainingMode: - m_IniFile.WriteBool(FGetCommonSectionName, TRAINING_MODE_KEY_NAME, bValue); - isidCanPauseGame: - m_IniFile.WriteBool(FGetCommonSectionName, CAN_PAUSE_GAME_KEY_NAME, bValue); - isidCanAdjournGame: - m_IniFile.WriteBool(FGetCommonSectionName, CAN_ADJOURN_GAME_KEY_NAME, bValue); - isidUseUserBase: - m_IniFile.WriteBool(FGetCommonSectionName, USE_USER_BASE_KEY_NAME, bValue); - isidAllowTakebacks: - m_IniFile.WriteBool(FGetCommonSectionName, ALLOW_TAKEBACKS_KEY_NAME, bValue); - isidAutoFlag: - m_IniFile.WriteBool(FGetCommonSectionName, AUTO_FLAG_KEY_NAME, bValue); - else - Assert(FALSE); - end; -end; - - -function TIniSettings.FGetIntegerValue(ID: TIniSettingsID): integer; -begin - case ID of - isidActiveLanguage: - Result := m_IniFile.ReadInteger(PRIVATE_SECTION_NAME, LANGUAGE_KEY_NAME, 1) - 1; - isidDontShowLastVersion: - Result := m_IniFile.ReadInteger(PRIVATE_SECTION_NAME, DONT_SHOW_LAST_VERSION, CHESS4NET_VERSION); - else - Result := 0; - Assert(FALSE); - end; -end; - - -procedure TIniSettings.FSetIntegerValue(ID: TIniSettingsID; iValue: integer); -begin - case ID of - isidActiveLanguage: - m_IniFile.WriteInteger(PRIVATE_SECTION_NAME, LANGUAGE_KEY_NAME, iValue + 1); - isidDontShowLastVersion: - m_IniFile.WriteInteger(PRIVATE_SECTION_NAME, DONT_SHOW_LAST_VERSION, iValue); - else - Assert(FALSE); - end; -end; - - -function TIniSettings.FGetStringValue(ID: TIniSettingsID): string; -begin - case ID of - isidClock: - Result := m_IniFile.ReadString(FGetCommonSectionName, CLOCK_KEY_NAME, INITIAL_CLOCK_TIME); - isidExternalBaseName: - Result := m_IniFile.ReadString(FGetCommonSectionName, EXTERNAL_BASE_NAME_KEY_NAME, ''); - isidAdjourned: - Result := m_IniFile.ReadString(FGetCommonSectionName, ADJOURNED_KEY_NAME, ''); - else - Result := ''; - Assert(FALSE); - end; -end; - - -procedure TIniSettings.FSetStringValue(ID: TIniSettingsID; const strValue: string); -begin - case ID of - isidClock: - m_IniFile.WriteString(FGetCommonSectionName, CLOCK_KEY_NAME, strValue); - isidExternalBaseName: - m_IniFile.WriteString(FGetCommonSectionName, EXTERNAL_BASE_NAME_KEY_NAME, strValue); - isidAdjourned: - begin - m_IniFile.WriteString(FGetCommonSectionName, ADJOURNED_KEY_NAME, strValue); - m_IniFile.UpdateFile; - end; - else - Assert(FALSE); - end; -end; - - -procedure TIniSettings.SetOpponentId(const strValue: string); -begin - m_strOpponentId := strValue; -end; - - -function TIniSettings.HasCommonSettings: boolean; -begin - Result := m_IniFile.SectionExists(FGetCommonSectionName); -end; - - -function TIniSettings.FGetCommonSectionName: string; -begin - Result := COMMON_SECTION_PREFIX + ' ' + m_strOpponentId; -end; - - -function TIniSettings.FGetPlayerColor: TFigureColor; -begin - Result := TFigureColor(m_IniFile.ReadInteger( - FGetCommonSectionName, PLAYER_COLOR_KEY_NAME, Ord(fcBlack))) -end; - - -procedure TIniSettings.FSetPlayerColor(Value: TFigureColor); -begin - m_IniFile.WriteInteger(FGetCommonSectionName, PLAYER_COLOR_KEY_NAME, Ord(Value)); -end; - -initialization - -finalization - TIniSettings.FreeInstance; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/Lang.ini b/plugins/!NotAdopted/Chess4Net/Lang.ini deleted file mode 100644 index 6aa5de5595..0000000000 Binary files a/plugins/!NotAdopted/Chess4Net/Lang.ini and /dev/null differ diff --git a/plugins/!NotAdopted/Chess4Net/LocalizerUnit.pas b/plugins/!NotAdopted/Chess4Net/LocalizerUnit.pas deleted file mode 100644 index bd4644bbc3..0000000000 --- a/plugins/!NotAdopted/Chess4Net/LocalizerUnit.pas +++ /dev/null @@ -1,413 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit LocalizerUnit; - -interface - -uses - SysUtils, TntSysUtils, Classes, TntClasses; - -type - // A singletone that is used to localize interface - ILocalizable = interface - procedure Localize; - end; - - ELocalizer = class(Exception); - TLocalizer = class - private - m_IniFileName: TFileName; - m_iLangugesCount: integer; - m_wstrarLanguageNames: array of WideString; - m_wstrlLabels, m_wstrlMessages: TTntStringList; - m_iActiveLanguage: integer; - m_Subscribers: TList; - - constructor Create; - procedure FReadLanguages; - function FGetLangaugeName(iIndex: integer): WideString; - procedure FSetActiveLanguage(iIndex: integer); - function FReadLanguageData(iIndex: integer): boolean; - procedure FNotifySubscribers; - - public - destructor Destroy; override; - class function Instance: TLocalizer; - class procedure FreeInstance; reintroduce; - property LanguagesCount: integer read m_iLangugesCount; - // Returns a language name depending on its index - function GetLabel(iIndex: integer): WideString; - function GetMessage(iIndex: integer): WideString; overload; - function GetMessage(iIndex: integer; wstrarParams: array of const): WideString; overload; - procedure AddSubscriber(const Subscriber: ILocalizable); - procedure DeleteSubscriber(const Subscriber: ILocalizable); - property LanguageName[iIndex: integer]: WideString read FGetLangaugeName; - property ActiveLanguage: integer read m_iActiveLanguage write FSetActiveLanguage; - end; - -implementation - -uses - StrUtils, Forms, TntIniFiles, - // - GlobalsUnit; - -const - LOCALIZER_INI_FILE = 'Lang.ini'; - - // Labels are used to name interface controls s.a. TLabel and the like - DEFAULT_LABELS: array[0..69] of WideString = - ('Look & Feel Options', {0} - 'Animate Move:', - 'No', - 'Slowly', - 'Quickly', - 'Highlight Last Move', - 'Flash on incoming move', - 'Show Coordinates', - 'Stay Always on Top', - 'Extra Exit on ESC', - 'GUI Language:', {10} - '&OK', - '&Cancel', - 'White ', - 'White ', - 'W ', - 'Black ', - 'Black ', - 'B ', - 'Connecting...', - 'Wait until the connection is completed.', {20} - '&Abort', - 'Press button to continue the game.', - '&Continue', - 'Game Options', - 'Time Control', - 'Equal time for both players', - 'Your time', - 'Opponent''s time', - 'Unlimited', - 'Minutes per game:', {30} - 'Increment in seconds:', - 'Training Mode', - 'Enabled', - 'External base:', - 'Use user base', - 'Game can be paused', - 'Game can be adjourned', - 'Allow takebacks to your partner', - 'Auto Flag', - 'Yes', {40} - 'No', - 'OK', - 'Cancel', - 'Abort', - 'Retry', - 'Ignore', - 'All', - 'NoToAll', - 'YesToAll', - 'Help', {50} - 'Start Adjourned Game', - 'Start Standart Game', - 'Start PP Random Game', - 'Change Color', - 'Game Options...', - 'Look && Feel Options...', - 'About...', - 'Abort', - 'Draw', - 'Resign', {60} - 'Adjourn', - 'Pause', - 'Takeback', - 'If you liked plying Chess4Net give your credits at', - '&Close', - 'Don''t show again', - 'Transmit Game', - 'Select Skype contact', - 'Broadcast...' - ); - - // Messages are used in message boxes - DEFAULT_MESSAGES: array[0..37] of WideString = - ('White is checkmated. You win.', {0} - 'White is checkmated. You loose.', - 'Black is checkmated. You win.', - 'Black is checkmated. You loose.', - 'It''s stalemate. No one wins.', - 'Your opponent leaves.', - 'Your opponent leaves. The game is aborted.', - 'An error during connection occured.', - 'Your opponent is using an older version of Chess4Net.' + sLineBreak + - 'Most of functionality will be not available.' + sLineBreak + - 'Please, ask him/her to update the client.', - 'The current version of Chess4Net is incompatible with the one of your partner.' + sLineBreak + - 'Please check the versions.', - 'Draw?', {10} - 'Can we abort the game?', - 'I resign. You win this game. Congratulations!', - 'The game is aborted.', - 'Sorry, but we have to finish this game.', - 'The game is drawn.', - 'No draw, sorry.', - 'You forfeited on time.', - 'Your opponent forfeited on time.', - 'Can we pause the game?', - 'No pause, sorry.', {20} - 'May I take back last move?', - 'Can we adjourn this game?', - 'No adjourns, sorry.', - 'Sorry, no takebacks!', - 'Do you really want to resign?', - 'Do you want to exit?', - 'The game is adjourned.', - 'You are currently playing some games. Do you want to start broadcasting?', - 'Black forfeits on time.', - 'White forfeits on time.', {30} - 'White resigns.', - 'Black resigns.', - 'Game transmition is not supported by this client!', - 'Broadcaster leaves. Transmition will be closed.', - 'Stalemate.', - 'White is checkmated.', - 'Black is checkmated.' - ); - -var - LocalizerInstance: TLocalizer = nil; - -//////////////////////////////////////////////////////////////////////////////// -// TLocalizer - -constructor TLocalizer.Create; -begin - m_IniFileName := Chess4NetPath + LOCALIZER_INI_FILE; - - m_wstrlLabels := TTntStringList.Create; - m_wstrlMessages := TTntStringList.Create; - - m_Subscribers := TList.Create; - - m_iActiveLanguage := -1; - FReadLanguages; - FReadLanguageData(-1); -end; - - -destructor TLocalizer.Destroy; -begin - Finalize(m_wstrarLanguageNames); - - m_Subscribers.Free; - - m_wstrlMessages.Free; - m_wstrlLabels.Free; - - inherited; -end; - - -class function TLocalizer.Instance: TLocalizer; -begin - if (not Assigned(LocalizerInstance)) then - LocalizerInstance := TLocalizer.Create; - Result := LocalizerInstance; -end; - - -class procedure TLocalizer.FreeInstance; -begin - FreeAndNil(LocalizerInstance); -end; - - -procedure TLocalizer.FReadLanguages; -var - IniFile: TTntIniFile; - i: integer; - wstrSection: WideString; -begin - if (not FileExists(m_IniFileName)) then - exit; - - IniFile := TTntIniFile.Create(m_IniFileName); - try - // Count available languages - Finalize(m_wstrarLanguageNames); - i := 0; - repeat - wstrSection := 'Language' + IntToStr(i + 1); - if (not IniFile.SectionExists(wstrSection)) then - break; - SetLength(m_wstrarLanguageNames, length(m_wstrarLanguageNames) + 1); - m_wstrarLanguageNames[i] := IniFile.ReadString(wstrSection, 'Name', ''); - inc(i); - until FALSE; - m_iLangugesCount := i; - - finally - IniFile.Free; - end; -end; - - -function TLocalizer.FGetLangaugeName(iIndex: integer): WideString; -begin - Result := m_wstrarLanguageNames[iIndex]; -end; - - -procedure TLocalizer.FSetActiveLanguage(iIndex: integer); -begin - if (iIndex <> m_iActiveLanguage) then - begin - if (FReadLanguageData(iIndex)) then - begin - m_iActiveLanguage := iIndex; - FNotifySubscribers; - end - else - m_iActiveLanguage := -1; - end; -end; - - -function TLocalizer.FReadLanguageData(iIndex: integer): boolean; - - function NInsertLineFeeds(const wstrSource: WideString): WideString; - var - iPos, iOffset: integer; - begin - Result := ''; - iOffset := 1; - repeat - iPos := PosEx('/n', wstrSource, iOffset); - if (iPos = 0) then - break; - if ((iPos = 1) or (wstrSource[iPos - 1] <> '/')) then - Result := Result + Copy(wstrSource, iOffset, iPos - iOffset) + sLineBreak - else - Result := Result + Copy(wstrSource, iOffset, iPos - iOffset) + 'n'; // '//n' -> '/n' - iOffset := iPos + 2; - until FALSE; - - Result := Result + Copy(wstrSource, iOffset, MaxInt); - end; - -var - IniFile: TTntIniFile; - i: integer; - wstrSection: WideString; - wstrlValues: TTntStringList; - wstrValue: WideString; -begin - Result := FALSE; - - // Copy default values - m_wstrlLabels.Clear; - for i := Low(DEFAULT_LABELS) to High(DEFAULT_LABELS) do - m_wstrlLabels.Add(DEFAULT_LABELS[i]); - - m_wstrlMessages.Clear; - for i := Low(DEFAULT_MESSAGES) to High(DEFAULT_MESSAGES) do - m_wstrlMessages.Add(DEFAULT_MESSAGES[i]); - - if (not FileExists(m_IniFileName)) then - exit; - - wstrlValues := nil; - IniFile := TTntIniFile.Create(m_IniFileName); - try - wstrSection := 'Language' + IntToStr(iIndex + 1); - if (not IniFile.SectionExists(wstrSection)) then - exit; - - wstrlValues := TTntStringList.Create; - IniFile.ReadSectionValues(wstrSection, wstrlValues); - - for i := 0 to m_wstrlLabels.Count - 1 do - begin - wstrValue := wstrlValues.Values['Label' + IntToStr(i)]; - if (wstrValue <> '') then - begin - if (wstrValue[length(wstrValue)] = '|') then // labels with a width - wstrValue := Copy(wstrValue, 1, length(wstrValue) - 1); - m_wstrlLabels[i] := wstrValue; - end; - end; - for i := 0 to m_wstrlMessages.Count - 1 do - begin - wstrValue := wstrlValues.Values['Msg' + IntToStr(i)]; - if (wstrValue <> '') then - m_wstrlMessages[i] := NInsertLineFeeds(wstrValue); - end; - - finally - wstrlValues.Free; - IniFile.Free; - end; - - Result := TRUE; -end; - - -function TLocalizer.GetLabel(iIndex: integer): WideString; -begin - if (iIndex in [0..m_wstrlLabels.Count - 1]) then - Result := m_wstrlLabels[iIndex] - else - ELocalizer.Create('Wrong label index!'); -end; - - -function TLocalizer.GetMessage(iIndex: integer): WideString; -begin - if (iIndex in [0..m_wstrlMessages.Count - 1]) then - Result := m_wstrlMessages[iIndex] - else - ELocalizer.Create('Wrong message index!'); -end; - - -function TLocalizer.GetMessage(iIndex: integer; wstrarParams: array of const): WideString; -begin - Result := WideFormat(GetMessage(iIndex), wstrarParams) -end; - - -procedure TLocalizer.AddSubscriber(const Subscriber: ILocalizable); -begin - if (m_Subscribers.IndexOf(Pointer(Subscriber)) < 0) then - m_Subscribers.Add(Pointer(Subscriber)); -end; - - -procedure TLocalizer.DeleteSubscriber(const Subscriber: ILocalizable); -var - iIndex: integer; -begin - iIndex := m_Subscribers.IndexOf(Pointer(Subscriber)); - if (iIndex >= 0) then - m_Subscribers.Delete(iIndex); -end; - - -procedure TLocalizer.FNotifySubscribers; -var - i: integer; -begin - for i := 0 to m_Subscribers.Count - 1 do - ILocalizable(m_Subscribers[i]).Localize; -end; - -initialization - -finalization - TLocalizer.FreeInstance; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.dfm b/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.dfm deleted file mode 100644 index c3fda14bce..0000000000 --- a/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.dfm +++ /dev/null @@ -1,142 +0,0 @@ -object LookFeelOptionsForm: TLookFeelOptionsForm - Left = 702 - Top = 299 - BorderIcons = [biSystemMenu] - BorderStyle = bsDialog - Caption = 'Look & Feel Options' - ClientHeight = 217 - ClientWidth = 321 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Microsoft Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object AnimateLabel: TTntLabel - Left = 8 - Top = 11 - Width = 89 - Height = 13 - AutoSize = False - Caption = 'Animate Move:' - end - object GUILangLabel: TTntLabel - Left = 8 - Top = 187 - Width = 97 - Height = 13 - AutoSize = False - Caption = 'GUI Language:' - end - object OkButton: TTntButton - Left = 240 - Top = 8 - Width = 75 - Height = 25 - Caption = '&OK' - Default = True - ModalResult = 1 - TabOrder = 2 - end - object CancelButton: TTntButton - Left = 240 - Top = 40 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Cancel' - ModalResult = 2 - TabOrder = 3 - end - object AnimationComboBox: TTntComboBox - Left = 104 - Top = 8 - Width = 81 - Height = 21 - Style = csDropDownList - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 0 - Text = 'No' - Items.Strings = ( - 'No' - 'Slowly' - 'Quickly') - end - object BoxPanel: TPanel - Left = 8 - Top = 40 - Width = 217 - Height = 129 - BevelInner = bvRaised - BevelOuter = bvLowered - TabOrder = 1 - DesignSize = ( - 217 - 129) - object HilightLastMoveBox: TTntCheckBox - Left = 8 - Top = 8 - Width = 201 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Highlight Last Move' - TabOrder = 0 - end - object CoordinatesBox: TTntCheckBox - Left = 8 - Top = 56 - Width = 201 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Show Coordinates' - TabOrder = 1 - end - object StayOnTopBox: TTntCheckBox - Left = 8 - Top = 80 - Width = 201 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Stay Always on Top' - TabOrder = 2 - end - object ExtraExitBox: TTntCheckBox - Left = 8 - Top = 104 - Width = 201 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Extra Exit on ESC' - TabOrder = 3 - end - object FlashIncomingMoveBox: TTntCheckBox - Left = 8 - Top = 32 - Width = 201 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Caption = 'Flash on incoming move' - TabOrder = 4 - end - end - object GUILangComboBox: TTntComboBox - Left = 120 - Top = 184 - Width = 129 - Height = 21 - Style = csDropDownList - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 4 - Text = 'English' - OnChange = GUILangComboBoxChange - Items.Strings = ( - 'English') - end -end diff --git a/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.pas b/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.pas deleted file mode 100644 index 7fe03b2a70..0000000000 --- a/plugins/!NotAdopted/Chess4Net/LookFeelOptionsUnit.pas +++ /dev/null @@ -1,110 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit LookFeelOptionsUnit; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, - ModalForm, TntStdCtrls, - // Chess4Net units - LocalizerUnit; - -type - TLookFeelOptionsForm = class(TModalForm, ILocalizable) - OkButton: TTntButton; - CancelButton: TTntButton; - AnimationComboBox: TTntComboBox; - AnimateLabel: TTntLabel; - BoxPanel: TPanel; - HilightLastMoveBox: TTntCheckBox; - FlashIncomingMoveBox: TTntCheckBox; - CoordinatesBox: TTntCheckBox; - StayOnTopBox: TTntCheckBox; - ExtraExitBox: TTntCheckBox; - GUILangLabel: TTntLabel; - GUILangComboBox: TTntComboBox; - procedure FormCreate(Sender: TObject); - procedure GUILangComboBoxChange(Sender: TObject); - procedure FormDestroy(Sender: TObject); - private - procedure ILocalizable.Localize = FLocalize; - procedure FLocalize; - protected - function GetModalID: TModalFormID; override; - end; - -implementation - -{$R *.dfm} - -function TLookFeelOptionsForm. GetModalID: TModalFormID; -begin - Result := mfLookFeel; -end; - - -procedure TLookFeelOptionsForm.FormCreate(Sender: TObject); -var - i: integer; -begin - // Fill GUI Languages combo box - GUILangComboBox.Clear; - with TLocalizer.Instance do - begin - for i := 0 to LanguagesCount - 1 do - GUILangComboBox.Items.Add(LanguageName[i]); - GUILangComboBox.ItemIndex := ActiveLanguage; - end; - - TLocalizer.Instance.AddSubscriber(self); - FLocalize; -end; - - -procedure TLookFeelOptionsForm.FLocalize; -var - iSavedAnimation: integer; -begin - with TLocalizer.Instance do - begin - Caption := GetLabel(0); - AnimateLabel.Caption := GetLabel(1); - with AnimationComboBox do - begin - iSavedAnimation := ItemIndex; - Items[0] := GetLabel(2); - Items[1] := GetLabel(3); - Items[2] := GetLabel(4); - ItemIndex := iSavedAnimation; - end; - HilightLastMoveBox.Caption := GetLabel(5); - FlashIncomingMoveBox.Caption := GetLabel(6); - CoordinatesBox.Caption := GetLabel(7); - StayOnTopBox.Caption := GetLabel(8); - ExtraExitBox.Caption := GetLabel(9); - GUILangLabel.Caption := GetLabel(10); - - OkButton.Caption := GetLabel(11); - CancelButton.Caption := GetLabel(12); - end; -end; - - -procedure TLookFeelOptionsForm.GUILangComboBoxChange(Sender: TObject); -begin - TLocalizer.Instance.ActiveLanguage := GUILangComboBox.ItemIndex; -end; - - -procedure TLookFeelOptionsForm.FormDestroy(Sender: TObject); -begin - TLocalizer.Instance.DeleteSubscriber(self); -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.cfg b/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.cfg deleted file mode 100644 index 6d8fdcc3db..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.cfg +++ /dev/null @@ -1,45 +0,0 @@ --$A8 --$B- --$C- --$D- --$E- --$F- --$G+ --$H+ --$I- --$J+ --$K- --$L- --$M- --$N+ --$O+ --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W- --$X+ --$Y- --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --E"..\bin" --N".\dcu" --LE"c:\program files\borland\delphi7\Projects\Bpl" --LN"c:\program files\borland\delphi7\Projects\Bpl" --U".\MirandaINC;..\res\Delphi;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source" --O".\MirandaINC;..\res\Delphi;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source" --I".\MirandaINC;..\res\Delphi;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source" --R".\MirandaINC;..\res\Delphi;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source" --DMIRANDA;xFASTMM4;xDEBUG_LOG --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dof b/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dof deleted file mode 100644 index 5b7c6eacea..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dof +++ /dev/null @@ -1,170 +0,0 @@ -[FileVersion] -Version=7.0 -[Compiler] -A=8 -B=0 -C=0 -D=0 -E=0 -F=0 -G=1 -H=1 -I=0 -J=1 -K=0 -L=0 -M=0 -N=1 -O=1 -P=1 -Q=0 -R=0 -S=0 -T=0 -U=0 -V=1 -W=0 -X=1 -Y=0 -Z=1 -ShowHints=1 -ShowWarnings=1 -UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -NamespacePrefix= -SymbolDeprecated=1 -SymbolLibrary=1 -SymbolPlatform=1 -UnitLibrary=1 -UnitPlatform=1 -UnitDeprecated=1 -HResultCompat=1 -HidingMember=1 -HiddenVirtual=1 -Garbage=1 -BoundsError=1 -ZeroNilCompat=1 -StringConstTruncated=1 -ForLoopVarVarPar=1 -TypedConstVarPar=1 -AsgToTypedConst=1 -CaseLabelRange=1 -ForVariable=1 -ConstructingAbstract=1 -ComparisonFalse=1 -ComparisonTrue=1 -ComparingSignedUnsigned=1 -CombiningSignedUnsigned=1 -UnsupportedConstruct=1 -FileOpen=1 -FileOpenUnitSrc=1 -BadGlobalSymbol=1 -DuplicateConstructorDestructor=1 -InvalidDirective=1 -PackageNoLink=1 -PackageThreadVar=1 -ImplicitImport=1 -HPPEMITIgnored=1 -NoRetVal=1 -UseBeforeDef=1 -ForLoopVarUndef=1 -UnitNameMismatch=1 -NoCFGFileFound=1 -MessageDirective=1 -ImplicitVariants=1 -UnicodeToLocale=1 -LocaleToUnicode=1 -ImagebaseMultiple=1 -SuspiciousTypecast=1 -PrivatePropAccessor=1 -UnsafeType=0 -UnsafeCode=0 -UnsafeCast=0 -[Linker] -MapFile=0 -OutputObjs=0 -ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 -MinStackSize=16384 -MaxStackSize=1048576 -ImageBase=4194304 -ExeDescription= -[Directories] -OutputDir=..\bin -UnitOutputDir=.\dcu -PackageDLLOutputDir= -PackageDCPOutputDir= -SearchPath=.\MirandaINC;..\res\Delphi;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source -Packages=vcl;rtl;dbrtl;vcldb;vclx;bdertl;delphiclxide;proide;delphivclide;direct;vclie;stride;VclSmp;vclactnband -Conditionals=MIRANDA;xFASTMM4;xDEBUG_LOG -DebugSourceDirs= -UsePackages=0 -[Parameters] -RunParams= -HostApplication= -Launcher= -UseLauncher=0 -DebugCWD= -[Language] -ActiveLang= -ProjectLang= -RootDir= -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1049 -CodePage=1251 -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= -[HistoryLists\hlConditionals] -Count=15 -Item0=SKYPE;xFASTMM4;TESTING;SKYPE_API -Item1=SKYPE;xFASTMM4;xTESTING;SKYPE_API -Item2=SKYPE;xFASTMM4;xTESTING;xSKYPE_API -Item3=SKYPE;xFASTMM4;xTESTING;xSKYPE_API;TESTING -Item4=SKYPE;xFASTMM4;xTESTING;SKYPE_API;TESTING -Item5=SKYPE;xFASTMM4;xTESTING;SKYPE_API;xDEBUG_LOG -Item6=SKYPE;xFASTMM4;TESTING;SKYPE_API;xDEBUG_LOG -Item7=SKYPE;xFASTMM4;xTESTING;xSKYPE_API;xDEBUG_LOG -Item8=SKYPE;xFASTMM4;TESTING;xSKYPE_API;xDEBUG_LOG;xTESTING -Item9=SKYPE;xFASTMM4;TESTING;xSKYPE_API;xDEBUG_LOG;TESTING -Item10=SOCKET;xFASTMM4 -Item11=SKYPE;xFASTMM4;xTESTING;xSKYPE_API;xDEBUG_LOG;TESTING -Item12=SKYPE;xFASTMM4;xTESTING;xSKYPE_API;DEBUG_LOG -Item13=SKYPE;xFASTMM4;TESTING;xSKYPE_API;DEBUG_LOG -Item14=SKYPE;xFASTMM4;TESTING;xSKYPE_API;xDEBUG_LOG -[HistoryLists\hlUnitAliases] -Count=1 -Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -[HistoryLists\hlSearchPath] -Count=5 -Item0=$(DELPHI)\Lib\Debug;..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source;.\SkypeAPI -Item1=..\lib\FastMM4;..\lib\PNGImage;..\lib\XIE;..\lib\TntUnicodeControls\Source;.\SkypeAPI -Item2=$(DELPHI)\Lib\Debug;..\lib\FastMM4;..\lib\PNGImage;..\lib\TntUnicodeControls\Source -Item3=..\lib\FastMM4;..\lib\PNGImage;..\lib\TntUnicodeControls\Source;.\SkypeAPI -Item4=$(DELPHI)\Lib\Debug;..\lib\FastMM4;..\lib\PNGImage;..\lib\TntUnicodeControls\Source;.\SkypeAPI -[HistoryLists\hlUnitOutputDirectory] -Count=1 -Item0=.\dcu -[HistoryLists\hlOutputDirectorry] -Count=2 -Item0=..\bin\Chess4Net_Skype -Item1=..\bin diff --git a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dpr b/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dpr deleted file mode 100644 index bc07ffc32c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/Chess4Net_MI.dpr +++ /dev/null @@ -1,82 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -library Chess4Net_MI; -{******************************* - plugin library for Miranda -********************************} - -(* -{$IFDEF FASTMM4} - FastMM4, -{$ENDIF} -*) - -uses -{$IFDEF FASTMM4} - FastMM4, -{$ENDIF} - Forms, - SysUtils, - Windows, - BitmapResUnit in '..\BitmapResUnit.pas', - ChessBoardHeaderUnit in '..\ChessBoardHeaderUnit.pas', - ChessBoardUnit in '..\ChessBoardUnit.pas' {ChessBoard}, - PosBaseChessBoardLayerUnit in '..\PosBaseChessBoardLayerUnit.pas', - GameChessBoardUnit in '..\GameChessBoardUnit.pas' {GameChessBoard}, - ConnectingUnit in '..\ConnectingUnit.pas' {ConnectingForm}, - ConnectorUnit in 'ConnectorUnit.pas', - ContinueUnit in '..\ContinueUnit.pas' {ContinueForm}, - ControlUnit in 'ControlUnit.pas', - DialogUnit in '..\DialogUnit.pas', - GameOptionsUnit in '..\GameOptionsUnit.pas' {GameOptionsForm}, - GlobalsLocalUnit in 'GlobalsLocalUnit.pas', - GlobalsUnit in '..\GlobalsUnit.pas', - InfoUnit in '..\InfoUnit.pas' {InfoForm}, - LocalizerUnit in '..\LocalizerUnit.pas', - LookFeelOptionsUnit in '..\LookFeelOptionsUnit.pas' {OptionsForm}, - ManagerUnit in '..\ManagerUnit.pas' {Manager}, - MessageDialogUnit in '..\MessageDialogUnit.pas', - ModalForm in '..\ModalForm.pas', - PluginCommonUnit in 'PluginCommonUnit.pas', - PosBaseUnit in '..\PosBaseUnit.pas', - PromotionUnit in '..\PromotionUnit.pas' {PromotionForm}, - ChessRulesEngine in '..\ChessRulesEngine.pas', - ManagerUnit.MI in 'ManagerUnit.MI.pas', - TransmitGameSelectionUnit in 'TransmitGameSelectionUnit.pas' {TransmitGameSelectionForm}, - ChessClockUnit in '..\ChessClockUnit.pas', - URLVersionQueryUnit in '..\URLVersionQueryUnit.pas', - DontShowMessageDlgUnit in '..\DontShowMessageDlgUnit.pas', - IniSettingsUnit in '..\IniSettingsUnit.pas', - NonRefInterfacedObjectUnit in '..\NonRefInterfacedObjectUnit.pas'; - -{$R ..\Chess4Net.res} - -begin - ControlUnit.PLUGIN_NAME := 'Chess4Net'; - PLUGIN_MENU_NAME := '&Chess4Net'; - - with _PluginInfo^ do - begin - shortName := 'Chess4Net'; - version := MakeMirandaPluginVersion(201,1,0,1); // 2010.0 - description := PLUGIN_PLAYING_OVER; - author := 'Pavel Perminov'; - authorEmail := 'packpaul@mail.ru'; - copyright := '(c) 2007-2011 No Copyrights'; - homepage := 'http://www.chess4net.ru'; - end; - - guidPlugin := StringToGUID('{BF17C6E3-C52C-4CB8-88ED-E0FC5F5D566A}'); - miidPlugin := StringToGUID('{EBB410F6-E9AA-4F1B-8912-8C41E4EC0F90}'); // interface - - MirandaPluginMenuPosition := $7FFFFFFF; // or < $7FFFFFFF - - gCreatePluginInstance := CreatePluginInstance; - gInitializeControls := InitializeControls; - gDeinitializeControls := DeinitializeControls; - gErrorDuringPluginStart := ErrorDuringPluginStart; -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/ConnectorUnit.pas b/plugins/!NotAdopted/Chess4Net/MI/ConnectorUnit.pas deleted file mode 100644 index 525ebb3b22..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/ConnectorUnit.pas +++ /dev/null @@ -1,841 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ConnectorUnit; - -interface - -uses - Classes, ExtCtrls, - m_globaldefs; - -type - TConnectorEvent = (ceConnected, ceDisconnected, ceData, ceError); - - TConnectorHandler = procedure(ce: TConnectorEvent; d1: pointer = nil; - d2: pointer = nil) of object; - - IConnectorable = interface - procedure ConnectorHandler(ce: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); - end; - - TConnector = class - private - _sendTimer, _sendSystemTimer: TTimer; - - _connected, _opened: boolean; - _plugin: IConnectorable; - _hContact, _hFilterMsg: THandle; - _lstId, _contactLstId: integer; - // îòñûëàåìîå ñîîáùåíèå - _msg_sending, _unformated_msg_sending: string; - _cntrMsgIn: integer; // ñ÷¸ò÷èê âõîäÿùèõ ñîîáùåíèé - _cntrMsgOut: integer; // ñ÷¸ò÷èê èñõîäÿùèõ ñîîáùåíèé - m_iLastCntrMsgOutInFormatting: integer; - _msg_buf: string; // áóôåð ñîîáùåíèé - // ñèñòåìíîå ñîîáùåíèå - _systemDataList: TStringList; - m_lwId: Longword; - m_LastSendTime: TDateTime; - -{$IFDEF DEBUG_LOG} - _logFile: Text; - - procedure InitLog; - procedure WriteToLog(const s: string); - procedure CloseLog; -{$ENDIF} - - procedure FsendTimerTimer(Sender: TObject); - procedure FsendSystemTimerTimer(Sender: TObject); - - function FGetOwnerNick: string; - function FGetContactNick: string; - function FFilterMsg(msg: string): boolean; - function FSendMessage(const vMessage: string): boolean; -// function FNotifySender(const vMessage: string): boolean; - procedure FNotifySender; - procedure FSendSystemData(sd: string); - function FDeformatMsg(var msg: string; out lstId, msgCntr: integer): boolean; - // Formatting of outgoing messages - function FFormatMsg(const msg: string): string; - function FGetOwnerID: integer; - function FGetMultiSession: boolean; - procedure FSetMultiSession(bValue: boolean); - procedure FPluginConnectorHandler(ce: TConnectorEvent; - d1: pointer = nil; d2: pointer = nil); - - public - constructor Create(hContact: THandle); reintroduce; - destructor Destroy; override; - - procedure Close; - function Open(bMultiSession: boolean = TRUE): boolean; - function SendData(const d: string): boolean; - procedure SetPlugin(plugin: IConnectorable); - - property Connected: boolean read _connected; - property Opened: boolean read _opened; - property OwnerID: integer read FGetOwnerID; - property OwnerNick: string read FGetOwnerNick; - property ContactID: integer read _hContact; - property ContactNick: string read FGetContactNick; - property MultiSession: boolean read FGetMultiSession write FSetMultiSession; - end; - -procedure InitConnectorGlobals(const invitationStr, promtHeadStr, dataSeparator: string; maxMsgSize: integer = 256); - -implementation - -{$J+} {$I-} - -uses - SysUtils, DateUtils, StrUtils, Types, - m_api, - ControlUnit; - -type - TConnectorList = class(TList) - private - _iterator: integer; - _hContact: THandle; - - function FGetLastAddedConnector: TConnector; - - public - procedure AddConnector(Connector: TConnector); - procedure RemoveConnector(Connector: TConnector); - function GetFirstConnector(hContact: THandle): TConnector; - function GetNextConnector: TConnector; - property LastAddedConnector: TConnector read FGetLastAddedConnector; - end; - -var - g_connectorList: TConnectorList = nil; - g_msgBufferSize: integer; - g_bMultiSession: boolean; - - g_hNotifySender: THandle; - - // cntrMsgIn è cntrMsgOut áûëè ââåäåíû äëÿ ïðåîäîëåíèÿ áàãà ñ çàâèñàþùèìè ñîîáùåíèÿìè - -const - MSG_INVITATION: string = '!&This is a plugin invitation message&!'; - // MSG_RESPOND: string = '!&This is a plugin respond message&!'; - // <ñîîáùåíèå> ::= PROMPT_HEAD [PROMPT_SEPARATOR <èä êëèåíòà>] PROMPT_SEPARATOR <íîìåð ñîîáùåíèÿ> PROMPT_TAIL <ñîîáùåíèå> - PROMPT_HEAD: string = 'Plgn'; - PROMPT_SEPARATOR = ':'; - PROMPT_TAIL = '>'; - - DATA_SEPARATOR: string = '&&'; - - CMD_CLOSE = 'ext'; - CMD_CONTACT_LIST_ID = 'lstid'; - - MAX_MSG_TRYS = 3; // ìàêñèìàëüíîå êîëè÷åñòâî ïîïûòîê ïåðåñûëà ïîñëå îøèáêè - MAX_RESEND_TRYS = 9; // ìàêñèìàëüíîå êîëè÷åñòâî ïîïûòîê ïåðåñûëà â òàéìåðå - MIN_TIME_BETWEEN_MSG = 30; // âðåìÿ ìåæäó îòïðàâêîé ñîîáùåíèé ñèñòåìå IM â ìñ - - OWNER_ID = 0; - -(* -function TConnector.FSendMessage(const vMessage: string): boolean; -const - LAST_SEND_TIME: TDateTime = 0.0; -var - _now: TDateTime; -begin - _now := Now; - if (MilliSecondsBetween(_now, LAST_SEND_TIME) < MIN_TIME_BETWEEN_MSG) then - Result := FALSE - else - begin - LAST_SEND_TIME := _now; - CallContactService(_hContact, PSS_MESSAGE, 0, LPARAM(PChar(vMessage))); - Result := TRUE; - end; -end; -*) - -// PP: Let's hope Miranda IM can messages to different contacts at the same time - -function TConnector.FSendMessage(const vMessage: string): boolean; -// const -// LAST_SEND_TIME: TDateTime = 0.0; -var - _now: TDateTime; -begin - _now := Now; - if (MilliSecondsBetween(_now, m_LastSendTime) < MIN_TIME_BETWEEN_MSG) then - Result := FALSE - else - begin - m_LastSendTime := _now; - CallContactService(_hContact, PSS_MESSAGE, 0, LPARAM(PChar(vMessage))); - Result := TRUE; - end; -end; - - -function NotifySender(wParam: WPARAM; lParam_: LPARAM): int; cdecl; -const - MSG_TRYS: integer = 1; -var - connector: TConnector; - hContact: THandle; -begin - Result := 0; - hContact := PACKDATA(lParam_).hContact; - - if (PACKDATA(lParam_).type_ <> ACKTYPE_MESSAGE) then - exit; - - case PACKDATA(lParam_)^.result_ of - ACKRESULT_SUCCESS: - begin - MSG_TRYS := 1; - - connector := g_connectorList.GetFirstConnector(hContact); - while Assigned(connector) do - begin - if (connector._msg_sending <> '') then - connector.FNotifySender; - connector := g_connectorList.GetNextConnector; - end; - end; - - ACKRESULT_FAILED: - begin - inc(MSG_TRYS); - if (MSG_TRYS <= MAX_MSG_TRYS) then - begin - connector := g_connectorList.GetFirstConnector(hContact); - while (Assigned(connector)) do - begin - if connector._msg_sending <> '' then - with connector do - begin - _msg_buf := _unformated_msg_sending + _msg_buf; - _sendTimer.Enabled := TRUE; - end; - connector := g_connectorList.GetNextConnector; - end; // while - end - else - begin - connector := g_connectorList.GetFirstConnector(hContact); - while (Assigned(connector)) do - begin - if (connector._msg_sending <> '') then - begin - connector.FPluginConnectorHandler(ceError); - end; - connector := g_connectorList.GetNextConnector; - end; - end; // if (MSG_TRYS <= MAX_MSG_TRYS) - end; // ACKRESULT_FAILED - end; // case PACKDATA -end; - - -procedure TConnector.FNotifySender; -begin -{$IFDEF DEBUG_LOG} - WriteToLog('<< ' + _msg_sending); -{$ENDIF} - if (Connected and (_msg_sending <> MSG_INVITATION)) then - begin - _unformated_msg_sending := ''; - inc(_cntrMsgOut); - if (_cntrMsgOut > m_iLastCntrMsgOutInFormatting) then - _cntrMsgOut := m_iLastCntrMsgOutInFormatting + 1; - end; - _msg_sending := ''; -end; - - -// äåôîðìàòèðîâàíèå âõîäÿùèõ ñîîáùåíèé. TRUE - åñëè äåêîäèðîâàíèå óäàëîñü -function TConnector.FDeformatMsg(var msg: string; out lstId, msgCntr: integer): boolean; -var - l: integer; -begin - Result := FALSE; - if LeftStr(msg, length(PROMPT_HEAD + PROMPT_SEPARATOR)) = (PROMPT_HEAD + PROMPT_SEPARATOR) then - begin - msg := RightStr(msg, length(msg) - length(PROMPT_HEAD + PROMPT_SEPARATOR)); - - // contactListId -// if (_contactLstId >= 0) then - if (g_bMultiSession) then - begin - l := pos(PROMPT_SEPARATOR, msg); - if (l > 0) then - begin - if (not TryStrToInt(LeftStr(msg, l - 1), lstId)) then - exit; - msg := RightStr(msg, length(msg) - l); - end - else - lstId := g_connectorList.LastAddedConnector._lstId; - end - else - lstId := -1; // no contactListId specified in message - - // Message counter - l := pos(PROMPT_TAIL, msg); - if ((l = 0) or (not TryStrToInt(LeftStr(msg, l - 1), msgCntr))) then - exit; - - msg := RightStr(msg, length(msg) - l); - // msg := AnsiReplaceStr(msg, '&', '&'); - - Result := TRUE; - end; -end; - - -function TConnector.FFilterMsg(msg: string): boolean; - - procedure NProceedData(msg: string); - - function NProceedSystemCommand(msg: string): boolean; - begin - Result := TRUE; - if (LeftStr(msg, length(CMD_CONTACT_LIST_ID)) = CMD_CONTACT_LIST_ID) then - begin - msg := RightStr(msg, length(msg) - length(CMD_CONTACT_LIST_ID) - 1); - TryStrToInt(msg, _contactLstId); - end - else if (msg = CMD_CLOSE) then - begin - FPluginConnectorHandler(ceDisconnected); - _connected := FALSE; - _opened := FALSE; - end - else - Result := FALSE; - end; - - var - n, l, i: integer; - arrDatas: TStringDynArray; - strCommand: string; - bSystemCommand: boolean; - begin { \NProceedData } - if (RightStr(msg, length(DATA_SEPARATOR)) <> DATA_SEPARATOR) then - msg := msg + DATA_SEPARATOR; - - n := -1; - l := 1; - repeat - inc(n); - l := PosEx(DATA_SEPARATOR, msg, l); - inc(l, length(DATA_SEPARATOR)); - until (l = length(DATA_SEPARATOR)); - - SetLength(arrDatas, n); - - bSystemCommand := TRUE; - i := 0; - while (i < n) do - begin - l := pos(DATA_SEPARATOR, msg); - strCommand := LeftStr(msg, l - 1); - - if (bSystemCommand) then // System commands can go only in the beginning by definition - begin - bSystemCommand := NProceedSystemCommand(strCommand); - if (bSystemCommand) then - begin - dec(n); - SetLength(arrDatas, n); - continue; - end; - end; - - arrDatas[i] := strCommand; - msg := RightStr(msg, length(msg) - length(DATA_SEPARATOR) - l + 1); - - inc(i); - end; { while } - - if (n > 0) then - begin - FPluginConnectorHandler(ceData, arrDatas); - end; - - Finalize(arrDatas); - end; - -var - lstId, cntrMsg: integer; -begin { TConnector.FFilterMsg } -{$IFDEF DEBUG_LOG} - WriteToLog('>> ' + msg); -{$ENDIF} - if (not Connected) then - begin - // if (msg = MSG_INVITATION) or (msg = MSG_RESPOND) then - if (msg = MSG_INVITATION) then - begin - // if msg = MSG_INVITATION then - // FSendMessage(MSG_RESPOND); - FSendSystemData(MSG_INVITATION); - if (g_bMultiSession) then - FSendSystemData(FFormatMsg(CMD_CONTACT_LIST_ID + ' ' + IntToStr(_lstId))); - _connected := TRUE; - FPluginConnectorHandler(ceConnected); - Result := TRUE; - end - else - Result := FALSE; - end - else // Connected - begin - if (FDeformatMsg(msg, lstId, cntrMsg) and ((not g_bMultisession) or (lstId = _lstId))) then - begin - Result := TRUE; - - if (cntrMsg > _cntrMsgIn) then - begin - inc(_cntrMsgIn); - if (cntrMsg > _cntrMsgIn) then - begin - FPluginConnectorHandler(ceError); // ïàêåò èñ÷åç - exit; - end; - end - else if (cntrMsg < _cntrMsgIn) then - exit; // skipping packets with lower numbers - - // if (cntrMsg = _cntrMsgIn) there's no garantee that packets are synchronized, but let's hope it's so. - - NProceedData(msg); - end - else - Result := FALSE; - end; -end; - - -function TConnector.FFormatMsg(const msg: string): string; -var - contactLstIdStr: string; -begin - if (_contactLstId >= 0) then - contactLstIdStr := PROMPT_SEPARATOR + IntToStr(_contactLstId) - else // -1 - contactLstIdStr := ''; - Result := PROMPT_HEAD + contactLstIdStr + PROMPT_SEPARATOR + IntToStr(_cntrMsgOut) + PROMPT_TAIL + msg; - m_iLastCntrMsgOutInFormatting := _cntrMsgOut; -end; - - -procedure TConnector.Close; -begin - if (Connected) then - begin - FSendSystemData(FFormatMsg(CMD_CLOSE)); - - _connected := FALSE; - FPluginConnectorHandler(ceDisconnected); - end; - - _sendTimer.Enabled := FALSE; - _opened := FALSE; - -{$IFDEF DEBUG_LOG} - CloseLog; -{$ENDIF} -end; - - -function TConnector.Open(bMultiSession: boolean = TRUE): boolean; -var - AConnector: TConnector; -begin - Result := FALSE; - - if (not g_bMultiSession) then - g_bMultiSession := bMultisession; - - if (Assigned(g_connectorList)) then - begin - AConnector := g_connectorList.GetFirstConnector(_hContact); - while (Assigned(AConnector)) do - begin - if (AConnector.Opened and (AConnector._contactLstId < 0)) then - exit; - AConnector := g_connectorList.GetNextConnector; - end; - end; - - _cntrMsgIn := 0; - _cntrMsgOut := 1; - _msg_sending := ''; - _unformated_msg_sending := ''; - _msg_buf := ''; - _contactLstId := -1; - _opened := TRUE; - - FSendSystemData(MSG_INVITATION); - - Result := TRUE; -end; - - -function TConnector.SendData(const d: string): boolean; -begin - Result := FALSE; - if (d = '') or - (length(_msg_buf) + length(d) + length(DATA_SEPARATOR) > g_msgBufferSize) or - (LeftStr(d, length(CMD_CLOSE)) = CMD_CLOSE) or - (LeftStr(d, length(CMD_CONTACT_LIST_ID)) = CMD_CONTACT_LIST_ID) or - (pos(DATA_SEPARATOR, d) > 0) then - begin - exit; - end - else - begin - _msg_buf := _msg_buf + d + DATA_SEPARATOR; - _sendTimer.Enabled := TRUE; // Îòîñëàòü ñîîáùåíèå ñ íåêîòîðîé îòòÿæêîé -> âñ¸ îäíèì ïàêåòîì - end; - Result := TRUE; -end; - - -function FilterMsg(wParam: WPARAM; lParam_: LPARAM): int; cdecl; -var - msg: string; - hContact: THandle; - connector: TConnector; - proceeded: boolean; -begin - msg := string(PPROTORECVEVENT(PCCSDATA(lParam_).lParam).szMessage); - hContact := PCCSDATA(lParam_).hContact; - - proceeded := FALSE; - - if Assigned(g_connectorList) then - begin - connector := g_connectorList.GetFirstConnector(hContact); - while (Assigned(connector)) do - begin - if connector.Opened then - proceeded := (connector.FFilterMsg(msg) or proceeded); - connector := g_connectorList.GetNextConnector; - end; - end; - - if proceeded then - Result := 0 - else - Result := CallService(MS_PROTO_CHAINRECV, wParam, lParam_); -end; - - -constructor TConnector.Create(hContact: THandle); -const - ID_COUNTER: Longword = 0; -var - connector: TConnector; -begin -// inherited Create; - _sendTimer := TTimer.Create(nil); - with _sendTimer do - begin - Enabled := FALSE; - Interval := 100; - OnTimer := FsendTimerTimer; - end; - - _sendSystemTimer := TTimer.Create(nil); - with _sendSystemTimer do - begin - Enabled := FALSE; - Interval := 50; - OnTimer := FsendSystemTimerTimer; - end; - - _hContact := hContact; - _systemDataList := TStringList.Create; - - if (not Assigned(g_connectorList)) then - g_connectorList := TConnectorList.Create; - - connector := g_connectorList.GetFirstConnector(_hContact); - if Assigned(connector) then - _hFilterMsg := connector._hFilterMsg - else - begin - _hFilterMsg := CreateProtoServiceFunction(PChar(PLUGIN_NAME), PSR_MESSAGE, FilterMsg); - if CallService(MS_PROTO_ISPROTOONCONTACT, _hContact, LPARAM(PChar(PLUGIN_NAME))) = 0 then - CallService(MS_PROTO_ADDTOCONTACT, _hContact, LPARAM(PChar(PLUGIN_NAME))); - end; - - if (g_connectorList.Count = 0) then - g_hNotifySender := HookEvent(ME_PROTO_ACK, NotifySender); - - inc(ID_COUNTER); - m_lwId := ID_COUNTER; - - g_connectorList.AddConnector(self); - -{$IFDEF DEBUG_LOG} - InitLog; -{$ENDIF} -end; - - -destructor TConnector.Destroy; -begin - if Connected then - while (not FSendMessage(FFormatMsg(CMD_CLOSE))) do - Sleep(1); - - _systemDataList.Free; - - g_connectorList.RemoveConnector(self); - if (g_connectorList.Count = 0) then - g_bMultiSession := FALSE; - - if (not Assigned(g_connectorList.GetFirstConnector(_hContact))) then - begin - if CallService(MS_PROTO_ISPROTOONCONTACT, _hContact, LPARAM(PChar(PLUGIN_NAME))) <> 0 then - CallService(MS_PROTO_REMOVEFROMCONTACT, _hContact, LPARAM(PChar(PLUGIN_NAME))); - PluginLink.DestroyServiceFunction(_hFilterMsg); - end; - - if (g_connectorList.Count = 0) then - begin - if (g_hNotifySender <> 0) then - UnhookEvent(g_hNotifySender); - FreeAndNil(g_connectorList); - end; - - _sendSystemTimer.Free; - _sendTimer.Free; - -{$IFDEF DEBUG_LOG} - CloseLog; -{$ENDIF} - - inherited; -end; - -{$IFDEF DEBUG_LOG} -procedure TConnector.InitLog; -begin - AssignFile(_logFile, MirandaPluginPath + 'Chess4Net_CONNECTORLOG.txt'); - Append(_logFile); - if IOResult <> 0 then - begin - Rewrite(_logFile); - if IOResult <> 0 then - begin - AssignFile(_logFile, MirandaPluginPath + 'Chess4Net_CONNECTORLOG~.txt'); - Append(_logFile); - if IOResult <> 0 then Rewrite(_logFile); - end; - end; - - WriteToLog('[' + DateTimeToStr(Now) + ']'); -end; - - -procedure TConnector.WriteToLog(const s: string); -begin - writeln(_logFile, s); - Flush(_logFile); -end; - - -procedure TConnector.CloseLog; -begin - CloseFile(_logFile); -end; -{$ENDIF} - -procedure TConnector.FsendTimerTimer(Sender: TObject); -const - RESEND_COUNT : integer = 0; -begin - if (_systemDataList.Count > 0) then - exit; // System data goes first - - if (_msg_sending = '') then - begin - _sendTimer.Enabled := FALSE; - if (_msg_buf <> '') then - begin - _unformated_msg_sending := _msg_buf; - _msg_sending := FFormatMsg(_msg_buf); - _msg_buf := ''; - - _sendTimer.Enabled := (not FSendMessage(_msg_sending)); - end; - end - else - begin -{$IFDEF DEBUG_LOG} - WriteToLog('resend: ' + _msg_sending); -{$ENDIF} - inc(RESEND_COUNT); - if (RESEND_COUNT = MAX_RESEND_TRYS) then - begin - RESEND_COUNT := 0; - FSendMessage(_msg_sending); - end; - end; -end; - - -procedure TConnector.SetPlugin(plugin: IConnectorable); -begin - _plugin := plugin; -end; - - -function TConnector.FGetOwnerNick: string; -begin - Result := PChar(CallService(MS_CLIST_GETCONTACTDISPLAYNAME, 0, 0)); -end; - - -function TConnector.FGetContactNick: string; -begin - Result := PChar(CallService(MS_CLIST_GETCONTACTDISPLAYNAME, _hContact, 0)); -end; - - -procedure InitConnectorGlobals(const invitationStr, promtHeadStr, dataSeparator: string; maxMsgSize: integer = 256); -begin - MSG_INVITATION := invitationStr; - PROMPT_HEAD := promtHeadStr; - DATA_SEPARATOR := dataSeparator; - g_msgBufferSize := maxMsgSize; -end; - -{---------------------------- TConnectorList ---------------------------------} - -procedure TConnectorList.AddConnector(Connector: TConnector); -var - i: integer; -begin - for i := 0 to Count - 1 do - begin - if (not Assigned(Items[i])) then - begin - Connector._lstId := i; - Items[i] := Connector; - exit; - end; - end; // for - Add(Connector); - Connector._lstId := Count - 1; -end; - - -procedure TConnectorList.RemoveConnector(Connector: TConnector); -begin - Items[Connector._lstId] := nil; - while ((Count > 0) and (not Assigned(Items[Count - 1]))) do - Delete(Count - 1); -end; - - -function TConnectorList.GetFirstConnector(hContact: THandle): TConnector; -begin - _hContact := hContact; - - _iterator := -1; - Result := GetNextConnector; -end; - - -function TConnectorList.GetNextConnector: TConnector; -begin - Result := nil; - - while (_iterator < (Count - 1)) do - begin - inc(_iterator); - if (Assigned(Items[_iterator]) and - (_hContact = TConnector(Items[_iterator])._hContact)) then - begin - Result := Items[_iterator]; - exit; - end; - end; -end; - - -function TConnectorList.FGetLastAddedConnector: TConnector; -var - i: integer; -begin - Result := nil; - for i := 0 to Count - 1 do - begin - if ((not Assigned(Result)) or (TConnector(Items[i]).m_lwId > Result.m_lwId)) then - Result := Items[i]; - end; -end; - - -procedure TConnector.FSendSystemData(sd: string); -begin - if ((sd <> MSG_INVITATION) and (sd <> CMD_CLOSE)) then - sd := sd + DATA_SEPARATOR; - _systemDataList.Add(sd); - _sendSystemTimer.Enabled := TRUE; -end; - - -procedure TConnector.FsendSystemTimerTimer(Sender: TObject); -begin - if _systemDataList.Count = 0 then - begin - _sendSystemTimer.Enabled := FALSE; - exit; - end; - - _msg_sending := _systemDataList[0]; - if FSendMessage(_msg_sending) then - _systemDataList.Delete(0); - // else: try to resend -end; - - -function TConnector.FGetOwnerID: integer; -begin - Result := OWNER_ID; -end; - - -procedure TConnector.FSetMultiSession(bValue: boolean); -begin - if ((not g_bMultiSession) and bValue) then - begin - FSendSystemData(FFormatMsg(CMD_CONTACT_LIST_ID + ' ' + IntToStr(_lstId))); - g_bMultiSession := TRUE; - end; -end; - -procedure TConnector.FPluginConnectorHandler(ce: TConnectorEvent; - d1: pointer = nil; d2: pointer = nil); -begin - if (Assigned(_plugin)) then - _plugin.ConnectorHandler(ce, d1, d2); -end; - - -function TConnector.FGetMultiSession: boolean; -begin - Result := g_bMultiSession; -end; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/ControlUnit.pas b/plugins/!NotAdopted/Chess4Net/MI/ControlUnit.pas deleted file mode 100644 index 5a2743ca3c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/ControlUnit.pas +++ /dev/null @@ -1,177 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ControlUnit; - -interface - -uses - Graphics, - SysUtils, //Classes, - m_globaldefs, m_api, - ConnectorUnit; - -type - IMirandaPlugin = interface(IConnectorable) // Implementatation class must be non-referenced - ['{CE794050-DBA2-4D2E-867E-59A873DF7304}'] - procedure Start; - procedure Stop; - end; - -const - PLUGIN_NAME: string = 'MirandaPlugin'; - PLUGIN_MENU_NAME: string = 'Miranda&Plugin'; - -var - _PluginInfo: PPLUGININFO = @PLUGININFO; - guidPlugin, miidPlugin: TGUID; - - MirandaPluginsPath, MirandaPluginPath: string; - - MirandaPluginIcon: TIcon = nil; - MirandaPluginMenuPosition: integer = $7FFFFFFF; - -// gShowPluginOptions: TProcedure = nil; -// gShowWrongSDKVersion: TProcedure = nil; - gCreatePluginInstance: function(Connector: TConnector): IMirandaPlugin = nil; - gInitializeControls: TProcedure = nil; - gDeinitializeControls: TProcedure = nil; -// gStartOnWrongMsgProtocol: function: boolean = nil; - gErrorDuringPluginStart: TProcedure = nil; - -function MirandaPluginInfo(mirandaVersion: DWORD): PPLUGININFO; cdecl; -function MirandaPluginInfoEx(mirandaVersion: DWORD): PPLUGININFO; cdecl; -function MirandaPluginInterfaces: PGUID; cdecl; -function Load(link: PPLUGINLINK): int; cdecl; -function Unload: int; cdecl; - -function MakeMirandaPluginVersion(a, b, c, d: byte): int; - -exports - MirandaPluginInfo, MirandaPluginInfoEx, MirandaPluginInterfaces, Load, Unload; - -implementation - -uses - Dialogs, Controls, Forms, - PluginCommonUnit; - -var - PluginInterfaces: array[0..1] of TGUID; - g_hMenuCommand: THandle; - -function MirandaPluginInfo(mirandaVersion: DWORD): PPLUGININFO; cdecl; -begin - PLUGININFO.cbSize := sizeof(TPLUGININFO); - PLUGININFO.isTransient := 0; - PLUGININFO.replacesDefaultModule := 0; - - Result := @PLUGININFO; -end; - - -function MirandaPluginInfoEx(mirandaVersion: DWORD): PPLUGININFO; cdecl; -begin - MirandaPluginInfo(mirandaVersion); // Initialize PLUGININFO - - Move(PLUGININFO, PLUGININFOEX, sizeof(TPLUGININFO)); - PLUGININFOEX.cbSize := sizeof(TPLUGININFOEX); - PLUGININFOEX.uuid := guidPlugin; - - Result := @PLUGININFOEX; -end; - - -function MirandaPluginInterfaces: PGUID; cdecl; -begin - PluginInterfaces[0] := miidPlugin; - PluginInterfaces[1] := MIID_LAST; - - Result := @PluginInterfaces; -end; - - -function Start(wParam: WPARAM; lParam_: LPARAM): Integer; cdecl; -var - Connector: TConnector; - pluginInstance: IMirandaPlugin; -begin - Connector := nil; - Pointer(pluginInstance) := nil; - - try - Connector := TConnector.Create(wParam); - pluginInstance := gCreatePluginInstance(Connector); - Connector.SetPlugin(pluginInstance); - pluginInstance.Start; - Pointer(pluginInstance) := nil; - Result := 0; - except - if (Assigned(gErrorDuringPluginStart)) then - gErrorDuringPluginStart; - if (Assigned(Connector)) then - Connector.SetPlugin(nil); - if (Assigned(pluginInstance)) then - begin - pluginInstance.Stop; - Pointer(pluginInstance) := nil; - end; - Result := -1; - end; -end; - - -function Load(link: PPLUGINLINK): int; cdecl; -var - mi: TCListMenuItem; - prt: TPROTOCOLDESCRIPTOR; -begin - if Assigned(gInitializeControls) then - gInitializeControls; - - PLUGINLINK := Pointer(link); - g_hMenuCommand := pluginLink^.CreateServiceFunction(PChar(PLUGIN_NAME + '/MenuCommand'), @Start); - FillChar(mi, sizeof(mi), 0); - mi.cbSize := sizeof(mi); - mi.position := MirandaPluginMenuPosition; - mi.flags := 0; // ? -// mi.hIcon := LoadSkinnedIcon(SKINICON_OTHER_MIRANDA); // çàãðóçêà ðîäíîé èêîíêè -// mi.hIcon := LoadIcon(hInstance, 'MAINICON'); // çàãðóçêà èêîíêè èç ðåñóðñà - if Assigned(MirandaPluginIcon) then - mi.hIcon := MirandaPluginIcon.Handle; - mi.pszName := PChar(PLUGIN_MENU_NAME); - mi.pszService := PChar(PLUGIN_NAME + '/MenuCommand'); - CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, LPARAM(@mi)); - - // ðåãèñòðàöèÿ ôèëüòðà ñîîáùåíèé - prt.cbSize := sizeof(prt); - prt.szName := PChar(PLUGIN_NAME); - prt.type_ := PROTOTYPE_FILTER; - CallService(MS_PROTO_REGISTERMODULE, 0, LPARAM(@prt)); - - Result := 0; -end; - - -function Unload: int; cdecl; -begin - if Assigned(gDeinitializeControls) then - gDeinitializeControls; - pluginLink^.DestroyServiceFunction(g_hMenuCommand); - g_hMenuCommand := 0; - Result := 0; -end; - - -function MakeMirandaPluginVersion(a, b, c, d: byte): int; -begin - Result := PLUGIN_MAKE_VERSION(a,b,c,d); -end; - -initialization - MirandaPluginsPath := ExtractFileDir(Application.ExeName) + '\Plugins\'; - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/GlobalsLocalUnit.pas b/plugins/!NotAdopted/Chess4Net/MI/GlobalsLocalUnit.pas deleted file mode 100644 index 30eef7a2a8..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/GlobalsLocalUnit.pas +++ /dev/null @@ -1,36 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit GlobalsLocalUnit; - -// Ìîäóëü äëÿ ãëîáàëüíûõ ïåðåìåííûõ è êîíñòàíò âåðñèè äëÿ Ìèðàíäû - -interface - -uses - Graphics; - -const - CHESS4NET = 'Chess4Net'; - CHESS4NET_VERSION = 201100; // 2011.0 - CHESS4NET_TITLE = 'Chess4Net 2011.0 (http://chess4net.ru)'; - MSG_INVITATION = 'Wellcome to Chess4Net. If you don''t have it, please download it from http://chess4net.ru'; - PROMPT_HEAD = 'Ch4N'; - MSG_DATA_SEPARATOR = '&&'; - - PLUGIN_NAME = CHESS4NET; - PLUGIN_VERSION = CHESS4NET_VERSION; - PLUGIN_PLAYING_OVER = 'Plugin for playing chess over Miranda'; - PLUGIN_INFO_NAME = 'Chess4Net 2011.0.0'; - PLUGIN_URL = 'http://chess4net.ru'; - PLUGIN_EMAIL = 'packpaul@mail.ru'; - -var - Chess4NetIcon, pluginIcon: TIcon; - -implementation - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/ManagerUnit.MI.pas b/plugins/!NotAdopted/Chess4Net/MI/ManagerUnit.MI.pas deleted file mode 100644 index c50aa58e4d..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/ManagerUnit.MI.pas +++ /dev/null @@ -1,845 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ManagerUnit.MI; - -interface - -uses - SysUtils, - // - ControlUnit, ManagerUnit, ConnectorUnit, ModalForm, NonRefInterfacedObjectUnit; - -type - TManagerMIFactory = class(TNonRefInterfacedObject, IMirandaPlugin) - private - m_Connector: TConnector; - m_Manager: IMirandaPlugin; - m_Dialogs: TDialogs; - m_bOwnExceptionHandler: boolean; - FErrorDuringPluginStart: TProcedure; - procedure FDialogsHandler(modSender: TModalForm; msgDlgID: TModalFormID); - function FGetDialogs: TDialogs; - procedure FStartGaming; - procedure FStartTransmitting; overload; - procedure FStartTransmitting(ManagerForTransmition: TManager); overload; - function FCanStartTransmitting: boolean; - procedure FHandleStartException; - property Dialogs: TDialogs read FGetDialogs; - protected - procedure Start; - procedure Stop; - procedure ConnectorHandler(ce: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); - public - constructor Create(Connector: TConnector; AErrorDuringPluginStart: TProcedure); reintroduce; - destructor Destroy; override; - end; - -procedure StopAllPlugins; - -implementation - -uses - Types, StrUtils, Classes, Dialogs, Controls, - // - LocalizerUnit, TransmitGameSelectionUnit, GlobalsLocalUnit, ChessBoardUnit, - GameChessBoardUnit; - -type - TManagerMI = class(TManager, IMirandaPlugin) // abstract - protected - procedure Start; - procedure Stop; - procedure RSendData(const cmd: string); override; - procedure ROnDestroy; override; - - procedure ConnectorHandler(e: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); override; - procedure RSetOpponentClientVersion(lwVersion: LongWord); override; - - public - constructor Create(Connector: TConnector); reintroduce; - destructor Destroy; override; - end; - - TTransmittingManagerMI = class; - - EGamingManagerMI = class(Exception); - TGamingManagerMI = class(TManagerMI, IMirandaPlugin) - private - m_lstTransmittingManagers: TList; - - procedure FAddTransmitter(ATransmitter: TTransmittingManagerMI); - function FRemoveTransmitter(ATransmitter: TTransmittingManagerMI): boolean; - procedure FSetGameContextToTransmitter(ATransmitter: TTransmittingManagerMI); - function FContainsContactIDInTransmitters(iContactID: integer): boolean; - procedure FUpdateChessBoardCaptions; - - protected - procedure Start; - procedure ROnCreate; override; - procedure ROnDestroy; override; - procedure ConnectorHandler(e: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); override; - procedure RSetConnectionOccured; override; - procedure RHandleConnectorDataCommand(sl: string); override; - procedure RRetransmit(const strCmd: string); override; - function RGetGameName: string; override; - end; - - ETransmittingManagerMI = class(Exception); - TTransmittingManagerMI = class(TManagerMI, IMirandaPlugin) // TODO: move to separate hierarchy - private - m_GamingManager: TGamingManagerMI; - m_bReady: boolean; // ready for transmition - property Ready: boolean read m_bReady; - protected - procedure Start; - procedure ROnCreate; override; - procedure ROnDestroy; override; - - procedure ConnectorHandler(e: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); override; - procedure RHandleConnectorDataCommand(sl: string); override; -// procedure RWriteSettings; override; // no need because m_bConnectionOccured is always FALSE - - public - constructor Create(Connector: TConnector; GamingManager: TGamingManagerMI); reintroduce; - end; - -var - g_lstGamingManagers: TList = nil; - g_Plugins: TInterfaceList = nil; - -procedure AddToPlugins(Plugin: IMirandaPlugin); -begin - if (not Assigned(g_Plugins)) then - g_Plugins := TInterfaceList.Create; - g_Plugins.Add(Plugin); -end; - -procedure RemoveFromPlugins(Plugin: IMirandaPlugin); -begin - if (not Assigned(g_Plugins)) then - exit; - g_Plugins.Remove(Plugin); - if (g_Plugins.Count = 0) then - FreeAndNil(g_Plugins); -end; - - -procedure StopAllPlugins; -var - i: integer; - Plugin: IMirandaPlugin; -begin - if (not Assigned(g_Plugins)) then - exit; - i := g_Plugins.Count - 1; - while ((i >= 0) and Assigned(g_Plugins)) do - begin - Plugin := g_Plugins[i] as IMirandaPlugin; - Plugin.Stop; - Pointer(Plugin) := nil; - dec(i); - end; - FreeAndNil(g_Plugins); -end; - -//////////////////////////////////////////////////////////////////////////////// -// TGamingManagerMI - -procedure TGamingManagerMI.FAddTransmitter(ATransmitter: TTransmittingManagerMI); -begin - if (not Assigned(m_lstTransmittingManagers)) then - m_lstTransmittingManagers := TList.Create; - m_lstTransmittingManagers.Add(ATransmitter); -end; - - -function TGamingManagerMI.FRemoveTransmitter(ATransmitter: TTransmittingManagerMI): boolean; -var - i: integer; -begin - Result := FALSE; - - if (not Assigned(m_lstTransmittingManagers)) then - exit; - - for i := 0 to m_lstTransmittingManagers.Count - 1 do - begin - if (m_lstTransmittingManagers[i] = ATransmitter) then - begin - m_lstTransmittingManagers.Delete(i); - if (m_lstTransmittingManagers.Count = 0) then - FreeAndNil(m_lstTransmittingManagers); - - Result := TRUE; - exit; - end; - end; // for -end; - - -procedure TGamingManagerMI.FSetGameContextToTransmitter(ATransmitter: TTransmittingManagerMI); -begin - if (not (Assigned(ATransmitter) and ATransmitter.Ready)) then - exit; - - ATransmitter.RSendData(CMD_NICK_ID + ' ' + PlayerNickId + ' ' + OpponentNickId + ' ' + OpponentNick); - ATransmitter.RSendData(CMD_GAME_CONTEXT + ' ' + RGetGameContextStr); - - if (ChessBoard.Mode = mGame) then - ATransmitter.RSendData(CMD_CONTINUE_GAME); -end; - - -function TGamingManagerMI.FContainsContactIDInTransmitters(iContactID: integer): boolean; -var - i: integer; - ATransmitter: TTransmittingManagerMI; -begin - Result := FALSE; - if (not Assigned(m_lstTransmittingManagers)) then - exit; - for i := 0 to m_lstTransmittingManagers.Count - 1 do - begin - ATransmitter := m_lstTransmittingManagers[i]; - if (Assigned(ATransmitter) and (ATransmitter.Connector.ContactID = iContactID)) then - begin - Result := TRUE; - exit; - end; - end; -end; - - -procedure TGamingManagerMI.Start; -begin - if (Assigned(ChessBoard)) then - begin - Show; - exit; - end; - - if (not Connector.Opened) then - begin - if (not Connector.Open(FALSE)) then - raise EGamingManagerMI.Create('ERROR: Cannot open connector!'); - end; - - RCreateChessBoardAndDialogs; - RSetChessBoardToView; - - RReadPrivateSettings; - - RShowConnectingForm; -end; - - -procedure TGamingManagerMI.ROnCreate; -begin - RCreateAndPopulateExtBaseList; - - // Nicks initialization - PlayerNick := Connector.OwnerNick; - OpponentNick := Connector.ContactNick; - OpponentId := IntToStr(Connector.ContactID); - - TLocalizer.Instance.AddSubscriber(self); // TODO: -> TManager.ROnCreate - RLocalize; -end; - - -procedure TGamingManagerMI.ROnDestroy; - - procedure NRemoveFromGamings; - var - lstTmp: TList; - i: integer; - ATransmitter: TTransmittingManagerMI; - begin - if (Assigned(g_lstGamingManagers)) then - g_lstGamingManagers.Remove(self); - - if (not Assigned(m_lstTransmittingManagers)) then - exit; - - lstTmp := m_lstTransmittingManagers; - m_lstTransmittingManagers := nil; - - for i := 0 to lstTmp.Count - 1 do - begin - ATransmitter := lstTmp[i]; - if (Assigned(ATransmitter)) then - begin - lstTmp[i] := nil; - ATransmitter.Stop; - end; - end; - - lstTmp.Free; - end; - -begin // TGamingManagerMI.ROnDestroy - NRemoveFromGamings; - FUpdateChessBoardCaptions; - inherited ROnDestroy; -end; - - -procedure TGamingManagerMI.ConnectorHandler(e: TConnectorEvent; - d1: pointer = nil; d2: pointer = nil); -begin - case e of - ceError: - begin - Connector.Close; - end; - end; // case - - inherited ConnectorHandler(e, d1, d2); -end; - - -procedure TGamingManagerMI.RSetConnectionOccured; -var - iIndex: integer; -begin - inherited RSetConnectionOccured; - - if (not Assigned(g_lstGamingManagers)) then - g_lstGamingManagers := TList.Create; - - iIndex := g_lstGamingManagers.IndexOf(self); - if (iIndex < 0) then - g_lstGamingManagers.Add(self); - - FUpdateChessBoardCaptions; -end; - - -procedure TGamingManagerMI.FUpdateChessBoardCaptions; -var - i: integer; - GM: TGamingManagerMI; -begin - if (not Assigned(g_lstGamingManagers)) then - exit; - for i := 0 to g_lstGamingManagers.Count - 1 do - begin - GM := g_lstGamingManagers[i]; - if (Assigned(GM)) then - GM.RUpdateChessBoardCaption; - end; -end; - - -procedure TGamingManagerMI.RRetransmit(const strCmd: string); -var - i: integer; - ATransmitter: TTransmittingManagerMI; -begin - if (Transmittable or (not Assigned(m_lstTransmittingManagers))) then - exit; - - for i := 0 to m_lstTransmittingManagers.Count - 1 do - begin - ATransmitter := m_lstTransmittingManagers[i]; - if (Assigned(ATransmitter) and (ATransmitter.Ready)) then - ATransmitter.RSendData(strCmd); - end; -end; - - -function TGamingManagerMI.RGetGameName: string; -var - i: integer; - iIndex: integer; - iWithSameConnectorCount: integer; - GM: TGamingManagerMI; -begin - Result := inherited RGetGameName; - - if (not Assigned(g_lstGamingManagers)) then - exit; - - iWithSameConnectorCount := 0; - iIndex := 0; - - for i := 0 to g_lstGamingManagers.Count - 1 do - begin - GM := g_lstGamingManagers[i]; - if (Assigned(GM) and (GM.Connector.ContactID = self.Connector.ContactID)) then - begin - inc(iWithSameConnectorCount); - if (GM = self) then - iIndex := iWithSameConnectorCount; - end; // if - end; // for - - if (iWithSameConnectorCount > 1) then - Result := Result + ' (' + IntToStr(iIndex) + ')'; -end; - - -procedure TGamingManagerMI.RHandleConnectorDataCommand(sl: string); -var - strCmdSaved, sr: string; -begin - strCmdSaved := sl; - - RSplitStr(sl, sl, sr); - - if (sl = CMD_TRANSMITTING) then - begin - Transmittable := TRUE; - exit; - end; - - if (not Transmittable) then - begin - inherited RHandleConnectorDataCommand(strCmdSaved); - exit; - end; - - if (sl = CMD_WELCOME) then - begin - if (Assigned(ChessBoard)) then - ChessBoard.InitPosition; - RSetConnectionOccured; - end - else if (sl = CMD_NICK_ID) then - begin - // sr ::= - PlayerNick := OpponentNick; // change for transmittion - - RSplitStr(sr, sl, sr); - PlayerNickId := sl; - - RSplitStr(sr, sl, sr); - OpponentNickId := sl; - - RSplitStr(sr, sl, sr); - OpponentNick := sl; - - ChessBoard.Caption := RGetGameName; - end - else if (sl = CMD_GAME_CONTEXT) then - begin - RSetGameContext(sr); - end - else - inherited RHandleConnectorDataCommand(strCmdSaved); -end; - -//////////////////////////////////////////////////////////////////////////////// -// TManagerMIFactory - -constructor TManagerMIFactory.Create(Connector: TConnector; AErrorDuringPluginStart: TProcedure); -begin - inherited Create; - m_Connector := Connector; - FErrorDuringPluginStart := AErrorDuringPluginStart; - AddToPlugins(self); -end; - - -destructor TManagerMIFactory.Destroy; -begin - RemoveFromPlugins(self); - m_Dialogs.Free; - inherited; -end; - - -procedure TManagerMIFactory.Start; -begin - if (FCanStartTransmitting) then - begin - Dialogs.MessageDlg(TLocalizer.Instance.GetMessage(28), mtCustom, - [mbYes, mbNo], mfTransmitting); // You are currently playing some games. Do you want to start broadcasting? - m_bOwnExceptionHandler := TRUE; - exit; - end; - - FStartGaming; -end; - - -function TManagerMIFactory.FCanStartTransmitting: boolean; -var - i: integer; - GM: TGamingManagerMI; -begin - Result := FALSE; - - if (not (Assigned(g_lstGamingManagers) and Assigned(m_Connector))) then - exit; - - for i := 0 to g_lstGamingManagers.Count - 1 do - begin - GM := g_lstGamingManagers[i]; - Result := (Assigned(GM) and (not GM.Transmittable) and - (m_Connector.ContactID <> GM.Connector.ContactID) and - (not GM.FContainsContactIDInTransmitters(m_Connector.ContactID))); - if (Result) then - exit; - end; // for -end; - - -procedure TManagerMIFactory.FStartGaming; -begin - m_Manager := TGamingManagerMI.Create(m_Connector); - m_Connector.SetPlugin(m_Manager); - m_Connector := nil; - - try - m_Manager.Start; - Pointer(m_Manager) := nil; - except - if (m_bOwnExceptionHandler) then - FHandleStartException - else - raise; - end; - - Stop; -end; - - -procedure TManagerMIFactory.FHandleStartException; -begin - if (Assigned(FErrorDuringPluginStart)) then - FErrorDuringPluginStart; -end; - - -procedure TManagerMIFactory.FStartTransmitting(ManagerForTransmition: TManager); -begin - m_Manager := TTransmittingManagerMI.Create(m_Connector, ManagerForTransmition as TGamingManagerMI); - m_Connector.SetPlugin(m_Manager); - m_Connector := nil; - - try - m_Manager.Start; - Pointer(m_Manager) := nil; - except - if (m_bOwnExceptionHandler) then - FHandleStartException - else - raise; - end; - - Stop; -end; - - -procedure TManagerMIFactory.FStartTransmitting; -var - strlGames: TStringList; - i: integer; - GM: TGamingManagerMI; - ATransmitGameSelectionForm: TTransmitGameSelectionForm; -begin - if (not Assigned(g_lstGamingManagers)) then - begin - Stop; // Don't do anything - exit; - end; - - strlGames := TStringList.Create; - try - for i := 0 to g_lstGamingManagers.Count - 1 do - begin - GM := g_lstGamingManagers[i]; - if (Assigned(GM) and (not GM.Transmittable) and - (m_Connector.ContactID <> GM.Connector.ContactID) and - (not GM.FContainsContactIDInTransmitters(m_Connector.ContactID))) then - strlGames.AddObject(GM.RGetGameName, GM); - end; - - if (strlGames.Count > 1) then - begin - ATransmitGameSelectionForm := - Dialogs.CreateDialog(TTransmitGameSelectionForm) as TTransmitGameSelectionForm; - ATransmitGameSelectionForm.SetGames(strlGames); - ATransmitGameSelectionForm.Show; - end - else if (strlGames.Count = 1) then - begin - GM := strlGames.Objects[0] as TGamingManagerMI; - FStartTransmitting(GM); - end - else // = 0 - Stop; - - finally - strlGames.Free; - end; -end; - - -procedure TManagerMIFactory.Stop; -begin - if (Assigned(m_Connector)) then - begin - m_Connector.SetPlugin(nil); - m_Connector.Free; - end; - if (Assigned(m_Manager)) then - begin - m_Manager.Stop; - Pointer(m_Manager) := nil; - end; - Free; -end; - - -procedure TManagerMIFactory.ConnectorHandler(ce: TConnectorEvent; - d1: pointer = nil; d2: pointer = nil); -begin -end; - - -function TManagerMIFactory.FGetDialogs: TDialogs; -begin - if (not Assigned(m_Dialogs)) then - m_Dialogs := TDialogs.Create(nil, FDialogsHandler); - Result := m_Dialogs; -end; - - -procedure TManagerMIFactory.FDialogsHandler(modSender: TModalForm; msgDlgID: TModalFormID); -var - modRes: TModalResult; - GM: TGamingManagerMI; -begin - modRes := modSender.ModalResult; - case msgDlgID of - mfNone: - ; - mfTransmitting: - begin - if (modRes = mrYes) then - FStartTransmitting - else // mrNo - FStartGaming; - end; - - mfTransmitGame: - begin - if (modRes = mrOk) then - begin - with modSender as TTransmitGameSelectionForm do - begin - GM := GetSelected as TGamingManagerMI; - FStartTransmitting(GM); - end; - end - else - Stop; - end; - end; // case -end; - -//////////////////////////////////////////////////////////////////////////////// -// TTransmittingManagerMI - -constructor TTransmittingManagerMI.Create(Connector: TConnector; GamingManager: TGamingManagerMI); -begin - inherited Create(Connector); - m_GamingManager := GamingManager; -end; - -procedure TTransmittingManagerMI.Start; -begin - if (not Connector.Opened) then - begin - if (not Connector.Open(FALSE)) then - raise ETransmittingManagerMI.Create('ERROR: Cannot open connector!'); - end; - m_GamingManager.FAddTransmitter(self); -end; - - -procedure TTransmittingManagerMI.ROnDestroy; - - procedure NRemoveFromTransmittings; - var - i: integer; - GM: TGamingManagerMI; - begin - if (not Assigned(g_lstGamingManagers)) then - exit; - - for i := 0 to g_lstGamingManagers.Count - 1 do - begin - GM := g_lstGamingManagers[i]; - if (Assigned(GM) and GM.FRemoveTransmitter(self)) then - break; - end; - end; - -begin // TTransmittingManagerMI.ROnDestroy - NRemoveFromTransmittings; - inherited ROnDestroy; -end; - - -procedure TTransmittingManagerMI.ROnCreate; -begin -// PlayerNick := m_GamingManager.PlayerNick; -// OpponentNick := m_GamingManager.OpponentNick; -// OpponentId := m_GamingManager.OpponentId; -end; - - -procedure TTransmittingManagerMI.ConnectorHandler(e: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); -begin - case e of - ceConnected: - begin - RSendData(CMD_VERSION + ' ' + IntToStr(CHESS4NET_VERSION)); - RSendData(CMD_TRANSMITTING); - end; - - ceError, ceDisconnected: - begin - Connector.Close; - Stop; - end; - - else - inherited ConnectorHandler(e, d1, d2); - end; // case -end; - - -procedure TTransmittingManagerMI.RHandleConnectorDataCommand(sl: string); -var - sr: string; - lwOpponentClientVersion: Longword; -begin - RSplitStr(sl, sl, sr); - if (sl = CMD_VERSION) then - begin - RSplitStr(sr, sl, sr); - lwOpponentClientVersion := StrToIntDef(sl, CHESS4NET_VERSION); - - if (lwOpponentClientVersion < 201000) then - begin - RSendData(CMD_GOODBYE); - RReleaseWithConnectorGracefully; - end; - - RSetOpponentClientVersion(lwOpponentClientVersion); - end - else if (sl = CMD_TRANSMITTING) then - begin - RSendData(CMD_GOODBYE); // TODO: some message or output to log - RReleaseWithConnectorGracefully; - end - else if (sl = CMD_GOODBYE) then - begin - Stop; - end - else if (sl = CMD_WELCOME) then - begin - RSendData(CMD_WELCOME); - m_bReady := TRUE; - m_GamingManager.FSetGameContextToTransmitter(self); - end; -end; - - -//////////////////////////////////////////////////////////////////////////////// -// TManagerMI - -constructor TManagerMI.Create(Connector: TConnector); -begin - self.Connector := Connector; - RCreate; - AddToPlugins(self); -end; - - -destructor TManagerMI.Destroy; -begin - RemoveFromPlugins(self); - inherited; -end; - - -procedure TManagerMI.Start; -begin - Assert(FALSE); -end; - - -procedure TManagerMI.Stop; -begin - Release; -end; - - -procedure TManagerMI.RSendData(const cmd: string); -begin - Connector.SendData(cmd); -end; - - -procedure TManagerMI.ROnDestroy; -begin - if (Assigned(Connector)) then - begin - Connector.Free; - Connector := nil; - end; - - inherited ROnDestroy; -end; - - -procedure TManagerMI.ConnectorHandler(e: TConnectorEvent; d1: pointer = nil; d2: pointer = nil); -var - iData: integer; - strCmd: string; - strLeft: string; -begin - case e of - ceData: - begin - Assert(High(TStringDynArray(d1)) >= 0); - iData := 0; - repeat - strLeft := TStringDynArray(d1)[iData]; - inc(iData); - strCmd := IfThen((iData <= High(TStringDynArray(d1))), '*'); - - RHandleConnectorDataCommand(strLeft); - until (strCmd = ''); - end; // ceData - - else - inherited ConnectorHandler(e, d1, d2); - end; // case -end; - - -procedure TManagerMI.RSetOpponentClientVersion(lwVersion: LongWord); -begin - inherited RSetOpponentClientVersion(lwVersion); - - if (lwVersion >= 200901) then - Connector.MultiSession := TRUE; -end; - - -initialization - -finalization - FreeAndNil(g_lstGamingManagers); - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_addcontact.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_addcontact.inc deleted file mode 100644 index ad54b3b6d8..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_addcontact.inc +++ /dev/null @@ -1,54 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_ADDCONTACT} -{$DEFINE M_ADDCONTACT} - -const - - HANDLE_SEARCHRESULT = 0; - HANDLE_EVENT = 1; - HANDLE_CONTACT = 2; - -type - - PADDCONTACTSTRUCT = ^TADDCONTACTSTRUCT; - TADDCONTACTSTRUCT = record - handleType: Integer; - handle: THandle; // HDBEVENT, MCONTACT, SearchResult - szProto: PChar; // used by search result only - psr: Pointer; // @PROTOSEARCHRESULT - end; - -const - - { - wParam : (HWND) Parent window of the dialog that will be presented - lParam : Pointer to an initialised TADDCONTACTSTRUCT - Affect : Open's the add contact dialog - Version: 0.1.2.2+ - } - MS_ADDCONTACT_SHOW = 'AddContact/Show'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_api.pas b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_api.pas deleted file mode 100644 index 412d33e517..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_api.pas +++ /dev/null @@ -1,75 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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. - -*) - -{$IFDEF FPC} - {$PACKRECORDS C} - {$MODE Delphi} -{$ENDIF} - -unit m_api; - -interface - -uses - - m_globaldefs, windows; - - {$include m_plugins.inc} - {$include m_system.inc} - {$include m_database.inc} - {$include m_findadd.inc} - {$include m_awaymsg.inc} - {$include m_email.inc} - {$include m_history.inc} - {$include m_message.inc} - {$include m_url.inc} - {$include newpluginapi.inc} - {$include m_clui.inc} - {$include m_ignore.inc} - {$include m_skin.inc} - {$include m_file.inc} - {$include m_netlib.inc} - {$include m_langpack.inc} - {$include m_clist.inc} - {$include m_clc.inc} - {$include m_userinfo.inc} - {$include m_protosvc.inc} - {$include m_options.inc} - {$include m_icq.inc} - {$include m_protocols.inc} - {$include m_protomod.inc} - {$include m_utils.inc} - {$include m_addcontact.inc} - {$include statusmodes.inc} - {$include m_contacts.inc} - {$define M_API_UNIT} - {$include m_helpers.inc} - -implementation - - {$undef M_API_UNIT} - {$include m_helpers.inc} - -end. - diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_awaymsg.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_awaymsg.inc deleted file mode 100644 index c14b024b04..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_awaymsg.inc +++ /dev/null @@ -1,40 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_AWAYMSG} -{$DEFINE M_AWAYMSG} - -const - - { - wParam : MCONTACT - lParam : 0 - Affect : Show the away/na/etc message for a contact - Returns: 0 on success, non zero on failure, see notes - notes : returns without waiting for the message to be shown. - version: v0.1.0.1+ - } - MS_AWAYMSG_SHOWAWAYMSG = 'SRAway/GetMessage'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clc.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clc.inc deleted file mode 100644 index 743d8370aa..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clc.inc +++ /dev/null @@ -1,284 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_CLC} -{$DEFINE M_CLC} - -const - - CLISTCONTROL_CLASS = 'CListControl'; - - // styles - - CLS_MANUALUPDATE = $0001; // todo - CLS_SHOWHIDDEN = $0002; - CLS_HIDEOFFLINE = $0004; // hides all offline users - CLS_CHECKBOXES = $0008; - CLS_MULTICOLUMN = $0010; // not true multi-column, just for ignore/vis options - CLS_HIDEEMPTYGROUPS = $0020; // note: this flag will be spontaneously removed if the 'new subgroup' menu item is clicked, for obvious reasons - CLS_USEGROUPS = $0040; - CLS_NOHIDEOFFLINE = $0080; // overrides CLS_HIDEOFFLINE and the per-group hideoffline setting - CLS_GREYALTERNATE = $0100; // make every other line slightly grey - CLS_GROUPCHECKBOXES = $0200; // put checkboxes on groups too (managed by CLC) - - CLS_EX_DISABLEDRAGDROP = $00000001; - CLS_EX_EDITLABELS = $00000002; - CLS_EX_SHOWSELALWAYS = $00000004; - CLS_EX_TRACKSELECT = $00000008; - CLS_EX_SHOWGROUPCOUNTS = $00000010; - CLS_EX_DIVIDERONOFF = $00000020; - CLS_EX_HIDECOUNTSWHENEMPTY = $00000040; - CLS_EX_NOTRANSLUCENTSEL = $00000080; - CLS_EX_LINEWITHGROUPS = $00000100; - CLS_EX_QUICKSEARCHVISONLY = $00000200; - CLS_EX_SORTGROUPSALPHA = $00000400; - CLS_EX_NOSMOOTHSCROLLING = $00000800; - - CLM_FIRST = $1000; // this is the same as LVM_FIRST - CLM_LAST = $1100; - -// messages, compare with equivalent TVM_* in the WINAPI - - CLM_ADDCONTACT = (CLM_FIRST+0); // wParam=hContact - CLM_ADDGROUP = (CLM_FIRST+1); // wParam=hGroup - CLM_AUTOREBUILD = (CLM_FIRST+2); - CLM_DELETEITEM = (CLM_FIRST+3); // wParam=hItem - CLM_EDITLABEL = (CLM_FIRST+4); // wParam=hItem - CLM_ENDEDITLABELNOW = (CLM_FIRST+5); // wParam=cancel, 0 to save - CLM_ENSUREVISIBLE = (CLM_FIRST+6); // wParam=hItem, lParam=partialOk - - CLE_TOGGLE = -1; - CLE_COLLAPSE = 0; - CLE_EXPAND = 1; - CLE_INVALID = $FFFF; - - CLM_EXPAND = (CLM_FIRST+7); // wParam=hItem, lParam=CLE_ - CLM_FINDCONTACT = (CLM_FIRST+8); // wParam=hContact, returns an hItem - CLM_FINDGROUP = (CLM_FIRST+9); // wParam=hGroup, returns an hItem - CLM_GETBKCOLOR = (CLM_FIRST+10); // returns a COLORREF - CLM_GETCHECKMARK = (CLM_FIRST+11); // wParam=hItem, returns 1 or 0 - CLM_GETCOUNT = (CLM_FIRST+12); // returns the total number of items - - CLM_GETEDITCONTROL = (CLM_FIRST+13); // returns the HWND, or NULL - CLM_GETEXPAND = (CLM_FIRST+14); // wParam=hItem, returns a CLE_, CLE_INVALID if not a group - CLM_GETEXTRACOLUMNS = (CLM_FIRST+15); // returns number of extra columns - CLM_GETEXTRAIMAGE = (CLM_FIRST+16); // wParam=hItem, lParam=MAKELPARAM(iColumn (0 based),0), returns iImage or $FF - CLM_GETEXTRAIMAGELIST = (CLM_FIRST+17); // returns HIMAGELIST - CLM_GETFONT = (CLM_FIRST+18); // wParam=fontId, see clm_setfont. returns hFont. - CLM_GETINDENT = (CLM_FIRST+19); // wParam=new group indent - CLM_GETISEARCHSTRING = (CLM_FIRST+20); // lParam=(char*)pszStr, max 120 bytes, returns number of chars in string - CLM_GETITEMTEXT = (CLM_FIRST+21); // wParam=hItem, lParam=(char*)pszStr, max 120 bytes - CLM_GETSCROLLTIME = (CLM_FIRST+22); // returns time in ms - CLM_GETSELECTION = (CLM_FIRST+23); // returns hItem - - CLCHT_ABOVE = $0001; // above client area - CLCHT_BELOW = $0002; // below client area - CLCHT_TOLEFT = $0004; // left of client area - CLCHT_TORIGHT = $0008; // right of client area - CLCHT_NOWHERE = $0010; // in client area, not on an item - CLCHT_ONITEMICON = $0020; - CLCHT_ONITEMCHECK = $0040; - CLCHT_ONITEMLABEL = $0080; - CLCHT_ONITEMINDENT = $0100; // to the left of an item icon - CLCHT_ONITEMEXTRA = $0200; // on an extra icon, HIBYTE(HIWORD()) says which - CLCHT_ONITEM = $03E0; - CLCHT_INLEFTMARGIN = $0400; - CLCHT_BELOWITEMS = $0800; // in client area but below last item - - CLM_HITTEST = (CLM_FIRST+25); // lParam=MAKELPARAM(x,y) (relative to control), wParam=(PDWORD)&hitTest (see encoding of HitTest() in clc.h, can be NULL) returns hItem or NULL - CLM_SELECTITEM = (CLM_FIRST+26); // wParam=hItem - - CLB_TOPLEFT = 0; - CLB_STRETCHV = 1; - CLB_STRETCHH = 2; // and tile vertically - CLB_STRETCH = 3; - - CLBM_TYPE = $00FF; - CLBF_TILEH = $1000; - CLBF_TILEV = $2000; - CLBF_PROPORTIONAL = $4000; - CLBF_SCROLL = $8000; - - CLM_SETBKBITMAP = (CLM_FIRST+27); // wParam=mode, lParam=hBitmap (don't delete it), NULL for none - CLM_SETBKCOLOR = (CLM_FIRST+28); // wParam=a COLORREF, default is GetSysColor(COLOR_3DFACE) - CLM_SETCHECKMARK = (CLM_FIRST+29); // wParam=hItem, lParam=1 or 0 - CLM_SETEXTRACOLUMNS = (CLM_FIRST+30); // wParam=number of extra columns (zero to MAXEXTRACOLUMNS from clc.h, currently 16) - CLM_SETEXTRAIMAGE = (CLM_FIRST+31); // wParam=hItem, lParam=MAKELPARAM(iColumn (0 based),iImage). iImage=$FF is a blank - CLM_SETEXTRAIMAGELIST = (CLM_FIRST+32); // lParam=HIMAGELIST - - FONTID_CONTACTS = 0; - FONTID_INVIS = 1; - FONTID_OFFLINE = 2; - FONTID_NOTONLIST = 3; - FONTID_GROUPS = 4; - FONTID_GROUPCOUNTS = 5; - FONTID_DIVIDERS = 6; - FONTID_OFFINVIS = 7; - FONTID_MAX = 7; - - CLM_SETFONT = (CLM_FIRST+33); // wParam=hFont, lParam=MAKELPARAM(fRedraw,fontId) - CLM_SETINDENT = (CLM_FIRST+34); // wParam=new indent, default is 3 pixels - CLM_SETITEMTEXT = (CLM_FIRST+35); // wParam=hItem, lParam=(char*)pszNewText - CLM_SETSCROLLTIME = (CLM_FIRST+36); // wParam=time in ms, default 200 - CLM_SETHIDEEMPTYGROUPS = (CLM_FIRST+38); // wParam=TRUE/FALSE - - GREYF_UNFOCUS = $80000000; - MODEF_OFFLINE = $40000000; - - // and use the PF2_ #defines from m_protosvc.inc - CLM_SETGREYOUTFLAGS = (CLM_FIRST+39); // wParam=new flags - CLM_GETHIDEOFFLINEROOT = (CLM_FIRST+40); // returns TRUE/FALSE - CLM_SETHIDEOFFLINEROOT = (CLM_FIRST+41); // wParam=TRUE/FALSE - CLM_SETUSEGROUPS = (CLM_FIRST+42); // wParam=TRUE/FALSE - CLM_SETOFFLINEMODES = (CLM_FIRST+43); // for 'hide offline', wParam=PF2_ flags and MODEF_OFFLINE - CLM_GETEXSTYLE = (CLM_FIRST+44); // returns CLS_EX_ flags - CLM_SETEXSTYLE = (CLM_FIRST+45); // wParam=CLS_EX_ flags - CLM_GETLEFTMARGIN = (CLM_FIRST+46); // returns count of pixels - CLM_SETLEFTMARGIN = (CLM_FIRST+47); // wParam=pixels - // the order of info items is never changed, so make sure you add them in the - // order you want them to remain - CLM_ADDINFOITEM = (CLM_FIRST+48); // lParam=&TCLCINFOITEM, returns hItem - CLM_GETITEMTYPE = (CLM_FIRST+49); // wParam=hItem, returns a CLCIT_ - CLM_GETNEXTITEM = (CLM_FIRST+50); // wParam=flag, lParam=hItem, returns an hItem - CLM_GETTEXTCOLOR = (CLM_FIRST+51); // wParam=FONTID_, returns COLORREF - CLM_SETTEXTCOLOR = (CLM_FIRST+52); // wParam=FONTID_, lParam=COLORREF - - CLCIIF_BELOWGROUPS = 1; // put it between groups and contacts, default is at top - CLCIIF_BELOWCONTACTS = 2; // put it at the bottom - CLCIIF_CHECKBOX = $40; // give this item a check box - CLCIIF_GROUPFONT = $80; // draw the item using FONTID_GROUPS - - CLCIT_INVALID = -1; - CLCIT_GROUP = 0; - CLCIT_CONTACT = 1; - CLCIT_DIVIDER = 2; - CLCIT_INFO = 3; - - CLGN_ROOT = 0; - CLGN_CHILD = 1; - CLGN_PARENT = 2; - CLGN_NEXT = 3; - CLGN_PREVIOUS = 4; - CLGN_NEXTCONTACT = 5; - CLGN_PREVIOUSCONTACT = 6; - CLGN_NEXTGROUP = 7; - CLGN_PREVIOUSGROUP = 8; - - CLNF_ISGROUP = 1; - CLNF_ISINFO = 2; - - CLN_FIRST = (0-100); - CLN_EXPANDED = (CLN_FIRST-0); // hItem=hGroup, action=CLE_* - CLN_LISTREBUILT = (CLN_FIRST-1); - CLN_ITEMCHECKED = (CLN_FIRST-2); // todo // hItem,action,flags valid - CLN_DRAGGING = (CLN_FIRST-3); // hItem,pt,flags valid. only sent when cursor outside window, return nonzero if processed - CLN_DROPPED = (CLN_FIRST-4); // hItem,pt,flags valid. only sent when cursor outside window, return nonzero if processed - CLN_LISTSIZECHANGE = (CLN_FIRST-5); // pt.y valid. the vertical height of the visible items in the list has changed. - CLN_OPTIONSCHANGED = (CLN_FIRST-6); // nothing valid. If you set some extended options they have been overwritten and should be re-set - CLN_DRAGSTOP = (CLN_FIRST-7); // hItem,flags valid. sent when cursor goes back in to the window having been outside, return nonzero if processed - CLN_NEWCONTACT = (CLN_FIRST-8); // hItem,flags valid. sent when a new contact is added without a full list rebuild - CLN_CONTACTMOVED = (CLN_FIRST-9); // hItem,flags valid. sent when contact is moved without a full list rebuild - CLN_CHECKCHANGED = (CLN_FIRST-10); // hItem,flags valid. sent when any check mark is changed, but only for one change if there are many - -type - - PCLCINFOITEM = ^TCLCINFOITEM; - TCLCINFOITEM = record - cbSize: int; - pszText: PChar; - hParentGroup: THandle; - flags: DWORD; - hIcon: THandle; // todo - end; - - PNMCLISTCONTROL = ^TNMCLISTCONTROL; - TNMCLISTCONTROL = record - hdr: TNMHDR; // depends on Windows.pas - hItem: THandle; - action: int; - iColumn: int; // -1 if not on an extra column - flags: DWORD; - pt: TPoint; // depends on Windows.pas - end; - - PCLCINFOTIP = ^TCLCINFOTIP; - TCLCINFOTIP = record - cbSize: int; - isTreeFocused: int; // so the plugin can provide an option - isGroup: int; // 0 if it's contact, 1 if it's a group - hItem: THandle; // handle to group or contact - ptCursor: TPoint; - rcItem: TRect; - end; - -const - - { - wParam : 0 - lParam : Pointer to a TCLCINFOTIP structure - Affect : An InfoTip for an item should be shown now, see notes - Returns: [non zero] if you process this, because it makes no sense - for more than one module to process this. - Notes : It's upto the module where to put the InfoTip, Normally - it's a few pixels below and to the right of the cursor. - - - This event is called after the mouse ehas been stationary over - a contact for (by default) 200ms - } - ME_CLC_SHOWINFOTIP = 'CLC/ShowInfoTip'; - - { - wParam : 0 - lParam : Pointer to an initialised TCLCINFOTIP - Affect : It's time to destroy an infotip, see notes - Notes : Only cbSize, isGroup, hItem are set - notes : This is sent when the mouse moves off a contact when ME_CLC_SHOWINFOTIP - has previously been called. - - - If you don't want this behaviour, you should have grabbed the mouse - capture yourself -- - } - ME_CLC_HIDEINFOTIP = 'CLC/HideInfoTip'; - - { - wParam : new_time - lParam : 0 - Affect : Set a new hover time before the info tip hooks are called, see notes - Returns: 0 on success, [non zero] on failure - Notes : The value of this setting is applid to all current CLC windows - and saved to b applied to all future windows, it is persistent. - - - Time is in milliseconds, default is 750ms - } - MS_CLC_SETINFOTIPHOVERTIME = 'CLC/SetInfoTipHoverTime'; - - { - wParam : 0 - lParam : 0 - Affect : get the hover time before the infotip hooks are called - returns: the hover time in MS - } - MS_CLC_GETINFOTIPHOVERTIME = 'CLC/GetInfoTipHoverTime'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clist.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clist.inc deleted file mode 100644 index ecf3e52bc7..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clist.inc +++ /dev/null @@ -1,641 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_CLIST} -{$DEFINE M_CLIST} - -{$ifndef STATUSMODES} - {$include statusmodes.inc} -{$endif} - -const - - // for MS_CLIST_GETSTATUSMODEDESCRIPTION - - GSMDF_PREFIXONLINE = 1; // prefix "Online :" for online submodes, e.g. 'away' - - // for MS_CLIST_ADDMAINMENUITEM - - CMIF_GRAYED = 1; - CMIF_CHECKED = 2; - CMIF_HIDDEN = 4; // only works on contact menus - CMIF_NOTOFFLINE = 8; // item won't appear for contacts that are offline - CMIF_NOTONLINE = 16; // " online - CMIF_NOTONLIST = 32; // item won't appear on standard contacts - CMIF_NOTOFFLIST = 64; // item won't appear on contacts that have the 'NotOnList' setting - - // for MS_CLIST_MODIFYMENUITEM - - CMIM_NAME = $80000000; - CMIM_FLAGS = $40000000; - CMIM_ICON = $20000000; - CMIM_HOTKEY = $10000000; - CMIM_ALL = $F0000000; - - // for MS_CLIST_GETCONTACTDISPLAYNAME - - // will never return the user's custom name, even if that's the one to be displayed - GCDNF_NOMYHANDLE = 1; - - // for MS_CLIST_ADDEVENT - - //flashes the icon even if the user is occupied, and puts the event - // at the top of the queue - CLEF_URGENT = 1; - { icon will not flash forever, only a few times, e.g. online alert } - CLEF_ONLYAFEW = 2; - - // for MS_CLIST_GETICONSIMAGELIST - - IMAGE_GROUPOPEN = 11; - IMAGE_GROUPSHUT = 12; - - // for MS_CLIST_MENUPROCESSCOMMAND - - MPCF_CONTACTMENU = 1; // test commands from a contact menu - MPCF_MAINMENU = 2; // test commands from the main menu - - // for MS_CLIST_GROUPGETNAME/2 - - GROUPF_EXPANDED = $04; - GROUPF_HIDEOFFLINE = $08; - - // - - SETTING_TOOLWINDOW_DEFAULT = 1; - SETTING_SHOWMAINMENU_DEFAULT = 1; - SETTING_SHOWCAPTION_DEFAULT = 1; - SETTING_CLIENTDRAG_DEFAULT = 0; - SETTING_ONTOP_DEFAULT = 1; - SETTING_MIN2TRAY_DEFAULT = 1; - SETTING_TRAY1CLICK_DEFAULT = 0; - SETTING_HIDEOFFLINE_DEFAULT = 0; - SETTING_HIDEEMPTYGROUPS_DEFAULT = 0; - SETTING_USEGROUPS_DEFAULT = 1; - SETTING_SORTBYSTATUS_DEFAULT = 0; - SETTING_TRANSPARENT_DEFAULT = 0; - SETTING_ALPHA_DEFAULT = 200; - SETTING_AUTOALPHA_DEFAULT = 150; - SETTING_CONFIRMDELETE_DEFAULT = 1; - SETTING_AUTOHIDE_DEFAULT = 0; - SETTING_HIDETIME_DEFAULT = 30; - SETTING_CYCLETIME_DEFAULT = 4; - SETTING_ALWAYSSTATUS_DEFAULT = 0; - SETTING_ALWAYSMULTI_DEFAULT = 0; - SETTING_TRAYICON_SINGLE = 0; - SETTING_TRAYICON_CYCLE = 1; - SETTING_TRAYICON_MULTI = 2; - SETTING_TRAYICON_DEFAULT = SETTING_TRAYICON_SINGLE; - SETTING_STATE_HIDDEN = 0; - SETTING_STATE_MINIMIZED = 1; - SETTING_STATE_NORMAL = 2; - -type - - PCLISTMENUITEM = ^TCLISTMENUITEM; - TCLISTMENUITEM = record - cbSize: int; // size in bytes of this structure - pszName: PChar; // text of the menu item - flags: DWORD; - position: int; // approx position on the menu, lower numbers go nearer the top - hIcon: THandle; // icon to put by the item, if this was *not* loaded from - // a resource, you can delete it straight after the call - pszService: PChar; // name of the service to call when the service is clicked - pszPopupName: PChar;// name of the popup menu that this item is on, if this - // is NULL the iteem is on the root of the menu - popupPosition: int; // position of the popup menu on the root menu, ignored - // if pszPopupName is NULL(0) or if the popup menu already exists - hotKey: DWORD; // keyboard accelerator, same as lParam of WM_HOTKEY, 0 for none - pszContactOwner: PChar; // contact menus only, the protocol module that owns - // the contacts to which this to which this menu item - // applies, NULL(0) if it applies to all contacts. - // if it applies to multiple but not all protocols - // add multiple menu items or use ME_CLIST_PREBUILDCONTACTMENU - end; - - PCLISTDOUBLECLICKACTION = ^TCLISTDOUBLECLICKACTION; - TCLISTDOUBLECLICKACTION = record - cbSize: int; - pszContactOwner: PChar; // name of the protocol owning the contact or NULL(0) for all - flags: DWORD; // CMIF_NOT flags above - pszService: PChar; // service to call on double click, is called with wParam=hContact, lParam=0 - end; - - PCLISTEVENT = ^TCLISTEVENT; - TCLISTEVENT = record - cbSize: int; // size in bytes - hContact: THandle; // handle to the contact to put the icon by - hIcon: THandle; // icon to flash! - flags: DWORD; - hDBEvent: THandle; // caller defined, but should be unique for hContact - lParam: LPARAM; - pszService: PChar; // name of service to call on activation - pszTooltip: PChar; // short description of the event to display as a tooltip on the systray - end; - -const - - { - wParam : new_status - lParam : 0 - Affect : Sent when the user acks to change their status, see notes - Notes : Also sent due to a MS_CLIST_SETSTATUSMODE - } - ME_CLIST_STATUSMODECHANGE = 'CList/StatusModeChange'; - - { - wParam : new_status - lParam : 0 - Affect : Force a change of status mode, see statusmodes.inc - } - MS_CLIST_SETSTATUSMODE = 'CList/SetStatusMode'; - - { - wParam : 0 - lParam : 0 - Affect : Get the current status mode, see notes - Notes : This is the status, as set by the user, not any protocol specific status - all protocol modules will attempt to conform to this setting at ALL times. - } - MS_CLIST_GETSTATUSMODE = 'CList/GetStatusMode'; - - { - wParam : status_mode - lParam : flags - Affect : Get a textual description of the given status mode - Returns: pointer to a static buffer of the description of the given status mode - or NULL(0) if the mode was unknown. - Version: v0.1.0.1+ - } - MS_CLIST_GETSTATUSMODEDESCRIPTION = 'CList/GetStatusModeDescription'; - - { - wParam : 0 - lParam : Pointer to a initalised TCLISTMENUITEM structure - Affect : Add a new menu item to the main menu, see notes - Returns: A handle to the new MENU item or NULL(0) on failure - Notes : The given TCLISTMENUITEM.pszService in is called when the item - get clicked with : - - - wParam = 0, lParam = hwndContactList - } - MS_CLIST_ADDMAINMENUITEM = 'CList/AddMainMenuItem'; - - { - wParam : 0 - lParam : Pointer to a initalised TCLISTMENUITEM structure - Affect : Add a new item to the user contact menus, see notes - Notes : exactly the same as MS_CLIST_ADDMAINMENUITEM except when an item - is selected, the service gets called with wParam=hContact, - pszContactOwner is obeyed. - - - Popup menus are not supported, pszPopupName and popupPosition - are ignored. If CTRL is held down when right clicking the menu - position numbers will be displayed in brackets afterr the menu item - text, this only works in debug builds! - } - MS_CLIST_ADDCONTACTMENUITEM = 'CList/AddContactMenuItem'; - - { - wParam : HMENUITEM - lParam : Pointer to a initalised TCLISTMENUITEM - Affect : Modify an existing menu item, see notes - Returns: 0 on success, [non zero] on failure - Notes : hMenuItem will have been returned by MS_CLIST_ADD[MAIN]MENUITEM - TCLISTMENUITEM.flags should contain CMIM_* constants (see above) - to mark which fields should be updated, if it's not present, they - can't be updated -- if flags do not exist for a field it can not - be updated. - Version: v0.1.0.1+ - } - MS_CLIST_MODIFYMENUITEM = 'CList/ModifyMenuItem'; - - { - wParam : MCONTACT - lParam : 0 - Affect : the context menu for a contact is about to be built, see notes - Notes : modules should use this to change menu items that are specific - to the contact that has them - Version: v0.1.0.1+ - } - ME_CLIST_PREBUILDCONTACTMENU = 'CList/PreBuildContactMenu'; - - { - wParam : 0 - lParam : Pointer to a initalised TCLISTDOUBLECLICKACTION structure - Affect : Sets the service to call when a contact is double-clicked, see notes - Returns: 0 on success, [non zero] on failure - Notes : in case of conflicts, the first module to have registered - will get the double click, no others will, this service - will return success even for duplicates - - - This service was dropped from development during 0.3.0.0, it is no - longer supported, see ME_CLIST_DOUBLECLICKED - Version: 0.1.2.2+, 0.2.0+ ONLY (not 3.0a) - } - MS_CLIST_SETDOUBLECLICKACTION = 'CList/SetDoubleClickAction'; - - { - wParam : MCONTACT - lParam : - Affect : Register with this event to be notified of a double click on the CList - against a MCONTACT, you will not be notified if there is a pending CList event - that the double click clears, (i.e. flashing icon is presented to be clicked) - Version: 0.3.0.0 - } - ME_CLIST_DOUBLECLICKED = 'CList/DoubleClicked'; - - { - wParam : MCONTACT - lParam : flags - Affect : Gets the string that the contact list will use to represent a contact - Returns: Always a pointer - Notes : Returns a pointer to the name, will always succeed, even if it needs - to return "(Unknown Contact)" - - - this pointer is a statically allocated buffer which will - be overwritten on every call to this service, callers should make - sure that they copy the information before they call it again - Version: v0.1.2.0+, 0.2.0+ ONLY (0.3a supports the contacts module) - } - MS_CLIST_GETCONTACTDISPLAYNAME = 'CList/GetContactDisplayName'; - - { - wParam : 0 - lParam : Pointer to a TCLISTEVENT - Affect : Add's an event to the list - Notes : The service will flash TCLISTEVENT.hIcon, next to the - contact, TCLISTEVENT.hContact - - - pszService is called is called wParam=hwndContactList, - lParam=pointer to a TCLISTEVENT. - - - the TCLISTEVENT data is invalidated after this service returns - so copy anything from it if required. - - - TCLISTEVENT.pszService will also be called if the user - double clicks on the icon, at which point it will be removed - from the contact lists queue automatically. - - - TCLISTEVENT.hContact and TCLISTEVENT.hDBEvent should be unique. - } - MS_CLIST_ADDEVENT = 'CList/AddEvent'; - - { - wParam : MCONTACT - lParam : HDBEVENT - Affect : Remove an event from the contact list queue - Returns: 0 on success, [non zero] on failure - } - MS_CLIST_REMOVEEVENT = 'Clist/RemoveEvent'; - - { - wParam : MCONTACT - lParam : iEvent - Affect : Get the details of an event in the queue, see notes - Returns: A CLISTEVENT* or NULL(0) on failure - Notes : Returns the iEvent'1st/2nd/3rd/nth elemented queried, - e.g. iEvent=0 will get the event that will be returned if the - user double clicks on that MCONTACT - - - Use MCONTACT=NULL, iEvent=0 for example to get the event - the user will get if they double click on the tray. - Version: v0.1.2.1+ - } - MS_CLIST_GETEVENT = 'CList/GetEvent'; - - { - wParam : ControlID - lParam : Pointer to MEASUREITEMSTRUCT struct - Affect : Process a WM_MEASUREITEM message for user context menus, see notes - Notes : just because wParam, lParam is defined here, only pass them - opaquely to this service, as is. - - - This is just to draw icons, if it is not called, the icons - will not be drawn - Version: v0.1.1.0+ - } - MS_CLIST_MENUMEASUREITEM = 'CList/MenuMeasureItem'; - - { - wParam : - lParam : - Affect : Process a WM_DRAWITEM message for user context menus, - wParam, lParam should be passed from such message handler. - Version: v0.1.1.0+ - } - MS_CLIST_MENUDRAWITEM = 'CList/MenuDrawItem'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Built the context menu for a specific contact - Returns: A HMENU handle identifying the menu, thhis should be DestroyMenu()ed - when done. - Version: v0.1.1.0+ - } - MS_CLIST_MENUBUILDCONTACT = 'CList/MenuBuildContact'; - - { - wParam : 0 - lParam : 0 - Affect : Get the image list handle with all the useful icons in it - Version: v0.1.1.0+ - } - MS_CLIST_GETICONSIMAGELIST = 'CList/GetIconsImageList'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Get the icon that should be associated with a contact - Returns: an index into the contact list imagelist, if the icon - is a flashing icon, this service won't return information about it - see below - Version: v0.1.2.0+ - } - MS_CLIST_GETCONTACTICON = 'CList/GetContactIcon'; - - { - wParam : MCONTACT - lParam : ICON_ID - Affect : The icon of a contact in the contact list has changed, - ICON_ID is an index to what image has changed - Version: v0.1.2.1+ - } - ME_CLIST_CONTACTICONCHANGED = 'CList/ContactIconChanged'; - - // ideally only used by a CLIST UI module - - { - wParam : 0 - lParam : 0 - Affect : Get the handle to Miranda's main menu - Version: v0.1.1.0+ - } - MS_CLIST_MENUGETMAIN = 'CList/MenuGetMain'; - - { - wParam : 0 - lParam : 0 - Affect : Get a handle to Miranda's status menu - Version: v0.1.1.0+ - } - MS_CLIST_MENUGETSTATUS = 'CList/MenuGetStatus'; - - { - wParam : MAKEWPARAM(LOWORD(wParam of WM_COMMAND),flags) - lParam : MCONTACT - Affect : Process a mennu selection from a menu, see notes - Returns: True if it processed the command, False otherwise - notes : hContact is the currently selected contact, it is not used - if this is a main menu command, if this is NULL then the command - is a contact menu one, the command is ignored - Version: v0.1.1.0+ - } - MS_CLIST_MENUPROCESSCOMMAND = 'CList/MenuProcessCommand'; - - { - wParam : virtual key code - lParam : MPCF_* flags - Affect : Process a menu hotkey, see notes - Returns: True if it processed the command, False otherwise - Notes : this should be called in WM_KEYDOWN - Version: v0.1.1.0+ - } - MS_CLIST_MENUPROCESSHOTKEY = 'CList/MenuProcessHotkey'; - - { - wParam : Pointer to a MSG structurer - lParam : Pointer to an LRESULT - Affect : Process all the messages required for docking, see notes - Returns: True if the message should NOT be processed anymore, False otherwise - Notes : only msg.hwnd, msg.message, msg.wParam and msg.lParam are used - your WndProc should return the lResult if AND only IF, TRUE is returned - Version: v0.1.1.0+ - } - MS_CLIST_DOCKINGPROCESSMESSAGE = 'CList/DockingProcessMessage'; - - { - wParam : 0 - lParam : 0 - Affect : Determines wheter the contact list docked - Returns: pnon zero] if the contact list is docked, or 0 if it's not - Version: v0.1.1.0+ - } - MS_CLIST_DOCKINGISDOCKED = 'CList/DockingIsDocked'; - - { - wParam : Pointer to a TMSG - lParam : Pointer to an LRESULT - Affect : Process all the messages required for the tray icon, see notes - Returns: TRUE if the message should not be processed anymore, False otherwise - Notes : Only msg.hwnd, msg.message, msg.wparam and msg.lParam are used - your WndProc should return LRESULT if and ONLY if TRUE is returned - Version: v0.1.1.0+ - } - MS_CLIST_TRAYICONPROCESSMESSAGE = 'CList/TrayIconProcessMessage'; - - { - wParam : Pointer to TMSG - lParam : Pointer to an LRESULT - Affect : Process all the messages required for hotkeys, see notes - Returns: True if the message should not be processed anymore or False otherwise - Notes : only msg.hwnd, msg.message, msg.wParam, msg.lParam are used - Version: v0.1.1.0+ - } - MS_CLIST_HOTKEYSPROCESSMESSAGE = 'CList/HotkeysProcessMessage'; - - { - wParam : 0 - lParam : 0 - Affect : Toggles the show/hide status of the contact list - Returns: 0 on success, [non zero] on failure - Version: v0.1.1.0+ - } - MS_CLIST_SHOWHIDE = 'CList/ShowHide'; - - { - wParam : 0 - lParam : 0 - Affect : temporarily disable the autohide feature, see notes - Notes : this service will restart the auto hide timer, so if you need - to keep the window visible you'll have to bee getting user input - or calling this service each time - Version: v0.1.2.1+ - } - MS_CLIST_PAUSEAUTOHIDE = 'CList/PauseAutoHide'; - - { - wParam : HPARENTGROUP - lParam : 0 - Affect : Create a new group and calls CLUI to display it, see notes - Returns: A handle to the new group. - Notes : If HPARENTGROUP is NULL(0) it will create a group at the root. - Version: v0.1.1.0+ - } - MS_CLIST_GROUPCREATE = 'CList/GroupCreate'; - - { - wParam : HGROUP - lParam : 0 - Affect : Delete a group and call CLUI to display the change - Returns: 0 on success, [non zero] on failure - Version: v0.1.1.0+ - } - MS_CLIST_GROUPDELETE = 'CList/GroupDelete'; - - { - wParam : HGROUP - lParam : newState - Affect : Change the expanded state flag for a group internally, see notes - Returns: 0 on success, [non zero] on failure - Notes : if newState is non zero then the group is expanded, 0 it's collapsed - CLUI IS *NOT* called when the change is made. - Version: v0.1.1.0+ - } - MS_CLIST_GROUPSETEXPANDED = 'CList/GroupSetExpanded'; - - { - wParam : HGROUP - lParam : MAKELPARAM(flags, flagsMask) - Affect : Change the flag for a group, see notes - Returns: 0 on success, [non zero] on failure - Notes : only if flags given in flagsmask are altered, - CLUI is called on change to GROUPF_HIDEOFFLINE - Version: v0.1.2.1+ - } - MS_CLIST_GROUPSETFLAGS = 'CList/GroupSetFlags'; - - { - wParam : HGROUP - lParam : Pointer to a integer to be filled with expanded state - Affect : get the name of a group, see notes - Returns: a static buffer pointing to the name of the group - returns NULL(0) if HGROUP is invalid. - Notes : the returned buffer is only valid til the next call - to this service, lParam can be NULL(0) if you don't - want to know if the group is expanded - Version: v0.1.1.0+ - } - MS_CLIST_GROUPGETNAME = 'CList/GroupGetName'; - - { - wParam : HGROUP - lParam : Pointer to flags - Affect : Get the name of the group, see notes - Returns: A static buffer pointing to the name of the group - returns NULL(0) if HGROUP is invalid - Note : this buffer is only valid til the next call to this service - flags can be NULL(0), otherwise it'll return GROUPF_* constants - Version: v0.1.2.1+ - } - MS_CLIST_GROUPGETNAME2 = 'CList/GroupGetName2'; - - { - wParam : HGROUP - lParam : HBEFOREGROUP - Affect : Move a group directly before another group - Returns: the new handle of the group on success, NULL(0) on failure - Notes : the order is represented by the order in which MS_CLUI_GROUPADDED - is called, however UI's are free to ignore this order and sort - if they wish. - Version: v0.1.2.1+ - } - MS_CLIST_GROUPMOVEBEFORE = 'CList/GroupMoveBefore'; - - { - wParam : HGROUP - lParam : Pointer to a null terminated string containing the new name - Affect : Rename a group internally, see notes - Returns: 0 on success, [non zero] on failure - Notes : this will fail if the group name is a duplicate of an existing - a name, CLUI is not called when this change is made. - Version: v0.1.1.0+ - } - MS_CLIST_GROUPRENAME = 'CList/GroupRename'; - - { - wParam : 0 - lParam : 0 - Affect : Build a menu of the group tree, see notes - Returns: Handle to the menu, NULL(0) on failure - Notes : NULL be returned if the user doesn't have any groups - the dwItemData of every menu item is the handle to that group. - Menu item ID's are assigned starting at 100 in no particular order - Version: v0.1.2.1+ - } - MS_CLIST_GROUPBUILDMENU = 'CList/GroupBuildMenu'; - - { - wParam : newValue - lParam : 0 - Affect : Changes the 'hide offline contacts' flag and calls CLUI, see notes - Returns: 0 success, [non zero] on failure - Notes : newValue is 0 to show all contacts, 1 to show only online contacts - -1 to toggle the value - Version: v0.1.1.0+ - } - MS_CLIST_SETHIDEOFFLINE = 'CList/SetHideOffline'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Do the message processing associated with the double clicking a contact - Returns: 0 on success, [non zero] on failure - Version: v0.1.1.0+ - } - MS_CLIST_CONTACTDOUBLECLICKED = 'CList/ContactDoubleClicked'; - - { - wParam : MCONTACT - lParam : Pointer to an array of pchar's containing files/dirs - Affect : Do the processing when some files are droppeed on a contact, see notes - Returns: 0 on success, [non zero] on failure - Notes : the array is terminated when a NULL(0) entry is found - Version: v0.1.2.1+ - } - MS_CLIST_CONTACTFILESDROPPED = 'CList/ContactFilesDropped'; - - { - wParam : MCONTACT - lParam : HGROUP - Affect : Change the group a contact belongs to, see notes - Returns: 0 on success, [non zero] on failure - Notes : use hGroup=NULL(0) to remove any group association with the contact - Version: v0.1.1.0+ - } - MS_CLIST_CONTACTCHANGEGROUP = 'CList/ContactChangeGroup'; - - { - wParam : HCONTACT_1 - lParam : HCONTACT_2 - Affect : Determine the ordering of two given contacts - Returns: 0 if hContact1 is the same as hContact2 - 1 if hContact1 should be displayed before hContact2 - -1 if hContact1 should be displayed after hCotnact2 - Version: v0.1.1.0+ - } - MS_CLIST_CONTACTSCOMPARE = 'CList/ContactsCompare'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clui.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clui.inc deleted file mode 100644 index 5faec66f6a..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_clui.inc +++ /dev/null @@ -1,215 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_CLUI} -{$DEFINE M_CLUI} - - {<>} - -const - - { - wParam : 0 - lParam : 0 - Affects: Returns a window handle for the contact list window, see notes - Returns: "" - Notes : This call has a very specific purpose internally Miranda - and shouldn't be used gratuitously, in almost all cases - there's another call to do whatever it is that you're - trying to do. - } - MS_CLUI_GETHWND = 'CLUI/GetHwnd'; - - { - wParam : new status - lParam : null terminated string to a protocol ID - Affects: Change the protocol specific status indicators, see notes! - Returns: 0 on success, [non zero] on failure - Notes : protocol modules don't want to call this, they want - clist/protocolstatuschanged instead - } - MS_CLUI_PROTOCOLSTATUSCHANGED = 'CLUI/ProtocolStatusChanged'; - - { - wParam : Handle to a group - lParam : 1 or 0 - Affect : A new group was created, add it to the list, see notes - Notes : lParam is set to 1 or 0 if the user just created - the group or not. - - - this is also called when the contact list is being rebuilt, - new groups are always created with the name 'New group' - } - MS_CLUI_GROUPADDED = 'CLUI/GroupCreated'; - - { - wParam : MCONTACT - lParam : ICON_ID - Affect : Change the icon for a contact, see notes - Returns: 0 on success, [non zero] on failure - Notes : ICON_ID is an offset in the imagelist, see clist/geticonsimagelist - } - MS_CLUI_CONTACTSETICON = 'CLUI/ContactSetIcon'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Remove a contact from the list, see notes - Returns: 0 on success, [non zereo] on failure - Notes : this contact is NOT actually being deleted, since if - a contact goes offline while 'hide offline' option is sset, - this service will be called then ALSO - } - MS_CLUI_CONTACTDELETED = 'CLUI/ContactDeleted'; - - { - wParam : MCONTACT - lParam : ICON_ID - Affect : Add a contact to the list, see note - returns: 0 on success, [non zero] on failure - Notes : the caller processes the 'hide offline' setting, so the callee - should not do further processing based on the value of this setting - - - WARNING: this will be called to re-add a contact when they come - online if 'hide offline' is on, but it cannot determine if - the contact is already on the list, so you may get requests to - add a contact when it is already on the list, which you should ignore. - - - You'll also get this whenever an event is added for a contact, - since if the contact was offline, it needs to be shown to - display the mesage, even if 'hide offlines' is on. - - - you should not resort the list on this call, a seperate resort - request will be sent. - - - ICON_ID is an offset in the image list, see clist/geticonsimagelist - - } - MS_CLUI_CONTACTADDED = 'CLUI/ContactAdded'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Reename a contact in the lists, see notes - Returns: 0 on success, [non zero] on failure - Notes : You should not re-sort the list on this call, a separate resort - request will be sent, you can get the new name from clist/getcontactdisplayname - } - MS_CLUI_CONTACTRENAMED = 'CLUI/ContactRenamed'; - - { - wParam : 0 - lParam : 0 - Affect : Start a rebuild of the contact list, see notes - Returns: 0 on success, [non zero] on failure - Notes : this is the cue to clear the existing content of the list - expect to get a series of : - - clui/groupadded - clui/contactadded - clui/resortlist - } - MS_CLUI_LISTBEGINREBUILD = 'CLUI/ListBeginRebuild'; - - { - wParam : 0 - lParam : 0 - Affect : End a rebuild of the contact list, see notes - Returns: 0 on success, [non zero] on error - Notes : if you dissplayed an hourglass in beginbuild, set it back - here, you do not need to explicitly sort the list - } - MS_CLUI_LISTENDREBUILD = 'CLUI/ListEndRebuild'; - - { - wParam : 0 - lParam : 0 - Affect : Sort the contact list now, see notes - Returns: 0 success, [non zero] on failure - Notes : Sorts are buffered so you won't get this message lots of times - if the lists needs to be resorted many times rapidly - } - MS_CLUI_SORTLIST = 'CLUI/SortList'; - - { - wParam : CLUICAPS_* - lParam : 0 - Affect : Gets a load of capabilites for the loaded CLUI, see notes - Returns: the requested value, 0 of wParam is unknown -- - if this service is not implemented it is assumed all return - values will be 0. - Version: v0.1.2.1+ - } - - { can only provide this flag to return the following set of caps, the strings - show the database setting/type to store the list option, changing the value - does not reflect what the change is, i.e. ontop can only be affected with - a call to SetWindowPos() } - CLUICAPS_FLAGS1 = 0; - { empty groups aren't shown, 'CList/HideEmptyGroups' (byte) [changes make the list reload] } - CLUIF_HIDEEMPTYGROUPS = 1; - { groups can be disabled, lists can be merged into one seamlessly, (byte) 'CList/UseGroups' } - CLUIF_DISABLEGROUPS = 2; - { list can be displayed 'on top' of all other windows, 4 (byte) 'CList/OnTop' } - CLUIF_HASONTOPOPTION = 4; - { can disappear after a while of inactive use, - (byte) 'CList/AutoHide' (word) 'CList/HideTime' } - CLUIF_HASAUTOHIDEOPTION = 8; - - MS_CLUI_GETCAPS = 'CLUI/GetCaps'; - - { - wParam : MCONTACT - lParam : MAKELPARAM(screenX, screenY) - Affect : A contact is being dragged outside the main window - Return : return [non zero] to show the drag cursor as "accepting" the drag - or zero to show the circle/slash 'not allowed' - Version: v0.1.2.0+ - } - ME_CLUI_CONTACTDRAGGING = 'CLUI/ContactDragging'; - - { - wParam : MCONTACT - lParam : MAKELPARAM(screenX, screenY) - Affect : a contact has just been dropped outside the main window, see notes - Notes : return non zero to stop other hooks processing this event. - Version: v0.1.2.0+ - } - ME_CLUI_CONTACTDROPPED = 'CLUI/ContactDropped'; - - { - wParam : MCONTACT - lParam : 0 - Affect : A contact that *was* being dragged outside the main window - has gone back to the main window - Return : always return 0 - Version: v0.1.2.1+ - } - ME_CLUI_CONTACTDRAGSTOP = 'CLUI/ContactDragStop'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_contacts.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_contacts.inc deleted file mode 100644 index c190b32bf0..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_contacts.inc +++ /dev/null @@ -1,84 +0,0 @@ -(* -Miranda IM - -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. -*) - -type - - PCONTACTINFO = ^TCONTACTINFO; - TCONTACTINFO = record - cbSize: int; - dwFlag: Byte; - hContact: THandle; - szProto: PChar; - type_: Byte; - retval: record (* in C this is a nameless union *) - case longint of - 0: (bVal: Byte); - 1: (wVal: WORD); - 2: (dVal: DWORD); - 3: (pszVal: PChar); - 4: (cchVal: Word); - end; - end; - -const - -// CNF_* Types of information you can retrieve by setting the dwFlag in CONTACTINFO - - CNF_FIRSTNAME = 1; // returns first name (string) - CNF_LASTNAME = 2; // returns last name (string) - CNF_NICK = 3; // returns nick name (string) - CNF_CUSTOMNICK = 4; // returns custom nick name, clist name (string) - CNF_EMAIL = 5; // returns email (string) - CNF_CITY = 6; // returns city (string) - CNF_STATE = 7; // returns state (string) - CNF_COUNTRY = 8; // returns country (string) - CNF_PHONE = 9; // returns phone (string) - CNF_HOMEPAGE = 10; // returns homepage (string) - CNF_ABOUT = 11; // returns about info (string) - CNF_GENDER = 12; // returns gender (byte,'M','F' character) - CNF_AGE = 13; // returns age (byte, 0==unspecified) - CNF_FIRSTLAST = 14; // returns first name + last name (string) - CNF_UNIQUEID = 15; // returns uniqueid, protocol username (must check type for type of return) - -// Special types -// Return the custom name using the name order setting -// IMPORTANT: When using CNF_DISPLAY you MUST free the string returned -// You must **NOT** do this from your version of free() you have to use Miranda's free() -// you can get a function pointer to Miranda's free() via MS_SYSTEM_GET_MMI, see m_system.h - CNF_DISPLAY = 16; -// Same as CNF_DISPLAY except the custom handle is not used -// IMPORTANT: When using CNF_DISPLAYNC you MUST free the string returned -// You must **NOT** do this from your version of free() you have to use Miranda's free() -// you can get a function pointer to Miranda's free() via MS_SYSTEM_GET_MMI, see m_system.h - CNF_DISPLAYNC = 17; - -// If MS_CONTACT_GETCONTACTINFO returns 0 (valid), then one of the following -// types is setting telling you what type of info you received - CNFT_BYTE = 1; - CNFT_WORD = 2; - CNFT_DWORD = 3; - CNFT_ASCIIZ = 4; - - { - wParam : not used - lParam : Pointer to an initialised TCONTACTINFO structure - affects: Get contact information - returns: Zero on success, non zero on failure. - notes : If successful, the type is set and the result is put into the associated member of TCONTACTINFO - } - MS_CONTACT_GETCONTACTINFO = 'Miranda/Contact/GetContactInfo'; diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_database.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_database.inc deleted file mode 100644 index 913fb92d80..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_database.inc +++ /dev/null @@ -1,653 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_DATABASE} -{$DEFINE M_DATABASE} - -const - - DBVT_DELETED = 0; // setting got deleted, no values are valid - DBVT_BYTE = 1; // bVal, cVal are valid - DBVT_WORD = 2; // wVal, sVal are valid - DBVT_DWORD = 4; // dVal, lVal are valid - DBVT_ASCIIZ = 255; // pszVal is valid - DBVT_BLOB = 254; // cpbVal and pbVal are valid - DBVTF_VARIABLELENGTH = $80; // ? - -type - - MCONTACT = Integer; - HDBEVENT = Integer; - - PDBVARIANT = ^TDBVARIANT; - TDBVARIANT = record - type_: Byte; - case LongInt of - 0: (bVal: Byte); - 1: (cVal: Char); - 2: (wVal: Word); - 3: (sVal: SmallInt); - 4: (dVal: LongInt); - 5: (lVal: Integer); - 6: ( - pszVal: PChar; - cchVal: Word; - ); - 7: ( - cpbVal: Word; - pbVal: PByte; - ); - end; - -const - - { - wParam : size of the buffer to be filled - lParam : pointer to the buffer to be filled - affect : Get's the name of the current profile being used by the database - module -- this is the same as the filename of the profile without - the .ext - return : 0 on success, non zero on failure - } - MS_DB_GETPROFILENAME = 'DB/GetProfileName'; - - { - wParam : size of buffer pointed to by lParam - lParam : pointer to a buffer to be filled - affect : Fill a buffer with the current profile path being used, this does not include the trailing backslash. - return : 0 on success, non zero on failure - version: 0.3a only - } - MS_DB_GETPROFILEPATH = 'DB/GetProfilePath'; - -type - - PDBCONTACTGETSETTING = ^TDBCONTACTGETSETTING; - TDBCONTACTGETSETTING = record - { name of the module that wrote the setting to get } - szModule: PChar; - { the name of the setting to get } - szSetting: PChar; - { pointer to DBVARIANT to receive the value -- must be allocated for GETSETTINGSTATIC - calls thou } - pValue: PDBVARIANT; - end; - - PDBCONTACTWRITESETTING = ^TDBCONTACTWRITESETTING; - TDBCONTACTWRITESETTING = record - { module sig to write this setting under } - szModule: PChar; - { setting name to write } - szSetting: PChar; - { variant containing value to set } - value: TDBVARIANT; - end; - -const - - { - wParam : Handle of a contact to get the setting for (see notes) - lParam : pointer to a TDBCONTACTGETSETTING structure to be filled with setting - this structure also has to be initalised (see notes) - affect : Queries the database module for a setting from a contact. - returns: 0 on success, non zero on failure (contact not found, setting doesn't exist) - notes : TDBCONTACTGETSETTING must be filled with the module name that created - /wrote the setting you want to get (e.g. your module name) - and the actual setting to read with TDBCONTACTGETSETTING.szModule and - TDBCONTACTGETSETTING.szSetting -- TDBCONTACTGETSETTING.pValue is - a pointer to a TDBVARIANT with the returned setting, this maybe nil - and MUST be freed after you're done with it with FreeVariant() - - There are helper functions for reading/writing/deleting common types to and - from the database -- see DBGetContactSetting - - the contact handle (hContact) can be returned by FindContact/AddContact - } - MS_DB_CONTACT_GETSETTING = 'DB/Contact/GetSetting'; - - { - wParam : Handle for a contact to query a setting for - lParam : Pointer to a TDBCONTACTGETSETTING structure - affects: This service is almost the same as the one above, but it does - not return a dynamic copy (with malloc()) -- the caller - must do this for datatypes which require it, e.g. a string. - - This means the TDBCONTACTGETSETTING.pValue *has* to exist and be - allocated by the caller (doesn't have to be allocated from the heap) - the DBVARIANT structure has to be initalised with the type wanted - and enough buffer space around to return the info, do not - expect this service to be as fast as the one above. - - returns: 0 on success, non zero on failure. - } - MS_DB_CONTACT_GETSETTINGSTATIC = 'DB/Contact/GetSettingStatic'; - - { - wParam : 0 - lParam : Pointer to a TDBVARIANT structure - affect : Free's the passed DBVARIANT's dynamic memory (if any) see notes - returns: 0 on success, non zero on failure - notes : use the helper function FreeVariant() - } - MS_DB_CONTACT_FREEVARIANT = 'DB/Contact/FreeVariant'; - - { - wParam : Handle to contact to write setting for - lParam : Pointer to TDBCONTACTWRITESETTING which must be initalised - affects: writes a setting under a contact -- TDBCONTACTWRITESETTING structure - must contain the module name writing -- the setting name, and the value - to write (which is NOT a pointer) .szModule, .szSetting, .Value, see notes - returns: 0 on success, non zero on failure - notes : this service triggers 'DB/Contact/SettingChanged' before it returns - as always, there is a helper function to use this service. - } - MS_DB_CONTACT_WRITESETTING = 'DB/Contact/WriteSetting'; - - { - wParam : hContact under which the setting should be deleted - lParam : Pointer to a TDBCONTACTGETSETTING structure - affects: Deletes the given setting for a contact, the TDBCONTACTGETSETTING.pValue - field is ignored -- only .szModule and .szSetting are needed, see notes - returns: 0 on success, non zero on failure - notes : triggers 'DB/Contact/SettingChanged' BEFORE it deletes the given - setting, when the service returns the TDBVARIANT structure .type_ is set - to 0 and no fields are valid, there is a helper function for this - service, see below. - } - MS_DB_CONTACT_DELETESETTING = 'DB/Contact/DeleteSetting'; - - { - wParam : Handle of a contact to enum settings for - lParam : Pointer to a TDBCONTACTENUMSETTINGS structure, must be initalised - affect : Enumerates all settings for a given contact under a module, - TDBCONTACTENUMSETTINGS must be filled with the function pointer to call - the TDBCONTACTENUMSETTINGS.lParam value to pass to it each time, - as well as the .szModule under which the contact is valid - returns: returns the value of the last call to the enum function, or -1 - if no settings could be enumerated - notes : the szSetting argument passed to the enumeration function is only - valid for the duration of that enumeration call, - it must be allocated dynamically if it is required after that call frame - has returned. - Also, deleting settings as they are enumerated has unpredictable results! - but writing a new value for a setting is okay. - it is unclear how you stop the enumeration once it is started, maybe - possible to return -1 to stop it. - vesion : only valid for 0.1.0.1+ - } - -type - - TDBSETTINGENUMPROC = function(const szSetting: PChar; lParam: LPARAM): int; cdecl; - - PDBCONTACTENUMSETTINGS = ^TDBCONTACTENUMSETTINGS; - TDBCONTACTENUMSETTINGS = record - { function pointer to call to start the enum via MS_DB_CONTACT_ENUMSETTINGS } - pfnEnumProc: TDBSETTINGENUMPROC; - { passed to the above function } - lParam: LPARAM; - { name of the module to get settings for } - szModule: PChar; - { not used by us } - ofsSettings: DWORD; - end; - -const - - MS_DB_CONTACT_ENUMSETTINGS = 'DB/Contact/EnumSettings'; - - { - wParam : 0 - lParam : 0 - affect : none - returns: Returns the number of contacts in the database for the loaded profile - not including the profile user, see notes. - notes : the contacts in the database can be read with FindFirst/FindNext - } - MS_DB_CONTACT_GETCOUNT = 'DB/Contact/GetCount'; - - { - wParam : 0 - lParam : 0 - returns: Returns a handle to the first contact in the database, - this handle does not need to be closed, if there are no users - NULL(0) is returned. - } - MS_DB_CONTACT_FINDFIRST = 'DB/Contact/FindFirst'; - - { - wParam : Contact handle - lParam : 0 - returns: Returns a handle to the next contact after the given contact in - wParam, this handle does not neeed to be closed -- may return NULL(0) - if the given contact in wParam was the last in the database, or the - given contact was invalid - } - MS_DB_CONTACT_FINDNEXT = 'DB/Contact/FindNext'; - - { - wParam : Handle of a contact to delete - lParam : 0 - affect : the user by the given handle is deleted from the database, see notes - returns: Returns 0 on success or nonzero if the handle was invalid - notes : this triggers DB/Contact/Deleted BEFORE it actually deletes the contact - all events are also deleted -- other modules may end up with invalid - handles because of this, which they should be prepared for. - } - MS_DB_CONTACT_DELETE = 'DB/Contact/Delete'; - - { - wParam : 0 - lParam : 0 - affects: creates a new contact in the database, they have no settings, - settings must be added with MS_DB_CONTACT_WRITESETTING or - database helper functions for writing, see notes - returns: A handle to a new contact or NULL(0) on failure. - notes : triggers the ME_DB_CONTACT_ADDED event just before the service returns - } - MS_DB_CONTACT_ADD = 'DB/Contact/Add'; - - - { - wParam : (HANDLE) hContact - lParam : 0 - affects: Checks the given handle within the database for valid information, for - a proper internal header. - returns: Returns 1 if the contact handle is valid, 0 if it is not - notes : Due to the nature of multiple threading a contact handle can be deleted - soon after this service has returned a handle as valid, however it will never point - to another contact. - } - MS_DB_CONTACT_IS = 'DB/Contact/Is'; - - - { - wParam : contact handle for events count is needed - lParam : 0 - service: Gets the number of events in the chain belonging to a contact - in the databasee. - returns: the numbef of events owned by hContact or -1 if hContact - is invalid, they can be found with the event/find* servicees - } - MS_DB_EVENT_GETCOUNT = 'DB/Event/GetCount'; - - { - wParam : contact handle to add an event for - lParam : Pointer to TDBEVENTINFO initialised with data - affect : Add's an event to the contact's event list, the TDBEVENTINFO - structure should be filled with the event of message -- see notes - returns: a handle to a DB event (HDBEVENT), or NULL on error - notes : Triggers DB/Event/Added event just before it returns, - Events are sorted chronologically as they are entered, - so you cannot guarantee that the new hEvent is the last event in the chain, - however if a new event is added that has a timestamp less than - 90 seconds *before* the event that should be after it, - it will be added afterwards, to allow for protocols that only - store times to the nearest minute, and slight delays in transports. - There are a few predefined eventTypes below for easier compatibility, but - modules are free to define their own, beginning at 2000 - DBEVENTINFO.timestamp is in GMT, as returned by time() - } - - DBEF_SENT = 2; // if set, the event was sent by the user, otherwise it was received - DBEF_READ = 4; // event has been read by the user -- only needed for history - - EVENTTYPE_MESSAGE = 0; - EVENTTYPE_URL = 1; - EVENTTYPE_CONTACTS = 2; // v0.1.2.2+ - EVENTTYPE_ADDED = 1000; // v0.1.1.0+: these used to be module- - EVENTTYPE_AUTHREQUEST = 1001; // specific codes, hence the module- - EVENTTYPE_FILE = 1002; // specific limit has been raised to 2000 - -type - - PDBEVENTINFO = ^TDBEVENTINFO; - TDBEVENTINFO = record - { size of the structure } - cbSize: int; - { module that 'owns' this event and controls the data format } - szModule: PChar; - { timestamp in UNIX time } - timestamp: DWORD; - { the DBEF_* flags above } - flags: DWORD; - { event type, such as message, can be module defined } - eventType: WORD; - { size in bytes of pBlob^ } - cbBlob: DWORD; - { pointer to buffer containing the module defined event data } - pBlob: PByte; - end; - -const - - MS_DB_EVENT_ADD = 'DB/Event/Add'; - - - - { - wParam : Handle to the contact - lParam : HDBEVENT handle to delete - affects: Removes a single event from the database for the given contact - returns: 0 on success, nonzero on failure - notes : Triggers DB/Event/Deleted just before the event *is* deleted - } - MS_DB_EVENT_DELETE = 'DB/Event/Delete'; - - { - wParam : Handle to DB event - lParam : 0 - returns: Returns the space in bytes requried to store the blob in HDBEVENT - given by HDBEVENT(wParam) -- or -1 on error - } - MS_DB_EVENT_GETBLOBSIZE = 'DB/Event/GetBlobSize'; - - { - wParam : Handle to a DB event - lParam : Pointer to a TDBEVENTINFO structure which must be initialised - affects: Returns all the information about an DB event handle to a TDBEVENTINFO - structure which must be initalised, DBEI.cbSize, DBEI.pBlob and DBEI.cbSize - before calling this service, the size can be assertained with - GetBlobSize() service, see notes - returns: Returns 0 on success, non zero on failure - notes : The correct value dbe.cbBlob can be got using db/event/getblobsize - If successful, all the fields of dbe are filled. dbe.cbBlob is set to the - actual number of bytes retrieved and put in dbe.pBlob - If dbe.cbBlob is too small, dbe.pBlob is filled up to the size of dbe.cbBlob - and then dbe.cbBlob is set to the required size of data to go in dbe.pBlob - On return, dbe.szModule is a pointer to the database module's - own internal list of modules. Look but don't touch. - } - MS_DB_EVENT_GET = 'DB/Event/Get'; - - { - wParam : MCONTACT - lParam : HDBEVENT - affect : Changes the flag for an event to mark it as read - Returns: Returns the entire flag DWORD for the event after the change, or -1 - if HDBEVENT is invalid, see notes - notes : This iss one of the database write operations that does not trigger - an event, modules should not save flagss states for any length of time. - } - MS_DB_EVENT_MARKREAD = 'DB/Event/MarkRead'; - - { - wParam : HDBEVENT - lParam : 0 - Affect : Returns a handle to a contact that owns the HDBEVENT, - see notes - Returns: Returns a handle if successful or HDBEEVENT(-1) on failure - notes : This service is very slow, only use wheen you have no other choice - at all. - } - MS_DB_EVENT_GETCONTACT = 'DB/Event/GetContact'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Retrieves a handlee to the first event in the chain - for a MCONTACT - returns: Returns a handle, or NULL(0) if MCONTACT is invalid or has - no events, events in a chain are sorted chronologically automatically - } - MS_DB_EVENT_FINDFIRST = 'DB/Event/FindFirst'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Retrieves a handle to the first unreead event in a chain for a MCONTACT - see notes - Returns: Returns a HDBEVENT handle or NULL(0) if the MCONTACT is invalid - or all it's events have beeen read. - Notes : Events in a chain are sorted chronologically automatically, - but this does not necessarily mean that all events after - the first unread are unread too. - They should be checked individually with event/findnext and event/get - This service is designed for startup, reloading all the events that remained - unread from last time - } - MS_DB_EVENT_FINDFIRSTUNREAD = 'DB/Event/FindFirstUnread'; - - { - wParam : MCONTACT - lParam : 0; - Affects: Retrieves a handle to the lasts event in the chain for a MCONTACT - Returns: Returns a handle or NULL(0) if MCONTACT is invalid or has no events - } - MS_DB_EVENT_FINDLAST = 'DB/Event/FindLast'; - - { - wParam : HDBEVENT - lParam : 0 - Affects: Retrieves a handle to the next event in a chain after HDBEVENT - Returns: A handle to the next DB event or NULL(0) if HDBEVENT is invalid - or the last event in the chain. - } - MS_DB_EVENT_FINDNEXT = 'DB/Event/FindNext'; - - { - wParam : HDBEVENT - lParam : 0 - Affects: Retrieves a handle to the previous event in a chain before HDBEVENT - Returns: A handle to the previous HDBEVENT or NULL(0) if HDBEVENT is invalid - or is the first event in the chain - } - MS_DB_EVENT_FINDPREV = 'DB/Event/FindPrev'; - - - - { - wParam : size in bytes of string buffer (including null term) - lParam : pointer to string buffer - Affect : Scrambles the string buffer in place using a strange encryption algorithm, - see notes - Returns: Always returns 0 - notes : this service may be changed at a later date such that it increasess - the length of the string - } - MS_DB_CRYPT_ENCODESTRING = 'DB/Crypt/EncodeString'; - - { - wParam : size in bytes of string buffer, including null term - lParam : pointer to string buffer - Affect : Descrambles pszString in-place using the strange encryption algorithm, - see notes. - Return : Always returns 0 - notes : Reverses the operation done by MS_DB_CRYPT_ENCODINGSTRING - } - MS_DB_CRYPT_DECODESTRING = 'DB/Crypt/DecodeString'; - - - - { - wParam : timestamp (DWORD) - lParam : 0 - Affect : Converts a GMT timestap into local time - Returns: Returns the converted value, see notes - Notes : Timestamps have a zereo at midnight 1/1/1970 GMT, this service - converts such a value to be based at midnight 1/1/1970 local time. - This service does not use a simple conversion based on the current offset - between GMT and local. Rather, it figures out whether daylight savings time - would have been in place at the time of the stamp and gives the local time as - it would have been at the time and date the stamp contains. - } - MS_DB_TIME_TIMESTAMPTOLOCAL = 'DB/Time/TimestampToLocal'; - - { - wParam : timestamp (DWORD) - lParam : pointer to initalised DBTIMETOSTRING structure - Affect : Converts a GMT timestamp to a customisable local time string - see notes - Returns: Always returns 0 - notes : The string is formatted according to thhe current user's locale - language and preference -- - - .szFormat can have the following special chars : - t time without seconds, e.g. hh:mm - s time with seconds, e.g. hh:mm:ss - m time without minutes e.g. hh - d short date, e.g. dd/mm/yyyy - D long date, e.g. d mmmm yyyy - - all other characters are copied as is. - } - -type - - PDBTIMETOSTRING = ^TDBTIMETOSTRING; - TDBTIMETOSTRING = record - { format string, see above } - szFormat: PChar; - { pointer to dest buffer to store the result } - szDest: PChar; - { size of the buffer } - cbDest: int; - end; - -const - - MS_DB_TIME_TIMESTAMPTOSTRING = 'DB/Time/TimestampToString'; - - - - { - wParam : newSetting (BOOLEAN) - lParam : 0 - Affect : Miranda's database is normally protected against corruption by - aggressively flushing data to the disk on writes, if you're doing - alot of writes e.g. an import plugin, it can sometimes be desirable - to switch this feature off to speed up the process, if you do switch - it off, you must remember that crashes are far more likely to be - catastrophic, so switch it back on at the earliest possible opportunity. - if you're doing a lot of setting writes, the flush is already delayed - so you need not use this service for that purpose, see notes. - Returns: Always returns 0 (successful) - notes : This is set to true initally - } - MS_DB_SETSAFETYMODE = 'DB/SetSafetyMode'; - - { - wParam : (caller defined data) will be passed to lParam of the call back - lParam : function pointer to TDBMODULEENUMPROC - Affects: Enumerates the names of all modules that have stored or - requested information from the database, - the modules are returned in no real order -- - Writing to the database while module names are being enumerated will cause - unpredictable results in the enumeration, but the write will work. - - the enumeration will stop if the callback returns a non zero value. - - Returns: the last return value from the enumeration call back. - Notes : This service is only useful for debugging or EnumSettings - version: The service registered to enumerate all modules that have touched - the database module uses wParam as the lParam cookie value and the lParam - value given here is the function pointer -- this is not safe - to use before v0.1.2.1 because I don't know if this was done in v0.1.2.1- - - prior to v0.1.2.1 you can not pass a value to the enumeration because - of a bug -- which is fixed, but hey :) -- [sam] - } -type - TDBMODULEENUMPROC = function(const szModule: PChar; ofsModuleName: DWORD; lParam: LPARAM): int; cdecl; -const - MS_DB_MODULES_ENUM = 'DB/Modules/Enum'; - - - - { - wParam : MCONTACT - lParam : HDBCONTACT - Affect : Called when a new event has been added to the event chain - for a contact, MCONTACT contains the contact who added the event, - HDBCONTACT a handle to what was added. - see notes - notes : since events are sorted chronologically, you can not guarantee - that HDBEVEnT is in any particular position in the chain. - - } - ME_DB_EVENT_ADDED = 'DB/Event/Added'; - - { - wParam : HANDLE (hContact) - lParam : @DBEVENTINFO - Affects: Hook is fired before any DBEVENTS are created within the database for - a contact (or a user, if hContact is NULL(0)) - It allows a module to - query/change DBEVENTINFO before it is created, see notes. - Returns: Hook should return 1 to stop event being added (will stop other hooks seeing the event too) - Or 0 to continue processing (passing the data on as well) - Notes : This hook is fired for all event types, and the BLOBS that the eventypes mark - Maybe changed, therefore be careful about using BLOB formats. - Because the memory pointing within the DBEVENTINFO CAN NOT BE OWNED or free()'d - it is recommended that the hook only be used to stop events. - Version: 0.3.3a+ (2003/12/03) - } - ME_DB_EVENT_FILTER_ADD = 'DB/Event/FilterAdd'; - - { - wParam : MCONTACT - lParam : HDBEVENT - Affect : Called when an event is about to be deleted from the event chain - for a contact, see notes - notes : Returning non zero from your hook will NOT stop the deletion, - but it will as usual stop other hooks being called - } - ME_DB_EVENT_DELETED = 'DB/Event/Deleted'; - - - - { - wParam : MCONTACT - lParam : 0 - Affect : Called when a new contact has been added to the database, - MCONTACT contains a handle to the new contact. - } - ME_DB_CONTACT_ADDED = 'DB/Contact/Added'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Called when a contact is about to be deleted - Returns: Returning nonzero from your hook will not stop the deletion - but it will stop the other hooks from being called - } - ME_DB_CONTACT_DELETED = 'DB/Contact/Deleted'; - - { - wParam : MCONTACT - lParam : Pointer to a TDBCONTACTWRITESETTING - Affect : Calleed when a contact has one of it's settings changed - hContact is a valid handle to the contact that has changed, - see notes. - notes : this event will be triggered many times rapidly when alot of values - are set. - Modules that hook this should be aware of this fact and quickly - return if they are not interested in the value that has changed. - Careful not to get into infinite loops with this event, - - The TDBCONTACTWRITESETTING pointer is the same one as the - original service all, so don't change any of it's fields - } - ME_DB_CONTACT_SETTINGCHANGED = 'DB/Contact/SettingChanged'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_email.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_email.inc deleted file mode 100644 index f26847e53c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_email.inc +++ /dev/null @@ -1,39 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_EMAIL} -{$DEFINE M_EMAIL} - -const - - { - wParam : MCONTACT - lParam : 0 - Affects: Send an e-mail to the specified contact, see notes - Returns: Returns 0 on success or nonzero on failure - Notes : If an error occurs the service displays a message box - with the error text -- use this service to alter this - } - MS_EMAIL_SENDEMAIL = 'SREMail/SendCommand'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_file.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_file.inc deleted file mode 100644 index 536f1d47f4..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_file.inc +++ /dev/null @@ -1,66 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_FILE} -{$DEFINE M_FILE} - -const - - { - wParam : MCONTACT - lParam : 0 - Affects: Brings up the send file dialog for a contact, see notes - Returns: 0 on success [non zero] on failure - Notes : Returns immediately without waiting for the send - } - MS_FILE_SENDFILE = 'SRFile/SendCommand'; - - { - wParam : MCONTACT - lParam : pointer to an array of PChar's the first nil item - terminates the list -- see notes - Affects: Brings up the send file dialog with specifieed files already chosen - the user is not prevented from editing the list -- - Returns: 0 on success [non zero] on failure -- returns immediately without - waiting for the send to finish - Notes : both directories and files can be given - Version: v0.1.2.1+ - } - MS_FILE_SENDSPECIFICFILES = 'SRFile/SendSpecificFiles'; - - { - wParam : MCONTACT - lParam : Pointer to a buffer - Affects: returns the received files folder for a contact, the buffer - should be at least MAX_PATH long (defined with WinAPI), - the returned path may not exist -- see notes - Returns: Returns 0 on success [non zero] on failure - notes : If MCONTACT is NULL(0) the path returned is the path - without the postfix contact name. - Version: v0.1.2.2+ - } - MS_FILE_GETRECEIVEDFILESFOLDER = 'SRFile/GetReceivedFilesFolder'; - - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_findadd.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_findadd.inc deleted file mode 100644 index 9952a787c8..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_findadd.inc +++ /dev/null @@ -1,38 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_FINDADD} -{$DEFINE M_FINDADD} - -const - - { - wParam : 0 - lParam : 0 - Affects: Openss the find/add users dialog box, or gives it focus if it's - already open. - Returns: Always returns 0 - } - MS_FINDADDFINDADD = 'FindAdd/FindAddCommand'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_globaldefs.pas b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_globaldefs.pas deleted file mode 100644 index 2eb47e8a90..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_globaldefs.pas +++ /dev/null @@ -1,98 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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. - -*) - -{$IFDEF FPC} - {$PACKRECORDS C} - {$MODE Delphi} -{$ENDIF} - -unit m_globaldefs; - -interface - -uses - -{$ifdef FPC} - strings; -{$else} - Windows; -{$endif} - -type - - PByte = ^Byte; - int = Integer; - pint = ^int; - WPARAM = Integer; - LPARAM = Integer; - DWORD = Integer; - THandle = Integer; - - // strcpy() - - {$ifdef FPC} - TStrCpy = function(Dst, Src: PChar): PChar; - {$else} - TStrCpy = function(Dst, Src: PChar): PChar; stdcall; - {$endif} - - // strcat() - - {$ifdef FPC} - TStrCat = function(Dst, Src: PChar): PChar; - {$else} - TStrCat = function(Dst, Src: PChar): PChar; stdcall; - {$endif} - -const - - {$ifdef FPC} - strcpy: TStrCpy = strings.strcopy; - {$else} - strcpy: TStrCpy = lstrcpy; - {$endif} - - {$ifdef FPC} - strcat: TStrCat = strings.strcat; - {$else} - strcat: TStrCat = lstrcat; - {$endif} - - {$include newpluginapi.inc} - -var - { this is now a pointer to a record of function pointers to match the C API, - and to break old code and annoy you. } - - PLUGINLINK: PPLUGINLINK; - - { has to be returned via MirandaPluginInfo and has to be statically allocated, - this means only one module can return info, you shouldn't be merging them anyway! } - - PLUGININFO: TPLUGININFO; - PLUGININFOEX: TPLUGININFOEX; - -implementation - -end. diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_helpers.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_helpers.inc deleted file mode 100644 index d09d66324e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_helpers.inc +++ /dev/null @@ -1,622 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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. - -*) - -{$ifdef M_API_UNIT} - - function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; - function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; - -{$else} - - function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (a shl 24) or (b shl 16) or (c shl 8) or d; - end; - - function PLUGIN_CMP_VERSION(verA: LongInt; verB: LongInt): int; {$ifdef FPC} - inline; - {$endif} - begin - Result := 0; - { could be used to compare for severity of age for positive values, if a 0 then - Result := ErrorValue - else - Result := dbv.bVal; - end; - - function DBGetContactSettingWord(hContact: THandle; - const szModule: PChar; const szSetting: PChar; errorValue: Integer): Integer; - {$ifdef FPC} - inline; - {$endif} - var - dbv: TDBVARIANT; - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := @dbv; - If PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)) <> 0 then - Result := ErrorValue - else - Result := dbv.wVal; - end; - - function DBGetContactSettingDword(hContact: THandle; - const szModule: PChar; const szSetting: PChar; errorValue: Integer): Integer; - {$ifdef FPC} - inline; - {$endif} - var - dbv: TDBVARIANT; - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := @dbv; - If PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)) <> 0 then - Result := ErrorValue - else - Result := dbv.dVal; - end; - - function DBGetContactSetting(hContact: THandle; - const szModule: PChar; const szSetting: PChar; dbv: PDBVARIANT): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - cgs.pValue := dbv; - Result := PluginLink^.CallService(MS_DB_CONTACT_GETSETTING, hContact, lParam(@cgs)); - end; - - function DBFreeVariant(dbv: PDBVARIANT): Integer; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_DB_CONTACT_FREEVARIANT, 0, lParam(dbv)); - end; - - function DBDeleteContactSetting(hContact: THandle; const szModule: PChar; const szSetting: PChar): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cgs: TDBCONTACTGETSETTING; - begin - cgs.szModule := szModule; - cgs.szSetting := szSetting; - Result := PluginLink^.CallService(MS_DB_CONTACT_DELETESETTING, hContact, lParam(@cgs)); - end; - - function DBWriteContactSettingByte(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: Byte): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_BYTE; - cws.value.bVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingWord(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: Word): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_WORD; - cws.value.wVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingDWord(hContact: THandle; const szModule: PChar; const szSetting: PChar; val: LongInt): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_DWORD; - cws.value.dVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - function DBWriteContactSettingString(hContact: THandle; const szModule: PChar; const szSetting: PChar; const val: PChar): Integer; - {$ifdef FPC} - inline; - {$endif} - var - cws: TDBCONTACTWRITESETTING; - begin - cws.szModule := szModule; - cws.szSetting := szSetting; - cws.value.type_ := DBVT_ASCIIZ; - cws.value.pszVal := Val; - Result := PluginLink^.CallService(MS_DB_CONTACT_WRITESETTING, hContact, lParam(@cws)); - end; - - {$endif} - -{$endif} - -{$ifdef M_NETLIB} - - {$ifdef M_API_UNIT} - - function Netlib_CloseHandle(Handle: THandle): int; - - function Netlib_GetBase64DecodedBufferSize(const cchEncoded: int): int; - - function Netlib_GetBase64EncodedBufferSize(const cbDecoded: int): int; - - function Netlib_Send(hConn: THandle; const buf: PChar; len: int; flags: int): int; - - function Netlib_Recv(hConn: THandle; const buf: PChar; len: int; flags: int): int; - - procedure Netlib_Log(hNetLib: THandle; const sz: PChar); - - {$else} - - function Netlib_CloseHandle(Handle: THandle): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_NETLIB_CLOSEHANDLE, Handle, 0); - end; - - function Netlib_GetBase64DecodedBufferSize(const cchEncoded: int): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (cchEncoded shr 2) * 3; - end; - - function Netlib_GetBase64EncodedBufferSize(const cbDecoded: int): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := (cbDecoded * 4+11) div 12*4+1; - end; - - function Netlib_Send(hConn: THandle; const buf: PChar; len: int; flags: int): int; - {$ifdef FPC} - inline; - {$endif} - var - nlb: TNETLIBBUFFER; - begin - nlb.buf := buf; - nlb.len := len; - nlb.flags := flags; - Result := PluginLink^.CallService(MS_NETLIB_SEND, wParam(hConn), lParam(@nlb)); - end; - - function Netlib_Recv(hConn: THandle; const buf: PChar; len: int; flags: int): int; - {$ifdef FPC} - inline; - {$endif} - var - nlb: TNETLIBBUFFER; - begin - nlb.buf := buf; - nlb.len := len; - nlb.flags := flags; - Result := PluginLink^.CallService(MS_NETLIB_RECV, wParam(hConn), lParam(@nlb)); - end; - - procedure Netlib_Log(hNetLib: THandle; const sz: PChar); - {$ifdef FPC} - inline; - {$endif} - begin - PluginLink^.CallService(MS_NETLIB_LOG, hNetLib, lParam(sz)); - end; - - {$endif} - -{$endif} - -{$ifdef M_UTILS} - - {$ifdef M_API_UNIT} - - function WindowList_Add(hList: THandle; hWnd: HWND; hContact: THandle): int; - - function WindowList_Remove(hList: THandle; hWnd: THandle): int; - - function WindowList_Find(hList: THandle; hContact: THandle): int; - - function WindowList_Broadcast(hList: THandle; message: int; wParam: WPARAM; lParam: LPARAM): int; - - function Utils_SaveWindowPosition(hWnd: THandle; hContact: THandle; const szModule, szNamePrefix: PChar): int; - - function Utils_RestoreWindowPosition(hWnd: THandle; hContact: THandle; Flags: int; const szModule, szNamePrefix: PChar): int; - - {$else} - - function WindowList_Add(hList: THandle; hWnd: hWnd; hContact: THandle): int; - var - wle: TWINDOWLISTENTRY; - begin - wle.hList := hList; - wle.hWnd := hWnd; - wle.hContact := hContact; - Result := PluginLink^.CallService(MS_UTILS_ADDTOWINDOWLIST, 0, lParam(@wle)); - end; - - function WindowList_Remove(hList: THandle; hWnd: THandle): int; - begin - Result := PluginLink^.CallService(MS_UTILS_REMOVEFROMWINDOWLIST, hList, hWnd); - end; - - function WindowList_Find(hList: THandle; hContact: THandle): int; - begin - Result := PluginLink^.CallService(MS_UTILS_FINDWINDOWINLIST, hList, hContact); - end; - - function WindowList_Broadcast(hList: THandle; message: int; wParam: WPARAM; lParam: LPARAM): int; - var - msg: TMSG; - begin - msg.message := message; - msg.wParam := wParam; - msg.lParam := lParam; - Result := PluginLink^.CallService(MS_UTILS_BROADCASTTOWINDOWLIST, hList, Integer(@Msg)); - end; - - function Utils_SaveWindowPosition(hWnd: THandle; hContact: THandle; const szModule, szNamePrefix: PChar): int; - var - swp: TSAVEWINDOWPOS; - begin - swp.hWnd := hWnd; - swp.hContact := hContact; - swp.szModule := szModule; - swp.szNamePrefix := szNamePrefix; - Result := PluginLink^.CallService(MS_UTILS_SAVEWINDOWPOSITION, 0, lParam(@swp)); - end; - - function Utils_RestoreWindowPosition(hWnd: THandle; hContact: THandle; Flags: int; const szModule, szNamePrefix: PChar): int; - var - swp: TSAVEWINDOWPOS; - begin - swp.hWnd := hWnd; - swp.hContact := hContact; - swp.szModule := szModule; - swp.szNamePrefix := szNamePrefix; - Result := PluginLink^.CallService(MS_UTILS_RESTOREWINDOWPOSITION, Flags, lParam(@swp)); - end; - - {$endif} - -{$endif} - -{$ifdef M_LANGPACK} - - {$ifdef M_API_UNIT} - - function Translate(sz: PChar): PChar; - - function TranslateString(sz: string): string; - - function TranslateDialogDefault(hwndDlg: THandle): int; - - {$else} - - function Translate(sz: PChar): PChar; - {$ifdef FPC} - inline; - {$endif} - begin - { the return value maybe NULL(0) -- it's upto the caller to know if the allocated - string has to be removed from the DLL heap, this has little to do with Miranda, - but if a dynamic string is passed and a return string is used -- the dynamic - string is lost -- be careful, lazy? use TranslateString (note it's slower) } - Result := PChar(PluginLink^.CallService(MS_LANGPACK_TRANSLATESTRING, 0, lParam(sz))); - end; - - function TranslateString(sz: string): string; - {$ifdef FPC} - inline; - {$endif} - begin - Result := string(PChar( PluginLink^.CallService(MS_LANGPACK_TRANSLATESTRING, 0, lParam(sz)))); - end; - - function TranslateDialogDefault(hwndDlg: THandle): int; - {$ifdef FPC} - inline; - {$endif} - var - lptd: TLANGPACKTRANSLATEDIALOG; - begin - lptd.cbSize := sizeof(lptd); - lptd.flags := 0; - lptd.hwndDlg := hwndDlg; - lptd.ignoreControls := nil; - Result := PluginLink^.CallService(MS_LANGPACK_TRANSLATEDIALOG, 0, lParam(@lptd)); - end; - - {$endif} - -{$endif} - -{$ifdef M_PROTOCOLS} - {$ifdef M_API_UNIT} - - function CallContactService(hContact: THandle; const szProtoService: PChar; wParam: WPARAM; lParam: LPARAM): int; - - function CallProtoService(const szModule, szService: PChar; wParam: WPARAM; lParam: LPARAM): int; - - {$else} - - function CallContactService(hContact: THandle; const szProtoService: PChar; wParam: WPARAM; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - css: TCCSDATA; - begin - css.hContact := hContact; - css.szProtoService := szProtoService; - css.wParam := wParam; - css.lParam := lParam; - Result := PluginLink^.CallService(MS_PROTO_CALLCONTACTSERVICE, 0, Integer(@css)); - end; - - function CallProtoService(const szModule, szService: PChar; wParam: WPARAM; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - szStr: array[0..MAXMODULELABELLENGTH] of Char; - begin - strcpy(szStr, szModule); - strcat(szStr, szService); - Result := PluginLink^.CallService(szStr, wParam, lParam); - end; - - {$endif} -{$endif} - -{$ifdef M_PROTOMOD} - {$ifdef M_API_UNIT} - - function ProtoBroadcastAck(const szModule: PChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int; - - function CreateProtoServiceFunction(const szModule, szService: PChar; serviceProc: TMIRANDASERVICE): int; - - {$else} - - function ProtoBroadcastAck(const szModule: PChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int; - {$ifdef FPC} - inline; - {$endif} - var - ack: TACKDATA; - begin - ack.cbSize := sizeof(TACKDATA); - ack.szModule := szModule; - ack.hContact := hContact; - ack.type_ := type_; - ack.result_ := result_; - ack.hProcess := hProcess; - ack.lParam := lParam; - Result := PluginLink^.CallService(MS_PROTO_BROADCASTACK, 0, Integer(@ack)); - end; - - function CreateProtoServiceFunction(const szModule, szService: PChar; serviceProc: TMIRANDASERVICE): int; - {$ifdef FPC} - inline; - {$endif} - var - szStr: array[0..MAXMODULELABELLENGTH] of Char; - begin - strcpy(szStr, szModule); - strcat(szStr, szService); - Result := PluginLink^.CreateServiceFunction(szStr, @serviceProc); - end; - - {$endif} - -{$endif} - -{$ifdef M_SKIN} - - {$ifdef M_API_UNIT} - - function LoadSkinnedIcon(id: int): THandle; - - function LoadSkinnedProtoIcon(const szProto: PChar; status: int): THandle; - - function SkinAddNewSound(const name, description, defaultFile: PChar): int; - - function SkinPlaySound (const name: PChar): int; - - {$else} - - function LoadSkinnedIcon(id: int): THandle; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_LOADICON, id, 0); - end; - - function LoadSkinnedProtoIcon(const szProto: PChar; status: int): THandle; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_LOADPROTOICON, wParam(szProto), status); - end; - - function SkinAddNewSound(const name, description, defaultFile: PChar): int; - {$ifdef FPC} - inline; - {$endif} - var - ssd: TSKINSOUNDDESC; - begin - ssd.cbSize := sizeof(ssd); - ssd.pszName := name; - ssd.pszDescription := description; - ssd.pszDefaultFile := defaultFile; - Result := PluginLink^.CallService(MS_SKIN_ADDNEWSOUND, 0, lParam(@ssd)); - end; - - function SkinPlaySound (const name: PChar): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := PluginLink^.CallService(MS_SKIN_PLAYSOUND, 0, lParam(name)); - end; - - {$endif} - -{$endif} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_history.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_history.inc deleted file mode 100644 index 0cb817ace5..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_history.inc +++ /dev/null @@ -1,37 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_HISTORY} -{$DEFINE M_HISTORY} - -const - - { - wParam : MCONTACT - lParam : 0 - Affects: Show's the history dialog box for a contact, see notes - Notes : MCONTACT can be NULL(0) to show system messages - } - MS_HISTORY_SHOWCONTACTHISTORY = 'History/ShowContactHistory'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_icq.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_icq.inc deleted file mode 100644 index a498513f01..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_icq.inc +++ /dev/null @@ -1,191 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_ICQ} -{$DEFINE M_ICQ} - -const - - // extra database event type - ICQEVENTTYPE_WEBPAGER = 2003; - - // extra flags for PSS_MESSAGE - PIMF_ROUTE_DEFAULT = 0; - PIMF_ROUTE_DIRECT = $10000; - PIMF_ROUTE_THRUSERVER = $20000; - PIMF_ROUTE_BESTWAY = $30000; - PIMF_ROUTE_MASK = $30000; - - // for SMS - - ICQACKTYPE_SMS = 1001; - ICQEVENTTYPE_SMS = 2001; // database event type - - // for e-mail express - - { - BLOB: - text: ASCIIZ usually in the form "Subject: %s\r\n%s" - from-name: ASCIIZ - from-e-mail: ASCIIZ - } - - ICQEVENTTYPE_EMAILEXPRESS = 2002; - - // for server side lists, used internally only - - // hProcess=dwSequence, lParam=server's error code, 0 for success - ICQACKTYPE_SERVERCLIST = 1003; - -{$ifndef m_protosvc} - {$include m_protosvc.inc} -{$endif} - -type - - PICQSEARCHRESULT = ^TICQSEARCHRESULT; - TICQSEARCHRESULT = record - hdr: TPROTOSEARCHRESULT; - uin: DWORD; - auth: Byte; - end; - - PICQDETAILSSEARCH = ^TICQDETAILSSEARCH; - TICQDETAILSSEARCH = record - nick: PChar; - firstName: PChar; - lastNamee: PChar; - end; - -const - - { - wParam : 0 - lParam : null terminated string containing e-mail to search - affects: Start a search for all ICQ users by e-mail -- see notes - returns: Returnss a handle to the search on success, NULL(0) on failure - notes : uses the same scheme as PSS_BASICSEARCH, - *DEPRECATED* in favour of PS_SEARCHBYEMAIL - } - MS_ICQ_SEARCHBYEMAIL = 'ICQ/SearchByEmail'; - - { - wParam : 0 - lParam : POinter to a TICQDETAILSSEARCH structure - Affect : Start a search of all ICQ users by details, see notes - Returns: A handle to the search on success, NULL(0) on failure - Notes : Results are returned in the same scheme as in PSS_BASICSEARCH, - Not recommended, use PS_SEARCHBYNAME - } - MS_ICQ_SEARCHBYDETAILS = 'ICQ/SearchByDetails'; - - { - wParam : Pointer to a null terminated string containing phone number - lParam : Pointer to a null terminated string containing the message - Affect : Send an SMS via the ICQ network, See notes - Returns: Handle to the send on success, NULL(0) on failure - Notes : the phone number should be the full number with internation code - and prefixed by + e.g. +44 - } - MS_ICQ_SENDSMS = 'ICQ/SendSMS'; - - { - wParam : level - lParam : null terminated string containing logging message - Affect : a logging message was sent from ICQLib - } - ME_ICQ_LOG = 'ICQ/Log'; - -{$ENDIF} - - {$ifdef __} -//Changing user info: -//See documentation of PS_CHANGEINFO -//The changing user info stuff built into the protocol is purposely extremely -//thin, to the extent that your data is passed as-is to the server without -//verification. Don't mess up. -//Everything is byte-aligned -//WORD: 2 bytes, little-endian (that's x86 order) -//DWORD: 4 bytes, little-endian -//LNTS: a WORD containing the length of the string, followed by the string -// itself. No zero terminator. -#define ICQCHANGEINFO_MAIN 0xEA03 -/* pInfoData points to: - WORD datalen - LNTS nick - LNTS first - LNTS last - LNTS email - LNTS city - LNTS state - LNTS phone - LNTS fax - LNTS street - LNTS cellular (if SMS-able string contains an ending ' SMS') - LNTS zip - WORD country - BYTE gmt - BYTE unknown, usually 0 -*/ -#define ICQCHANGEINFO_MORE 0xFD03 -/* pInfoData points to: - WORD datalen - BYTE age - BYTE 0 - BYTE sex - LNTS homepage - WORD birth-year - BYTE birth-month - BYTE birth-day - BYTE lang1 - BYTE lang2 - BYTE lang3 -*/ -#define ICQCHANGEINFO_ABOUT 0x0604 -/* pInfoData points to: - WORD datalen - LNTS about -*/ -#define ICQCHANGEINFO_WORK 0xF303 -/* pInfoData points to: - WORD datalen - LNTS city - LNTS state - DWORD 0 - LNTS street - LNTS zip - WORD country - LNTS company-name - LNTS company-dept - LNTS company-position - WORD 0 - LNTS company-web -*/ -#define ICQCHANGEINFO_PASSWORD 0x2E04 -/* pInfoData points to: - WORD datalen - LNTS newpassword -*/ - {$endif} - diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_ignore.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_ignore.inc deleted file mode 100644 index 9ddcde2759..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_ignore.inc +++ /dev/null @@ -1,74 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_IGNORE} -{$DEFINE M_IGNORE} - - { this module only provides UI and storage for blocking only, protocol modules - are responsible for implementing the block } - -const - - IGNOREEVENT_ALL = LPARAM(-1); - IGNOREEVENT_MESSAGE = 1; - IGNOREEVENT_URL = 2; - IGNOREEVENT_FILE = 3; - IGNOREEVENT_USERONLINE = 4; - IGNOREEVENT_AUTHORIZATION=5; - IGNOREEVENT_YOUWEREADDED=6; // 0.3.3a+ - - { - wParam : MCONTACT - lParam : IGNOREEVENT_* - Affects: Determines if a message type to a contact should be ignored, see notes - Returns: 0 if the message type MUST be shown [non zero] if it MUST be ignored - Notes : MCONTACT can be NULL(0) to see what to do with a contact - that isn't on the list (or is unknown in some way) - don't use the IGNOREEVENT_ALL type! - Version: v0.1.0.1+ - } - MS_IGNORE_ISIGNORED = 'Ignore/IsIgnored'; - - { - wParam : MCONTACT - lParam : IGNOREEVENT_* constant - Affects: Ignore future messages from a contact, see notes - Returns: 0 on success, [nonzero] on failure - Notes : wParam: NULL(0) can be used to see if an unknown contact should be ignored - or not - you can't SET unknown contact's ignore types, this is to stop - a plugin allowing certain functions (I guess) - Version: v0.1.0.1+ - } - MS_IGNORE_IGNORE = 'Ignore/Ignore'; - - { - wParam : MCONTACT - lParam : IGNOREEVENT_* - Affects: Receive future messages from a contact -- of the given type, see notes - Returns: 0 on success, non zero on failure - Notes : Use NULL(0) for MCONTACT to retrieve the setting for an unknown contact - Version: v0.1.0.1+ - } - MS_IGNORE_UNIGNORE = 'Ignore/Unignore'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_langpack.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_langpack.inc deleted file mode 100644 index 2c1f99478c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_langpack.inc +++ /dev/null @@ -1,82 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_LANGPACK} -{$DEFINE M_LANGPACK} - -const - - { - wParam : 0 - lParam : pointer to a null terminated string - Affects: Returns a pointer to a localised string, if there is no known - translation it will return lParam, the return value does *not* - have to be freed in anyway (if successful) -- see notes - Returns: a pointer to a null terminated string - Notes : No check is done to see if Miranda has the required version - Version: v0.1.1.0+ - } - MS_LANGPACK_TRANSLATESTRING = 'LangPack/TranslateString'; - - { - wParam : 0 - lParam : Pointer to a LANGPACKTRANSLATEDIALOG initialised structure, see notes - Affects: Translates a dialog into the user's local language - Returns: 0 on successs [non zero] on failure - Notes : this service only knows about the following window classes/elements: - Window titles, STATIC, EDIT, Hyperlink, BUTTON. - Version: v0.1.1.0+ - } - -type - - PLANGPACKTRANSLATEDIALOG = ^TLANGPACKTRANSLATEDIALOG; - TLANGPACKTRANSLATEDIALOG = record - cbSize: int; - flags: DWORD; - hwndDlg: THandle; - ignoreControls: ^Integer; // pointer to an array of integers? mebbe? - end; - -const - - { translate all edit controls, by default non-read-only edit controls are not } - LPTDF_NOIGNOREEDIT = 1; - { don't translate the title of the dialog } - LPTDF_NOTITLE = 2; - - MS_LANGPACK_TRANSLATEDIALOG = 'LangPack/TranslateDialog'; - - { - wParam : HMENU handle (WinAPI handle to a menu) - lParam : 0 - Affects: Translates a menu into the user's local language -- see notes - Returns: 0 on success [non zero] on failure - Notes : This doesn't work with owner draw menus that store their - captions in a structure known by the owner -- something to be aware of ;) - version: v0.1.1.0+ - } - MS_LANGPACK_TRANSLATEMENU = 'LangPack/TranslateMenu'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_message.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_message.inc deleted file mode 100644 index 777c1c4a0f..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_message.inc +++ /dev/null @@ -1,57 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_MESSAGE} -{$DEFINE M_MESSAGE} - -const - - { - wParam : MCONTACT - lParam : Pointer to a null terminated string - Affects: brings up the send message dialog for a contact, see notes - Returns: 0 on success, non zero on failure - Notes : returns immediately, just after the send dialog is shown, - the lParam is entered into the editbox of the window, - but it's not sent. - Version: v0.1.2.0+ only supports a string, prior NULL(0) is expected - this service was defined as 'SRMsg/LaunchMessageWindow' - use both if compatibility use both, the correct one will work, - but don't rely on the message to be displayed - - } - MS_MSG_SENDMESSAGE = 'SRMsg/SendCommand'; - MS_MSG_SENDMESSAGE_OLD = 'SRMsg/LaunchMessageWindow'; - - { - wParam : 0 - lParam : Pointer to a null termed string - Affects: displays the send message dialog with the 'multiple' option open - and no contacts selected - Returns: Returns 0 on success, nonzero on failure - Version: only present after v0.1.2.1+ - } - MS_MSG_FORWARDMESSAGE = 'SRMsg/ForwardMessage'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_netlib.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_netlib.inc deleted file mode 100644 index 6ce0ca8e9e..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_netlib.inc +++ /dev/null @@ -1,711 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_NETLIB} -{$DEFINE M_NETLIB} - -{>>/ - - NetLib : - - Instead of you writing all the code for working with sockets and supporting - app level protocols such as SOCKS5, it's all done for you. - - NetLib takes care of all that and you can even register a special abstract - nexus, e.g. ICQ direct, the user can configure all this from the options dialog - and you don't have to bother with any of it. - - NetLib wraps up any Winsock calls but you can still get the socket handle - from your netlib handle and do stuff. - - It gives all modules an abstract way of dealing with transport -- mainly sockets - and proxies, Now the but.. - - It's new (mmmm) thus unsupported by any older version of Miranda, and if you - want to be lazy and not write any "wrapper" mini netlib then you'll have - the kudos of "only works with nightly build version of Miranda" :) - -/<<} - - {$ifndef M_SYSTEM} - {$include m_system.inc} - {$endif} - -const - - // for TNETLIBUSER.flags - - { bind incoming ports } - NUF_INCOMING = $01; - { makes outgoing plain connections } - NUF_OUTGOING = $02; - { can use HTTP gateway for plain sockets. ???HttpGateway* are valid, - enables the HTTP proxy option, displayed in options } - NUF_HTTPGATEWAY = $04; - { don't show this as an entry for custom settings to be defined for, - TNETLIB.szDescriptiveName is ignored } - NUF_NOOPTIONS = $08; - { some connections are made for HTTP communication, - enables the HTTP proxy option, displayed in options } - NUF_HTTPCONNS = $10; - { Disables the HTTPS proxy option in options, Use this if all communication - is HTTP } - NUF_NOHTTPSOPTION = $20; - - // for TNETLIBUSERSETTINGS.proxyType - - { SOCKS4 -- No DNS or multi addressing mode (proxy side) -- optional username can - be given, no password } - PROXYTYPE_SOCKS4 = 1; - { SOCKS5 -- DNS names can be given as addresses to connect to, optional - plain text username/password scheme (which may cause failure due to denied access) - IP address maybe returned for DNS addresses -- thus server side DNS } - PROXYTYPE_SOCKS5 = 2; - PROXYTYPE_HTTP = 3; - PROXYTYPE_HTTPS = 4; - - // for TNETLIBOPENCONNECTION.flags - - { this connection will be useed for HTTP communications, - if configured for an HTTP(S) proxy the connection is opened as if there - was no proxy } - - NLOCF_HTTP = $0001; - - // for TNETLIBHTTPPROXYINFO.flags - - { append sequence numbers to GET requests } - NLHPIF_USEGETSEQUENCE = $0001; - { append sequence numbers to POST requests } - NLHPIF_USEPOSTSEQUENCE = $0002; - { GET and POST use the same sequence } - NLHPIF_GETPOSTSAMESEQUENCE = $0004; - - // for TNETLIBHTTPREQUEST.flags, .requestType - - { used by MS_NETLIB_RECVHTTPHEADERS returned structure } - - REQUEST_RESPONSE = 0; - REQUEST_GET = 1; - REQUEST_POST = 2; - REQUEST_CONNECT = 3; - - { auto generate a 'host' header from .szUrl } - NLHRF_GENERATEHOST = $00000001; - { remove any host and/or protocol portion of szUrl before sending it } - NLHRF_REMOVEHOST = $00000002; - { removes host and/or protocol from szUrl unless the connection was - opened through an HTTP or HTTPS proxy. } - NLHRF_SMARTREMOVEHOST = $00000004; - { if the connection was opened through an HTTP or HTTPS proxy then - send a Proxy-Authorization header if required. } - NLHRF_SMARTAUTHHEADER = $00000008; - { never dump this to the log } - NLHRF_NODUMP = $00010000; - { don't dump http headers (only useful for POSTs and MS_NETLIB_HTTPTRANSACTION } - NLHRF_NODUMPHEADERS = $00020000; - { this transaction is a proxy communication. For dump filtering only. } - NLHRF_DUMPPROXY = $00040000; - { dump posted and reply data as text. Headers are always dumped as text. } - NLHRF_DUMPASTEXT = $00080000; - - // for TNETLIBBUFFER.flags - - { don't wrap outgoing packet using TNETLIBUSER.pfnHttpGatewayWrapSend } - MSG_NOHTTPGATEWAYWRAP = $010000; - { don't dump this packet to the log } - MSG_NODUMP = $020000; - { this iss proxy communication, for dump filtering only } - MSG_DUMPPROXY = $040000; - { don't dump as hex, it's text } - MSG_DUMPASTEXT = $080000; - { send as raw, bybpass HTTP proxy stuff } - MSG_RAW = $100000; - - - // all record types structures are declared in their own block because the C header - // file used forward declaration (to get typed parameters for certain function pointers) - // This sort of define-type-pointer-before-type can only be done in the same type block - // in D2 (don't know about later versions) - -type - - { forward typed pointers to records } - - PNETLIBOPENCONNECTION = ^TNETLIBOPENCONNECTION; - PNETLIBHTTPREQUEST = ^TNETLIBHTTPREQUEST; - - { This function pointer is to the CRT realloc() used by Miranda -- it allows reallocation of memory passed - to us (not that we could EVER share the same CRT) but to allow DLLs in general to reallocate memory } - TNetlibRealloc = function(Mem: Pointer; size_t: int): Pointer; cdecl; - TNetlibHTTPGatewayInitProc = function(hConn: THandle; nloc: PNETLIBOPENCONNECTION; nlhr: PNETLIBHTTPREQUEST): int; cdecl; - TNetlibHTTPGatewayBeginProc = function(hConn: THandle; nloc: PNETLIBOPENCONNECTION): int; cdecl; - TNetlibHTTPGatewayWrapSendProc = function(hConn: THandle; buf: PByte; len: int; flags: int; pfnNetLibSend: TMIRANDASERVICE): int; cdecl; - TNetlibHTTPGatewayUnwrapRecvProc = function(nlhr: PNETLIBHTTPREQUEST; buf: PByte; len: int; outBufLen: pInt; NetlibRealloc: TNetlibRealloc): PByte; cdecl; - - PNETLIBUSER = ^TNETLIBUSER; - TNETLIBUSER = record - cbSize: int; - { used for DB settings and log, 'NL' stuff } - szSettingsModule: PChar; - { shows a descriptive name for which different proxy settings can be defined } - szDescriptiveName: PChar; - { see NUF_* constants above } - flags: DWORD; - szHttpGatewayHello: PChar; - { can be NULL(0) to send no User-Agent: also used by HTTPS proxies } - szHttpGatewayUserAgent: PChar; - pfnHttpGatewayInit: TNetlibHTTPGatewayInitProc; - { can be NULL(0) if no begin is required } - pfnHttpGatewayBegin: TNetlibHTTPGatewayBeginProc; - { can be NULL(0) if no wrapping is required } - pfnHttpGatewayWrapSend: TNetlibHTTPGatewayWrapSendProc; - { can be NULL(0) " " } - pfnHttpGatewayUnwrapRecv: TNetlibHTTPGatewayUnwrapRecvProc; - { only if NUF_INCOMING, will be used for validation of user input } - minIncomingPorts: int; - end; - - PNETLIBUSERSETTINGS = ^TNETLIBUSERSETTINGS; - TNETLIBUSERSETTINGS = record - { filled before calling } - cbSize: int; - { 1 or 0 } - useProxy: int; - { PROXYTYPE_* constant, see above } - proxyType: int; - { can be NULL(0) } - szProxyServer: PChar; - { in host byte order } - wProxyPort: int; - { 1 or 0, always 0 for SOCKS4 (doesn't have auth) } - useProxyAuth: int; - { can be NULL(0), always used by SOCKS4 } - szProxyAuthUser: PChar; - { can be NULL(0) } - szProxyAuthPassword: PChar; - { 1 or 0, only used by HTTP, HTTPS } - useProxyAuthNtlm: int; - { 1 or 0 } - dnsThroughProxy: int; - { 1 or 0 } - specifyIncomingPorts: int; - { can be NULL(0), form '1024-1050,1060-1070,2000' } - szIncomingPorts: PChar; - end; - - TNetlibNewConnectionProc = procedure(hNewConnection: THandle; dwRemoveIP: DWORD); cdecl; - - PNETLIBBIND = ^TNETLIBBIND; - TNETLIBBIND = record - cbSize: int; - { function to call when there's a new connection, dwRemoteIP is in host byte - order -- the handle is to the new connection } - pfnNewConnection: TNetlibNewConnectionProc; - { set on return, host byte order } - dwInternalIP: DWORD; - { set on return, host byte order } - wPort: WORD; - end; - - { Pointered type is above } - TNETLIBOPENCONNECTION = record - cbSize: int; - szHost: PChar; // can be an IP in string form - wPort: Word; - flags: DWORD; // see NLOCF_* flags - end; - - PNETLIBHTTPPROXYINFO = ^TNETLIBHTTPPROXYINFO; - TNETLIBHTTPPROXYINFO = record - cbSize: int; - { see NLHPIF_* above } - flags: DWORD; - szHttpPostUrl: PChar; - szHttpGetUrl: PChar; - firstGetSequence: int; - firstPostSequence: int; - end; - - PNETLIBBASE64 = ^TNETLIBBASE64; - TNETLIBBASE64 = record - pszEncoded: PChar; - cchEncoded: int; - pbDecoded: PByte; - cbDecoded: int; - end; - - PNETLIBHTTPHEADER = ^TNETLIBHTTPHEADER; - TNETLIBHTTPHEADER = record - szName: PChar; - szValue: PChar; - end; - - { PNETLIBHTTPREQUEST = ^TNETLIBHTTPREQUEST, defined above because this is - forward referenced from there } - TNETLIBHTTPREQUEST = record - cbSize: int; - requestType: int; // REQUEST_* constant - flags: DWORD; - szUrl: PChar; - { doesn't contain Content-Length, it'll be added automatically } - headers: PNETLIBHTTPHEADER; // pointer to an array of em? - headersCount: int; // yes they do - pData: PChar; // data to be sent on POST request - dataLength: int; // must be 0 for REQUEST_GET/REQUEST_CONNECT - resultCode: int; - szResultDescr: PChar; - end; - - PNETLIBBUFFER = ^TNETLIBBUFFER; - TNETLIBBUFFER = record - buf: PChar; - len: int; - { see MSG_* constants above } - flags: int; - end; - - PNETLIBSELECT = ^TNETLIBSELECT; - TNETLIBSELECT = record - cbSize: int; - dwTimeout: DWORD; // in milliseconds, INFINITE is acceptable - hReadConns: array[0..64+1] of THandle; - hWriteConns: array[0..64+1] of THandle; - hExceptConns: array[0..64+1] of THandle; - end; - - PNETLIBPACKETRECVER = ^TNETLIBPACKETRECVER; - TNETLIBPACKETRECVER = record - cbSize: int; - { infinite is allowed -- initialise before use } - dwTimeout: DWORD; - { this many bytes are removed from the start of the buffer, - set to 0 on return -- initialise before use } - bytesUsed: int; - { equal the returnd value by service, unless the return value is 0 (connection closed) } - bytesAvailable: int; - { same as the parameter given to MS_NETLIB_CREATEPACKETRECVER: wParam } - bufferSize: int; - { contains the read data } - buffer: PByte; - end; - -const - - { - wParam : 0 - lParam : Pointer to an initalised TNETLIBUSER structure - Affects: Initialises the netlib for a set of connections, see notes - Returns: Returns a handle for future netlib calls, NULL on failure. - Notes : Netlib is loaded AFTER all plugins, thus a call to this service - in Load() will fail, hook ME_SYSTEM_MODULESLOADED and call it - from there. - - - Netlib will save settings under .szSettings module, all settings - (being?) begin with 'NL'. - - - Defacto settings are the same as combobox entry option - as seen in Miranda->Options->Network - Version: v0.1.2.2+ - Errors : ERROR_INVALID_PARAMETER, ERROR_OUTOFMEMORY, ERROR_DUP_NAME - } - MS_NETLIB_REGISTERUSER = 'Netlib/RegisterUser'; - - { - wParam : HANDLE - lParam : Pointer to a initalised TNETLIBUSERSETTINGS structure - Affects: Gets the user configured settings for a Netlib user, see notes - Returns: [non zero] on SUCCESS, NULL(0) on failure - Notes : .cbSize must be filled with sizeof() before calling -- - the returned null terminated strings (in the structure) are valid - as long as HANDLE remains open or proxy options are changed - again, do not rely on them being around forever. - Version: v0.1.2.2+ - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_GETUSERSETTINGS = 'Netlib/GetUserSettings'; - - { - wParam : HANDLE - lParam : Pointer to a initalised NETLIBUSERSETTINGS structure - Affect : Changes the configurable settings for a Netlib user -- see notes - Returns: [non zero] on success, NULL(0) on failure - Notes : This service is only really useful for people that specify NUF_NOOPTIONS - when registering and want to create their own options. - Settings will be stored even if the option to enable it, is it not enabled, - e.g. useProxyAuth is 0, szProxyAuthPassword will still be saved - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_SETUSERSETTINGS = 'Netlib/SetUserSettings'; - - { - wParam : HANDLE / SOCKET - lParam : 0 - Affects: Closes a handle, see notes - Returns: Returns [non zero] on success, NULL(0) on failure - Notes : All netlib handles should be closed once they're finished with, - If a SOCKET type is passed instead of netlib handle type, it is closed - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_CLOSEHANDLE = 'Netlib/CloseHandle'; - - { - wParam : HANDLE - lParam : Pointer to a initialised TNETLIBBIND - Affects: Open a port and wait for connections on it -- see notes - Returns: Returns a handle on success, NULL(0) on failure - Notes : this function does the equivalent of socket(), bind(), getsockname(), - listen(), accept() -- internally this function creates a new thread - which waits around in accept() for new connections. - When one is received, TNETLIBBIND.pfnNewConnection is called, - from the context of the NEW thread and then it - returns to waiting for connections. - - - Close the returned handle to end the thread and close the port. - - - Errors : ERROR_INVALID_PARAMETER, any returned by socket(), bind(), listen() - getsockname() - } - MS_NETLIB_BINDPORT = 'Netlib/BindPort'; - - { - wParam : HANDLE - lParam : Pointer to an initalised TNETLIBOPENCONNECTION structure - Affects: Opens a connection -- see notes - Returns: Returns a Handle to a new connection on success, NULL(0) on failure - Notes : internally this service is the equivalent of socket(), gethostbyname(), - connect() - - - If NLOCF_HTTP is set and HANDLE is configured for HTTP(S) proxy - then this function will connect() to that proxy server ONLY, - without performing any initialisation conversation. - - - If HANDLE is configured for an HTTP proxy and does not support - HTTP gateways and you try to open a connection without NLOCF_HTTP - then this service will first attempt to open an HTTPS connection, - if that fails, it will try a direct connection, if *that* fails - then it will return failure with the error - from connect() during the connection attempt - Errors : ERROR_INVALID_PARAMETER, any returned by socket(), gethostbyname(), - connect(), MS_NETLIB_SEND, MS_NETLIB_RECV, select() - - - ERROR_TIMEOUT (during proxy communication) - ERROR_BAD_FORMAT (very invalid proxy reply) - ERROR_ACCESS_DENIED (by proxy) - ERROR_CONNECTION_UNAVAIL (socks proxy can't connect to identd) - ERROR_INVALID_ACCESS (proxy refused identd auth) - ERROR_INVALID_DATA (proxy returned invalid code) - ERROR_INVALID_ID_AUTHORITY (proxy requires use of auth method that's not supported) - ERROR_GEN_FAILURE (socks5/https general failure) - ERROR_CALL_NOT_IMPLEMENTED (socks5 command not supported) - ERROR_INVALID_ADDRESS (socks5 address type not supported) - - - HTTP: anything from TNETLIBUSER.pfnHttpGatewayInit, TNETLIBUSER.pfnHttpGatewayBegin, - MS_NETLIB_SENDHTTPREQUEST or MS_NETLIB_RECVHTTPHEADERS - } - MS_NETLIB_OPENCONNECTION = 'Netlib/OpenConnection'; - - { - wParam : HANDLE - lParam : Pointer to an initialised NETLIBHTTPPROXYINFO structure - Affects: Sets the required information for an HTTP proxy connection -- see notes - Returns: [non zero] on success, NULL(0) on failure - Notes : This service is designed to be called from - within TNETLIBUSER.pfnHttpGatewayInit (see notes in C header under - MS_NETLIB_REGISTERUSER) - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_SETHTTPPROXYINFO = 'Netlib/SetHttpProxyInfo'; - - { - wParam : HANDLE - lParam : 0 - Affects: Get's the SOCKET associated with a handle -- see notes - Returns: the SOCKET on success, INVALID_SOCKET on failure - Notes : The Netlib handle passed to this service should only be passed - if they were returned with MS_NETLIB_OPENCONNECTION or MS_NETLIB_BINDPORT - - - Be careful how you use this socket because you might be connected via an - HTTP proxy, in which case calling send/recv() will break things - - - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_GETSOCKET = 'Netlib/GetSocket'; - - { - wParam : 0 - lParam : Pointer to a null terminated string - Affects: URL-encodes a string for x-www-form-urlencoded (and other uses) -- see notes - Returns: A pointer to a null terminated string, NULL(0) on failure - Notes : The returned string must be freed after it's no longer needed using mir_free - Errors : ERROR_INVALID_PARAMETER, ERROR_OUTOFMEMORY - } - MS_NETLIB_URLENCODE = 'Netlib/UrlEncode'; - - { - wParam : 0 - lParam : Pointer to a TNETLIBBASE64 initialised structure - Affects: Decodes a Base64 null terminated string, see notes - Returns: [non zero] on success, NULL(0) on failure - Notes : TNETLIBBASE64.pszEncoded and cchEncoded must contain a pointer to - a buffer to use as input, and it's length, the length - should not include space taken for null termination -- - - - Output is placed in ..pbDecoded and ..cbDecoded for buffer and - length of buffer -- the maxiumum output for a given input can - be worked out with Netlib_GetBase64DecodedBufferSize() function - see below. - - - For more information on Base64 see rfc-1421. - Errors : ERROR_INVALID_PARAMETER, ERROR_INVALID_DATA, ERROR_BUFFER_OVERFLOW - } - MS_NETLIB_BASE64DECODE = 'Netlib/Base64Decode'; - - { - wParam : 0 - lParam : Pointer to an initialised TNETLIBBASE64 structure - Affect : Base64 encode a string, see notes - Returns: [non zero] on success, NULL(0) on failure - Notes : TNETLIBBASE64.pbDecode and TNETLIBBASE64.cbDecoded contain - the input buffer and it's length -- - TNETLIBBASE64.pszEncoded and TNETLIBBASE64.cchEncoded contain the - buffer in which to put the output and it's length. - - - The maximum output size for a given input can be worked - out with the function Netlib_GetBase64EncodedBufferSize() below - .pszEncoded is null terminated, on return TNETLIBBASE64.cchEncoded - is set to the actual length excluding 0. - Errors : ERROR_INVALID_PARAMETER, ERROR_BUFFER_OVERFLOW - } - MS_NETLIB_BASE64ENCODE = 'Netlib/Base64Encode'; - - { - wParam : HANDLE - lParam : Pointer to a initialised TNETLIBHTTPREQUEST structure - Affect : Send an HTTP request over a connection, see notes - Returns: The number of bytes on success, SOCKET_ERROR on failure - Notes : HANDLE must of been returned by MS_NETLIB_OPENCONNECTION,, - If you use NLHRF_SMARTAUTHHEADER and NTLM auth is in use then - full NTLM auth transcation occurs, comprising sending the - domain, getting the challenge, sending the response. - NETLIBHTTPREQUEST.resultCode and NETLIBHTTPREQUEST.szResultDescr are - ignored by this service. - Errors : ERROR_INVALID_PARAMETER, MS_NETLIB_SEND (return codes) - } - MS_NETLIB_SENDHTTPREQUEST = 'Netlib/SendHttpRequest'; - - { - wParam : HANDLE - lParam : 0 - Affect : Receive HTTP headers, see notes - Returns: A pointer to a TNETLIBHTTPREQUEST structure on success, NULL(0) on failure - Notes : The returned pointer must be freed after it's done with - use MS_NETLIB_FREEHTTPREQUESTSTRUCT. - - - HANDLE must be returned by MS_NETLIB_OPENCONNECTION - - - Return^.pData=NIL and Return^.dataLength=0 always - - - The returned data should be retrieved using MS_NETLIB_RECV once - the headers have been parsed. - If headers haven't finished within 60 seconds the function returns - NULL(0) and ERROR_TIMEOUT - Errors : ERROR_INVALID_PARAMETER, any MS_NETLIB_RECV or select() - ERROR_HANDLE_EOF (connection closed bfore headers complete) - ERROR_TIMEOUT (headers still not complete after 60 seconds) - ERROR_BAD_FORMAT (invalid character or line ending in headers, or first line is blank) - ERROR_BUFFER_OVERFLOW (each header line must be less than 4096 chars long) - ERROR_INVALID_DATA (first header line is malformed ("http/[01].[0-9] [0-9]+ .*", or no colon in subsequent line) - - } - MS_NETLIB_RECVHTTPHEADERS = 'Netlib/RecvHttpHeaders'; - - { - wParam : 0 - lParam : Pointer returned by MS_NETLIB_RECVHTTPHEADERS to free - Affect : Free the memory used by a TNETLIBHTTPREQUEST structure, see notes - Returns: [non zero] on success, NULL(0) on failure - Notes : This service should only be used with memory pointers returned - by either MS_NETLIB_RECVHTTPHEADERS or MS_NETLIB_HTTPTRANSACTION!. - Errors : ERROR_INVALID_PARAMETER - - } - MS_NETLIB_FREEHTTPREQUESTSTRUCT = 'Netlib/FreeHttpRequestStruct'; - - { - wParam : HANDLE - lParam : Pointer to a TNETLIBHTTPREQUEST structure - Affect : Carry out an entire HTTP transaction, see notes - Returns: another pointer to a TNETLIBHTTPREQUEST structure or NULL(0) - on failure - Notes : The returned pointer must be freed at some point - with MS_NETLIB_FREEHTTPREQUESTSTRUCT, - - - TNETLIBHTTPREQUEST.szUrl should have a full HTTP URL, if it - does not start with http://, that will be assumed, but do not - take this assumption to stay assumed (heh..) in the future - - - this service equivalent of open(), sendhttp(), getheaders() - netlib_recv(), netlib_closehandle() - - - TNETLIBHTTPREQUEST.headers will be added to with the following - headers if they're not already present : - "Host" (even if it is requested in .flags) - "User-Agent" (in form : 'Miranda/d.d.d.d <(status of release)>') - "Content-Length" (for POSTs only, set to TNETLIBHTTPREQUEST.dataLength) - - If you don't want to send any of these headers -- - set TNETLIBHTTPREQUEST.headers to NULL(0) - - - In the returned pointer, pData[dataLen] is always 0 for 'safety' - also : headers, headersCount, pData, dataLength, resultCode and - szResultDescr are all valid - - - Also take care not to assume that a returned pointer means that - at the HTTP level it all worked out -- refer to the resultCode for - 2xx before doing anything else - - - Errors : ERROR_INVALID_PARAMETER, ERROR_OUTOFMEMORY - Errors returned by the aforementioned internally used functions - } - MS_NETLIB_HTTPTRANSACTION = 'Netlib/HttpTransaction'; - - { - wParam : HANDLE - lParam : Pointer to an initialised TNETLIBBUFFER structure - Affect : Send data over an open connection see notes - Returns: The number of bytes sent on success, SOCKET_ERROR on failure - Notes : see Netlib_Send() helper function - Errors : ERROR_INVALID_PARAMETER, - anything from socket(), connect() - send(), TNETLIBUSER.pfnHttpGatewayWrapSend(), - (HTTP proxy): ERROR_GEN_FAILURE (http result code wasn't 2xx) - MS_NETLIB_SENDHTTPREQUEST, MS_NETLIB_RECVHTTPHEADERS - } - MS_NETLIB_SEND = 'Netlib/Send'; - - { - wParam : HANDLE - lParam : Pointer to an initialised TNETLIBBUFFER structure - Affect : Receive data over a connection, see notes - Returns: The number of bytes read on success, SOCKET_ERROR on failure - Notes : - This service uses some of the same flags as MS_NETLIB_SEND : - MSG_PEEK, - MSG_NODUMP, - MSG_DUMPPROXY, - MSG_NOHTTPGATEWAYWRAP, - MSG_DUMPASTEXT, - MSG_RAW - - - On using MSG_NOHTTPGATEWAYWRAP: Because packets through an HTTP proxy are - batched and cached and stuff, using this flag is not a guarantee that it - will be obeyed, and if it is it may even be propogated to future calls - even if you don't specify it then. Because of this, the flag should be - considered an all-or-nothing thing: either use it for the entire duration - of a connection, or not at all. - Errors : ERROR_INVALID_PARAMETER, anything from recv() - (HTTP proxy): - ERROR_GEN_FAILURE (http result code wasn't 2xx) - ERROR_INVALID_DATA (no Content-Length header in reply) - ERROR_NOT_ENOUGH_MEMORY (Content-Length very large) - ERROR_HANDLE_EOF (connection closed before Content-Length bytes recved) - anything from select(), - MS_NETLIB_RECVHTTPHEADERS, nlu.pfnHttpGatewayUnwrapRecv, socket(), - connect(), MS_NETLIB_SENDHTTPREQUEST - - } - MS_NETLIB_RECV = 'Netlib/Recv'; - - { - wParam : 0 - lParam : Pointer to an initialised TNETLIBSELECT structure - Affect : Determine the status of one or more connections, see notes - Returns: The numbe of ready connections, SOCKET_ERROR on failure - Notes : All handles passed to this service must have been returned - either by MS_NETLIB_OPENCONNECTION or MS_NETLIB_BINDPORT, - the last handle in each list must be followed by either NULL - or INVALID_HANDLE_VALUE. - Errors : ERROR_INVALID_HANDLE, ERROR_INVALID_DATA, anything from select() - } - MS_NETLIB_SELECT = 'Netlib/Select'; - - { - wParam : HANDLE - lParam : maxPacketSize - Affect : Create a packet receiver, see notes - Returns: A handle on success, NULL(0) on failure - Notes : The packet receiver implements the common situation where - you have a variable length of packets coming thru over a connection - and you want them split up in order to handle them. - - - The major limiation is, that the buffer is created in memory, - so you can't have arbitrarily large packets - Errors : ERROR_INVALID_PARAMETER, ERROR_OUTOFMEMORY - } - MS_NETLIB_CREATEPACKETRECVER = 'Netlib/CreatePacketRecver'; - - { - wParam : Handle returned by MS_NETLIB_CREATEPACKETRECVER - lParam : Pointer to an initialised TNETLIBPACKETRECVER - Returns: The total number of bytes available in the buffer, NULL(0) - if the connection was closed or SOCKET_ERROR. - - - If TNETLIBPACKETRECVER.bytesUsed is set to zero and the - buffer is already full up to the maxPacketSize, it is assumed - that a too large packet has been received, All data in - the buffer is discarded and receiving has started anew. - - - This will probably cause alignment problem so if you think - that tis iss likely to happen, then you should deal with it - yourself. - - - Closing the packet receiver will not close the associated - connection but will discard any bytes still in the buffer, - so if you intend to carry on reading from that connection, - make sure you have processed the buffer first. - - - This service is equivalent of memmove() to remove - the first bytesUsed from the buffer, select(), if dwTimeOut - is not INFINITE, then MS_NETLIB_RECV - Errors : ERROR_INVALID_PARAMETER, ERROR_TIMEOUT, anything from select(), - MS_NETLIB_RECV - } - MS_NETLIB_GETMOREPACKETS = 'Netlib/GetMorePackets'; - - { - wParam : HANDLE - lParam : Pointer to null terminated string to uh, log. - Affect : Add a message to the log (if it's running) see notes - Returns: non zeror on success, NULL(0) on failure - Notes : Don't include \r\n or #13#10 it's not needed, - - - Doesn't support formatting like the given C code for - Netlib_Logf, just use FmtStr() and then call this service - if you want that. - Errors : ERROR_INVALID_PARAMETER - } - MS_NETLIB_LOG = 'Netlib/Log'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_options.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_options.inc deleted file mode 100644 index 8e52002177..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_options.inc +++ /dev/null @@ -1,91 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_OPTIONS} -{$DEFINE M_OPTIONS} - -const - - { - wParam : addinfo - lParam : 0 - Affects: The user opened the options dialog, see notes - Notes : Modules should do whatever initalisation they need and call - MS_OPT_ADDPAGE with the wParam -- MS_OPT_ADDPAGE - can be called one or more times - if more than one page wants to be displayed. - } - ME_OPT_INITIALISE = 'Opt/Initialise'; - - { - wParam : wParam from ME_OPT_INITIALISE - lParam : Pointer to an initialised TOPTIONSDIALOGPAGE - Affects: Adds a page to the options dialog, see notes - Notes : Strings in the structure can be released as soon as the - service returns -- but icons must be kept around, this iss - not a problem if you're loading theem from a resource. - - - This service should only be called within the ME_OPT_INITIALISE - event hook. - - - Pages in the options dialog operate just like pages in property - sheets, See the WinAPI documentation for details on how they operate. - Version: Prior to v0.1.2.1 the options dialog would resize - to fit the largest page, but since then it's a fixed size - The largest page that fits neatly is 314x240 DLU's - - - Some of OPTIONSDIALOGPAGE's fields are version dependant. - } - MS_OPT_ADDPAGE = 'Opt/AddPage'; - - { defacto size } - - OPTIONSDIALOGPAGE_V0100_SIZE = $18; - OPTIONSDIALOGPAGE_V0120_SIZE = $28; - - { give group box titles a bold font } - ODPF_BOLDGROUPS = 4; - -type - - POPTIONSDIALOGPAGE = ^TOPTIONSDIALOGPAGE; - TOPTIONSDIALOGPAGE = record - cbSize: int; - position: int; // position number, lower numbers are top most - pszTitle: PChar; - pfnDlgProc: Pointer; // DLGPROC prototype - pszTemplate: PChar; - hInstance: THandle; - hIcon: THandle; // v0.1.0.1+ - pszGroup: PChar; // v0.1.0.1+ - groupPosition: int; // v0.1.0.1+ - hGroupIcon: THandle; // v0.1.0.1+ - flags: DWORD; // v0.1.2.1+ - end; - -const - - PSM_GETBOLDFONT = ($0400 + 102); - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_plugins.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_plugins.inc deleted file mode 100644 index 689b7a39e7..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_plugins.inc +++ /dev/null @@ -1,70 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_PLUGINS} -{$DEFINE M_PLUGINS} - -const - - DEFMOD_PROTOCOLICQ = 1; // removed from v0.3.0.0 alpha - DEFMOD_PROTOCOLMSN = 2; // removed from v0.1.2.0+ - DEFMOD_UIFINDADD = 3; - DEFMOD_UIUSERINFO = 4; - DEFMOD_SRMESSAGE = 5; - DEFMOD_SRURL = 6; - DEFMOD_SREMAIL = 7; - DEFMOD_SRAUTH = 8; - DEFMOD_SRFILE = 9; - DEFMOD_UIHELP = 10; - DEFMOD_UIHISTORY = 11; - DEFMOD_RNDCHECKUPD = 12; - DEFMOD_RNDICQIMPORT = 13; // not built in to v0.1.0.1+ - DEFMOD_RNDAUTOAWAY = 14; - DEFMOD_RNDUSERONLINE = 15; - DEFMOD_RNDCRYPT = 16; // v0.1.0.1-v0.1.2.0 - DEFMOD_SRAWAY = 17; // v0.1.0.1+ - DEFMOD_RNDIGNORE = 18; // v0.1.0.1+ - DEFMOD_UIVISIBILITY = 19; // v0.1.1.0+, options page only - DEFMOD_UICLUI = 20; // v0.1.1.0+ - DEFMOD_UIPLUGINOPTS = 21; // v0.1.2.1+ - DEFMOD_PROTOCOLNETLIB = 22; // v0.1.2.2+ - - DEFMOD_HIGHEST = 22; - - - - { - wParam : 0 - lParam : 0 - Affect : Gets an array of modules that the plugins report they want to replace - Returns: Returns a pointer to an array of ints, with elements 1 or 0, - indexed by the DEFMOD_* constants, 1 is to mark that the default - module shouldn't be loaded, see notes - Notes : this is primarily for use by the core's module initialiser, - but could also be used by modules that are doing - naughty things that are very feature-dependent. - } - MS_PLUGINS_GETDISABLEDEFAULTARRAY = 'Plugins/GetDisableDefaultArray'; - -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_popup.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_popup.inc deleted file mode 100644 index a91ef4df0c..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_popup.inc +++ /dev/null @@ -1,222 +0,0 @@ -(* -=============================================================================== - Popup plugin -Plugin Name: Popup -Plugin author: hrk, Luca Santarelli, hrk@users.sourceforge.net -This file has been created by egodust, Sam, egodust@users.sourceforge.net -=============================================================================== - -The purpose of this plugin is to give developers a common "platform/interface" to show Popups. It is born from the source code of NewStatusNotify, another plugin I've made. - -Remember that users *must* have this plugin enabled, or they won't get any popup. Write this in the requirements, do whatever you wish ;-)... but tell them! -=============================================================================== - --- To use this file you need Windows.pas, m_globaldefs.pas (get it from the CVS under the 'inc' module) --- To include this in the source, use {$include m_popup.h} - -*) - -{$ifndef M_POPUP_H} -{$define M_POPUP_H} - -{$ifdef FPC} - {$PACKRECORDS C} - {$MODE Delphi} -{$endif} - -const - - MAX_CONTACTNAME = 2048; - MAX_SECONDLINE = 2048; - - SM_WARNING = $01; //Triangle icon. - SM_NOTIFY = $02; //Exclamation mark icon. - -type - - // for info on what this stuff is, see m_popup.h - - PPOPUPDATA = ^TPOPUPDATA; - TPOPUPDATA = record - lchContact: MCONTACT; - lchIcon: THandle; - lpszContactName: array[0..MAX_CONTACTNAME-1] of Char; - lpszText: array[0..MAX_SECONDLINE-1] of Char; - colorBack: COLORREF; - colorForeText: COLORREF; - PluginWindowProc: Pointer; // must be a window procedure using stdcall - PluginData: Pointer; - end; - -type - - // for info on what this stuff is, see m_popup.h - - PPOPUPDATA = ^TPOPUPDATA; - TPOPUPDATA = record - lchContact: MCONTACT; - lchIcon: THandle; - lpszContactName: array[0..MAX_CONTACTNAME-1] of Char; - lpszText: array[0..MAX_SECONDLINE-1] of Char; - colorBack: COLORREF; - colorForeText: COLORREF; - PluginWindowProc: Pointer; // must be a window procedure using stdcall - PluginData: Pointer; - iSeconds: int; //Custom delay time in seconds. -1 means "forever", 0 means "default time". - cZero: array[0..15] of Char; //16 unused bytes which may come useful in the future. - end; - -const - -(* - Creates, adds and shows a popup, given a (valid) POPUPDATA structure pointer. - wParam = (WPARAM)(*POPUPDATA)PopupDataAddress - lParam = 0 - Returns: > 0 on success, 0 if creation went bad, -1 if the PopupData contained unacceptable values. - NOTE: it returns -1 if the PopupData was not valid, if there were already too many popups, if the module was disabled. - Otherwise, it can return anything else... -*) - - MS_POPUP_ADDPOPUP = 'Popup/AddPopup'; - -(* - The same, but with a POPUPDATAEX structure pointer. - wParam = (WPARAM)(*POPUPDATAEX)PopupDataExAddress - lParam = 0 -*) - - MS_POPUP_ADDPOPUP = 'Popup/AddPopupEx'; - -(* - Returns the handle to the contact associated to the specified PopupWindow. - You will probably need to know this handle inside your WNDPROC. Exampole: you want to open the MessageWindow. :-) - Call MS_POPUP_GETCONTACT on the hWnd you were given in the WNDPROC. - wParam = (WPARAM)(HWND)hPopupWindow - lParam = 0; - Returns: the HANDLE of the contact. Can return NULL, meaning it's the main contact. -1 means failure. -*) - - MS_POPUP_GETCONTACT = 'Popup/GetContact'; - -(* - wParam = hPopupWindow - lParam = PluginDataAddress; - Returns: the address of the PLUGINDATA structure. Can return NULL, meaning nothing was given. -1 means failure. - IMPORTANT NOTE: it doesn't seem to work if you do: - CallService(..., (LPARAM)aPointerToAStruct); - and then use that struct. - Do this, instead: - aPointerToStruct = CallService(..., (LPARAM)aPointerToAStruct); - and it will work. Just look at the example I've written above (PopupDlgProc). -*) - MS_POPUP_GETPLUGINDATA = 'Popup/GetPluginData'; - -(* - wParam = 0 - lParam = 0 - Returns: 0 if the user has chosen not to have the second line, 1 if he choose to have the second line. -*) - MS_POPUP_ISSECONDLINESHOWN = 'Popup/IsSecondLineShown'; - -(* - UM_FREEPLUGINDATA - wParam = lParam = 0. Process this message if you have allocated your own memory. (i.e.: POPUPDATA.PluginData != NULL) -*) - UM_FREEPLUGINDATA = ((*WM_USER*)$400 + $200); - -(* - UM_DESTROYPOPUP - wParam = lParam = 0. Send this message when you want to destroy the popup, or use the function below. -*) - UM_DESTROYPOPUP = ((*WM_USER*)$400 + $201); - -(* - UM_INITPOPUP - wParam = (WPARAM)(HWND)hPopupWindow (but this is useless, since I'll directly send it to your hPopupWindow - lParam = 0. - This message is sent to the Popup when its creation has been finished, so POPUPDATA (and thus your PluginData) is reachable. - Catch it if you needed to catch WM_CREATE or WM_INITDIALOG, which you'll never ever get in your entire popup-life. - Return value: if you process this message, return 0. If you don't process it, return 0. Do whatever you like ;-) -*) - UM_INITPOPUP = ($400(*WM_USER*) + $202); - -(* - wParam = hPopupWindow - lParam = lpzNewText - returns: > 0 for success, -1 for failure, 0 if the failure is due to second line not being shown. (but you could call PUIsSecondLineShown() before changing the text...) - Changes the text displayed in the second line of the popup. -*) - MS_POPUP_CHANGETEXT = 'Popup/Changetext'; - -(* - This is mainly for developers. - Shows a warning message in a Popup. It's useful if you need a "MessageBox" like function, but you don't want a modal window (which will interfere with a DialogProcedure. MessageBox steals focus and control, this one not. - wParam = lpzMessage - lParam = 0; Returns: 0 if the popup was shown, -1 in case of failure. -*) - MS_POPUP_SHOWMESSAGE = 'Popup/ShowMessage'; - - - (* helper functions, will be inlined on FPC if you have the swithces enabled *) - - function PUAddPopup(ppdp: PPOPUPDATA): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := CallService(MS_POPUP_ADDPOPUP, WPARAM(ppdp), 0); - end; - - function PUGetContact(hPopupWindow: THandle): THandle; - {$ifdef FPC} - inline; - {$endif} - begin - Result := CallService(MS_POPUP_GETCONTACT, WPARAM(hPopupWindow), 0); - end; - - function PUGetPluginData(hPopupWindow: THandle): Pointer; - {$ifdef FPC} - inline; - {$endif} - var - dummy: pointer; - begin - dummy := nil; - Int(Result) := CallService(MS_POPUP_GETPLUGINDATA, WPARAM(hPopupWindow), LPARAM(dummy)); - end; - - function PUIsSecondLineShown: BOOL; - {$ifdef FPC} - inline; - {$endif} - begin - Int(Result) := CallService(MS_POPUP_ISSECONDLINESHOWN, 0, 0); - end; - - function PUDeletePopup(hWndPopup: THandle): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := SendMessage(hWndPopup, UM_DESTROYPOPUP, 0, 0); - end; - - function PUChangeText(hWndPopup: THandle; lpzNewText: PChar): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := CallService(MS_POPUP_CHANGETEXT, WPARAM(hWndPopup), LPARAM(lpzNewText)); - end; - - function PUShowMessage(lpzText: PChar; kind: Byte): int; - {$ifdef FPC} - inline; - {$endif} - begin - Result := CallService(MS_POPUP_SHOWMESSAGE, WPARAM(lpzText), LPARAM(kind)); - end; - -{$endif} - diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protocols.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protocols.inc deleted file mode 100644 index 4d8012c180..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protocols.inc +++ /dev/null @@ -1,180 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_PROTOCOLS} -{$DEFINE M_PROTOCOLS} - -const - - ACKTYPE_MESSAGE = 0; - ACKTYPE_URL = 1; - ACKTYPE_FILE = 2; - ACKTYPE_CHAT = 3; - ACKTYPE_AWAYMSG = 4; - ACKTYPE_AUTHREQ = 5; - ACKTYPE_ADDED = 6; - ACKTYPE_GETINFO = 7; - ACKTYPE_SETINFO = 8; - ACKTYPE_LOGIN = 9; - ACKTYPE_SEARCH = 10; - ACKTYPE_NEWUSER = 11; - ACKTYPE_STATUS = 12; - ACKTYPE_CONTACTS = 13; //send/recv of contacts - - ACKRESULT_SUCCESS = 0; - ACKRESULT_FAILED = 1; - //'in progress' result codes: - ACKRESULT_CONNECTING = 100; - ACKRESULT_CONNECTED = 101; - ACKRESULT_INITIALISING = 102; - ACKRESULT_SENTREQUEST = 103; // waiting for reply... - ACKRESULT_DATA = 104; // blob of file data sent/recved, or search result - ACKRESULT_NEXTFILE = 105; // file transfer went to next file - ACKRESULT_FILERESUME = 106; // a file is about to be received, see PS_FILERESUME - ACKRESULT_DENIED = 107; // a file send has been denied (0.3a + only) - - // for PROTOCOLDESCRIPTOR.type - - PROTOTYPE_PROTOCOL = 1000; - PROTOTYPE_ENCRYPTION = 2000; - PROTOTYPE_FILTER = 3000; - PROTOTYPE_TRANSLATION = 4000; - PROTOTYPE_OTHER = 10000;//avoid using this if at all possible - -type - - PCCSDATA = ^TCCSDATA; - TCCSDATA = record - hContact: THandle; - szProtoService: PChar; // a PS_* constant - wParam: WPARAM; - lParam: LPARAM; - end; - - PACKDATA = ^TACKDATA; - TACKDATA = record - cbSize: int; - szModule: PChar; // the name of the protocol module which initiated this ack - hContact: THandle; - type_: int; // an ACKTYPE_* constant - result_: int; // an ACKRESULT_* constant - hProcess: THandle; // caller defined seq, I mean process code - lParam: LPARAM; // caller defined data - end; - - // when type=ACKTYPE_FILE and (result=ACKRESULT_DATA or result=ACKRESULT_FILERESUME) - - PPROTOFILETRANSFERSTATUS = ^TPROTOFILETRANSFERSTATUS; - TPROTOFILETRANSFERSTATUS = record - cbSize: int; - hContact: THandle; - sending: int; // true if sending, false if receiving - files: PChar; // pointer to an array of pchar's - totalFiles: int; - currentFileNumber: int; - totalBytes: LongInt; - totalProgress: LongInt; - workingDir: PChar; - currentFile: PChar; - currentFileSize: LongInt; - currentFileProgress: LongInt; - currentFileTime: LongInt; // UNIX time - end; - - // for registering a protocol, enumeration - - PPROTOCOLDESCRIPTOR = ^TPROTOCOLDESCRIPTOR; - TPROTOCOLDESCRIPTOR = record - cbSize: int; - szName: PChar; // unique name of module - type_: int; // a PROTOTYPE_* constant - end; - -const - - { - wParam : 0 - lParam : Pointer to an initalised CSSDATA structure - Affect : Send a general request thru the protocol chain for a contact - Return : the return value documented in the PS_* def (m_protosvc.inc) - } - MS_PROTO_CALLCONTACTSERVICE = 'Proto/CallContactService'; - - { - wParam : 0 - lParam : Pointer to an initalised TACKDATA structure - Affect : a general 'ack', see notes - Notes : Just because defs are here doesn't mean they will be sent - read the docs for the function you are calling to see what - replies you will get. - } - ME_PROTO_ACK = 'Proto/Ack'; - - { - wParam : pointer to an int to store number of protocols - lParam : Pointer to an an array of PPROTOCOLDESCRIPTOR pointers - Affect : Enumerate the currently running protocols, see notes - Returns: 0 on success, [non zero] on failure - Notes : Neither wParam/lParam maybe NULL(0), the list returned by - this service is the protocol modules currently installed - and running, it is not a complete list of protocols that have - ever been installed. - - - A protocol module does not have to be a protocol running thru - the internet, it can be a vast number of things - } - MS_PROTO_ENUMPROTOCOLS = 'Proto/EnumProtocols'; - - { - wParam : 0 - lParam : Pointer to null terminated string containing protocol name - Affect : Determines if a protocol is running or not. - Returns: A pointer to the PPROTOCOLDESCRIPTOR if the protocol is loaded - or NULL(0) if it isn't - } - MS_PROTO_ISPROTOCOLLOADED = 'Proto/IsProtocolLoaded'; - - { - wParam : MCONTACT - lParam : Pointer to a null terminated string containing a name - Affect : Determine whether the given contact has the given protocol - in it's chain. - Returns : 0 if the protocol isn't in the chain, [non zero] if it is - } - MS_PROTO_ISPROTOONCONTACT = 'Proto/IsProtoOnContact'; - - { - wParam : MCONTACT - lParam : 0 - Affect : Gets the network-level protocol associated with a contact - Returns: a PChar pointing to the ASCIIZ name of the protocol or NULL(0) - if the contact has no protocol, There's no need to dispsose - the returned string. - - - This is the name of the module that actually accesses the network - for that contact. - } - MS_PROTO_GETCONTACTBASEPROTO = 'Proto/GetContactBaseProto'; - -{$ENDIF} \ No newline at end of file diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protomod.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protomod.inc deleted file mode 100644 index f304b61a39..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protomod.inc +++ /dev/null @@ -1,105 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_PROTOMOD} -{$DEFINE M_PROTOMOD} - - {$ifndef M_PROTOCOLS} - {$include m_protocols.inc} - {$endif} - -const - - { - wParam : 0 - lParam : Pointer to a initalised TPROTOCOLDESCRIPTOR structure - Affect : Register a protocol module, see notes - Returns: 0 on success, [non zero] on failure - Notes : This service MUST be called from your module's Load() function - TPROTOCOLDESCRIPTOR.type can be a value other than PROTOTYPE_* - which are used to provide a more precise positioning information - for the contact protocol lists. - - - Relative values to the constants can be given, but this MUST NOT - be done for PROTOTYPE_PROTOCOL. - } - MS_PROTO_REGISTERMODULE = 'Proto/RegisterModule'; - - { - wParam : MCONTACT - lParam : protocol_name_string - Affect : Add the given protocol module to the chain for a contact, see notes - Returns: 0 success, [non zero] on failure - Notes : The module is added to the correct positioning according to it's - registered type. - } - MS_PROTO_ADDTOCONTACT = 'Proto/AddToContact'; - - { - wParam : MCONTACT - lParam : protocol_name_string - Affect : Remove the given protocol name from the chain for the given contact - Returns: 0 on success, [non zero] on failure - } - MS_PROTO_REMOVEFROMCONTACT = 'Proto/RemoveFromContact'; - - { see m_helpers.inc for CreateProtoServiceFunction } - - { - wParam : wParam [arg] - lParam : lParam [arg] - Affect : Call the next service in the chain for the send operation, see notes - Return : Return value should be returned by CallService(MS_PROTO_CHAINSEND,wParam,lParam) - Notes : wParam MUST remain untouched, lParam is a pointer to a CCSDATA structure - and can be modified or copid if needed. - wParam and lParam should be the values passed to your service, - typically your service should return ASAP. - } - MS_PROTO_CHAINSEND = 'Proto/ChainSend'; - - { - wParam : wParam [arg] - lParam : lParam [arg] - Affect : Call the next service in the chain in this receive operation, see notes - Return : Return value should be returned by CallService(MS_PROTO_CHAINRECV,wParam,lParam) - Notes : wParam MUST remain untouched, lParam is a pointer to a CCSDATA structure - and can be modified or copied if needed. - wParam and lParam should be the values passed to your service, - typically your service should return ASAP. - - - MS_PROTO_CHAINRECV is thread safe since 0.1.2.0 -- calls - are translated to the main thread and passed from there. - } - MS_PROTO_CHAINRECV = 'Proto/ChainRecv'; - - { - wParam : 0 - lParam : Pointer to an initalised ACKDATA - Affect : Broadcast a ME_PROTO_ACK event, see notes - Returns: The return value of the NotifyEventHooks() call - Notes : ME_PROTO_ACK is completely thread safe since 01.2.0 - see notes in core/modules.h under NotifyEventHooks() - } - MS_PROTO_BROADCASTACK = 'Proto/BroadcastAck'; -{$ENDIF} diff --git a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protosvc.inc b/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protosvc.inc deleted file mode 100644 index daac49ea99..0000000000 --- a/plugins/!NotAdopted/Chess4Net/MI/MirandaINC/m_protosvc.inc +++ /dev/null @@ -1,753 +0,0 @@ -(* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 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 M_PROTOSVC} -{$DEFINE M_PROTOSVC} - -{<>} - -const - - PFLAGNUM_1 = $1; - PF1_IMSEND = $00000001; // supports IM sending - PF1_IMRECV = $00000002; // supports IM receiving - PF1_IM = (PF1_IMSEND or PF1_IMRECV); - PF1_URLSEND = $00000004; // supports separate URL sending - PF1_URLRECV = $00000008; // supports separate URL receiving - PF1_URL = (PF1_URLSEND or PF1_URLRECV); - PF1_FILESEND = $00000010; // supports file sending - PF1_FILERECV = $00000020; // supports file receiving - PF1_FILE = (PF1_FILESEND or PF1_FILERECV); - PF1_MODEMSGSEND = $00000040; // supports broadcasting away messages - PF1_MODEMSGRECV = $00000080; // supports reading others' away messages - PF1_MODEMSG = (PF1_MODEMSGSEND or PF1_MODEMSGRECV); - PF1_SERVERCLIST = $00000100; // contact lists are stored on the server, not locally. See notes below - PF1_AUTHREQ = $00000200; // will get authorisation requests for some or all contacts - PF1_ADDED = $00000400; // will get 'you were added' notifications - PF1_VISLIST = $00000800; // has an invisible list - PF1_INVISLIST = $00001000; // has a visible list for when in invisible mode - PF1_INDIVSTATUS = $00002000; // supports setting different status modes to each contact - PF1_EXTENSIBLE = $00004000; // the protocol is extensible and supports plugin-defined messages - PF1_PEER2PEER = $00008000; // supports direct (not server mediated) communication between clients - PF1_NEWUSER = $00010000; // supports creation of new user IDs - PF1_CHAT = $00020000; // has a realtime chat capability - PF1_INDIVMODEMSG = $00040000; // supports replying to a mode message request with different text depending on the contact requesting - PF1_BASICSEARCH = $00080000; // supports a basic user searching facility - PF1_EXTSEARCH = $00100000; // supports one or more protocol-specific extended search schemes - PF1_CANRENAMEFILE = $00200000; // supports renaming of incoming files as they are transferred - PF1_FILERESUME = $00400000; // can resume broken file transfers, see PS_FILERESUME below - PF1_ADDSEARCHRES = $00800000; // can add search results to the contact list - PF1_CONTACTSEND = $01000000; // can send contacts to other users - PF1_CONTACTRECV = $02000000; // can receive contacts from other users - PF1_CONTACT = (PF1_CONTACTSEND or PF1_CONTACTRECV); - PF1_CHANGEINFO = $04000000; // can change our user information stored on server - PF1_SEARCHBYEMAIL = $08000000; // supports a search by e-mail feature - PF1_USERIDISEMAIL = $10000000; // set if the uniquely identifying field of the network is the e-mail address - PF1_SEARCHBYNAME = $20000000; // supports searching by nick/first/last names - PF1_EXTSEARCHUI = $40000000; // has a dialog box to allow searching all the possible fields - PF1_NUMERICUSERID = $80000000; // the unique user IDs for this protocol are numeric - - PFLAGNUM_2 = 2; // the status modes that the protocol supports - PF2_ONLINE = $00000001; // an unadorned online mode - PF2_INVISIBLE = $00000002; - PF2_SHORTAWAY = $00000004; // Away on ICQ, BRB on MSN - PF2_LONGAWAY = $00000008; // NA on ICQ, Away on MSN - PF2_LIGHTDND = $00000010; // Occupied on ICQ, Busy on MSN - PF2_HEAVYDND = $00000020; // DND on ICQ - PF2_FREECHAT = $00000040; - PF2_OUTTOLUNCH = $00000080; - PF2_ONTHEPHONE = $00000100; - - PFLAGNUM_3 = 3; //the status modes that the protocol supports - //away-style messages for. Uses the PF2_ flags. - PFLAG_UNIQUEIDTEXT = 100; //returns a static buffer of text describing the unique field by which this protocol identifies users (already translated), or NULL - - PFLAG_MAXCONTACTSPERPACKET = 200; //v0.1.2.2+: returns the maximum number of contacts which can be sent in a single PSS_CONTACTS. - - PFLAGNUM_4 = 4; // v0.3+: flag asking a protocol plugin how auths are handled - PF4_FORCEAUTH = $00000001; // protocol has to send auth's for things to work - PF4_FORCEADDED = $00000002; // protocol has to tell people that they were added (otherwise things don't work) - PF4_NOCUSTOMAUTH = $00000004; // protocol can't send a custom message while asking others for auth - - PFLAG_UNIQUEIDSETTING = 300; // v0.3+: returns the DB setting name (e.g. szProto=ICQ, szSetting=UIN) that has the ID which makes this user unique on that system (0.3a ONLY), the string is statically allocated so no need to free() - - // for PS_SETSTATUS - - LOGINERR_WRONGPASSWORD = 1; - LOGINERR_NONETWORK = 2; - LOGINERR_PROXYFAILURE = 3; - LOGINERR_BADUSERID = 4; - LOGINERR_NOSERVER = 5; - LOGINERR_TIMEOUT = 6; - LOGINERR_WRONGPROTOCOL = 7; - - // flag for PS_ADDTOLIST - - PALF_TEMPORARY = 1; // add the contact temporarily and invisibly, just to get user info or something - - // flags for PS_GETINFO - - SGIF_MINIMAL = 1; // get only the most basic information. This should - // contain at least a Nick and e-mail. - - // for PSR_MESSAGE - - PREF_CREATEREAD = 1; // create the database event with the 'read' flag set - - // for PS_FILERESUME - - FILERESUME_OVERWRITE= 1; - FILERESUME_RESUME = 2; - FILERESUME_RENAME = 3; - FILERESUME_SKIP = 4; - -type - - PPROTOSEARCHRESULT = ^TPROTOSEARCHRESULT; - TPROTOSEARCHRESULT = record - cbSize: int; - nick: PChar; - firstName: PChar; - lastName: PChar; - email: PChar; - reserved: array [0..15] of Byte; - // Protocols may extend this structure with extra members at will and supply - // a larger cbSize to reflect the new information, but they must not change - // any elements above this comment - // The 'reserved' field is part of the basic structure, not space to - // overwrite with protocol-specific information. - // If modules do this, they should take steps to ensure that information - // they put there will be retained by anyone trying to save this structure. - end; - - PPROTOSEARCHBYNAME = ^TPROTOSEARCHBYNAME; - TPROTOSEARCHBYNAME = record - pszNick: PChar; - pszFirstName: PChar; - pszLastName: PChar; - end; - - PPROTORECVEVENT = ^TPROTORECVEVENT; - TPROTORECVEVENT = record - flags: DWORD; - timestamp: DWORD; - szMessage: PChar; - lParam: LPARAM; - end; - - PPROTORECVFILE = ^TPROTORECVFILE; - TPROTORECVFILE = record - flags: DWORD; - timestamp: DWORD; // unix time - szDescription: PChar; - pFiles: PChar; // pointer to an array of pchar's - lParam: LPARAM; - end; - - PPROTOFILERESUME = ^TPROTOFILERESUME; - TPROTOFILERESUME = record - action: int; // FILERESUME_* flag - szFilename: PChar; // full path, only valid if action=FILERESUME_RENAME - end; - -const - - { - wParam : PFLAGNUM_* (see above) - lParam : 0 - Affects: Returns a bitfield for settings corresponding to flag number, see notes - Returns: a bitfield of supported features -- or 0 if flag_num is not supported - Notes : this checks what sort of things are actively supported by a protocol - module - } - PS_GETCAPS = '/GetCaps'; - - { - wParam : cchName - lParam : Pointer to a buffer to fill with human-readable name - Affect : Get a human-readable name for the protocol, see notes - Result : 0 on success, [non zero] on failure - Notes : Should be translated before being returned, cchName - has the size of the buffer, example strings: "ICQ", "AIM" - } - PS_GETNAME = '/GetName'; - - { - wParam : whichIcon - lParam : 0 - Affect : Loads one of the protocol-sspecific icons - Returns: the HICON or NULL on failure, the returned icon - must be DestroyIcon()ed, the UI should overlay - the online icon with further UI-specified icon to - repressent the exact status mode. - } - PLI_PROTOCOL = $1; // An icon representing the protocol (eg the multicoloured flower for ICQ) - PLI_ONLINE = $2; // Online state icon for that protocol (eg green flower for ICQ) - PLI_OFFLINE = $3; // Offline state icon for that protocol (eg red flower for ICQ) - PLIF_LARGE = $0; // Or with one of the above to get the large (32x32 by default) icon - PLIF_SMALL = $10000; // Or with one of the above to get the small (16x16 by default) icon - - PS_LOADICON = '/LoadIcon'; - - { - wParam : status_mode - lParam : Pointer to a null terminated string containing message - Affect : Sets the status mode specific message for the user, see notes - Returns: 0 on success, [non zero] on failure - Notes : This service is not available unless PF1_MODEMSGSEND is set, - and PF1_INDIVMODEMSG is *not* set. - If PF1_INDIVMODEMSG is set, then see PSS_AWAYMSSG for details - of operations of away messages. - - - Protocol modules smust support lParam=NULL, it may eithere mean - to use an empty message or (preferably) not to reply at all to - any requests. - } - PS_SETAWAYMSG = '/SetAwayMsg'; - - { - wParam : newMode from statusmodes.inc - lParam : 0 - Affect : Change the protocol's status mode, see notes - Returns: 0 on success, [non zero] on failure - Notes : Will send an ack with : - type=ACKTYPE_SUCCESS, result=ACKRESULT_SUCCESS, hProcess=previousMode, lParam=newMode - - - when the change completes. This ack is sent for all changes, not - just ones caused by calling this function. - - - NewMode can be ID_STATUS_CONNECTING<=newMode