summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2014-03-04 23:23:45 +0000
committerGeorge Hazan <george.hazan@gmail.com>2014-03-04 23:23:45 +0000
commit15855fa84a09fd1fd486d357c38db0f2bd181e74 (patch)
treec98d1ae74abca41c776522059343eda13a7e0a31
parent819f8efabea6b0d7d971f9e6e4b21bbc18838874 (diff)
HistoryStats compiles ok now
git-svn-id: http://svn.miranda-ng.org/main/trunk@8399 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--plugins/!NotAdopted/HistoryStats/_build/build.cmd38
-rw-r--r--plugins/!NotAdopted/HistoryStats/historystats.sln27
-rw-r--r--plugins/!NotAdopted/HistoryStats/include/m_metacontacts.h162
-rw-r--r--plugins/!NotAdopted/HistoryStats/include/m_updater.h113
-rw-r--r--plugins/!NotAdopted/HistoryStats/mirandasettings.cpp212
-rw-r--r--plugins/!NotAdopted/HistoryStats/mu_common.cpp800
-rw-r--r--plugins/!NotAdopted/HistoryStats/mu_common.h471
-rw-r--r--plugins/ExternalAPI/m_historystats.h (renamed from plugins/!NotAdopted/HistoryStats/include/m_historystats.h)0
-rw-r--r--plugins/Folders/folders_10.vcxproj4
-rw-r--r--plugins/HistoryStats/docs/historystats_changelog.txt (renamed from plugins/!NotAdopted/HistoryStats/docs/historystats_changelog.txt)0
-rw-r--r--plugins/HistoryStats/docs/historystats_readme.txt (renamed from plugins/!NotAdopted/HistoryStats/docs/historystats_readme.txt)0
-rw-r--r--plugins/HistoryStats/historystats.vcproj (renamed from plugins/!NotAdopted/HistoryStats/historystats.vcproj)279
-rw-r--r--plugins/HistoryStats/historystats.vcxproj403
-rw-r--r--plugins/HistoryStats/historystats.vcxproj.filters455
-rw-r--r--plugins/HistoryStats/langpack/historystats_langpack_template.txt (renamed from plugins/!NotAdopted/HistoryStats/langpack/historystats_langpack_template.txt)0
-rw-r--r--plugins/HistoryStats/res/col_add.ico (renamed from plugins/!NotAdopted/HistoryStats/res/col_add.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/col_del.ico (renamed from plugins/!NotAdopted/HistoryStats/res/col_del.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/col_down.ico (renamed from plugins/!NotAdopted/HistoryStats/res/col_down.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/col_up.ico (renamed from plugins/!NotAdopted/HistoryStats/res/col_up.ico)bin2862 -> 2862 bytes
-rw-r--r--plugins/HistoryStats/res/create.ico (renamed from plugins/!NotAdopted/HistoryStats/res/create.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/create_warning.ico (renamed from plugins/!NotAdopted/HistoryStats/res/create_warning.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/dropdown.ico (renamed from plugins/!NotAdopted/HistoryStats/res/dropdown.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/exclude_no.ico (renamed from plugins/!NotAdopted/HistoryStats/res/exclude_no.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/exclude_yes.ico (renamed from plugins/!NotAdopted/HistoryStats/res/exclude_yes.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/myhistory.ico (renamed from plugins/!NotAdopted/HistoryStats/res/myhistory.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/resource.rc (renamed from plugins/!NotAdopted/HistoryStats/resource.rc)2
-rw-r--r--plugins/HistoryStats/res/sett_columns.ico (renamed from plugins/!NotAdopted/HistoryStats/res/sett_columns.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/sett_exclude.ico (renamed from plugins/!NotAdopted/HistoryStats/res/sett_exclude.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/sett_global.ico (renamed from plugins/!NotAdopted/HistoryStats/res/sett_global.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/sett_input.ico (renamed from plugins/!NotAdopted/HistoryStats/res/sett_input.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/sett_output.ico (renamed from plugins/!NotAdopted/HistoryStats/res/sett_output.ico)bin6518 -> 6518 bytes
-rw-r--r--plugins/HistoryStats/res/tree_button1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_button1.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_button2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_button2.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_check1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_check1.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_check2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_check2.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_check3.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_check3.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_check4.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_check4.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_combo1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_combo1.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_combo2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_combo2.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_datetime1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_datetime1.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_datetime2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_datetime2.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_edit1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_edit1.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_edit2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_edit2.ico)bin318 -> 318 bytes
-rw-r--r--plugins/HistoryStats/res/tree_folder1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_folder1.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/tree_folder2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_folder2.ico)bin2550 -> 2550 bytes
-rw-r--r--plugins/HistoryStats/res/tree_radio1.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_radio1.ico)bin2862 -> 2862 bytes
-rw-r--r--plugins/HistoryStats/res/tree_radio2.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_radio2.ico)bin2862 -> 2862 bytes
-rw-r--r--plugins/HistoryStats/res/tree_radio3.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_radio3.ico)bin2862 -> 2862 bytes
-rw-r--r--plugins/HistoryStats/res/tree_radio4.ico (renamed from plugins/!NotAdopted/HistoryStats/res/tree_radio4.ico)bin2862 -> 2862 bytes
-rw-r--r--plugins/HistoryStats/src/_consts.cpp (renamed from plugins/!NotAdopted/HistoryStats/_consts.cpp)0
-rw-r--r--plugins/HistoryStats/src/_consts.h (renamed from plugins/!NotAdopted/HistoryStats/_consts.h)0
-rw-r--r--plugins/HistoryStats/src/_format.h (renamed from plugins/!NotAdopted/HistoryStats/_format.h)0
-rw-r--r--plugins/HistoryStats/src/_globals.cpp (renamed from plugins/!NotAdopted/HistoryStats/_globals.cpp)0
-rw-r--r--plugins/HistoryStats/src/_globals.h (renamed from plugins/!NotAdopted/HistoryStats/_globals.h)19
-rw-r--r--plugins/HistoryStats/src/_langext.h (renamed from plugins/!NotAdopted/HistoryStats/_langext.h)0
-rw-r--r--plugins/HistoryStats/src/_strfunc.h (renamed from plugins/!NotAdopted/HistoryStats/_strfunc.h)8
-rw-r--r--plugins/HistoryStats/src/bandctrl.cpp (renamed from plugins/!NotAdopted/HistoryStats/bandctrl.cpp)0
-rw-r--r--plugins/HistoryStats/src/bandctrl.h (renamed from plugins/!NotAdopted/HistoryStats/bandctrl.h)0
-rw-r--r--plugins/HistoryStats/src/bandctrldefs.h (renamed from plugins/!NotAdopted/HistoryStats/bandctrldefs.h)0
-rw-r--r--plugins/HistoryStats/src/bandctrlimpl.cpp (renamed from plugins/!NotAdopted/HistoryStats/bandctrlimpl.cpp)0
-rw-r--r--plugins/HistoryStats/src/bandctrlimpl.h (renamed from plugins/!NotAdopted/HistoryStats/bandctrlimpl.h)0
-rw-r--r--plugins/HistoryStats/src/canvas.cpp (renamed from plugins/!NotAdopted/HistoryStats/canvas.cpp)42
-rw-r--r--plugins/HistoryStats/src/canvas.h (renamed from plugins/!NotAdopted/HistoryStats/canvas.h)0
-rw-r--r--plugins/HistoryStats/src/colbase_words.cpp (renamed from plugins/!NotAdopted/HistoryStats/colbase_words.cpp)0
-rw-r--r--plugins/HistoryStats/src/colbase_words.h (renamed from plugins/!NotAdopted/HistoryStats/colbase_words.h)0
-rw-r--r--plugins/HistoryStats/src/column.cpp (renamed from plugins/!NotAdopted/HistoryStats/column.cpp)0
-rw-r--r--plugins/HistoryStats/src/column.h (renamed from plugins/!NotAdopted/HistoryStats/column.h)0
-rw-r--r--plugins/HistoryStats/src/column_chatduration.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_chatduration.cpp)16
-rw-r--r--plugins/HistoryStats/src/column_chatduration.h (renamed from plugins/!NotAdopted/HistoryStats/column_chatduration.h)0
-rw-r--r--plugins/HistoryStats/src/column_events.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_events.cpp)12
-rw-r--r--plugins/HistoryStats/src/column_events.h (renamed from plugins/!NotAdopted/HistoryStats/column_events.h)0
-rw-r--r--plugins/HistoryStats/src/column_group.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_group.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_group.h (renamed from plugins/!NotAdopted/HistoryStats/column_group.h)0
-rw-r--r--plugins/HistoryStats/src/column_inout.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_inout.cpp)36
-rw-r--r--plugins/HistoryStats/src/column_inout.h (renamed from plugins/!NotAdopted/HistoryStats/column_inout.h)0
-rw-r--r--plugins/HistoryStats/src/column_inoutgraph.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_inoutgraph.cpp)10
-rw-r--r--plugins/HistoryStats/src/column_inoutgraph.h (renamed from plugins/!NotAdopted/HistoryStats/column_inoutgraph.h)0
-rw-r--r--plugins/HistoryStats/src/column_nick.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_nick.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_nick.h (renamed from plugins/!NotAdopted/HistoryStats/column_nick.h)0
-rw-r--r--plugins/HistoryStats/src/column_protocol.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_protocol.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_protocol.h (renamed from plugins/!NotAdopted/HistoryStats/column_protocol.h)0
-rw-r--r--plugins/HistoryStats/src/column_rank.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_rank.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_rank.h (renamed from plugins/!NotAdopted/HistoryStats/column_rank.h)0
-rw-r--r--plugins/HistoryStats/src/column_split.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_split.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_split.h (renamed from plugins/!NotAdopted/HistoryStats/column_split.h)0
-rw-r--r--plugins/HistoryStats/src/column_splittimeline.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_splittimeline.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_splittimeline.h (renamed from plugins/!NotAdopted/HistoryStats/column_splittimeline.h)0
-rw-r--r--plugins/HistoryStats/src/column_timeline.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_timeline.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_timeline.h (renamed from plugins/!NotAdopted/HistoryStats/column_timeline.h)0
-rw-r--r--plugins/HistoryStats/src/column_wordcount.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_wordcount.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_wordcount.h (renamed from plugins/!NotAdopted/HistoryStats/column_wordcount.h)0
-rw-r--r--plugins/HistoryStats/src/column_words.cpp (renamed from plugins/!NotAdopted/HistoryStats/column_words.cpp)0
-rw-r--r--plugins/HistoryStats/src/column_words.h (renamed from plugins/!NotAdopted/HistoryStats/column_words.h)6
-rw-r--r--plugins/HistoryStats/src/contact.cpp (renamed from plugins/!NotAdopted/HistoryStats/contact.cpp)0
-rw-r--r--plugins/HistoryStats/src/contact.h (renamed from plugins/!NotAdopted/HistoryStats/contact.h)2
-rw-r--r--plugins/HistoryStats/src/dlgconfigure.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgconfigure.cpp)16
-rw-r--r--plugins/HistoryStats/src/dlgconfigure.h (renamed from plugins/!NotAdopted/HistoryStats/dlgconfigure.h)2
-rw-r--r--plugins/HistoryStats/src/dlgfilterwords.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgfilterwords.cpp)10
-rw-r--r--plugins/HistoryStats/src/dlgfilterwords.h (renamed from plugins/!NotAdopted/HistoryStats/dlgfilterwords.h)4
-rw-r--r--plugins/HistoryStats/src/dlgoption.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption.cpp)10
-rw-r--r--plugins/HistoryStats/src/dlgoption.h (renamed from plugins/!NotAdopted/HistoryStats/dlgoption.h)8
-rw-r--r--plugins/HistoryStats/src/dlgoption_subbase.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_subbase.cpp)8
-rw-r--r--plugins/HistoryStats/src/dlgoption_subcolumns.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_subcolumns.cpp)8
-rw-r--r--plugins/HistoryStats/src/dlgoption_subexclude.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_subexclude.cpp)32
-rw-r--r--plugins/HistoryStats/src/dlgoption_subglobal.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_subglobal.cpp)26
-rw-r--r--plugins/HistoryStats/src/dlgoption_subinput.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_subinput.cpp)13
-rw-r--r--plugins/HistoryStats/src/dlgoption_suboutput.cpp (renamed from plugins/!NotAdopted/HistoryStats/dlgoption_suboutput.cpp)2
-rw-r--r--plugins/HistoryStats/src/iconlib.cpp (renamed from plugins/!NotAdopted/HistoryStats/iconlib.cpp)8
-rw-r--r--plugins/HistoryStats/src/iconlib.h (renamed from plugins/!NotAdopted/HistoryStats/iconlib.h)0
-rw-r--r--plugins/HistoryStats/src/inout.h (renamed from plugins/!NotAdopted/HistoryStats/inout.h)6
-rw-r--r--plugins/HistoryStats/src/main.cpp (renamed from plugins/!NotAdopted/HistoryStats/main.cpp)156
-rw-r--r--plugins/HistoryStats/src/main.h (renamed from plugins/!NotAdopted/HistoryStats/main.h)4
-rw-r--r--plugins/HistoryStats/src/message.cpp (renamed from plugins/!NotAdopted/HistoryStats/message.cpp)0
-rw-r--r--plugins/HistoryStats/src/message.h (renamed from plugins/!NotAdopted/HistoryStats/message.h)0
-rw-r--r--plugins/HistoryStats/src/mirandacontact.cpp (renamed from plugins/!NotAdopted/HistoryStats/mirandacontact.cpp)11
-rw-r--r--plugins/HistoryStats/src/mirandacontact.h (renamed from plugins/!NotAdopted/HistoryStats/mirandacontact.h)9
-rw-r--r--plugins/HistoryStats/src/mirandahistory.cpp (renamed from plugins/!NotAdopted/HistoryStats/mirandahistory.cpp)29
-rw-r--r--plugins/HistoryStats/src/mirandahistory.h (renamed from plugins/!NotAdopted/HistoryStats/mirandahistory.h)0
-rw-r--r--plugins/HistoryStats/src/mirandasettings.cpp143
-rw-r--r--plugins/HistoryStats/src/mirandasettings.h (renamed from plugins/!NotAdopted/HistoryStats/mirandasettings.h)12
-rw-r--r--plugins/HistoryStats/src/mu_common.cpp527
-rw-r--r--plugins/HistoryStats/src/mu_common.h291
-rw-r--r--plugins/HistoryStats/src/optionsctrl.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrl.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrl.h (renamed from plugins/!NotAdopted/HistoryStats/optionsctrl.h)0
-rw-r--r--plugins/HistoryStats/src/optionsctrldefs.h (renamed from plugins/!NotAdopted/HistoryStats/optionsctrldefs.h)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl.cpp)4
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl.h (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl.h)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_button.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_button.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_check.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_check.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_color.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_color.cpp)2
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_combo.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_combo.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_datetime.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_datetime.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_edit.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_edit.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_group.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_group.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_item.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_item.cpp)0
-rw-r--r--plugins/HistoryStats/src/optionsctrlimpl_radio.cpp (renamed from plugins/!NotAdopted/HistoryStats/optionsctrlimpl_radio.cpp)0
-rw-r--r--plugins/HistoryStats/src/protocol.cpp (renamed from plugins/!NotAdopted/HistoryStats/protocol.cpp)0
-rw-r--r--plugins/HistoryStats/src/protocol.h (renamed from plugins/!NotAdopted/HistoryStats/protocol.h)0
-rw-r--r--plugins/HistoryStats/src/resource.h (renamed from plugins/!NotAdopted/HistoryStats/resource.h)0
-rw-r--r--plugins/HistoryStats/src/settings.cpp (renamed from plugins/!NotAdopted/HistoryStats/settings.cpp)9
-rw-r--r--plugins/HistoryStats/src/settings.h (renamed from plugins/!NotAdopted/HistoryStats/settings.h)0
-rw-r--r--plugins/HistoryStats/src/settingsserializer.cpp (renamed from plugins/!NotAdopted/HistoryStats/settingsserializer.cpp)9
-rw-r--r--plugins/HistoryStats/src/settingsserializer.h (renamed from plugins/!NotAdopted/HistoryStats/settingsserializer.h)0
-rw-r--r--plugins/HistoryStats/src/settingstree.cpp (renamed from plugins/!NotAdopted/HistoryStats/settingstree.cpp)0
-rw-r--r--plugins/HistoryStats/src/settingstree.h (renamed from plugins/!NotAdopted/HistoryStats/settingstree.h)0
-rw-r--r--plugins/HistoryStats/src/statistic.cpp (renamed from plugins/!NotAdopted/HistoryStats/statistic.cpp)347
-rw-r--r--plugins/HistoryStats/src/statistic.h (renamed from plugins/!NotAdopted/HistoryStats/statistic.h)4
-rw-r--r--plugins/HistoryStats/src/themeapi.cpp (renamed from plugins/!NotAdopted/HistoryStats/themeapi.cpp)0
-rw-r--r--plugins/HistoryStats/src/themeapi.h (renamed from plugins/!NotAdopted/HistoryStats/themeapi.h)0
-rw-r--r--plugins/HistoryStats/src/utf8buffer.h (renamed from plugins/!NotAdopted/HistoryStats/utf8buffer.h)0
-rw-r--r--plugins/HistoryStats/src/utils.cpp (renamed from plugins/!NotAdopted/HistoryStats/utils.cpp)0
-rw-r--r--plugins/HistoryStats/src/utils.h (renamed from plugins/!NotAdopted/HistoryStats/utils.h)0
-rw-r--r--plugins/HistoryStats/src/utils/pattern.h (renamed from plugins/!NotAdopted/HistoryStats/utils/pattern.h)0
-rw-r--r--src/modules/metacontacts/meta_api.cpp69
-rw-r--r--src/modules/metacontacts/meta_services.cpp18
-rw-r--r--src/modules/metacontacts/meta_utils.cpp57
-rw-r--r--src/modules/metacontacts/metacontacts.h22
157 files changed, 2369 insertions, 2624 deletions
diff --git a/plugins/!NotAdopted/HistoryStats/_build/build.cmd b/plugins/!NotAdopted/HistoryStats/_build/build.cmd
deleted file mode 100644
index e748861b07..0000000000
--- a/plugins/!NotAdopted/HistoryStats/_build/build.cmd
+++ /dev/null
@@ -1,38 +0,0 @@
-@echo off
-
-call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
-
-:BuildAnsi
-echo.
-echo Preparing ANSI build...
-echo.
-if not exist ansi mkdir ansi
-if not exist ansi\docs mkdir ansi\docs
-del /q ansi\*.*
-del /q ansi\docs\*.*
-devenv /rebuild "Release" ..\historystats.sln
-copy ..\release\historystats.dll ansi\
-copy ..\docs\historystats_changelog.txt ansi\docs\
-copy ..\docs\historystats_readme.txt ansi\docs\
-copy ..\langpack\historystats_langpack_template.txt ansi\docs\
-copy ..\include\m_historystats.h ansi\docs\
-
-:BuildUnicode
-echo.
-echo Prepartin Unicode build...
-echo.
-if not exist unicode mkdir unicode
-if not exist unicode\docs mkdir unicode\docs
-del /q unicode\*.*
-del /q unicode\docs\*.*
-devenv /rebuild "Unicode Release" ..\historystats.sln
-copy ..\releaseu\historystats.dll unicode\
-copy ..\docs\historystats_changelog.txt unicode\docs\
-copy ..\docs\historystats_readme.txt unicode\docs\
-copy ..\langpack\historystats_langpack_template.txt unicode\docs\
-copy ..\include\m_historystats.h unicode\docs\
-
-echo.
-echo Done.
-echo.
-pause > nul
diff --git a/plugins/!NotAdopted/HistoryStats/historystats.sln b/plugins/!NotAdopted/HistoryStats/historystats.sln
deleted file mode 100644
index c20377a1ab..0000000000
--- a/plugins/!NotAdopted/HistoryStats/historystats.sln
+++ /dev/null
@@ -1,27 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "historystats", "historystats.vcproj", "{B5BCDC2F-81FC-4324-90C6-E5540A225EFF}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- Unicode Debug = Unicode Debug
- Unicode Release = Unicode Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Debug.ActiveCfg = Debug|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Debug.Build.0 = Debug|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Release.ActiveCfg = Release|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Release.Build.0 = Release|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Unicode Debug.ActiveCfg = Unicode Debug|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Unicode Debug.Build.0 = Unicode Debug|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Unicode Release.ActiveCfg = Unicode Release|Win32
- {B5BCDC2F-81FC-4324-90C6-E5540A225EFF}.Unicode Release.Build.0 = Unicode Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
diff --git a/plugins/!NotAdopted/HistoryStats/include/m_metacontacts.h b/plugins/!NotAdopted/HistoryStats/include/m_metacontacts.h
deleted file mode 100644
index 1da12b97fa..0000000000
--- a/plugins/!NotAdopted/HistoryStats/include/m_metacontacts.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-
-Miranda IM: the free IM client for Microsoft* Windows*
-
-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.
-*/
-
-#ifndef M_METACONTACTS_H__
-#define M_METACONTACTS_H__ 1
-
-//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
-#define MS_MC_GETMETACONTACT "MetaContacts/GetMeta"
-
-//gets the handle for the default contact
-//wParam=(HANDLE)hMetaContact
-//lParam=0
-//returns a handle to the default contact, or null on failure
-#define MS_MC_GETDEFAULTCONTACT "MetaContacts/GetDefault"
-
-//gets the contact number for the default contact
-//wParam=(HANDLE)hMetaContact
-//lParam=0
-//returns a DWORD contact number, or -1 on failure
-#define MS_MC_GETDEFAULTCONTACTNUM "MetaContacts/GetDefaultNum"
-
-//gets the handle for the 'most online' contact
-//wParam=(HANDLE)hMetaContact
-//lParam=0
-//returns a handle to the 'most online' contact
-#define MS_MC_GETMOSTONLINECONTACT "MetaContacts/GetMostOnline"
-
-//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
-#define MS_MC_GETNUMCONTACTS "MetaContacts/GetNumContacts"
-
-//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
-#define MS_MC_GETSUBCONTACT "MetaContacts/GetSubContact"
-
-//sets the default contact, using the subcontact's contact number
-//wParam=(HANDLE)hMetaContact
-//lParam=(DWORD)contact number
-//returns 0 on success
-#define MS_MC_SETDEFAULTCONTACTNUM "MetaContacts/SetDefault"
-
-//sets the default contact, using the subcontact's handle
-//wParam=(HANDLE)hMetaContact
-//lParam=(HANDLE)hSubcontact
-//returns 0 on success
-#define MS_MC_SETDEFAULTCONTACT "MetaContacts/SetDefaultByHandle"
-
-//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
-#define MS_MC_FORCESENDCONTACTNUM "MetaContacts/ForceSendContact"
-
-//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)
-#define MS_MC_FORCESENDCONTACT "MetaContacts/ForceSendContactByHandle"
-
-//'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)
-#define MS_MC_UNFORCESENDCONTACT "MetaContacts/UnforceSendContact"
-
-//'forces' or 'unforces' (i.e. toggles) the metacontact to send using it's default contact
-// overrides (and clears) 'force send' above, and will even force use of offline contacts
-// will send ME_MC_FORCESEND or ME_MC_UNFORCESEND event
-//wParam=(HANDLE)hMetaContact
-//lParam=0
-//returns 1(true) or 0(false) representing new state of 'force default'
-#define MS_MC_FORCEDEFAULT "MetaContacts/ForceSendDefault"
-
-// 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)
-#define MS_MC_GETFORCESTATE "MetaContacts/GetForceState"
-
-// fired when a metacontact's default contact changes (fired upon creation of metacontact also, when default is initially set)
-// wParam=(HANDLE)hMetaContact
-// lParam=(HANDLE)hDefaultContact
-#define ME_MC_DEFAULTTCHANGED "MetaContacts/DefaultChanged"
-
-// fired when a metacontact's subcontacts change (fired upon creation of metacontact, when contacts are added or removed, and when
-// contacts are reordered) - a signal to re-read metacontact data
-// wParam=(HANDLE)hMetaContact
-// lParam=0
-#define ME_MC_SUBCONTACTSCHANGED "MetaContacts/SubcontactsChanged"
-
-// fired when a metacontact is forced to send using a specific subcontact
-// wParam=(HANDLE)hMetaContact
-// lParam=(HANDLE)hForceContact
-#define ME_MC_FORCESEND "MetaContacts/ForceSend"
-
-// fired when a metacontact is 'unforced' to send using a specific subcontact
-// wParam=(HANDLE)hMetaContact
-// lParam=0
-#define ME_MC_UNFORCESEND "MetaContacts/UnforceSend"
-
-// method to get protocol name - used to be sure you're dealing with a "real" metacontacts plugin :)
-// wParam=lParam=0
-#define MS_MC_GETPROTOCOLNAME "MetaContacts/GetProtoName"
-
-
-// added 0.9.5.0 (22/3/05)
-// wParam=(HANDLE)hContact
-// lParam=0
-// convert a given contact into a metacontact
-#define MS_MC_CONVERTTOMETA "MetaContacts/ConvertToMetacontact"
-
-// added 0.9.5.0 (22/3/05)
-// wParam=(HANDLE)hContact
-// lParam=(HANDLE)hMeta
-// add an existing contact to a metacontact
-#define MS_MC_ADDTOMETA "MetaContacts/AddToMetacontact"
-
-// added 0.9.5.0 (22/3/05)
-// wParam=0
-// lParam=(HANDLE)hContact
-// remove a contact from a metacontact
-#define MS_MC_REMOVEFROMMETA "MetaContacts/RemoveFromMetacontact"
-
-
-// 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 the clist 'onmodulesloaded' event handler (which, since it's loaded after the db, will be called
-// before the metacontact onmodulesloaded handler where the subcontact hiding is usually done)
-#define MS_MC_DISABLEHIDDENGROUP "MetaContacts/DisableHiddenGroup"
-
-#endif
diff --git a/plugins/!NotAdopted/HistoryStats/include/m_updater.h b/plugins/!NotAdopted/HistoryStats/include/m_updater.h
deleted file mode 100644
index 7f5323a027..0000000000
--- a/plugins/!NotAdopted/HistoryStats/include/m_updater.h
+++ /dev/null
@@ -1,113 +0,0 @@
-#ifndef _M_UPDATER_H
-#define _M_UPDATER_H
-
-typedef struct Update_tag {
- int cbSize;
- char *szComponentName; // component name as it will appear in the UI (will be translated before displaying)
-
- char *szVersionURL; // URL where the current version can be found (NULL to disable)
- BYTE *pbVersionPrefix; // bytes occuring in VersionURL before the version, used to locate the version information within the URL data
- // (not that this URL could point at a binary file - dunno why, but it could :)
- int cpbVersionPrefix; // number of bytes pionted to by pbVersionPrefix
- char *szUpdateURL; // URL where dll/zip is located
-
- char *szBetaVersionURL; // URL where the beta version can be found (NULL to disable betas)
- BYTE *pbBetaVersionPrefix; // bytes occuring in VersionURL before the version, used to locate the version information within the URL data
- int cpbBetaVersionPrefix; // number of bytes pionted to by pbVersionPrefix
- char *szBetaUpdateURL; // URL where dll/zip is located
-
- BYTE *pbVersion; // bytes of current version, used for comparison with those in VersionURL
- int cpbVersion; // number of bytes pionted to by pbVersion
-
- char *szBetaChangelogURL; // url for displaying changelog for beta versions
-} Update;
-
-// register a comonent with the updater
-//
-// wparam = 0
-// lparam = (LPARAM)&Update
-#define MS_UPDATE_REGISTER "Update/Register"
-
-// utility functions to create a version string from a DWORD or from pluginInfo
-// point buf at a buffer at least 16 chars wide - but note the version string returned may be shorter
-//
-#ifndef MIRANDA_NO_INLINE_HELPERS
-__inline static char *CreateVersionString(DWORD version, char *buf) {
- mir_snprintf(buf, 16, "%d.%d.%d.%d", (version >> 24) & 0xFF, (version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF);
- return buf;
-}
-
-__inline static char *CreateVersionStringPlugin(PLUGININFO *pluginInfo, char *buf) {
- return CreateVersionString(pluginInfo->version, buf);
-}
-#endif // MIRANDA_NO_INLINE_HELPERS
-
-
-// register the 'easy' way - use this method if you have no beta URL and the plugin is on the miranda file listing
-// NOTE: the plugin 'short name' in pluginInfo must match the name of the plugin on the file listing, exactly (not including case)
-// AND the plugin version string on the file listing must be the string version of the version in pluginInfo (i.e. 0.0.0.1,
-// so no letters, brackets, etc.)
-//
-// wParam = (int)fileID - this is the file ID from the file listing (i.e. the number at the end of the download link)
-// lParam = (PLUGININFO*)&pluginInfo
-#define MS_UPDATE_REGISTERFL "Update/RegisterFL"
-
-// this event is fired when the startup process is complete, but NOT if a restart is imminent
-// it is designed for status managment plugins to use as a trigger for beggining their own startup process
-// wParam = lParam = 0 (unused)
-// (added in version 0.1.6.0)
-#define ME_UPDATE_STARTUPDONE "Update/StartupDone"
-
-// this service can be used to enable/disable Updater's global status control
-// it can be called from the StartupDone event handler
-// wParam = (BOOL)enable
-// lParam = 0
-// (added in version 0.1.6.0)
-#define MS_UPDATE_ENABLESTATUSCONTROL "Update/EnableStatusControl"
-
-// An description of usage of the above service and event:
-// Say you are a status control plugin that normally sets protocol or global statuses in your ModulesLoaded event handler.
-// In order to make yourself 'updater compatible', you would move the status control code from ModulesLoaded to another function,
-// say DoStartup. Then, in ModulesLoaded you would check for the existence of the MS_UPDATE_ENABLESTATUSCONTROL service.
-// If it does not exist, call DoStartup. If it does exist, hook the ME_UPDATE_STARTUPDONE event and call DoStartup from there. You may
-// also wish to call MS_UPDATE_ENABLESTATUSCONTROL with wParam == FALSE at this time, to disable Updater's own status control feature.
-
-#endif
-
-
-/////////////// Usage Example ///////////////
-
-#ifdef EXAMPLE_CODE
-
-// you need to #include "m_updater.h" and HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded) in your Load function...
-
-int OnModulesLoaded(WPARAM wParam, LPARAM lParam) {
-
- Update update = {0}; // for c you'd use memset or ZeroMemory...
- char szVersion[16];
-
- update.cbSize = sizeof(Update);
-
- update.szComponentName = pluginInfo.shortName;
- update.pbVersion = (BYTE *)CreateVersionString(&pluginInfo, szVersion);
- update.cpbVersion = strlen((char *)update.pbVersion);
-
- // these are the three lines that matter - the archive, the page containing the version string, and the text (or data)
- // before the version that we use to locate it on the page
- // (note that if the update URL and the version URL point to standard file listing entries, the backend xml
- // data will be used to check for updates rather than the actual web page - this is not true for beta urls)
- update.szUpdateURL = "http://scottellis.com.au:81/test/updater.zip";
- update.szVersionURL = "http://scottellis.com.au:81/test/updater_test.html";
- update.pbVersionPrefix = (BYTE *)"Updater version ";
-
- update.cpbVersionPrefix = strlen((char *)update.pbVersionPrefix);
-
- CallService(MS_UPDATE_REGISTER, 0, (WPARAM)&update);
-
- // Alternatively, to register a plugin with e.g. file ID 2254 on the file listing...
- // CallService(MS_UPDATE_REGISTERFL, (WPARAM)2254, (LPARAM)&pluginInfo);
-
- return 0;
-}
-
-#endif
diff --git a/plugins/!NotAdopted/HistoryStats/mirandasettings.cpp b/plugins/!NotAdopted/HistoryStats/mirandasettings.cpp
deleted file mode 100644
index b6747de8d2..0000000000
--- a/plugins/!NotAdopted/HistoryStats/mirandasettings.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-#include "_globals.h"
-#include "mirandasettings.h"
-
-MirandaSettings::fnGetSettingStr MirandaSettings::m_pGetSettingStr = NULL;
-
-MirandaSettings::MirandaSettings()
- : m_hContact(0)
-{
- // determine correct string read function
- if (!m_pGetSettingStr)
- {
- m_pGetSettingStr = mu::_link::serviceExists(MS_DB_CONTACT_GETSETTING_STR) ? mu::db_contact::getSettingStr : mu::db_contact::getSetting;
- }
-}
-
-bool MirandaSettings::readBool(const mu_ansi* szSetting, bool bDefault) const
-{
- return (readByte(szSetting, bDefault ? 1 : 0) != 0);
-}
-
-int MirandaSettings::readByte(const mu_ansi* szSetting, int bDefault) const
-{
- DBVARIANT dbv;
-
- return mu::db_contact::getSetting(m_hContact, m_strModule.c_str(), szSetting, &dbv) ? bDefault : dbv.bVal;
-}
-
-int MirandaSettings::readWord(const mu_ansi* szSetting, int wDefault) const
-{
- DBVARIANT dbv;
-
- return mu::db_contact::getSetting(m_hContact, m_strModule.c_str(), szSetting, &dbv) ? wDefault : dbv.wVal;
-}
-
-int MirandaSettings::readDWord(const mu_ansi* szSetting, int dwDefault) const
-{
- DBVARIANT dbv;
-
- return mu::db_contact::getSetting(m_hContact, m_strModule.c_str(), szSetting, &dbv) ? dwDefault : dbv.dVal;
-}
-
-ext::string MirandaSettings::readStr(const mu_ansi* szSetting, const mu_text* szDefault) const
-{
- DBVARIANT dbv;
-
- ZeroMemory(&dbv, sizeof(dbv));
-
- if (mu::db_contact::getSetting(m_hContact, m_strModule.c_str(), szSetting, &dbv))
- {
- return szDefault;
- }
- else
- {
- ext::string str = (dbv.type != DBVT_ASCIIZ) ? szDefault : utils::fromUTF8(dbv.pszVal);
-
- mu::db_contact::freeVariant(&dbv);
-
- return str;
- }
-}
-
-ext::string MirandaSettings::readStrDirect(const mu_ansi* szSetting, const mu_text* szDefault) const
-{
- DBVARIANT dbv;
-
- ZeroMemory(&dbv, sizeof(dbv));
-
- dbv.type = MU_DO_BOTH(DBVT_ASCIIZ, DBVT_WCHAR);
-
- if (m_pGetSettingStr(m_hContact, m_strModule.c_str(), szSetting, &dbv))
- {
- return szDefault;
- }
- else
- {
- ext::string str;
-
- switch (dbv.type)
- {
- case DBVT_ASCIIZ:
- str = utils::fromA(dbv.pszVal);
- break;
-
- case DBVT_WCHAR:
- str = utils::fromW(dbv.pwszVal);
- break;
-
- case DBVT_UTF8:
- str = utils::fromUTF8(dbv.pszVal);
- break;
-
- default:
- str = szDefault;
- break;
- }
-
- mu::db_contact::freeVariant(&dbv);
-
- return str;
- }
-}
-
-void MirandaSettings::readTree(const mu_ansi* szSetting, const mu_text* szDefault, SettingsTree& value) const
-{
- value.fromString(readStr(szSetting, szDefault));
-}
-
-void MirandaSettings::writeBool(const mu_ansi* szSetting, bool bValue) const
-{
- writeByte(szSetting, bValue ? 1 : 0);
-}
-
-void MirandaSettings::writeByte(const mu_ansi* szSetting, int bValue) const
-{
- DBCONTACTWRITESETTING cws;
-
- cws.szModule = m_strModule.c_str();
- cws.szSetting = szSetting;
- cws.value.type = DBVT_BYTE;
- cws.value.bVal = bValue;
-
- mu::db_contact::writeSetting(m_hContact, &cws);
-}
-
-void MirandaSettings::writeWord(const mu_ansi* szSetting, int wValue) const
-{
- DBCONTACTWRITESETTING cws;
-
- cws.szModule = m_strModule.c_str();
- cws.szSetting = szSetting;
- cws.value.type = DBVT_WORD;
- cws.value.wVal = wValue;
-
- mu::db_contact::writeSetting(m_hContact, &cws);
-}
-
-void MirandaSettings::writeDWord(const mu_ansi* szSetting, int dwValue) const
-{
- DBCONTACTWRITESETTING cws;
-
- cws.szModule = m_strModule.c_str();
- cws.szSetting = szSetting;
- cws.value.type = DBVT_DWORD;
- cws.value.dVal = dwValue;
-
- mu::db_contact::writeSetting(m_hContact, &cws);
-}
-
-void MirandaSettings::writeStr(const mu_ansi* szSetting, const mu_text* szValue) const
-{
- ext::a::string valueANSI = utils::toUTF8(szValue);
- DBCONTACTWRITESETTING cws;
-
- cws.szModule = m_strModule.c_str();
- cws.szSetting = szSetting;
- cws.value.type = DBVT_ASCIIZ;
- cws.value.pszVal = const_cast<mu_ansi*>(valueANSI.c_str());
-
- mu::db_contact::writeSetting(m_hContact, &cws);
-}
-
-void MirandaSettings::writeStrDirect(const mu_ansi* szSetting, const mu_text* szValue) const
-{
- DBCONTACTWRITESETTING cws;
-
- cws.szModule = m_strModule.c_str();
- cws.szSetting = szSetting;
- cws.value.type = MU_DO_BOTH(DBVT_ASCIIZ, DBVT_WCHAR);
- cws.value.ptszVal = const_cast<mu_text*>(szValue);
-
- mu::db_contact::writeSetting(m_hContact, &cws);
-}
-
-void MirandaSettings::writeTree(const mu_ansi* szSetting, const SettingsTree& value) const
-{
- writeStr(szSetting, value.toString().c_str());
-}
-
-bool MirandaSettings::settingExists(const mu_ansi* szSetting) const
-{
- DBVARIANT dbv;
-
- if (mu::db_contact::getSetting(m_hContact, m_strModule.c_str(), szSetting, &dbv))
- {
- return false;
- }
- else
- {
- mu::db_contact::freeVariant(&dbv);
-
- return true;
- }
-}
-
-bool MirandaSettings::delSetting(const mu_ansi* szSetting)
-{
- return (mu::db_contact::deleteSetting(m_hContact, m_strModule.c_str(), szSetting) == 0);
-}
-
-int MirandaSettings::enumSettingsProc(const mu_ansi* szSetting, LPARAM lParam)
-{
- SetInserter* pInserter = reinterpret_cast<SetInserter*>(lParam);
-
- *pInserter = szSetting;
-
- return 0;
-}
-
-void MirandaSettings::enumSettings(SetInserter& insertIterator)
-{
- mu::db_contact::enumSettings(m_hContact, m_strModule.c_str(), enumSettingsProc, reinterpret_cast<LPARAM>(&insertIterator));
-}
diff --git a/plugins/!NotAdopted/HistoryStats/mu_common.cpp b/plugins/!NotAdopted/HistoryStats/mu_common.cpp
deleted file mode 100644
index f2e4b9b774..0000000000
--- a/plugins/!NotAdopted/HistoryStats/mu_common.cpp
+++ /dev/null
@@ -1,800 +0,0 @@
-#include "_globals.h"
-#include "mu_common.h"
-
-#include <map>
-#include <set>
-
-namespace mu
-{
- /*
- * clist
- */
-
- namespace clist
- {
- HANDLE addMainMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, const mu_text* pszPopupName /* = NULL */, int popupPosition /* = 0 */, DWORD hotKey /* = 0 */)
- {
- // TODO: support for unicode-core with unicode-aware CList
- CLISTMENUITEM mi;
-
- ZeroMemory(&mi, sizeof(mi));
-
- mi.cbSize = sizeof(mi);
- mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
- mi.flags = flags;
- mi.position = position;
- mi.hIcon = hIcon;
- mi.pszService = const_cast<mu_ansi*>(pszService);
- mi.pszPopupName = MU_DO_BOTH(const_cast<mu_ansi*>(pszPopupName), wideToAnsiDup(pszPopupName));
- mi.popupPosition = popupPosition;
- mi.hotKey = hotKey;
-
- HANDLE res = reinterpret_cast<HANDLE>(_link::callService(MS_CLIST_ADDMAINMENUITEM, 0, reinterpret_cast<LPARAM>(&mi)));
-
- MU_DO_WIDE(freeAnsi(mi.pszName));
- MU_DO_WIDE(freeAnsi(mi.pszPopupName));
-
- return res;
- }
-
- HANDLE addContactMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, DWORD hotKey /* = 0 */, const mu_ansi* pszContactOwner /* = NULL */)
- {
- // TODO: support for unicode-core with unicode-aware CList
- CLISTMENUITEM mi;
-
- ZeroMemory(&mi, sizeof(mi));
-
- mi.cbSize = sizeof(mi);
- mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
- mi.flags = flags;
- mi.position = position;
- mi.hIcon = hIcon;
- mi.pszService = const_cast<mu_ansi*>(pszService);
- mi.hotKey = hotKey;
- mi.pszContactOwner = const_cast<mu_ansi*>(pszContactOwner);
-
- HANDLE res = reinterpret_cast<HANDLE>(_link::callService(MS_CLIST_ADDCONTACTMENUITEM, 0, reinterpret_cast<LPARAM>(&mi)));
-
- MU_DO_WIDE(freeAnsi(mi.pszName));
-
- return res;
- }
-
- int modifyMenuItem(HANDLE hMenuItem, DWORD toModify, const mu_text* pszName /* = NULL */, DWORD flags /* = 0 */, HICON hIcon /* = NULL */, DWORD hotKey /* = 0 */)
- {
- // TODO: support for unicode-core with unicode-aware CList
- CLISTMENUITEM mi;
-
- ZeroMemory(&mi, sizeof(mi));
-
- mi.cbSize = sizeof(mi);
- mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
- mi.flags = toModify | flags;
- mi.hIcon = hIcon;
- mi.hotKey = hotKey;
-
- int res = _link::callService(MS_CLIST_MODIFYMENUITEM, reinterpret_cast<WPARAM>(hMenuItem), reinterpret_cast<LPARAM>(&mi));
-
- MU_DO_WIDE(freeAnsi(mi.pszName));
-
- return res;
- }
-
- const mu_text* getContactDisplayName(HANDLE hContact)
- {
- return reinterpret_cast<const mu_text*>(_link::callService(MS_CLIST_GETCONTACTDISPLAYNAME, reinterpret_cast<WPARAM>(hContact), MU_DO_BOTH(0, GCDNF_UNICODE)));
- }
-
- const mu_text* getStatusModeDescription(int nStatusMode)
- {
- return reinterpret_cast<const mu_text*>(_link::callService(MS_CLIST_GETSTATUSMODEDESCRIPTION, static_cast<WPARAM>(nStatusMode), MU_DO_BOTH(0, GCMDF_UNICODE)));
- }
- }
-
- /*
- * db
- */
-
- namespace db
- {
- int getProfilePath(int cbName, mu_text* pszName)
- {
- // TODO: support for unicode core (if supported)
-#if defined(MU_WIDE)
- mu_ansi* pszNameAnsi = new mu_ansi[cbName];
-
- int ret = _link::callService(MS_DB_GETPROFILEPATH, cbName, reinterpret_cast<LPARAM>(pszNameAnsi));
-
- if (ret == 0)
- {
- ansiToWide(pszNameAnsi, pszName, cbName);
- }
-
- delete pszNameAnsi;
-
- return ret;
-#else // MU_WIDE
- return _link::callService(MS_DB_GETPROFILEPATH, cbName, reinterpret_cast<LPARAM>(pszName));
-#endif // MU_WIDE
- }
-
- int getProfileName(int cbName, mu_text* pszName)
- {
- // TODO: support for unicode core (if supported)
-#if defined(MU_WIDE)
- mu_ansi* pszNameAnsi = new mu_ansi[cbName];
-
- int ret = _link::callService(MS_DB_GETPROFILENAME, cbName, reinterpret_cast<LPARAM>(pszNameAnsi));
-
- if (ret == 0)
- {
- ansiToWide(pszNameAnsi, pszName, cbName);
- }
-
- delete pszNameAnsi;
-
- return ret;
-#else // MU_WIDE
- return _link::callService(MS_DB_GETPROFILENAME, cbName, reinterpret_cast<LPARAM>(pszName));
-#endif // MU_WIDE
- }
-
- void setSafetyMode(bool safetyMode)
- {
- mu::_link::callService(MS_DB_SETSAFETYMODE, BOOL_(safetyMode), 0);
- }
- }
-
- /*
- * db_contact
- */
-
- namespace db_contact
- {
- int getSetting(HANDLE hContact, const char* szModule, const char* szSetting, DBVARIANT* dbv)
- {
- DBCONTACTGETSETTING dbcgs;
-
- dbcgs.szModule = szModule;
- dbcgs.szSetting = szSetting;
- dbcgs.pValue = dbv;
-
- return _link::callService(MS_DB_CONTACT_GETSETTING, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(&dbcgs));
- }
-
- int getSettingStr(HANDLE hContact, const mu_ansi* szModule, const mu_ansi* szSetting, DBVARIANT* dbv)
- {
- DBCONTACTGETSETTING dbcgs;
-
- dbcgs.szModule = szModule;
- dbcgs.szSetting = szSetting;
- dbcgs.pValue = dbv;
-
- return _link::callService(MS_DB_CONTACT_GETSETTING_STR, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(&dbcgs));
- }
-
- int freeVariant(DBVARIANT* dbv)
- {
- return _link::callService(MS_DB_CONTACT_FREEVARIANT, 0, reinterpret_cast<WPARAM>(dbv));
- }
-
- int writeSetting(HANDLE hContact, DBCONTACTWRITESETTING* dbcws)
- {
- return _link::callService(MS_DB_CONTACT_WRITESETTING, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(dbcws));
- }
-
- int deleteSetting(HANDLE hContact, const char* szModule, const char* szSetting)
- {
- DBCONTACTGETSETTING dbcgs;
-
- dbcgs.szModule = szModule;
- dbcgs.szSetting = szSetting;
-
- return _link::callService(MS_DB_CONTACT_DELETESETTING, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(&dbcgs));
- }
-
- int enumSettings(HANDLE hContact, const char* szModule, DBSETTINGENUMPROC pEnumProc, LPARAM lProcParam)
- {
- DBCONTACTENUMSETTINGS dbces;
-
- dbces.pfnEnumProc = pEnumProc;
- dbces.lParam = lProcParam;
- dbces.szModule = szModule;
- dbces.ofsSettings = 0;
-
- return _link::callService(MS_DB_CONTACT_ENUMSETTINGS, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(&dbces));
- }
-
- int getCount()
- {
- return _link::callService(MS_DB_CONTACT_GETCOUNT, 0, 0);
- }
-
- HANDLE findFirst()
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_DB_CONTACT_FINDFIRST, 0, 0));
- }
-
- HANDLE findNext(HANDLE hContact)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_DB_CONTACT_FINDNEXT, reinterpret_cast<WPARAM>(hContact), 0));
- }
- }
-
- /*
- * db_event
- */
-
- namespace db_event
- {
- HANDLE add(HANDLE hContact, DBEVENTINFO* dbe)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_DB_EVENT_ADD, reinterpret_cast<WPARAM>(hContact), reinterpret_cast<LPARAM>(dbe)));
- }
-
- int getBlobSize(HANDLE hDbEvent)
- {
- return _link::callService(MS_DB_EVENT_GETBLOBSIZE, reinterpret_cast<WPARAM>(hDbEvent), 0);
- }
-
- int get(HANDLE hDbEvent, DBEVENTINFO* dbe)
- {
- return _link::callService(MS_DB_EVENT_GET, reinterpret_cast<WPARAM>(hDbEvent), reinterpret_cast<LPARAM>(dbe));
- }
-
- HANDLE findFirst(HANDLE hContact)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_DB_EVENT_FINDFIRST, reinterpret_cast<WPARAM>(hContact), 0));
- }
-
- HANDLE findNext(HANDLE hDbEvent)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_DB_EVENT_FINDNEXT, reinterpret_cast<WPARAM>(hDbEvent), 0));
- }
- }
-
- /*
- * db_time
- */
-
- namespace db_time
- {
- DWORD timestampToLocal(DWORD timestamp)
- {
- return static_cast<DWORD>(_link::callService(MS_DB_TIME_TIMESTAMPTOLOCAL, static_cast<WPARAM>(timestamp), 0));
- }
- }
-
- /*
- * icolib
- */
-
- namespace icolib
- {
- bool _available()
- {
- return
- true &&
- _link::serviceExists(MS_SKIN2_ADDICON) &&
- _link::serviceExists(MS_SKIN2_GETICON);
- }
-
- void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, const mu_ansi* szDefaultFile, int iDefaultIndex, int cx /* = 16 */, int cy /* = 16 */)
- {
- SKINICONDESC sid;
-
- sid.cbSize = sizeof(sid);
- sid.ptszSection = const_cast<mu_text*>(szSection);
- sid.ptszDescription = const_cast<mu_text*>(szDescription);
- sid.pszName = const_cast<mu_ansi*>(szIconName);
- sid.pszDefaultFile = const_cast<mu_ansi*>(szDefaultFile);
- sid.iDefaultIndex = iDefaultIndex;
- sid.hDefaultIcon = NULL;
- sid.cx = cx;
- sid.cy = cy;
- sid.flags = MU_DO_BOTH(0, SIDF_UNICODE);
-
- _link::callService(MS_SKIN2_ADDICON, 0, reinterpret_cast<LPARAM>(&sid));
- }
-
- void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, HICON hDefaultIcon, int cx /* = 16 */, int cy /* = 16 */)
- {
- SKINICONDESC sid;
-
- sid.cbSize = sizeof(sid);
- sid.ptszSection = const_cast<mu_text*>(szSection);
- sid.ptszDescription = const_cast<mu_text*>(szDescription);
- sid.pszName = const_cast<mu_ansi*>(szIconName);
- sid.pszDefaultFile = NULL;
- sid.iDefaultIndex = 0;
- sid.hDefaultIcon = hDefaultIcon;
- sid.cx = cx;
- sid.cy = cy;
- sid.flags = MU_DO_BOTH(0, SIDF_UNICODE);
-
- _link::callService(MS_SKIN2_ADDICON, 0, reinterpret_cast<LPARAM>(&sid));
- }
-
- HICON getIcon(const mu_ansi* szIconName)
- {
- return reinterpret_cast<HICON>(_link::callService(MS_SKIN2_GETICON, 0, reinterpret_cast<LPARAM>(szIconName)));
- }
- }
-
- /*
- * langpack
- */
-
- namespace langpack
- {
- const mu_text* translateString(const mu_text* szEnglish)
- {
- return reinterpret_cast<const mu_text*>(_link::callService(MS_LANGPACK_TRANSLATESTRING, MU_DO_BOTH(0, LANG_UNICODE), reinterpret_cast<LPARAM>(szEnglish)));
- }
-
- int translateDialog(HWND hwndDlg, DWORD flags /* = 0 */, const int* ignoreControls /* = NULL */)
- {
- LANGPACKTRANSLATEDIALOG lptd;
-
- lptd.cbSize = sizeof(lptd);
- lptd.flags = flags;
- lptd.hwndDlg = hwndDlg;
- lptd.ignoreControls = ignoreControls;
-
- return _link::callService(MS_LANGPACK_TRANSLATEDIALOG, 0, reinterpret_cast<LPARAM>(&lptd));
- }
-
- UINT getCodePage()
- {
- static UINT CodePage = -1;
-
- if (CodePage == -1)
- {
- CodePage = _link::serviceExists(MS_LANGPACK_GETCODEPAGE) ? _link::callService(MS_LANGPACK_GETCODEPAGE, 0, 0) : CP_ACP;
- }
-
- return CodePage;
- }
- }
-
- /*
- * metacontacts [external]
- */
-
- namespace metacontacts
- {
- bool _available()
- {
- return
- true &&
- _link::serviceExists(MS_MC_GETMETACONTACT) &&
- _link::serviceExists(MS_MC_GETNUMCONTACTS) &&
- _link::serviceExists(MS_MC_GETSUBCONTACT) &&
- _link::serviceExists(MS_MC_GETPROTOCOLNAME);
- }
-
- HANDLE getMetaContact(HANDLE hSubContact)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_MC_GETMETACONTACT, reinterpret_cast<WPARAM>(hSubContact), 0));
- }
-
- int getNumContacts(HANDLE hMetaContact)
- {
- return _link::callService(MS_MC_GETNUMCONTACTS, reinterpret_cast<WPARAM>(hMetaContact), 0);
- }
-
- HANDLE getSubContact(HANDLE hMetaContact, int iContactNumber)
- {
- return reinterpret_cast<HANDLE>(_link::callService(MS_MC_GETSUBCONTACT, reinterpret_cast<WPARAM>(hMetaContact), iContactNumber));
- }
-
- const mu_ansi* getProtocolName()
- {
- return reinterpret_cast<const mu_ansi*>(_link::callService(MS_MC_GETPROTOCOLNAME, 0, 0));
- }
- }
-
- /*
- * opt
- */
-
- namespace opt
- {
- void addPage(WPARAM addInfo, const mu_text* pszGroup, const mu_text* pszTitle, const mu_text* pszTab, DLGPROC pfnDlgProc, const mu_ansi* pszTemplate, HINSTANCE hInstance, DWORD flags /* = ODPF_BOLDGROUPS */)
- {
- OPTIONSDIALOGPAGE odp;
-
- ZeroMemory(&odp, sizeof(odp));
-
- odp.cbSize = sizeof(odp);
- odp.ptszTitle = const_cast<mu_text*>(pszTitle);
- odp.pfnDlgProc = pfnDlgProc;
- odp.pszTemplate = const_cast<mu_ansi*>(pszTemplate);
- odp.hInstance = hInstance;
- odp.ptszGroup = const_cast<mu_text*>(pszGroup);
- odp.flags = flags | MU_DO_BOTH(0, ODPF_UNICODE);
- odp.ptszTab = const_cast<mu_text*>(pszTab);
-
- _link::callService(MS_OPT_ADDPAGE, addInfo, reinterpret_cast<LPARAM>(&odp));
- }
- }
-
- /*
- * png
- */
-
- namespace png
- {
- bool _available()
- {
- return
- true &&
- _link::serviceExists(MS_DIB2PNG);
- }
-
- bool dibToPng(const BITMAPINFOHEADER* pBMIH, const BYTE* pDIData, BYTE* pImageData, long* pImageLen)
- {
- DIB2PNG info;
-
- info.pbmi = const_cast<BITMAPINFO*>(reinterpret_cast<const BITMAPINFO*>(pBMIH));
- info.pDiData = const_cast<BYTE*>(pDIData);
- info.pResult = pImageData;
- info.pResultLen = pImageLen;
-
- return bool_(_link::callService(MS_DIB2PNG, 0, reinterpret_cast<LPARAM>(&info)));
- }
- }
-
- /*
- * proto
- */
-
- namespace proto
- {
- int enumProtocols(int* numProtocols, PROTOCOLDESCRIPTOR*** ppProtoDescriptors)
- {
- return _link::callService(MS_PROTO_ENUMPROTOCOLS, reinterpret_cast<WPARAM>(numProtocols), reinterpret_cast<LPARAM>(ppProtoDescriptors));
- }
-
- const mu_ansi* getContactBaseProto(HANDLE hContact)
- {
- return reinterpret_cast<const mu_ansi*>(_link::callService(MS_PROTO_GETCONTACTBASEPROTO, reinterpret_cast<WPARAM>(hContact), 0));
- }
- }
-
- /*
- * protosvc
- */
-
- namespace protosvc
- {
- DWORD getCaps(const mu_ansi* szProto, int flagNum)
- {
- return static_cast<DWORD>(_link::callProtoService(szProto, PS_GETCAPS, static_cast<WPARAM>(flagNum), 0));
- }
-
- int getName(const mu_ansi* szProto, int cchName, mu_text* szName)
- {
- // TODO: support for unicode core (if supported)
-#if defined(MU_WIDE)
- mu_ansi* szNameANSI = reinterpret_cast<mu_ansi*>(malloc(sizeof(mu_ansi) * cchName));
-
- int retVal = _link::callProtoService(szProto, PS_GETNAME, static_cast<WPARAM>(cchName), reinterpret_cast<LPARAM>(szNameANSI));
-
- if (retVal == 0)
- {
- ansiToWide(szNameANSI, szName, cchName, langpack::getCodePage());
- }
-
- free(szNameANSI);
-
- return retVal;
-#else // MU_WIDE
- return _link::callProtoService(szProto, PS_GETNAME, static_cast<WPARAM>(cchName), reinterpret_cast<LPARAM>(szName));
-#endif // MU_WIDE
- }
-
- HICON loadIcon(const mu_ansi* szProto, int whichIcon)
- {
- return reinterpret_cast<HICON>(_link::callProtoService(szProto, PS_LOADICON, static_cast<WPARAM>(whichIcon), 0));
- }
- }
-
- /*
- * sha1
- */
-
- namespace sha1
- {
- bool _available()
- {
- return
- true &&
- _link::serviceExists(MS_SYSTEM_GET_SHA1I);
- }
-
- SHA1_INTERFACE getInterface()
- {
- SHA1_INTERFACE sha1i;
-
- sha1i.cbSize = sizeof(SHA1_INTERFACE);
- _link::callService(MS_SYSTEM_GET_SHA1I, 0, reinterpret_cast<LPARAM>(&sha1i));
-
- return sha1i;
- }
- }
-
- /*
- * skin
- */
-
- namespace skin
- {
- HICON loadIcon(int id)
- {
- return reinterpret_cast<HICON>(_link::callService(MS_SKIN_LOADICON, id, 0));
- }
- }
-
- /*
- * system
- */
-
- namespace system
- {
- DWORD getVersion()
- {
- return static_cast<DWORD>(_link::callService(MS_SYSTEM_GETVERSION, 0, 0));
- }
-
- int getVersionText(int cchVersion, mu_ansi* szVersion)
- {
- return _link::callService(MS_SYSTEM_GETVERSIONTEXT, cchVersion, reinterpret_cast<LPARAM>(szVersion));
- }
-
- void threadPush()
- {
- _link::callService(MS_SYSTEM_THREAD_PUSH, 0, 0);
- }
-
- void threadPop()
- {
- _link::callService(MS_SYSTEM_THREAD_POP, 0, 0);
- }
-
- int terminated()
- {
- return _link::callService(MS_SYSTEM_TERMINATED, 0, 0);
- }
- }
-
- /*
- * updater [external]
- */
-
- namespace updater
- {
- bool _available()
- {
- return
- true &&
- _link::serviceExists(MS_UPDATE_REGISTERFL);
- }
-
- void registerFL(int fileID, const PLUGININFO* pluginInfo)
- {
- _link::callService(MS_UPDATE_REGISTERFL, fileID, reinterpret_cast<LPARAM>(pluginInfo));
- }
- }
-
- /*
- * utils
- */
-
- namespace utils
- {
- int pathToRelative(const mu_text* pszPath, mu_text* pszNewPath)
- {
- return _link::callService(MU_DO_BOTH(MS_UTILS_PATHTORELATIVE, MS_UTILS_PATHTORELATIVEW), reinterpret_cast<WPARAM>(pszPath), reinterpret_cast<LPARAM>(pszNewPath));
- }
-
- int pathToAbsolute(const mu_text* pszPath, mu_text* pszNewPath)
- {
- return _link::callService(MU_DO_BOTH(MS_UTILS_PATHTOABSOLUTE, MS_UTILS_PATHTOABSOLUTEW), reinterpret_cast<WPARAM>(pszPath), reinterpret_cast<LPARAM>(pszNewPath));
- }
- }
-
- /*
- * _link
- */
-
- namespace _link
- {
- PLUGINLINK* g_pLink = NULL;
-
- int callProtoService(const char* szModule, const char* szService, WPARAM wParam, LPARAM lParam)
- {
- mu_ansi str[MAXMODULELABELLENGTH];
-
- strcpy(str, szModule);
- strcat(str, szService);
-
- return mu::_link::callService(str, wParam, lParam);
- }
- }
-
- /*
- * memory handling
- */
-
- namespace _mem_internal
- {
- static MM_INTERFACE g_mmInterface = {
- sizeof(MM_INTERFACE),
- NULL,
- NULL,
- NULL
- };
-
- static void init()
- {
- _link::callService(MS_SYSTEM_GET_MMI, 0, reinterpret_cast<LPARAM>(&g_mmInterface));
- }
- }
-
- void* mirAlloc(size_t size)
- {
- return _mem_internal::g_mmInterface.mmi_malloc(size);
- }
-
- void* mirRealloc(void* memblock, size_t size)
- {
- return _mem_internal::g_mmInterface.mmi_realloc(memblock, size);
- }
-
- void mirFree(void* memblock)
- {
- _mem_internal::g_mmInterface.mmi_free(memblock);
- }
-
- /*
- * core interface functions
- */
-
- bool load(PLUGINLINK* pLink)
- {
- if (!pLink)
- {
- return false;
- }
-
- _link::g_pLink = pLink;
-
- // check for version
- if (!isMirandaVersionOk(system::getVersion()))
- {
- return false;
- }
-
- // additionaly check for unicode, if requested
-#if defined(MU_WIDE)
- // MEMO: version dependency check
- if (!isMirandaUnicode())
- {
- return false;
- }
-#endif // MU_WIDE
-
- // init
- _mem_internal::init();
-
- return true;
- }
-
- void unload()
- {
- }
-
- DWORD getMinimalMirandaVersion()
- {
- // MEMO: version dependency check
- return PLUGIN_MAKE_VERSION(0, 6, 7, 0);
- }
-
- bool isMirandaVersionOk(DWORD version)
- {
- return (version >= getMinimalMirandaVersion());
- }
-
- bool isMirandaUnicode()
- {
- if (system::getVersion() < PLUGIN_MAKE_VERSION(0, 4, 3, 33))
- {
- return false;
- }
-
- mu_ansi szVersion[256] = { 0 };
-
- if (system::getVersionText(256, szVersion) != 0)
- {
- return false;
- }
-
- if (!strstr(szVersion, muA("Unicode")))
- {
- return false;
- }
-
- return true;
- }
-
- /*
- * string handling
- */
-
- mu_ansi* wideToAnsiDup(const mu_wide* pszWide, UINT uCP /* = CP_ACP */)
- {
- if (!pszWide)
- {
- return NULL;
- }
-
- int len = WideCharToMultiByte(uCP, 0, pszWide, -1, NULL, 0, NULL, NULL);
- mu_ansi* result = reinterpret_cast<mu_ansi*>(malloc(sizeof(mu_ansi) * len));
-
- if (!result)
- {
- return NULL;
- }
-
- WideCharToMultiByte(uCP, 0, pszWide, -1, result, len, NULL, NULL);
- result[len - 1] = 0;
-
- return result;
- }
-
- mu_wide* ansiToWideDup(const mu_ansi* pszAnsi, UINT uCP /* = CP_ACP */)
- {
- if (!pszAnsi)
- {
- return NULL;
- }
-
- int len = MultiByteToWideChar(uCP, 0, pszAnsi, -1, NULL, 0);
- mu_wide* result = reinterpret_cast<mu_wide*>(malloc(sizeof(mu_wide) * len));
-
- if (!result)
- {
- return NULL;
- }
-
- MultiByteToWideChar(uCP, 0, pszAnsi, -1, result, len);
- result[len - 1] = 0;
-
- return result;
- }
-
- mu_ansi* wideToAnsi(const mu_wide* pszWide, mu_ansi* pszRes, int maxLen, UINT uCP /* = CP_ACP */)
- {
- if (!pszWide)
- {
- return NULL;
- }
-
- WideCharToMultiByte(uCP, 0, pszWide, -1, pszRes, maxLen, NULL, NULL);
-
- return pszRes;
- }
-
- mu_wide* ansiToWide(const mu_ansi* pszAnsi, mu_wide* pszRes, int maxLen, UINT uCP /* = CP_ACP */)
- {
- if (!pszAnsi)
- {
- return NULL;
- }
-
- MultiByteToWideChar(uCP, 0, pszAnsi, -1, pszRes, maxLen);
-
- return pszRes;
- }
-}
diff --git a/plugins/!NotAdopted/HistoryStats/mu_common.h b/plugins/!NotAdopted/HistoryStats/mu_common.h
deleted file mode 100644
index c960803b04..0000000000
--- a/plugins/!NotAdopted/HistoryStats/mu_common.h
+++ /dev/null
@@ -1,471 +0,0 @@
-#if !defined(HISTORYSTATS_GUARD_MU_COMMON_H)
-#define HISTORYSTATS_GUARD_MU_COMMON_H
-
-/*
- * mu = miranda unified services
- */
-
-#define _WIN32_WINDOWS 0x0500 // for WM_MOUSEWHEEL
-#define _WIN32_WINNT 0x0501 // for WM_THEMECHANGED
-
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-
-/*
- * include miranda headers
- */
-
-#define MIRANDA_VER 0x0600
-
-#include <miranda/newpluginapi.h>
-
-#include <miranda/m_awaymsg.h> // not used
-#include <miranda/m_button.h> // not used
-#include <miranda/m_chat.h> // not used
-#include <miranda/m_clc.h>
-#include <miranda/m_clist.h>
-#include <miranda/m_clistint.h> // not used
-#include <miranda/m_clui.h> // not used
-#include <miranda/m_contactdir.h> // not used
-#include <miranda/m_contacts.h>
-#include <miranda/m_database.h>
-#include <miranda/m_email.h> // not used
-#include <miranda/m_file.h> // not used
-#include <miranda/m_findadd.h> // not used
-#include <miranda/m_fontservice.h> // not used
-#include <miranda/m_fuse.h> // not used
-#include <miranda/m_genmenu.h> // not used
-#include <miranda/m_history.h> // not used
-#include <miranda/m_icolib.h>
-#include <miranda/m_idle.h> // not used
-#include <miranda/m_ignore.h> // not used
-#include <miranda/m_langpack.h>
-#include <miranda/m_message.h> // not used
-#include <miranda/m_netlib.h> // not used
-#include <miranda/m_options.h>
-#include <miranda/m_plugins.h> // not used
-#include <miranda/m_png.h>
-#include <miranda/m_popup.h> // not used
-#include <miranda/m_protocols.h>
-#include <miranda/m_protomod.h> // not used
-#include <miranda/m_protosvc.h>
-#include <miranda/m_skin.h>
-#include <miranda/m_system.h>
-#include <miranda/m_system_cpp.h> // not used
-#include <miranda/m_url.h> // not used
-#include <miranda/m_userinfo.h> // not used
-#include <miranda/m_utils.h>
-
-#include <miranda/m_addcontact.h> // not used, depends on m_protosvc.h
-#include <miranda/m_icq.h> // depends on m_protosvc.h
-
-#include "include/m_updater.h"
-#include "include/m_metacontacts.h"
-
-#include "include/m_historystats.h" // our own header
-
-/*
- * undefine macros that pollute our namespace
- */
-
-// from above
-#undef MIRANDA_VER
-
-// from newpluginapi.h
-#undef CreateHookableEvent
-#undef DestroyHookableEvent
-#undef NotifyEventHooks
-#undef HookEventMessage
-#undef HookEvent
-#undef UnhookEvent
-#undef CreateServiceFunction
-#undef CreateTransientServiceFunction
-#undef DestroyServiceFunction
-#undef CallService
-#undef ServiceExists
-#undef CallServiceSync
-#undef CallFunctionAsync
-#undef SetHookDefaultForHookableEvent
-#undef CreateServiceFunctionParam
-#undef NotifyEventHooksDirect
-
-// from m_database.h
-#undef db_byte_get
-#undef db_word_get
-#undef db_dword_get
-#undef db_get
-#undef db_byte_set
-#undef db_word_set
-#undef db_dword_set
-#undef db_string_set
-#undef db_unset
-#undef DBGetContactSettingByte
-#undef DBGetContactSettingWord
-#undef DBGetContactSettingDword
-#undef DBGetContactSetting
-#undef DBGetContactSettingString
-#undef DBGetContactSettingWString
-#undef DBGetContactSettingUTF8String
-#undef DBGetContactSettingTString
-#undef db_msg_dbg
-#undef DBGetContactSettingStringUtf
-#undef DBWriteContactSettingStringUtf
-#undef DBGetContactSettingW
-
-// from m_langpack.h
-#undef Translate
-#undef TranslateW
-#undef TranslateT
-#undef TranslateTS
-
-// from m_popup.h
-#undef PUAddPopUpT
-#undef PUChangeTextT
-#undef PUChangeT
-#undef ShowClassPopupT
-
-// from m_system.h
-#undef mir_alloc
-#undef mir_free
-#undef mir_realloc
-#undef mir_calloc
-#undef mir_strdup
-#undef mir_wstrdup
-#undef mir_snprintf
-#undef mir_sntprintf
-#undef mir_vsnprintf
-#undef mir_vsntprintf
-#undef mir_a2u_cp
-#undef mir_a2u
-#undef mir_u2a_cp
-#undef mir_u2a
-#undef mir_tstrdup
-#undef miranda_sys_free
-#undef memoryManagerInterface
-#undef mir_utf8decode
-#undef mir_utf8decodecp
-#undef mir_utf8decodeW
-#undef mir_utf8encode
-#undef mir_utf8encodecp
-#undef mir_utf8encodeW
-#undef mir_utf8encodeT
-
-// from m_utils.h
-#undef mir_md5_init
-#undef mir_md5_append
-#undef mir_md5_finish
-#undef mir_md5_hash
-#undef mir_sha1_init
-#undef mir_sha1_append
-#undef mir_sha1_finish
-#undef mir_sha1_hash
-#undef TCHAR_STR_PARAM
-#undef mir_t2a
-#undef mir_a2t
-#undef mir_t2u
-#undef mir_u2t
-#undef mir_t2a_cp
-#undef mir_a2t_cp
-#undef mir_t2u_cp
-#undef mir_u2t_cp
-
-/*
- * basic defines
- */
-
-#if defined(_UNICODE)
- #undef MU_ANSI
- #define MU_WIDE
-#else
- #define MU_ANSI
- #undef MU_WIDE
-#endif
-
-/*
- * helper macros to avoid many "#if defined(MU_WIDE) ... #else ... #endif" constructs
- */
-
-#if defined(MU_WIDE)
- #define MU_DO_BOTH(ansi, wide) wide
- #define MU_DO_WIDE(wide) wide
- #define MU_DO_ANSI(ansi) (void) 0
-#else
- #define MU_DO_BOTH(ansi, wide) ansi
- #define MU_DO_WIDE(wide) (void) 0
- #define MU_DO_ANSI(ansi) ansi
-#endif
-
-/*
- * common types mu_wide/mu_ansi/mu_text
- */
-
-typedef wchar_t mu_wide;
-typedef char mu_ansi;
-typedef MU_DO_BOTH(char, wchar_t) mu_text;
-
-/*
- * common macros for wrapping text
- */
-
-#define muC(x) x
-#define muW(x) L##x
-#define muA(x) x
-#define muT(x) MU_DO_BOTH(muA(x), muW(x))
-
-/*
- * helper functions
- */
-
-namespace mu
-{
- /*
- * clist
- */
-
- namespace clist
- {
- HANDLE addMainMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, const mu_text* pszPopupName = NULL, int popupPosition = 0, DWORD hotKey = 0);
- HANDLE addContactMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, DWORD hotKey = 0, const mu_ansi* pszContactOwner = NULL);
- int modifyMenuItem(HANDLE hMenuItem, DWORD toModify, const mu_text* pszName = NULL, DWORD flags = 0, HICON hIcon = NULL, DWORD hotKey = 0);
- const mu_text* getContactDisplayName(HANDLE hContact);
- const mu_text* getStatusModeDescription(int nStatusMode);
- }
-
- /*
- * db
- */
-
- namespace db
- {
- int getProfilePath(int cbName, mu_text* pszName);
- int getProfileName(int cbName, mu_text* pszName);
- void setSafetyMode(bool safetyMode);
- }
-
- /*
- * db_contact
- */
-
- namespace db_contact
- {
- int getSetting(HANDLE hContact, const mu_ansi* szModule, const mu_ansi* szSetting, DBVARIANT* dbv);
- int getSettingStr(HANDLE hContact, const mu_ansi* szModule, const mu_ansi* szSetting, DBVARIANT* dbv);
- int freeVariant(DBVARIANT* dbv);
- int writeSetting(HANDLE hContact, DBCONTACTWRITESETTING* dbcws);
- int deleteSetting(HANDLE hContact, const mu_ansi* szModule, const mu_ansi* szSetting);
- int enumSettings(HANDLE hContact, const mu_ansi* szModule, DBSETTINGENUMPROC pEnumProc, LPARAM lProcParam);
- int getCount();
- HANDLE findFirst();
- HANDLE findNext(HANDLE hContact);
- }
-
- /*
- * db_event
- */
-
- namespace db_event
- {
- HANDLE add(HANDLE hContact, DBEVENTINFO* dbe);
- int getBlobSize(HANDLE hDbEvent);
- int get(HANDLE hDbEvent, DBEVENTINFO* dbe);
- HANDLE findFirst(HANDLE hContact);
- HANDLE findNext(HANDLE hDbEvent);
- }
-
- /*
- * db_time
- */
-
- namespace db_time
- {
- DWORD timestampToLocal(DWORD timestamp);
- }
-
- /*
- * icolib
- */
-
- namespace icolib
- {
- bool _available();
- void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, const mu_ansi* szDefaultFile, int iDefaultIndex, int cx = 16, int cy = 16);
- void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, HICON hDefaultIcon, int cx = 16, int cy = 16);
- HICON getIcon(const mu_ansi* szIconName);
- }
-
- /*
- * langpack
- */
-
- namespace langpack
- {
- int translateDialog(HWND hwndDlg, DWORD flags = 0, const int* ignoreControls = NULL);
- const mu_text* translateString(const mu_text* szEnglish);
- UINT getCodePage();
- }
-
- /*
- * metacontacts [external]
- */
-
- namespace metacontacts
- {
- bool _available();
- HANDLE getMetaContact(HANDLE hSubContact);
- int getNumContacts(HANDLE hMetaContact);
- HANDLE getSubContact(HANDLE hMetaContact, int iContactNumber);
- const mu_ansi* getProtocolName();
- }
-
- /*
- * opt
- */
-
- namespace opt
- {
- void addPage(WPARAM addInfo, const mu_text* pszGroup, const mu_text* pszTitle, const mu_text* pszTab, DLGPROC pfnDlgProc, const mu_ansi* pszTemplate, HINSTANCE hInstance, DWORD flags = ODPF_BOLDGROUPS);
- }
-
- /*
- * png
- */
-
- namespace png
- {
- bool _available();
- bool dibToPng(const BITMAPINFOHEADER* pBMIH, const BYTE* pDIData, BYTE* pImageData, long* pImageLen);
- }
-
- /*
- * proto
- */
-
- namespace proto
- {
- int enumProtocols(int* numProtocols, PROTOCOLDESCRIPTOR*** ppProtoDescriptors);
- const mu_ansi* getContactBaseProto(HANDLE hContact);
- }
-
- /*
- * protosvc
- */
-
- namespace protosvc
- {
- DWORD getCaps(const mu_ansi* szProto, int flagNum);
- int getName(const mu_ansi* szProto, int cchName, mu_text* szName);
- HICON loadIcon(const mu_ansi* szProto, int whichIcon);
- }
-
- /*
- * sha1
- */
-
- namespace sha1
- {
- bool _available();
- SHA1_INTERFACE getInterface();
- }
-
- /*
- * skin
- */
-
- namespace skin
- {
- HICON loadIcon(int id);
- }
-
- /*
- * system
- */
-
- namespace system
- {
- DWORD getVersion();
- int getVersionText(int cchVersion, mu_ansi* szVersion);
- void threadPush();
- void threadPop();
- int terminated();
- }
-
- /*
- * updater [external]
- */
-
- namespace updater
- {
- bool _available();
- void registerFL(int fileID, const PLUGININFO* pluginInfo);
- }
-
- /*
- * utils
- */
-
- namespace utils
- {
- int pathToRelative(const mu_text* pszPath, mu_text* pszNewPath);
- int pathToAbsolute(const mu_text* pszPath, mu_text* pszNewPath);
- }
-
- /*
- * _link
- */
-
- namespace _link
- {
- extern PLUGINLINK* g_pLink;
-
- inline HANDLE createHookableEvent(const char* szEvent) { return g_pLink->CreateHookableEvent(szEvent); }
- inline int destroyHookableEvent(HANDLE hEvent) { return g_pLink->DestroyHookableEvent(hEvent); }
- inline int notifyEventHooks(HANDLE hEvent, WPARAM wParam, LPARAM lParam) { return g_pLink->NotifyEventHooks(hEvent, wParam, lParam); }
- inline HANDLE hookEvent(const char* szEvent, MIRANDAHOOK pHookFunc) { return g_pLink->HookEvent(szEvent, pHookFunc); }
- inline HANDLE hookEventMessage(const char* szEvent, HWND hWnd, UINT uData) { return g_pLink->HookEventMessage(szEvent, hWnd, uData); }
- inline int unhookEvent(HANDLE hEvent) { return (hEvent ? g_pLink->UnhookEvent(hEvent) : 0); }
- inline HANDLE createServiceFunction(const char* szService, MIRANDASERVICE pServiceFunc) { return g_pLink->CreateServiceFunction(szService, pServiceFunc); }
- inline HANDLE createTransientServiceFunction(const char* szService, MIRANDASERVICE pServiceFunc) { return g_pLink->CreateTransientServiceFunction(szService, pServiceFunc); }
- inline int destroyServiceFunction(HANDLE hService) { return g_pLink->DestroyServiceFunction(hService); }
- inline int callService(const char* szService, WPARAM wParam, LPARAM lParam) { return g_pLink->CallService(szService, wParam, lParam); }
- inline int serviceExists(const char* szService) { return g_pLink->ServiceExists(szService); }
- inline int callServiceSync(const char* szService, WPARAM wParam, LPARAM lParam) { return g_pLink->CallServiceSync(szService, wParam, lParam); }
- inline int callFunctionAsync(void (__stdcall* pFunc)(void*), void* pData) { return g_pLink->CallFunctionAsync(pFunc, pData); }
- inline int setHookDefaultForHookableEvent(HANDLE hEvent, MIRANDAHOOK pHookFunc) { return g_pLink->SetHookDefaultForHookableEvent(hEvent, pHookFunc); }
- inline HANDLE createServiceFunctionParam(const char* szService, MIRANDASERVICEPARAM pServiceFunc, LPARAM lParam) { return g_pLink->CreateServiceFunctionParam(szService, pServiceFunc, lParam); }
- inline int notifyEventHooksDirect(HANDLE hEvent, WPARAM wParam, LPARAM lParam) { return g_pLink->NotifyEventHooksDirect(hEvent, wParam, lParam); }
-
- int callProtoService(const char* szModule, const char* szService, WPARAM wParam, LPARAM lParam);
- }
-
- /*
- * memory handling
- */
-
- void* mirAlloc(size_t size);
- void* mirRealloc(void* memblock, size_t size);
- void mirFree(void* memblock);
-
- /*
- * core interface functions
- */
-
- bool load(PLUGINLINK* pLink);
- void unload();
- DWORD getMinimalMirandaVersion();
- bool isMirandaVersionOk(DWORD version);
- bool isMirandaUnicode();
-
- /*
- * string handling
- */
-
- mu_ansi* wideToAnsiDup(const mu_wide* pszWide, UINT uCP = CP_ACP);
- mu_wide* ansiToWideDup(const mu_ansi* pszAnsi, UINT uCP = CP_ACP);
- mu_ansi* wideToAnsi(const mu_wide* pszWide, mu_ansi* pszRes, int maxLen, UINT uCP = CP_ACP);
- mu_wide* ansiToWide(const mu_ansi* pszAnsi, mu_wide* pszRes, int maxLen, UINT uCP = CP_ACP);
- inline void freeWide(mu_wide* pszWide) { free(pszWide); }
- inline void freeAnsi(mu_ansi* pszAnsi) { free(pszAnsi); }
-}
-
-#endif // HISTORYSTATS_GUARD_MU_COMMON_H
diff --git a/plugins/!NotAdopted/HistoryStats/include/m_historystats.h b/plugins/ExternalAPI/m_historystats.h
index d36411d7ed..d36411d7ed 100644
--- a/plugins/!NotAdopted/HistoryStats/include/m_historystats.h
+++ b/plugins/ExternalAPI/m_historystats.h
diff --git a/plugins/Folders/folders_10.vcxproj b/plugins/Folders/folders_10.vcxproj
index 86717f01bc..0ee57e7df2 100644
--- a/plugins/Folders/folders_10.vcxproj
+++ b/plugins/Folders/folders_10.vcxproj
@@ -87,7 +87,6 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<BaseAddress>0x2F000000</BaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
</Link>
@@ -133,6 +132,7 @@
<ExceptionHandling>false</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
+ <StringPooling>true</StringPooling>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -140,7 +140,6 @@
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<BaseAddress>0x2F000000</BaseAddress>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
<AdditionalOptions>/PDBALTPATH:%_PDB%</AdditionalOptions>
@@ -161,6 +160,7 @@
<ExceptionHandling>false</ExceptionHandling>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>commonheaders.h</PrecompiledHeaderFile>
+ <StringPooling>true</StringPooling>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
diff --git a/plugins/!NotAdopted/HistoryStats/docs/historystats_changelog.txt b/plugins/HistoryStats/docs/historystats_changelog.txt
index 9f30fcb376..9f30fcb376 100644
--- a/plugins/!NotAdopted/HistoryStats/docs/historystats_changelog.txt
+++ b/plugins/HistoryStats/docs/historystats_changelog.txt
diff --git a/plugins/!NotAdopted/HistoryStats/docs/historystats_readme.txt b/plugins/HistoryStats/docs/historystats_readme.txt
index 26af0b71b2..26af0b71b2 100644
--- a/plugins/!NotAdopted/HistoryStats/docs/historystats_readme.txt
+++ b/plugins/HistoryStats/docs/historystats_readme.txt
diff --git a/plugins/!NotAdopted/HistoryStats/historystats.vcproj b/plugins/HistoryStats/historystats.vcproj
index e313ddb60f..d54f4dcaeb 100644
--- a/plugins/!NotAdopted/HistoryStats/historystats.vcproj
+++ b/plugins/HistoryStats/historystats.vcproj
@@ -307,10 +307,10 @@
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
- RelativePath="_consts.cpp">
+ RelativePath="src\consts.cpp">
</File>
<File
- RelativePath=".\_globals.cpp">
+ RelativePath="src\_globals.cpp">
<FileConfiguration
Name="Unicode Release|Win32">
<Tool
@@ -337,258 +337,258 @@
</FileConfiguration>
</File>
<File
- RelativePath=".\bandctrl.cpp">
+ RelativePath="src\bandctrl.cpp">
</File>
<File
- RelativePath=".\bandctrlimpl.cpp">
+ RelativePath="src\bandctrlimpl.cpp">
</File>
<File
- RelativePath="canvas.cpp">
+ RelativePath="src\canvas.cpp">
</File>
<File
- RelativePath="column.cpp">
+ RelativePath="src\column.cpp">
</File>
<File
- RelativePath="contact.cpp">
+ RelativePath="src\contact.cpp">
</File>
<File
- RelativePath=".\dlgconfigure.cpp">
+ RelativePath="src\dlgconfigure.cpp">
</File>
<File
- RelativePath=".\dlgfilterwords.cpp">
+ RelativePath="src\dlgfilterwords.cpp">
</File>
<File
- RelativePath=".\dlgoption.cpp">
+ RelativePath="src\dlgoption.cpp">
</File>
<File
- RelativePath=".\dlgoption_subbase.cpp">
+ RelativePath="src\dlgoption_subbase.cpp">
</File>
<File
- RelativePath=".\dlgoption_subcolumns.cpp">
+ RelativePath="src\dlgoption_subcolumns.cpp">
</File>
<File
- RelativePath=".\dlgoption_subexclude.cpp">
+ RelativePath="src\dlgoption_subexclude.cpp">
</File>
<File
- RelativePath=".\dlgoption_subglobal.cpp">
+ RelativePath="src\dlgoption_subglobal.cpp">
</File>
<File
- RelativePath=".\dlgoption_subinput.cpp">
+ RelativePath="src\dlgoption_subinput.cpp">
</File>
<File
- RelativePath=".\dlgoption_suboutput.cpp">
+ RelativePath="src\dlgoption_suboutput.cpp">
</File>
<File
- RelativePath=".\iconlib.cpp">
+ RelativePath="src\iconlib.cpp">
</File>
<File
- RelativePath="main.cpp">
+ RelativePath="src\main.cpp">
</File>
<File
- RelativePath="message.cpp">
+ RelativePath="src\message.cpp">
</File>
<File
- RelativePath=".\mirandacontact.cpp">
+ RelativePath="src\mirandacontact.cpp">
</File>
<File
- RelativePath=".\mirandahistory.cpp">
+ RelativePath="src\mirandahistory.cpp">
</File>
<File
- RelativePath=".\mirandasettings.cpp">
+ RelativePath="src\mirandasettings.cpp">
</File>
<File
- RelativePath="mu_common.cpp">
+ RelativePath="src\mu_common.cpp">
</File>
<File
- RelativePath=".\optionsctrl.cpp">
+ RelativePath="src\optionsctrl.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl.cpp">
+ RelativePath="src\optionsctrlimpl.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_button.cpp">
+ RelativePath="src\optionsctrlimpl_button.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_check.cpp">
+ RelativePath="src\optionsctrlimpl_check.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_color.cpp">
+ RelativePath="src\optionsctrlimpl_color.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_combo.cpp">
+ RelativePath="src\optionsctrlimpl_combo.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_datetime.cpp">
+ RelativePath="src\optionsctrlimpl_datetime.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_edit.cpp">
+ RelativePath="src\optionsctrlimpl_edit.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_group.cpp">
+ RelativePath="src\optionsctrlimpl_group.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_item.cpp">
+ RelativePath="src\optionsctrlimpl_item.cpp">
</File>
<File
- RelativePath=".\optionsctrlimpl_radio.cpp">
+ RelativePath="src\optionsctrlimpl_radio.cpp">
</File>
<File
- RelativePath="protocol.cpp">
+ RelativePath="src\protocol.cpp">
</File>
<File
- RelativePath="settings.cpp">
+ RelativePath="src\settings.cpp">
</File>
<File
- RelativePath="settingsserializer.cpp">
+ RelativePath="src\settingsserializer.cpp">
</File>
<File
- RelativePath="settingstree.cpp">
+ RelativePath="src\settingstree.cpp">
</File>
<File
- RelativePath="statistic.cpp">
+ RelativePath="src\statistic.cpp">
</File>
<File
- RelativePath=".\themeapi.cpp">
+ RelativePath="src\themeapi.cpp">
</File>
<File
- RelativePath="utils.cpp">
+ RelativePath="src\utils.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
- RelativePath="_consts.h">
+ RelativePath="src\_consts.h">
</File>
<File
- RelativePath=".\_format.h">
+ RelativePath="src\_format.h">
</File>
<File
- RelativePath="_globals.h">
+ RelativePath="src\_globals.h">
</File>
<File
- RelativePath="_langext.h">
+ RelativePath="src\_langext.h">
</File>
<File
- RelativePath=".\_strfunc.h">
+ RelativePath="src\_strfunc.h">
</File>
<File
- RelativePath=".\bandctrl.h">
+ RelativePath="src\bandctrl.h">
</File>
<File
- RelativePath=".\bandctrldefs.h">
+ RelativePath="src\bandctrldefs.h">
</File>
<File
- RelativePath=".\bandctrlimpl.h">
+ RelativePath="src\bandctrlimpl.h">
</File>
<File
- RelativePath="canvas.h">
+ RelativePath="src\canvas.h">
</File>
<File
- RelativePath="column.h">
+ RelativePath="src\column.h">
</File>
<File
- RelativePath="contact.h">
+ RelativePath="src\contact.h">
</File>
<File
- RelativePath=".\dlgconfigure.h">
+ RelativePath="src\dlgconfigure.h">
</File>
<File
- RelativePath=".\dlgfilterwords.h">
+ RelativePath="src\dlgfilterwords.h">
</File>
<File
- RelativePath=".\dlgoption.h">
+ RelativePath="src\dlgoption.h">
</File>
<File
- RelativePath=".\iconlib.h">
+ RelativePath="src\iconlib.h">
</File>
<File
- RelativePath=".\inout.h">
+ RelativePath="src\inout.h">
</File>
<File
- RelativePath="main.h">
+ RelativePath="src\main.h">
</File>
<File
- RelativePath="message.h">
+ RelativePath="src\message.h">
</File>
<File
- RelativePath=".\mirandacontact.h">
+ RelativePath="src\mirandacontact.h">
</File>
<File
- RelativePath=".\mirandahistory.h">
+ RelativePath="src\mirandahistory.h">
</File>
<File
- RelativePath=".\mirandasettings.h">
+ RelativePath="src\mirandasettings.h">
</File>
<File
- RelativePath="mu_common.h">
+ RelativePath="src\mu_common.h">
</File>
<File
- RelativePath=".\optionsctrl.h">
+ RelativePath="src\optionsctrl.h">
</File>
<File
- RelativePath=".\optionsctrldefs.h">
+ RelativePath="src\optionsctrldefs.h">
</File>
<File
- RelativePath=".\optionsctrlimpl.h">
+ RelativePath="src\optionsctrlimpl.h">
</File>
<File
- RelativePath="protocol.h">
+ RelativePath="src\protocol.h">
</File>
<File
- RelativePath=".\resource.h">
+ RelativePath="src\resource.h">
</File>
<File
- RelativePath="settings.h">
+ RelativePath="src\settings.h">
</File>
<File
- RelativePath="settingsserializer.h">
+ RelativePath="src\settingsserializer.h">
</File>
<File
- RelativePath="settingstree.h">
+ RelativePath="src\settingstree.h">
</File>
<File
- RelativePath="statistic.h">
+ RelativePath="src\statistic.h">
</File>
<File
- RelativePath=".\themeapi.h">
+ RelativePath="src\themeapi.h">
</File>
<File
- RelativePath="utf8buffer.h">
+ RelativePath="src\utf8buffer.h">
</File>
<File
- RelativePath="utils.h">
+ RelativePath="src\utils.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File
- RelativePath=".\res\col_add.ico">
+ RelativePath="res\col_add.ico">
</File>
<File
- RelativePath=".\res\col_del.ico">
+ RelativePath="res\col_del.ico">
</File>
<File
- RelativePath=".\res\col_down.ico">
+ RelativePath="res\col_down.ico">
</File>
<File
- RelativePath=".\res\col_up.ico">
+ RelativePath="res\col_up.ico">
</File>
<File
- RelativePath=".\res\create.ico">
+ RelativePath="res\create.ico">
</File>
<File
- RelativePath=".\res\create_warning.ico">
+ RelativePath="res\create_warning.ico">
</File>
<File
- RelativePath=".\res\dropdown.ico">
+ RelativePath="res\dropdown.ico">
</File>
<File
- RelativePath=".\res\exclude_no.ico">
+ RelativePath="res\exclude_no.ico">
</File>
<File
- RelativePath=".\res\exclude_yes.ico">
+ RelativePath="res\exclude_yes.ico">
</File>
<File
RelativePath="res\myhistory.ico">
@@ -609,165 +609,165 @@
</FileConfiguration>
</File>
<File
- RelativePath=".\res\sett_columns.ico">
+ RelativePath="res\sett_columns.ico">
</File>
<File
- RelativePath=".\res\sett_exclude.ico">
+ RelativePath="res\sett_exclude.ico">
</File>
<File
- RelativePath=".\res\sett_global.ico">
+ RelativePath="res\sett_global.ico">
</File>
<File
- RelativePath=".\res\sett_input.ico">
+ RelativePath="res\sett_input.ico">
</File>
<File
- RelativePath=".\res\sett_output.ico">
+ RelativePath="res\sett_output.ico">
</File>
<File
- RelativePath=".\res\tree_button1.ico">
+ RelativePath="res\tree_button1.ico">
</File>
<File
- RelativePath=".\res\tree_button2.ico">
+ RelativePath="res\tree_button2.ico">
</File>
<File
- RelativePath=".\res\tree_check1.ico">
+ RelativePath="res\tree_check1.ico">
</File>
<File
- RelativePath=".\res\tree_check2.ico">
+ RelativePath="res\tree_check2.ico">
</File>
<File
- RelativePath=".\res\tree_check3.ico">
+ RelativePath="res\tree_check3.ico">
</File>
<File
- RelativePath=".\res\tree_check4.ico">
+ RelativePath="res\tree_check4.ico">
</File>
<File
- RelativePath=".\res\tree_combo1.ico">
+ RelativePath="res\tree_combo1.ico">
</File>
<File
- RelativePath=".\res\tree_combo2.ico">
+ RelativePath="res\tree_combo2.ico">
</File>
<File
- RelativePath=".\res\tree_datetime1.ico">
+ RelativePath="res\tree_datetime1.ico">
</File>
<File
- RelativePath=".\res\tree_datetime2.ico">
+ RelativePath="res\tree_datetime2.ico">
</File>
<File
- RelativePath=".\res\tree_edit1.ico">
+ RelativePath="res\tree_edit1.ico">
</File>
<File
- RelativePath=".\res\tree_edit2.ico">
+ RelativePath="res\tree_edit2.ico">
</File>
<File
- RelativePath=".\res\tree_folder1.ico">
+ RelativePath="res\tree_folder1.ico">
</File>
<File
- RelativePath=".\res\tree_folder2.ico">
+ RelativePath="res\tree_folder2.ico">
</File>
<File
- RelativePath=".\res\tree_radio1.ico">
+ RelativePath="res\tree_radio1.ico">
</File>
<File
- RelativePath=".\res\tree_radio2.ico">
+ RelativePath="res\tree_radio2.ico">
</File>
<File
- RelativePath=".\res\tree_radio3.ico">
+ RelativePath="res\tree_radio3.ico">
</File>
<File
- RelativePath=".\res\tree_radio4.ico">
+ RelativePath="res\tree_radio4.ico">
</File>
</Filter>
<Filter
Name="Column Source Files"
Filter="cpp">
<File
- RelativePath="colbase_words.cpp">
+ RelativePath="src\colbase_words.cpp">
</File>
<File
- RelativePath="column_chatduration.cpp">
+ RelativePath="src\column_chatduration.cpp">
</File>
<File
- RelativePath="column_events.cpp">
+ RelativePath="src\column_events.cpp">
</File>
<File
- RelativePath="column_group.cpp">
+ RelativePath="src\column_group.cpp">
</File>
<File
- RelativePath=".\column_inout.cpp">
+ RelativePath="src\column_inout.cpp">
</File>
<File
- RelativePath=".\column_inoutgraph.cpp">
+ RelativePath="src\column_inoutgraph.cpp">
</File>
<File
- RelativePath="column_nick.cpp">
+ RelativePath="src\column_nick.cpp">
</File>
<File
- RelativePath="column_protocol.cpp">
+ RelativePath="src\column_protocol.cpp">
</File>
<File
- RelativePath="column_rank.cpp">
+ RelativePath="src\column_rank.cpp">
</File>
<File
- RelativePath="column_split.cpp">
+ RelativePath="src\column_split.cpp">
</File>
<File
- RelativePath="column_splittimeline.cpp">
+ RelativePath="src\column_splittimeline.cpp">
</File>
<File
- RelativePath="column_timeline.cpp">
+ RelativePath="src\column_timeline.cpp">
</File>
<File
- RelativePath="column_wordcount.cpp">
+ RelativePath="src\column_wordcount.cpp">
</File>
<File
- RelativePath="column_words.cpp">
+ RelativePath="src\column_words.cpp">
</File>
</Filter>
<Filter
Name="Column Header Files"
Filter="h">
<File
- RelativePath="colbase_words.h">
+ RelativePath="src\colbase_words.h">
</File>
<File
- RelativePath="column_chatduration.h">
+ RelativePath="src\column_chatduration.h">
</File>
<File
- RelativePath="column_events.h">
+ RelativePath="src\column_events.h">
</File>
<File
- RelativePath="column_group.h">
+ RelativePath="src\column_group.h">
</File>
<File
- RelativePath=".\column_inout.h">
+ RelativePath="src\column_inout.h">
</File>
<File
- RelativePath=".\column_inoutgraph.h">
+ RelativePath="src\column_inoutgraph.h">
</File>
<File
- RelativePath="column_nick.h">
+ RelativePath="src\column_nick.h">
</File>
<File
- RelativePath="column_protocol.h">
+ RelativePath="src\column_protocol.h">
</File>
<File
- RelativePath="column_rank.h">
+ RelativePath="src\column_rank.h">
</File>
<File
- RelativePath="column_split.h">
+ RelativePath="src\column_split.h">
</File>
<File
- RelativePath="column_splittimeline.h">
+ RelativePath="src\column_splittimeline.h">
</File>
<File
- RelativePath="column_timeline.h">
+ RelativePath="src\column_timeline.h">
</File>
<File
- RelativePath="column_wordcount.h">
+ RelativePath="src\column_wordcount.h">
</File>
<File
- RelativePath="column_words.h">
+ RelativePath="src\column_words.h">
</File>
</Filter>
<Filter
@@ -778,14 +778,7 @@
Name="Utils Header Files"
Filter="h">
<File
- RelativePath=".\utils\pattern.h">
- </File>
- </Filter>
- <Filter
- Name="Other Files"
- Filter="">
- <File
- RelativePath=".\include\m_historystats.h">
+ RelativePath="src\utils\pattern.h">
</File>
</Filter>
</Files>
diff --git a/plugins/HistoryStats/historystats.vcxproj b/plugins/HistoryStats/historystats.vcxproj
new file mode 100644
index 0000000000..70b8dbde7e
--- /dev/null
+++ b/plugins/HistoryStats/historystats.vcxproj
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B5BCDC2F-81FC-4324-90C6-E5540A225EFF}</ProjectGuid>
+ <RootNamespace>historystats</RootNamespace>
+ <SccProjectName />
+ <SccLocalPath />
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\Plugins\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64\Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\Plugins\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64\Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;historystats_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>_globals.h</PrecompiledHeaderFile>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ </Link>
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)historystats.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;historystats_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>_globals.h</PrecompiledHeaderFile>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ </Link>
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>$(OutDir)historystats.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;historystats_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessToFile>false</PreprocessToFile>
+ <PreprocessSuppressLineNumbers>false</PreprocessSuppressLineNumbers>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>_globals.h</PrecompiledHeaderFile>
+ <AssemblerOutput>
+ </AssemblerOutput>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ </Link>
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)historystats.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;historystats_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessToFile>false</PreprocessToFile>
+ <PreprocessSuppressLineNumbers>false</PreprocessSuppressLineNumbers>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>_globals.h</PrecompiledHeaderFile>
+ <AssemblerOutput>
+ </AssemblerOutput>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ </Link>
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>$(OutDir)historystats.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="src\_consts.cpp" />
+ <ClCompile Include="src\_globals.cpp">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
+ </ClCompile>
+ <ClCompile Include="src\bandctrl.cpp" />
+ <ClCompile Include="src\bandctrlimpl.cpp" />
+ <ClCompile Include="src\canvas.cpp" />
+ <ClCompile Include="src\column.cpp" />
+ <ClCompile Include="src\contact.cpp" />
+ <ClCompile Include="src\dlgconfigure.cpp" />
+ <ClCompile Include="src\dlgfilterwords.cpp" />
+ <ClCompile Include="src\dlgoption.cpp" />
+ <ClCompile Include="src\dlgoption_subbase.cpp" />
+ <ClCompile Include="src\dlgoption_subcolumns.cpp" />
+ <ClCompile Include="src\dlgoption_subexclude.cpp" />
+ <ClCompile Include="src\dlgoption_subglobal.cpp" />
+ <ClCompile Include="src\dlgoption_subinput.cpp" />
+ <ClCompile Include="src\dlgoption_suboutput.cpp" />
+ <ClCompile Include="src\iconlib.cpp" />
+ <ClCompile Include="src\main.cpp" />
+ <ClCompile Include="src\message.cpp" />
+ <ClCompile Include="src\mirandacontact.cpp" />
+ <ClCompile Include="src\mirandahistory.cpp" />
+ <ClCompile Include="src\mirandasettings.cpp" />
+ <ClCompile Include="src\mu_common.cpp" />
+ <ClCompile Include="src\optionsctrl.cpp" />
+ <ClCompile Include="src\optionsctrlimpl.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_button.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_check.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_color.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_combo.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_datetime.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_edit.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_group.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_item.cpp" />
+ <ClCompile Include="src\optionsctrlimpl_radio.cpp" />
+ <ClCompile Include="src\protocol.cpp" />
+ <ClCompile Include="src\settings.cpp" />
+ <ClCompile Include="src\settingsserializer.cpp" />
+ <ClCompile Include="src\settingstree.cpp" />
+ <ClCompile Include="src\statistic.cpp" />
+ <ClCompile Include="src\themeapi.cpp" />
+ <ClCompile Include="src\utils.cpp" />
+ <ClCompile Include="src\colbase_words.cpp" />
+ <ClCompile Include="src\column_chatduration.cpp" />
+ <ClCompile Include="src\column_events.cpp" />
+ <ClCompile Include="src\column_group.cpp" />
+ <ClCompile Include="src\column_inout.cpp" />
+ <ClCompile Include="src\column_inoutgraph.cpp" />
+ <ClCompile Include="src\column_nick.cpp" />
+ <ClCompile Include="src\column_protocol.cpp" />
+ <ClCompile Include="src\column_rank.cpp" />
+ <ClCompile Include="src\column_split.cpp" />
+ <ClCompile Include="src\column_splittimeline.cpp" />
+ <ClCompile Include="src\column_timeline.cpp" />
+ <ClCompile Include="src\column_wordcount.cpp" />
+ <ClCompile Include="src\column_words.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\_consts.h" />
+ <ClInclude Include="src\_format.h" />
+ <ClInclude Include="src\_globals.h" />
+ <ClInclude Include="src\_langext.h" />
+ <ClInclude Include="src\_strfunc.h" />
+ <ClInclude Include="src\bandctrl.h" />
+ <ClInclude Include="src\bandctrldefs.h" />
+ <ClInclude Include="src\bandctrlimpl.h" />
+ <ClInclude Include="src\canvas.h" />
+ <ClInclude Include="src\column.h" />
+ <ClInclude Include="src\contact.h" />
+ <ClInclude Include="src\dlgconfigure.h" />
+ <ClInclude Include="src\dlgfilterwords.h" />
+ <ClInclude Include="src\dlgoption.h" />
+ <ClInclude Include="src\iconlib.h" />
+ <ClInclude Include="src\inout.h" />
+ <ClInclude Include="src\main.h" />
+ <ClInclude Include="src\message.h" />
+ <ClInclude Include="src\mirandacontact.h" />
+ <ClInclude Include="src\mirandahistory.h" />
+ <ClInclude Include="src\mirandasettings.h" />
+ <ClInclude Include="src\mu_common.h" />
+ <ClInclude Include="src\optionsctrl.h" />
+ <ClInclude Include="src\optionsctrldefs.h" />
+ <ClInclude Include="src\optionsctrlimpl.h" />
+ <ClInclude Include="src\protocol.h" />
+ <ClInclude Include="src\resource.h" />
+ <ClInclude Include="src\settings.h" />
+ <ClInclude Include="src\settingsserializer.h" />
+ <ClInclude Include="src\settingstree.h" />
+ <ClInclude Include="src\statistic.h" />
+ <ClInclude Include="src\themeapi.h" />
+ <ClInclude Include="src\utf8buffer.h" />
+ <ClInclude Include="src\utils.h" />
+ <ClInclude Include="src\colbase_words.h" />
+ <ClInclude Include="src\column_chatduration.h" />
+ <ClInclude Include="src\column_events.h" />
+ <ClInclude Include="src\column_group.h" />
+ <ClInclude Include="src\column_inout.h" />
+ <ClInclude Include="src\column_inoutgraph.h" />
+ <ClInclude Include="src\column_nick.h" />
+ <ClInclude Include="src\column_protocol.h" />
+ <ClInclude Include="src\column_rank.h" />
+ <ClInclude Include="src\column_split.h" />
+ <ClInclude Include="src\column_splittimeline.h" />
+ <ClInclude Include="src\column_timeline.h" />
+ <ClInclude Include="src\column_wordcount.h" />
+ <ClInclude Include="src\column_words.h" />
+ <ClInclude Include="src\utils\pattern.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="res\col_add.ico" />
+ <None Include="res\col_del.ico" />
+ <None Include="res\col_down.ico" />
+ <None Include="res\col_up.ico" />
+ <None Include="res\create.ico" />
+ <None Include="res\create_warning.ico" />
+ <None Include="res\dropdown.ico" />
+ <None Include="res\exclude_no.ico" />
+ <None Include="res\exclude_yes.ico" />
+ <None Include="res\myhistory.ico" />
+ <None Include="res\sett_columns.ico" />
+ <None Include="res\sett_exclude.ico" />
+ <None Include="res\sett_global.ico" />
+ <None Include="res\sett_input.ico" />
+ <None Include="res\sett_output.ico" />
+ <None Include="res\tree_button1.ico" />
+ <None Include="res\tree_button2.ico" />
+ <None Include="res\tree_check1.ico" />
+ <None Include="res\tree_check2.ico" />
+ <None Include="res\tree_check3.ico" />
+ <None Include="res\tree_check4.ico" />
+ <None Include="res\tree_combo1.ico" />
+ <None Include="res\tree_combo2.ico" />
+ <None Include="res\tree_datetime1.ico" />
+ <None Include="res\tree_datetime2.ico" />
+ <None Include="res\tree_edit1.ico" />
+ <None Include="res\tree_edit2.ico" />
+ <None Include="res\tree_folder1.ico" />
+ <None Include="res\tree_folder2.ico" />
+ <None Include="res\tree_radio1.ico" />
+ <None Include="res\tree_radio2.ico" />
+ <None Include="res\tree_radio3.ico" />
+ <None Include="res\tree_radio4.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\resource.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/HistoryStats/historystats.vcxproj.filters b/plugins/HistoryStats/historystats.vcxproj.filters
new file mode 100644
index 0000000000..2ec7f779d3
--- /dev/null
+++ b/plugins/HistoryStats/historystats.vcxproj.filters
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{00c9961a-7513-4304-a681-1346ebe08865}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{7d5a22fd-afc8-4aeb-a875-986577feffb4}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{56f89ff7-f217-456c-8027-eac445d93449}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ <Filter Include="Column Source Files">
+ <UniqueIdentifier>{0f0c8df9-d471-4e4f-aaab-7826c245caf4}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Column Header Files">
+ <UniqueIdentifier>{7d77a245-572c-4352-889e-a35609e122ee}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Utils Source Files">
+ <UniqueIdentifier>{284d0639-ebbd-45ee-8a89-f42151a8cefa}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Utils Header Files">
+ <UniqueIdentifier>{cefdf26c-a770-4d27-b91f-d9bf71151b0e}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\_globals.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\bandctrl.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\bandctrlimpl.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\canvas.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\contact.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgconfigure.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgfilterwords.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_subbase.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_subcolumns.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_subexclude.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_subglobal.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_subinput.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\dlgoption_suboutput.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\iconlib.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\main.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\message.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\mirandacontact.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\mirandahistory.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\mirandasettings.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\mu_common.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrl.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_button.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_check.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_color.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_combo.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_datetime.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_edit.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_group.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_item.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\optionsctrlimpl_radio.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\protocol.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\settings.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\settingsserializer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\settingstree.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\statistic.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\themeapi.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\utils.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\colbase_words.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_chatduration.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_events.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_group.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_inout.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_inoutgraph.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_nick.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_protocol.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_rank.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_split.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_splittimeline.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_timeline.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_wordcount.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\column_words.cpp">
+ <Filter>Column Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\_consts.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\_consts.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\_format.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\_globals.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\_langext.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\_strfunc.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\bandctrl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\bandctrldefs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\bandctrlimpl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\canvas.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\contact.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\dlgconfigure.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\dlgfilterwords.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\dlgoption.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\iconlib.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\inout.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\main.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\message.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\mirandacontact.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\mirandahistory.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\mirandasettings.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\mu_common.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\optionsctrl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\optionsctrldefs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\optionsctrlimpl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\protocol.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\resource.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\settings.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\settingsserializer.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\settingstree.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\statistic.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\themeapi.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\utf8buffer.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\utils.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\colbase_words.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_chatduration.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_events.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_group.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_inout.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_inoutgraph.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_nick.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_protocol.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_rank.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_split.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_splittimeline.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_timeline.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_wordcount.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\column_words.h">
+ <Filter>Column Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\utils\pattern.h">
+ <Filter>Utils Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="res\col_add.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\col_del.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\col_down.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\col_up.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\create.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\create_warning.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\dropdown.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\exclude_no.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\exclude_yes.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\myhistory.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\sett_columns.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\sett_exclude.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\sett_global.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\sett_input.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\sett_output.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_button1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_button2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_check1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_check2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_check3.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_check4.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_combo1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_combo2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_datetime1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_datetime2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_edit1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_edit2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_folder1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_folder2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_radio1.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_radio2.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_radio3.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\tree_radio4.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\resource.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/!NotAdopted/HistoryStats/langpack/historystats_langpack_template.txt b/plugins/HistoryStats/langpack/historystats_langpack_template.txt
index b26e5589af..b26e5589af 100644
--- a/plugins/!NotAdopted/HistoryStats/langpack/historystats_langpack_template.txt
+++ b/plugins/HistoryStats/langpack/historystats_langpack_template.txt
diff --git a/plugins/!NotAdopted/HistoryStats/res/col_add.ico b/plugins/HistoryStats/res/col_add.ico
index 98cbdb2eeb..98cbdb2eeb 100644
--- a/plugins/!NotAdopted/HistoryStats/res/col_add.ico
+++ b/plugins/HistoryStats/res/col_add.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/col_del.ico b/plugins/HistoryStats/res/col_del.ico
index 79e7d74734..79e7d74734 100644
--- a/plugins/!NotAdopted/HistoryStats/res/col_del.ico
+++ b/plugins/HistoryStats/res/col_del.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/col_down.ico b/plugins/HistoryStats/res/col_down.ico
index fd69872427..fd69872427 100644
--- a/plugins/!NotAdopted/HistoryStats/res/col_down.ico
+++ b/plugins/HistoryStats/res/col_down.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/col_up.ico b/plugins/HistoryStats/res/col_up.ico
index 0d1a4a4f43..0d1a4a4f43 100644
--- a/plugins/!NotAdopted/HistoryStats/res/col_up.ico
+++ b/plugins/HistoryStats/res/col_up.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/create.ico b/plugins/HistoryStats/res/create.ico
index cbcb6d6646..cbcb6d6646 100644
--- a/plugins/!NotAdopted/HistoryStats/res/create.ico
+++ b/plugins/HistoryStats/res/create.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/create_warning.ico b/plugins/HistoryStats/res/create_warning.ico
index 8b70b8a53d..8b70b8a53d 100644
--- a/plugins/!NotAdopted/HistoryStats/res/create_warning.ico
+++ b/plugins/HistoryStats/res/create_warning.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/dropdown.ico b/plugins/HistoryStats/res/dropdown.ico
index 6a15b879da..6a15b879da 100644
--- a/plugins/!NotAdopted/HistoryStats/res/dropdown.ico
+++ b/plugins/HistoryStats/res/dropdown.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/exclude_no.ico b/plugins/HistoryStats/res/exclude_no.ico
index 000d467d72..000d467d72 100644
--- a/plugins/!NotAdopted/HistoryStats/res/exclude_no.ico
+++ b/plugins/HistoryStats/res/exclude_no.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/exclude_yes.ico b/plugins/HistoryStats/res/exclude_yes.ico
index 48cbd3cf9f..48cbd3cf9f 100644
--- a/plugins/!NotAdopted/HistoryStats/res/exclude_yes.ico
+++ b/plugins/HistoryStats/res/exclude_yes.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/myhistory.ico b/plugins/HistoryStats/res/myhistory.ico
index 2fce9af551..2fce9af551 100644
--- a/plugins/!NotAdopted/HistoryStats/res/myhistory.ico
+++ b/plugins/HistoryStats/res/myhistory.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/resource.rc b/plugins/HistoryStats/res/resource.rc
index dd4b808354..7299fee640 100644
--- a/plugins/!NotAdopted/HistoryStats/resource.rc
+++ b/plugins/HistoryStats/res/resource.rc
@@ -1,6 +1,6 @@
// Microsoft Visual C++ generated resource script.
//
-#include "resource.h"
+#include "../src/resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/!NotAdopted/HistoryStats/res/sett_columns.ico b/plugins/HistoryStats/res/sett_columns.ico
index e9b0fbe9b8..e9b0fbe9b8 100644
--- a/plugins/!NotAdopted/HistoryStats/res/sett_columns.ico
+++ b/plugins/HistoryStats/res/sett_columns.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/sett_exclude.ico b/plugins/HistoryStats/res/sett_exclude.ico
index ce4051876b..ce4051876b 100644
--- a/plugins/!NotAdopted/HistoryStats/res/sett_exclude.ico
+++ b/plugins/HistoryStats/res/sett_exclude.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/sett_global.ico b/plugins/HistoryStats/res/sett_global.ico
index 67bd2be814..67bd2be814 100644
--- a/plugins/!NotAdopted/HistoryStats/res/sett_global.ico
+++ b/plugins/HistoryStats/res/sett_global.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/sett_input.ico b/plugins/HistoryStats/res/sett_input.ico
index bad593031d..bad593031d 100644
--- a/plugins/!NotAdopted/HistoryStats/res/sett_input.ico
+++ b/plugins/HistoryStats/res/sett_input.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/sett_output.ico b/plugins/HistoryStats/res/sett_output.ico
index 7257c734e5..7257c734e5 100644
--- a/plugins/!NotAdopted/HistoryStats/res/sett_output.ico
+++ b/plugins/HistoryStats/res/sett_output.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_button1.ico b/plugins/HistoryStats/res/tree_button1.ico
index 4bbda5566e..4bbda5566e 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_button1.ico
+++ b/plugins/HistoryStats/res/tree_button1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_button2.ico b/plugins/HistoryStats/res/tree_button2.ico
index 4528da48b3..4528da48b3 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_button2.ico
+++ b/plugins/HistoryStats/res/tree_button2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_check1.ico b/plugins/HistoryStats/res/tree_check1.ico
index 7aa8fdd4a2..7aa8fdd4a2 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_check1.ico
+++ b/plugins/HistoryStats/res/tree_check1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_check2.ico b/plugins/HistoryStats/res/tree_check2.ico
index ea6d927a53..ea6d927a53 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_check2.ico
+++ b/plugins/HistoryStats/res/tree_check2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_check3.ico b/plugins/HistoryStats/res/tree_check3.ico
index 9061171877..9061171877 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_check3.ico
+++ b/plugins/HistoryStats/res/tree_check3.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_check4.ico b/plugins/HistoryStats/res/tree_check4.ico
index 6c4df954a4..6c4df954a4 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_check4.ico
+++ b/plugins/HistoryStats/res/tree_check4.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_combo1.ico b/plugins/HistoryStats/res/tree_combo1.ico
index ada5c59071..ada5c59071 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_combo1.ico
+++ b/plugins/HistoryStats/res/tree_combo1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_combo2.ico b/plugins/HistoryStats/res/tree_combo2.ico
index c260262663..c260262663 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_combo2.ico
+++ b/plugins/HistoryStats/res/tree_combo2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_datetime1.ico b/plugins/HistoryStats/res/tree_datetime1.ico
index d3d4934c91..d3d4934c91 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_datetime1.ico
+++ b/plugins/HistoryStats/res/tree_datetime1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_datetime2.ico b/plugins/HistoryStats/res/tree_datetime2.ico
index 77c9113547..77c9113547 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_datetime2.ico
+++ b/plugins/HistoryStats/res/tree_datetime2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_edit1.ico b/plugins/HistoryStats/res/tree_edit1.ico
index 191a4f4c96..191a4f4c96 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_edit1.ico
+++ b/plugins/HistoryStats/res/tree_edit1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_edit2.ico b/plugins/HistoryStats/res/tree_edit2.ico
index 9570dac308..9570dac308 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_edit2.ico
+++ b/plugins/HistoryStats/res/tree_edit2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_folder1.ico b/plugins/HistoryStats/res/tree_folder1.ico
index 128c7e99bf..128c7e99bf 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_folder1.ico
+++ b/plugins/HistoryStats/res/tree_folder1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_folder2.ico b/plugins/HistoryStats/res/tree_folder2.ico
index cf24bd3f3d..cf24bd3f3d 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_folder2.ico
+++ b/plugins/HistoryStats/res/tree_folder2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_radio1.ico b/plugins/HistoryStats/res/tree_radio1.ico
index 0af0b705c5..0af0b705c5 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_radio1.ico
+++ b/plugins/HistoryStats/res/tree_radio1.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_radio2.ico b/plugins/HistoryStats/res/tree_radio2.ico
index 6c81419ab6..6c81419ab6 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_radio2.ico
+++ b/plugins/HistoryStats/res/tree_radio2.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_radio3.ico b/plugins/HistoryStats/res/tree_radio3.ico
index 7307062280..7307062280 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_radio3.ico
+++ b/plugins/HistoryStats/res/tree_radio3.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/res/tree_radio4.ico b/plugins/HistoryStats/res/tree_radio4.ico
index 896f27186f..896f27186f 100644
--- a/plugins/!NotAdopted/HistoryStats/res/tree_radio4.ico
+++ b/plugins/HistoryStats/res/tree_radio4.ico
Binary files differ
diff --git a/plugins/!NotAdopted/HistoryStats/_consts.cpp b/plugins/HistoryStats/src/_consts.cpp
index ed401cbd2a..ed401cbd2a 100644
--- a/plugins/!NotAdopted/HistoryStats/_consts.cpp
+++ b/plugins/HistoryStats/src/_consts.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/_consts.h b/plugins/HistoryStats/src/_consts.h
index d805314873..d805314873 100644
--- a/plugins/!NotAdopted/HistoryStats/_consts.h
+++ b/plugins/HistoryStats/src/_consts.h
diff --git a/plugins/!NotAdopted/HistoryStats/_format.h b/plugins/HistoryStats/src/_format.h
index 9e53e21e8b..9e53e21e8b 100644
--- a/plugins/!NotAdopted/HistoryStats/_format.h
+++ b/plugins/HistoryStats/src/_format.h
diff --git a/plugins/!NotAdopted/HistoryStats/_globals.cpp b/plugins/HistoryStats/src/_globals.cpp
index 23220fc5e2..23220fc5e2 100644
--- a/plugins/!NotAdopted/HistoryStats/_globals.cpp
+++ b/plugins/HistoryStats/src/_globals.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/_globals.h b/plugins/HistoryStats/src/_globals.h
index 11b6265703..a4368cf083 100644
--- a/plugins/!NotAdopted/HistoryStats/_globals.h
+++ b/plugins/HistoryStats/src/_globals.h
@@ -4,24 +4,13 @@
#pragma warning(disable: 4018) // FIXME: supress "signed/unsigned mismatch" warnings
/*
- * history copy and paste functionality via context menu
- */
-//#define HISTORYSTATS_HISTORYCOPY
-
-/*
- * detect memory leaks in debug builds
+ * nicer interface for miranda
*/
-#if defined(_DEBUG)
-#define _CRTDBG_MAP_ALLOC
-#include <stdlib.h>
-#include <crtdbg.h>
-#undef _CRTDBG_MAP_ALLOC
-#endif // _DEBUG
+#define _CRT_SECURE_NO_WARNINGS
+#define _CRT_NON_CONFORMING_SWPRINTFS
-/*
- * nicer interface for miranda
- */
+#pragma warning(disable:4267)
#include "mu_common.h"
diff --git a/plugins/!NotAdopted/HistoryStats/_langext.h b/plugins/HistoryStats/src/_langext.h
index ffe1626643..ffe1626643 100644
--- a/plugins/!NotAdopted/HistoryStats/_langext.h
+++ b/plugins/HistoryStats/src/_langext.h
diff --git a/plugins/!NotAdopted/HistoryStats/_strfunc.h b/plugins/HistoryStats/src/_strfunc.h
index 2b54948572..6ff5d61237 100644
--- a/plugins/!NotAdopted/HistoryStats/_strfunc.h
+++ b/plugins/HistoryStats/src/_strfunc.h
@@ -12,12 +12,12 @@ namespace ext
class basic_strfunc<mu_ansi>
{
public:
- static mu_ansi* chr(const mu_ansi* string, mu_ansi c) { return strchr(string, c); }
+ static const mu_ansi* chr(const mu_ansi* string, mu_ansi c) { return strchr(string, c); }
static int cmp(const mu_ansi* string1, const mu_ansi* string2) { return strcmp(string1, string2); }
static int icmp(const mu_ansi* string1, const mu_ansi* string2) { return _stricmp(string1, string2); }
static int coll(const mu_ansi* string1, const mu_ansi* string2) { return strcoll(string1, string2); }
static int icoll(const mu_ansi* string1, const mu_ansi* string2) { return _stricoll(string1, string2); }
- static mu_ansi* str(const mu_ansi* string, const mu_ansi* strSearch) { return strstr(string, strSearch); }
+ static const mu_ansi* str(const mu_ansi* string, const mu_ansi* strSearch) { return strstr(string, strSearch); }
static size_t len(const mu_ansi* string) { return strlen(string); }
static size_t ftime(mu_ansi* strDest, size_t maxsize, const mu_ansi* format, const struct tm* timeptr) { return strftime(strDest, maxsize, format, timeptr); }
static int sprintf(mu_ansi* buffer, const mu_ansi* format, ...) { va_list args; va_start(args, format); return vsprintf(buffer, format, args); }
@@ -27,12 +27,12 @@ namespace ext
class basic_strfunc<mu_wide>
{
public:
- static mu_wide* chr(const mu_wide* string, mu_wide c) { return wcschr(string, c); }
+ static const mu_wide* chr(const mu_wide* string, mu_wide c) { return wcschr(string, c); }
static int cmp(const mu_wide* string1, const mu_wide* string2) { return wcscmp(string1, string2); }
static int icmp(const mu_wide* string1, const mu_wide* string2) { return _wcsicmp(string1, string2); }
static int coll(const mu_wide* string1, const mu_wide* string2) { return wcscoll(string1, string2); }
static int icoll(const mu_wide* string1, const mu_wide* string2) { return _wcsicoll(string1, string2); }
- static mu_wide* str(const mu_wide* string, const mu_wide* strSearch) { return wcsstr(string, strSearch); }
+ static const mu_wide* str(const mu_wide* string, const mu_wide* strSearch) { return wcsstr(string, strSearch); }
static size_t len(const mu_wide* string) { return wcslen(string); }
static size_t ftime(mu_wide* strDest, size_t maxsize, const mu_wide* format, const struct tm* timeptr) { return wcsftime(strDest, maxsize, format, timeptr); }
static int sprintf(mu_wide* buffer, const mu_wide* format, ...) { va_list args; va_start(args, format); return vswprintf(buffer, format, args); }
diff --git a/plugins/!NotAdopted/HistoryStats/bandctrl.cpp b/plugins/HistoryStats/src/bandctrl.cpp
index 677ab9d90e..677ab9d90e 100644
--- a/plugins/!NotAdopted/HistoryStats/bandctrl.cpp
+++ b/plugins/HistoryStats/src/bandctrl.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/bandctrl.h b/plugins/HistoryStats/src/bandctrl.h
index db3c5c81f7..db3c5c81f7 100644
--- a/plugins/!NotAdopted/HistoryStats/bandctrl.h
+++ b/plugins/HistoryStats/src/bandctrl.h
diff --git a/plugins/!NotAdopted/HistoryStats/bandctrldefs.h b/plugins/HistoryStats/src/bandctrldefs.h
index 2109696a77..2109696a77 100644
--- a/plugins/!NotAdopted/HistoryStats/bandctrldefs.h
+++ b/plugins/HistoryStats/src/bandctrldefs.h
diff --git a/plugins/!NotAdopted/HistoryStats/bandctrlimpl.cpp b/plugins/HistoryStats/src/bandctrlimpl.cpp
index 675077d7b4..675077d7b4 100644
--- a/plugins/!NotAdopted/HistoryStats/bandctrlimpl.cpp
+++ b/plugins/HistoryStats/src/bandctrlimpl.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/bandctrlimpl.h b/plugins/HistoryStats/src/bandctrlimpl.h
index 7aa9ce8abb..7aa9ce8abb 100644
--- a/plugins/!NotAdopted/HistoryStats/bandctrlimpl.h
+++ b/plugins/HistoryStats/src/bandctrlimpl.h
diff --git a/plugins/!NotAdopted/HistoryStats/canvas.cpp b/plugins/HistoryStats/src/canvas.cpp
index 2444432ad1..54f87dec45 100644
--- a/plugins/!NotAdopted/HistoryStats/canvas.cpp
+++ b/plugins/HistoryStats/src/canvas.cpp
@@ -128,43 +128,27 @@ bool Canvas::getDigest(Digest& digest)
{
// we don't have a digest if the image is uninitialized
if (!m_pBMIH)
- {
return false;
- }
-
- if (mu::sha1::_available())
- {
- // read data from DIB
- int nSize = m_nLineLength * m_nHeight;
- BYTE* pData = new BYTE[nSize];
-
- ZeroMemory(pData, nSize);
- if (GetDIBits(m_hDC, m_hBmp, 0, m_nHeight, pData, reinterpret_cast<BITMAPINFO*>(m_pBMIH), DIB_RGB_COLORS) != m_nHeight)
- {
- delete[] pData;
-
- return false;
- }
-
- // apply transparency, if any
- updateTrans(pData);
-
- // calculate hash
- SHA1_INTERFACE sha1i = mu::sha1::getInterface();
+ // read data from DIB
+ int nSize = m_nLineLength * m_nHeight;
+ BYTE* pData = new BYTE[nSize];
- sha1i.sha1_hash(pData, nSize, digest.m_Digest);
+ ZeroMemory(pData, nSize);
+ if (GetDIBits(m_hDC, m_hBmp, 0, m_nHeight, pData, reinterpret_cast<BITMAPINFO*>(m_pBMIH), DIB_RGB_COLORS) != m_nHeight)
+ {
delete[] pData;
+ return false;
}
- else
- {
- // fallback digest if no SHA1 interface is available
- static int nUniqueID = 0;
- *reinterpret_cast<int*>(digest.m_Digest) = ++nUniqueID;
- }
+ // apply transparency, if any
+ updateTrans(pData);
+ // calculate hash
+ mir_sha1_hash(pData, nSize, digest.m_Digest);
+
+ delete[] pData;
return true;
}
diff --git a/plugins/!NotAdopted/HistoryStats/canvas.h b/plugins/HistoryStats/src/canvas.h
index 6b3c40e70e..6b3c40e70e 100644
--- a/plugins/!NotAdopted/HistoryStats/canvas.h
+++ b/plugins/HistoryStats/src/canvas.h
diff --git a/plugins/!NotAdopted/HistoryStats/colbase_words.cpp b/plugins/HistoryStats/src/colbase_words.cpp
index 9325d2a421..9325d2a421 100644
--- a/plugins/!NotAdopted/HistoryStats/colbase_words.cpp
+++ b/plugins/HistoryStats/src/colbase_words.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/colbase_words.h b/plugins/HistoryStats/src/colbase_words.h
index d42803fdea..d42803fdea 100644
--- a/plugins/!NotAdopted/HistoryStats/colbase_words.h
+++ b/plugins/HistoryStats/src/colbase_words.h
diff --git a/plugins/!NotAdopted/HistoryStats/column.cpp b/plugins/HistoryStats/src/column.cpp
index 82429700bf..82429700bf 100644
--- a/plugins/!NotAdopted/HistoryStats/column.cpp
+++ b/plugins/HistoryStats/src/column.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column.h b/plugins/HistoryStats/src/column.h
index 74bfc2a073..74bfc2a073 100644
--- a/plugins/!NotAdopted/HistoryStats/column.h
+++ b/plugins/HistoryStats/src/column.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_chatduration.cpp b/plugins/HistoryStats/src/column_chatduration.cpp
index ccaa0e0fae..b21dc451b4 100644
--- a/plugins/!NotAdopted/HistoryStats/column_chatduration.cpp
+++ b/plugins/HistoryStats/src/column_chatduration.cpp
@@ -101,10 +101,10 @@ void ColChatDuration::impl_columnDataAfterOmit()
if (m_bGraph)
{
static DWORD (Contact::*getChatDurX[4])() const = {
- Contact::getChatDurMin,
- Contact::getChatDurAvg,
- Contact::getChatDurMax,
- Contact::getChatDurSum,
+ &Contact::getChatDurMin,
+ &Contact::getChatDurAvg,
+ &Contact::getChatDurMax,
+ &Contact::getChatDurSum,
};
m_nMaxForGraph = 1;
@@ -137,10 +137,10 @@ void ColChatDuration::impl_columnDataAfterOmit()
void ColChatDuration::impl_outputRenderRow(ext::ostream& tos, const Contact& contact, DisplayType display)
{
static DWORD (Contact::*getChatDurX[4])() const = {
- Contact::getChatDurMin,
- Contact::getChatDurAvg,
- Contact::getChatDurMax,
- Contact::getChatDurSum,
+ &Contact::getChatDurMin,
+ &Contact::getChatDurAvg,
+ &Contact::getChatDurMax,
+ &Contact::getChatDurSum,
};
// begin output
diff --git a/plugins/!NotAdopted/HistoryStats/column_chatduration.h b/plugins/HistoryStats/src/column_chatduration.h
index dd68efffbc..dd68efffbc 100644
--- a/plugins/!NotAdopted/HistoryStats/column_chatduration.h
+++ b/plugins/HistoryStats/src/column_chatduration.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_events.cpp b/plugins/HistoryStats/src/column_events.cpp
index 41556c7ee0..2186f8bb91 100644
--- a/plugins/!NotAdopted/HistoryStats/column_events.cpp
+++ b/plugins/HistoryStats/src/column_events.cpp
@@ -78,12 +78,12 @@ void ColEvents::impl_outputRenderHeader(ext::ostream& tos, int row, int rowSpan)
void ColEvents::impl_outputRenderRow(ext::ostream& tos, const Contact& contact, DisplayType display)
{
static int (Contact::*getData[6])() const = {
- Contact::getInUrls,
- Contact::getOutUrls,
- Contact::getTotalUrls,
- Contact::getInFiles,
- Contact::getOutFiles,
- Contact::getTotalFiles,
+ &Contact::getInUrls,
+ &Contact::getOutUrls,
+ &Contact::getTotalUrls,
+ &Contact::getInFiles,
+ &Contact::getOutFiles,
+ &Contact::getTotalFiles,
};
tos << muT("<td class=\"num\">")
diff --git a/plugins/!NotAdopted/HistoryStats/column_events.h b/plugins/HistoryStats/src/column_events.h
index 6a3aa9f827..6a3aa9f827 100644
--- a/plugins/!NotAdopted/HistoryStats/column_events.h
+++ b/plugins/HistoryStats/src/column_events.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_group.cpp b/plugins/HistoryStats/src/column_group.cpp
index 9d816af1c4..9d816af1c4 100644
--- a/plugins/!NotAdopted/HistoryStats/column_group.cpp
+++ b/plugins/HistoryStats/src/column_group.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_group.h b/plugins/HistoryStats/src/column_group.h
index f8c68c704d..f8c68c704d 100644
--- a/plugins/!NotAdopted/HistoryStats/column_group.h
+++ b/plugins/HistoryStats/src/column_group.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_inout.cpp b/plugins/HistoryStats/src/column_inout.cpp
index 75bf884f97..4aaf5f1743 100644
--- a/plugins/!NotAdopted/HistoryStats/column_inout.cpp
+++ b/plugins/HistoryStats/src/column_inout.cpp
@@ -125,15 +125,15 @@ void ColInOut::impl_outputRenderRow(ext::ostream& tos, const Contact& contact, D
if (m_bAbsolute)
{
static int (Contact::*getData[])() const = {
- Contact::getInBytes,
- Contact::getOutBytes,
- Contact::getTotalBytes,
- Contact::getInMessages,
- Contact::getOutMessages,
- Contact::getTotalMessages,
- Contact::getInChats,
- Contact::getOutChats,
- Contact::getTotalChats,
+ &Contact::getInBytes,
+ &Contact::getOutBytes,
+ &Contact::getTotalBytes,
+ &Contact::getInMessages,
+ &Contact::getOutMessages,
+ &Contact::getTotalMessages,
+ &Contact::getInChats,
+ &Contact::getOutChats,
+ &Contact::getTotalChats,
};
tos << muT("<td class=\"num\">")
@@ -143,15 +143,15 @@ void ColInOut::impl_outputRenderRow(ext::ostream& tos, const Contact& contact, D
else
{
static double (Contact::*getData[])() const = {
- Contact::getInBytesAvg,
- Contact::getOutBytesAvg,
- Contact::getTotalBytesAvg,
- Contact::getInMessagesAvg,
- Contact::getOutMessagesAvg,
- Contact::getTotalMessagesAvg,
- Contact::getInChatsAvg,
- Contact::getOutChatsAvg,
- Contact::getTotalChatsAvg,
+ &Contact::getInBytesAvg,
+ &Contact::getOutBytesAvg,
+ &Contact::getTotalBytesAvg,
+ &Contact::getInMessagesAvg,
+ &Contact::getOutMessagesAvg,
+ &Contact::getTotalMessagesAvg,
+ &Contact::getInChatsAvg,
+ &Contact::getOutChatsAvg,
+ &Contact::getTotalChatsAvg,
};
static const double avgFactor[] = {
diff --git a/plugins/!NotAdopted/HistoryStats/column_inout.h b/plugins/HistoryStats/src/column_inout.h
index ac66377312..ac66377312 100644
--- a/plugins/!NotAdopted/HistoryStats/column_inout.h
+++ b/plugins/HistoryStats/src/column_inout.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_inoutgraph.cpp b/plugins/HistoryStats/src/column_inoutgraph.cpp
index 888513f988..a28c4b7fd5 100644
--- a/plugins/!NotAdopted/HistoryStats/column_inoutgraph.cpp
+++ b/plugins/HistoryStats/src/column_inoutgraph.cpp
@@ -171,17 +171,17 @@ void ColInOutGraph::impl_outputRenderHeader(ext::ostream& tos, int row, int rowS
void ColInOutGraph::impl_outputRenderRow(ext::ostream& tos, const Contact& contact, DisplayType display)
{
// fetch absolute values
- static int (Contact::*getOut[3])() const = { Contact::getOutBytes, Contact::getOutMessages, Contact::getOutChats };
- static int (Contact::*getIn[3])() const = { Contact::getInBytes, Contact::getInMessages, Contact::getInChats };
+ static int (Contact::*getOut[3])() const = { &Contact::getOutBytes, &Contact::getOutMessages, &Contact::getOutChats };
+ static int (Contact::*getIn[3])() const = { &Contact::getInBytes, &Contact::getInMessages, &Contact::getInChats };
int numOut = (contact.*getOut[m_nSource])();
int numIn = (contact.*getIn[m_nSource])();
int numTotal = numOut + numIn;
// fetch average values
- static double (Contact::*getAvgOut[3])() const = { Contact::getOutBytesAvg, Contact::getOutMessagesAvg, Contact::getOutChatsAvg };
- static double (Contact::*getAvgIn[3])() const = { Contact::getInBytesAvg, Contact::getInMessagesAvg, Contact::getInChatsAvg };
- static double (Contact::*getAvgTotal[3])() const = { Contact::getTotalBytesAvg, Contact::getTotalMessagesAvg, Contact::getTotalChatsAvg };
+ static double (Contact::*getAvgOut[3])() const = { &Contact::getOutBytesAvg, &Contact::getOutMessagesAvg, &Contact::getOutChatsAvg };
+ static double (Contact::*getAvgIn[3])() const = { &Contact::getInBytesAvg, &Contact::getInMessagesAvg, &Contact::getInChatsAvg };
+ static double (Contact::*getAvgTotal[3])() const = { &Contact::getTotalBytesAvg, &Contact::getTotalMessagesAvg, &Contact::getTotalChatsAvg };
static const double avgFactor[] = {
60.0 * 60.0 * 24.0,
diff --git a/plugins/!NotAdopted/HistoryStats/column_inoutgraph.h b/plugins/HistoryStats/src/column_inoutgraph.h
index 875a09d004..875a09d004 100644
--- a/plugins/!NotAdopted/HistoryStats/column_inoutgraph.h
+++ b/plugins/HistoryStats/src/column_inoutgraph.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_nick.cpp b/plugins/HistoryStats/src/column_nick.cpp
index f61744a545..f61744a545 100644
--- a/plugins/!NotAdopted/HistoryStats/column_nick.cpp
+++ b/plugins/HistoryStats/src/column_nick.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_nick.h b/plugins/HistoryStats/src/column_nick.h
index 81f7905c93..81f7905c93 100644
--- a/plugins/!NotAdopted/HistoryStats/column_nick.h
+++ b/plugins/HistoryStats/src/column_nick.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_protocol.cpp b/plugins/HistoryStats/src/column_protocol.cpp
index bbbe67ba01..bbbe67ba01 100644
--- a/plugins/!NotAdopted/HistoryStats/column_protocol.cpp
+++ b/plugins/HistoryStats/src/column_protocol.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_protocol.h b/plugins/HistoryStats/src/column_protocol.h
index b846243275..b846243275 100644
--- a/plugins/!NotAdopted/HistoryStats/column_protocol.h
+++ b/plugins/HistoryStats/src/column_protocol.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_rank.cpp b/plugins/HistoryStats/src/column_rank.cpp
index ae44689be9..ae44689be9 100644
--- a/plugins/!NotAdopted/HistoryStats/column_rank.cpp
+++ b/plugins/HistoryStats/src/column_rank.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_rank.h b/plugins/HistoryStats/src/column_rank.h
index 29d737277f..29d737277f 100644
--- a/plugins/!NotAdopted/HistoryStats/column_rank.h
+++ b/plugins/HistoryStats/src/column_rank.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_split.cpp b/plugins/HistoryStats/src/column_split.cpp
index bba1625f2b..bba1625f2b 100644
--- a/plugins/!NotAdopted/HistoryStats/column_split.cpp
+++ b/plugins/HistoryStats/src/column_split.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_split.h b/plugins/HistoryStats/src/column_split.h
index 03d0ce6055..03d0ce6055 100644
--- a/plugins/!NotAdopted/HistoryStats/column_split.h
+++ b/plugins/HistoryStats/src/column_split.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_splittimeline.cpp b/plugins/HistoryStats/src/column_splittimeline.cpp
index f856167d04..f856167d04 100644
--- a/plugins/!NotAdopted/HistoryStats/column_splittimeline.cpp
+++ b/plugins/HistoryStats/src/column_splittimeline.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_splittimeline.h b/plugins/HistoryStats/src/column_splittimeline.h
index e3754f5891..e3754f5891 100644
--- a/plugins/!NotAdopted/HistoryStats/column_splittimeline.h
+++ b/plugins/HistoryStats/src/column_splittimeline.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_timeline.cpp b/plugins/HistoryStats/src/column_timeline.cpp
index 0caeb6564a..0caeb6564a 100644
--- a/plugins/!NotAdopted/HistoryStats/column_timeline.cpp
+++ b/plugins/HistoryStats/src/column_timeline.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_timeline.h b/plugins/HistoryStats/src/column_timeline.h
index 642a900546..642a900546 100644
--- a/plugins/!NotAdopted/HistoryStats/column_timeline.h
+++ b/plugins/HistoryStats/src/column_timeline.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_wordcount.cpp b/plugins/HistoryStats/src/column_wordcount.cpp
index fd172e0716..fd172e0716 100644
--- a/plugins/!NotAdopted/HistoryStats/column_wordcount.cpp
+++ b/plugins/HistoryStats/src/column_wordcount.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_wordcount.h b/plugins/HistoryStats/src/column_wordcount.h
index 028c95a952..028c95a952 100644
--- a/plugins/!NotAdopted/HistoryStats/column_wordcount.h
+++ b/plugins/HistoryStats/src/column_wordcount.h
diff --git a/plugins/!NotAdopted/HistoryStats/column_words.cpp b/plugins/HistoryStats/src/column_words.cpp
index 61991f3638..61991f3638 100644
--- a/plugins/!NotAdopted/HistoryStats/column_words.cpp
+++ b/plugins/HistoryStats/src/column_words.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/column_words.h b/plugins/HistoryStats/src/column_words.h
index 66f68cd5a6..f6d1284562 100644
--- a/plugins/!NotAdopted/HistoryStats/column_words.h
+++ b/plugins/HistoryStats/src/column_words.h
@@ -18,7 +18,7 @@ private:
class MostCommonWords
{
public:
- operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
+ int operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
{
return (a.second != b.second) ? (a.second > b.second) : (a.first < b.first);
}
@@ -27,7 +27,7 @@ private:
class LeastCommonWords
{
public:
- operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
+ int operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
{
return (a.second != b.second) ? (a.second < b.second) : (a.first < b.first);
}
@@ -36,7 +36,7 @@ private:
class LongestWords
{
public:
- operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
+ int operator ()(const WordMap::value_type& a, const WordMap::value_type& b)
{
return (a.first.length() != b.first.length()) ? (a.first.length() > b.first.length()) : (a.first < b.first);
}
diff --git a/plugins/!NotAdopted/HistoryStats/contact.cpp b/plugins/HistoryStats/src/contact.cpp
index 260ed68c1e..260ed68c1e 100644
--- a/plugins/!NotAdopted/HistoryStats/contact.cpp
+++ b/plugins/HistoryStats/src/contact.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/contact.h b/plugins/HistoryStats/src/contact.h
index c8fdfb6659..a4031269de 100644
--- a/plugins/!NotAdopted/HistoryStats/contact.h
+++ b/plugins/HistoryStats/src/contact.h
@@ -219,7 +219,7 @@ private:
ContactCompareBase* m_pCmp;
public:
- bool operator ()(const Contact*& first, const Contact*& second) { return m_pCmp->cmp(*first, *second); }
+ bool operator ()(const Contact* first, const Contact* second) { return m_pCmp->cmp(*first, *second); }
explicit ContactCompareOp(ContactCompareBase* pCmp) : m_pCmp(pCmp) { }
};
diff --git a/plugins/!NotAdopted/HistoryStats/dlgconfigure.cpp b/plugins/HistoryStats/src/dlgconfigure.cpp
index b6da3edd75..5c4ad0b727 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgconfigure.cpp
+++ b/plugins/HistoryStats/src/dlgconfigure.cpp
@@ -13,21 +13,21 @@
HWND DlgConfigure::m_hCfgWnd = NULL;
bool DlgConfigure::m_bHookedEvent = false;
-BOOL CALLBACK DlgConfigure::staticConfigureProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgConfigure::staticConfigureProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- DlgConfigure* pDlg = reinterpret_cast<DlgConfigure*>(GetWindowLong(hDlg, DWL_USER));
+ DlgConfigure* pDlg = reinterpret_cast<DlgConfigure*>(GetWindowLong(hDlg, DWLP_USER));
switch (msg)
{
case WM_INITDIALOG:
pDlg = new DlgConfigure(hDlg);
- SetWindowLong(hDlg, DWL_USER, reinterpret_cast<LONG>(pDlg));
+ SetWindowLong(hDlg, DWLP_USER, reinterpret_cast<LONG>(pDlg));
pDlg->onWMInitDialog();
return TRUE;
case WM_DESTROY:
delete pDlg;
- SetWindowLong(hDlg, DWL_USER, 0);
+ SetWindowLong(hDlg, DWLP_USER, 0);
break;
case PSM_CHANGED:
@@ -107,18 +107,14 @@ void DlgConfigure::showModal()
}
if (IsWindow(m_hCfgWnd))
- {
SetForegroundWindow(m_hCfgWnd);
- }
else
- {
CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_CONFIGURE), NULL, staticConfigureProc);
- }
}
void DlgConfigure::onWMInitDialog()
{
- mu::langpack::translateDialog(m_hWnd);
+ TranslateDialogDefault(m_hWnd);
utils::centerDialog(m_hWnd);
SendMessage(m_hWnd, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
EnableWindow(GetDlgItem(m_hWnd, IDC_APPLY), FALSE);
@@ -219,7 +215,7 @@ DlgConfigure::DlgConfigure(HWND hWnd)
if (!m_bHookedEvent)
{
- g_hHookedEvents << mu::_link::hookEvent(ME_SYSTEM_PRESHUTDOWN, staticEventPreShutdown);
+ HookEvent(ME_SYSTEM_PRESHUTDOWN, staticEventPreShutdown);
m_bHookedEvent = true;
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/dlgconfigure.h b/plugins/HistoryStats/src/dlgconfigure.h
index bec300eca9..d1f8b1c22f 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgconfigure.h
+++ b/plugins/HistoryStats/src/dlgconfigure.h
@@ -12,7 +12,7 @@ private:
static bool m_bHookedEvent;
private:
- static BOOL CALLBACK staticConfigureProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticConfigureProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
static int staticEventPreShutdown(WPARAM wParam, LPARAM lParam);
public:
diff --git a/plugins/!NotAdopted/HistoryStats/dlgfilterwords.cpp b/plugins/HistoryStats/src/dlgfilterwords.cpp
index e001e9d598..5609880d9d 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgfilterwords.cpp
+++ b/plugins/HistoryStats/src/dlgfilterwords.cpp
@@ -6,15 +6,15 @@
#include <algorithm>
-BOOL CALLBACK DlgFilterWords::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgFilterWords::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- DlgFilterWords* pDlg = reinterpret_cast<DlgFilterWords*>(GetWindowLong(hDlg, DWL_USER));
+ DlgFilterWords* pDlg = reinterpret_cast<DlgFilterWords*>(GetWindowLong(hDlg, DWLP_USER));
switch (msg)
{
case WM_INITDIALOG:
pDlg = reinterpret_cast<DlgFilterWords*>(lParam);
- SetWindowLong(hDlg, DWL_USER, reinterpret_cast<LONG>(pDlg));
+ SetWindowLong(hDlg, DWLP_USER, reinterpret_cast<LONG>(pDlg));
pDlg->m_hWnd = hDlg;
pDlg->onWMInitDialog();
return TRUE;
@@ -22,7 +22,7 @@ BOOL CALLBACK DlgFilterWords::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam,
case WM_DESTROY:
pDlg->onWMDestroy();
pDlg->m_hWnd = NULL;
- SetWindowLong(hDlg, DWL_USER, 0);
+ SetWindowLong(hDlg, DWLP_USER, 0);
return TRUE;
case WM_COMMAND:
@@ -81,7 +81,7 @@ BOOL CALLBACK DlgFilterWords::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam,
void DlgFilterWords::onWMInitDialog()
{
- mu::langpack::translateDialog(m_hWnd);
+ TranslateDialogDefault(m_hWnd);
SendMessage(m_hWnd, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
diff --git a/plugins/!NotAdopted/HistoryStats/dlgfilterwords.h b/plugins/HistoryStats/src/dlgfilterwords.h
index 92fb5c6f65..23fb6a5a9c 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgfilterwords.h
+++ b/plugins/HistoryStats/src/dlgfilterwords.h
@@ -25,11 +25,11 @@ private:
class FilterCompare
{
public:
- bool operator ()(const Filter*& first, const Filter*& second) { return ext::strfunc::icoll(first->getName().c_str(), second->getName().c_str()) < 0; }
+ bool operator ()(const Filter* first, const Filter* second) { return ext::strfunc::icoll(first->getName().c_str(), second->getName().c_str()) < 0; }
};
private:
- static BOOL CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
private:
HWND m_hWnd;
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption.cpp b/plugins/HistoryStats/src/dlgoption.cpp
index 8b5acab76e..e48b3bdb7a 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption.cpp
+++ b/plugins/HistoryStats/src/dlgoption.cpp
@@ -9,21 +9,21 @@
* DlgOption
*/
-BOOL CALLBACK DlgOption::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgOption::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- DlgOption* pDlg = reinterpret_cast<DlgOption*>(GetWindowLong(hDlg, DWL_USER));
+ DlgOption* pDlg = reinterpret_cast<DlgOption*>(GetWindowLong(hDlg, DWLP_USER));
switch (msg)
{
case WM_INITDIALOG:
pDlg = new DlgOption(hDlg);
- SetWindowLong(hDlg, DWL_USER, reinterpret_cast<LONG>(pDlg));
+ SetWindowLong(hDlg, DWLP_USER, reinterpret_cast<LONG>(pDlg));
pDlg->onWMInitDialog();
return TRUE;
case WM_DESTROY:
delete pDlg;
- SetWindowLong(hDlg, DWL_USER, 0);
+ SetWindowLong(hDlg, DWLP_USER, 0);
break;
case WM_WINDOWPOSCHANGED:
@@ -69,7 +69,7 @@ BOOL CALLBACK DlgOption::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARA
void DlgOption::onWMInitDialog()
{
- mu::langpack::translateDialog(m_hWnd);
+ TranslateDialogDefault(m_hWnd);
m_bSettingsModified = true;
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption.h b/plugins/HistoryStats/src/dlgoption.h
index bddad3981b..cb51f5d98c 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption.h
+++ b/plugins/HistoryStats/src/dlgoption.h
@@ -39,7 +39,7 @@ private:
: private pattern::NotCopyable<SubBase>
{
private:
- static BOOL CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
private:
DlgOption* m_pParent;
@@ -83,7 +83,7 @@ private:
};
private:
- static BOOL CALLBACK staticInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
private:
OptionsCtrl m_Options;
@@ -206,7 +206,7 @@ private:
};
private:
- static BOOL CALLBACK staticAddProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticAddProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
private:
BandCtrl m_Band;
@@ -313,7 +313,7 @@ private:
};
public:
- static BOOL CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
private:
HWND m_hWnd;
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_subbase.cpp b/plugins/HistoryStats/src/dlgoption_subbase.cpp
index 4b3caf5885..921195d4c9 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_subbase.cpp
+++ b/plugins/HistoryStats/src/dlgoption_subbase.cpp
@@ -7,15 +7,15 @@
* DlgOption::SubBase
*/
-BOOL CALLBACK DlgOption::SubBase::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgOption::SubBase::staticDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- SubBase* pDlg = reinterpret_cast<SubBase*>(GetWindowLong(hDlg, DWL_USER));
+ SubBase* pDlg = reinterpret_cast<SubBase*>(GetWindowLong(hDlg, DWLP_USER));
switch (msg)
{
case WM_INITDIALOG:
pDlg = reinterpret_cast<SubBase*>(lParam);
- SetWindowLong(hDlg, DWL_USER, reinterpret_cast<LONG>(pDlg));
+ SetWindowLong(hDlg, DWLP_USER, reinterpret_cast<LONG>(pDlg));
pDlg->m_hWnd = hDlg;
pDlg->onWMInitDialog();
pDlg->loadSettings();
@@ -24,7 +24,7 @@ BOOL CALLBACK DlgOption::SubBase::staticDlgProc(HWND hDlg, UINT msg, WPARAM wPar
case WM_DESTROY:
pDlg->onWMDestroy();
delete pDlg;
- SetWindowLong(hDlg, DWL_USER, 0);
+ SetWindowLong(hDlg, DWLP_USER, 0);
return TRUE;
}
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_subcolumns.cpp b/plugins/HistoryStats/src/dlgoption_subcolumns.cpp
index 20f03491c0..52155bd0f0 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_subcolumns.cpp
+++ b/plugins/HistoryStats/src/dlgoption_subcolumns.cpp
@@ -9,13 +9,13 @@
* DlgOption::SubColumns
*/
-BOOL CALLBACK DlgOption::SubColumns::staticAddProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgOption::SubColumns::staticAddProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
{
- mu::langpack::translateDialog(hDlg);
+ TranslateDialogDefault(hDlg);
SendMessage(hDlg, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
@@ -193,7 +193,7 @@ BOOL DlgOption::SubColumns::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
if (pNM->action == TVE_COLLAPSE || pNM->action == TVE_COLLAPSERESET ||
(pNM->action == TVE_TOGGLE && pNM->itemNew.state & TVIS_EXPANDED))
{
- SetWindowLong(getHWnd(), DWL_MSGRESULT, TRUE);
+ SetWindowLong(getHWnd(), DWLP_MSGRESULT, TRUE);
return TRUE;
}
}
@@ -209,7 +209,7 @@ BOOL DlgOption::SubColumns::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
void DlgOption::SubColumns::onWMInitDialog()
{
- mu::langpack::translateDialog(getHWnd());
+ TranslateDialogDefault(getHWnd());
// init column band
m_Band << GetDlgItem(getHWnd(), IDC_BAND);
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_subexclude.cpp b/plugins/HistoryStats/src/dlgoption_subexclude.cpp
index ee9c0a59de..8014a0d00f 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_subexclude.cpp
+++ b/plugins/HistoryStats/src/dlgoption_subexclude.cpp
@@ -129,7 +129,7 @@ BOOL DlgOption::SubExclude::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
void DlgOption::SubExclude::onWMInitDialog()
{
- mu::langpack::translateDialog(getHWnd());
+ TranslateDialogDefault(getHWnd());
// init clist
HWND hCList = GetDlgItem(getHWnd(), IDC_CONTACTS);
@@ -192,14 +192,10 @@ void DlgOption::SubExclude::saveSettings()
db.setModule(con::ModHistoryStats);
- HANDLE hContact = mu::db_contact::findFirst();
-
- while (hContact)
- {
- HANDLE hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_FINDCONTACT, reinterpret_cast<WPARAM>(hContact), 0));
-
- if (hItem)
- {
+ MCONTACT hContact = db_find_first();
+ while (hContact) {
+ HANDLE hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_FINDCONTACT, hContact, 0));
+ if (hItem) {
db.setContact(hContact);
int iImage = SendMessage(hCList, CLM_GETEXTRAIMAGE, reinterpret_cast<WPARAM>(hItem), MAKELPARAM(0, 0));
@@ -215,7 +211,7 @@ void DlgOption::SubExclude::saveSettings()
}
}
- hContact = mu::db_contact::findNext(hContact);
+ hContact = db_find_next(hContact);
}
// reset dirty flag
@@ -290,23 +286,17 @@ void DlgOption::SubExclude::updateAllContacts(HWND hCList)
db.setModule(con::ModHistoryStats);
- HANDLE hContact = mu::db_contact::findFirst();
-
- while (hContact)
- {
- HANDLE hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_FINDCONTACT, reinterpret_cast<WPARAM>(hContact), 0));
-
- if (hItem)
- {
+ MCONTACT hContact = db_find_first();
+ while (hContact) {
+ HANDLE hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_FINDCONTACT, hContact, 0));
+ if (hItem) {
db.setContact(hContact);
if (SendMessage(hCList, CLM_GETEXTRAIMAGE, reinterpret_cast<WPARAM>(hItem), MAKELPARAM(0, 0)) == 0xFF)
- {
SendMessage(hCList, CLM_SETEXTRAIMAGE, reinterpret_cast<WPARAM>(hItem), MAKELPARAM(0, db.settingExists(con::SettExclude) ? 1 : 0));
- }
}
- hContact = mu::db_contact::findNext(hContact);
+ hContact = db_find_next(hContact);
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_subglobal.cpp b/plugins/HistoryStats/src/dlgoption_subglobal.cpp
index f87eba190e..907d6a374e 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_subglobal.cpp
+++ b/plugins/HistoryStats/src/dlgoption_subglobal.cpp
@@ -7,13 +7,13 @@
* DlgOption::SubGlobal
*/
-BOOL CALLBACK DlgOption::SubGlobal::staticInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK DlgOption::SubGlobal::staticInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
{
- mu::langpack::translateDialog(hDlg);
+ TranslateDialogDefault(hDlg);
SendMessage(hDlg, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
@@ -106,12 +106,9 @@ BOOL CALLBACK DlgOption::SubGlobal::staticInfoProc(HWND hDlg, UINT msg, WPARAM w
if (GetWindowText(hLink, szTitle, nLen + 1))
{
- mu_text* szEndOfURL = ext::strfunc::str(szTitle, muT(" ["));
-
- if (szEndOfURL)
- {
+ mu_text* szEndOfURL = (mu_text*)ext::strfunc::str(szTitle, muT(" ["));
+ if (szEndOfURL) {
*szEndOfURL = muC('\0');
-
g_pSettings->openURL(szTitle);
}
}
@@ -216,7 +213,7 @@ BOOL DlgOption::SubGlobal::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
if (pNM->action == TVE_COLLAPSE || pNM->action == TVE_COLLAPSERESET ||
(pNM->action == TVE_TOGGLE && pNM->itemNew.state & TVIS_EXPANDED))
{
- SetWindowLong(getHWnd(), DWL_MSGRESULT, TRUE);
+ SetWindowLong(getHWnd(), DWLP_MSGRESULT, TRUE);
return TRUE;
}
}
@@ -239,7 +236,7 @@ BOOL DlgOption::SubGlobal::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
void DlgOption::SubGlobal::onWMInitDialog()
{
- mu::langpack::translateDialog(getHWnd());
+ TranslateDialogDefault(getHWnd());
// init options control
m_Options << GetDlgItem(getHWnd(), IDC_OPTIONS);
@@ -267,23 +264,18 @@ void DlgOption::SubGlobal::onWMInitDialog()
// insert known protocols
m_hHideContactMenuProtos.clear();
- PROTOCOLDESCRIPTOR **protoList;
+ PROTOACCOUNT **protoList;
int protoCount;
if (mu::proto::enumProtocols(&protoCount, &protoList) == 0)
{
upto_each_(i, protoCount)
{
- if (protoList[i]->type != PROTOTYPE_PROTOCOL)
- {
- continue;
- }
-
m_hHideContactMenuProtos.push_back(m_Options.insertCheck(
m_hProtocols,
- Protocol::getDisplayName(protoList[i]->szName).c_str(),
+ Protocol::getDisplayName(protoList[i]->szModuleName).c_str(),
0,
- reinterpret_cast<DWORD>(protoList[i]->szName)));
+ reinterpret_cast<DWORD>(protoList[i]->szModuleName)));
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_subinput.cpp b/plugins/HistoryStats/src/dlgoption_subinput.cpp
index c7e9f438ec..e1d51bb2c3 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_subinput.cpp
+++ b/plugins/HistoryStats/src/dlgoption_subinput.cpp
@@ -68,7 +68,7 @@ BOOL DlgOption::SubInput::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
void DlgOption::SubInput::onWMInitDialog()
{
- mu::langpack::translateDialog(getHWnd());
+ TranslateDialogDefault(getHWnd());
// init options control
m_Options << GetDlgItem(getHWnd(), IDC_OPTIONS);
@@ -110,23 +110,18 @@ void DlgOption::SubInput::onWMInitDialog()
// insert known protocols
m_hProtosIgnore.clear();
- PROTOCOLDESCRIPTOR **protoList;
+ PROTOACCOUNT **protoList;
int protoCount;
if (mu::proto::enumProtocols(&protoCount, &protoList) == 0)
{
upto_each_(i, protoCount)
{
- if (protoList[i]->type != PROTOTYPE_PROTOCOL)
- {
- continue;
- }
-
m_hProtosIgnore.push_back(m_Options.insertCheck(
m_hProtocols,
- Protocol::getDisplayName(protoList[i]->szName).c_str(),
+ Protocol::getDisplayName(protoList[i]->szModuleName).c_str(),
0,
- reinterpret_cast<DWORD>(protoList[i]->szName)));
+ reinterpret_cast<DWORD>(protoList[i]->szModuleName)));
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/dlgoption_suboutput.cpp b/plugins/HistoryStats/src/dlgoption_suboutput.cpp
index 80c942a032..aa10236451 100644
--- a/plugins/!NotAdopted/HistoryStats/dlgoption_suboutput.cpp
+++ b/plugins/HistoryStats/src/dlgoption_suboutput.cpp
@@ -94,7 +94,7 @@ BOOL DlgOption::SubOutput::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
void DlgOption::SubOutput::onWMInitDialog()
{
- mu::langpack::translateDialog(getHWnd());
+ TranslateDialogDefault(getHWnd());
// init option tree(s)
m_Options << GetDlgItem(getHWnd(), IDC_OPTIONS);
diff --git a/plugins/!NotAdopted/HistoryStats/iconlib.cpp b/plugins/HistoryStats/src/iconlib.cpp
index 2eae3e3c11..3647205764 100644
--- a/plugins/!NotAdopted/HistoryStats/iconlib.cpp
+++ b/plugins/HistoryStats/src/iconlib.cpp
@@ -96,7 +96,7 @@ void IconLib::init()
}
}
- m_hHookSkin2IconsChanged = mu::_link::hookEvent(ME_SKIN2_ICONSCHANGED, handleCallbacks);
+ m_hHookSkin2IconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, handleCallbacks);
}
if (!m_bIcoLibAvailable)
@@ -126,12 +126,6 @@ void IconLib::unregisterCallback(CallbackProc callback, LPARAM lParam)
void IconLib::uninit()
{
- if (m_hHookSkin2IconsChanged)
- {
- mu::_link::unhookEvent(m_hHookSkin2IconsChanged);
- m_hHookSkin2IconsChanged = NULL;
- }
-
array_each_(i, m_IconInfo)
{
if (m_IconInfo[i].hIcon)
diff --git a/plugins/!NotAdopted/HistoryStats/iconlib.h b/plugins/HistoryStats/src/iconlib.h
index bc4ab3b1c7..bc4ab3b1c7 100644
--- a/plugins/!NotAdopted/HistoryStats/iconlib.h
+++ b/plugins/HistoryStats/src/iconlib.h
diff --git a/plugins/!NotAdopted/HistoryStats/inout.h b/plugins/HistoryStats/src/inout.h
index e7405f46af..c6e099169d 100644
--- a/plugins/!NotAdopted/HistoryStats/inout.h
+++ b/plugins/HistoryStats/src/inout.h
@@ -31,17 +31,17 @@ public:
return in + out;
}
- operator <(const InOut& other) const
+ int operator <(const InOut& other) const
{
return total() < other.total();
}
- operator >(const InOut& other) const
+ int operator >(const InOut& other) const
{
return total() > other.total();
}
- operator !=(const InOut& other) const
+ int operator !=(const InOut& other) const
{
return total() != other.total();
}
diff --git a/plugins/!NotAdopted/HistoryStats/main.cpp b/plugins/HistoryStats/src/main.cpp
index c0f0ac983d..509d5f53a1 100644
--- a/plugins/!NotAdopted/HistoryStats/main.cpp
+++ b/plugins/HistoryStats/src/main.cpp
@@ -13,14 +13,13 @@
#include "dlgconfigure.h"
HINSTANCE g_hInst;
+int hLangpack;
-static const int g_pluginFileListID = MU_DO_BOTH(2534, 2535);
-static const MUUID g_MPIDHistoryStatsA = { 0x287dd477, 0xf217, 0x4482, { 0xab, 0x88, 0x60, 0x0d, 0x2e, 0x8d, 0x31, 0x0f } };
-static const MUUID g_MPIDHistoryStatsW = { 0xf184f5a0, 0xc198, 0x4454, { 0xa9, 0xb4, 0xf6, 0xe2, 0xfd, 0x53, 0x41, 0x33 } };
+static const int g_pluginFileListID = 2535;
const PLUGININFOEX g_pluginInfoEx = {
/* .cbSize = */ sizeof(PLUGININFOEX),
- /* .shortName = */ MU_DO_BOTH(muA("HistoryStats"), muA("HistoryStats (Unicode)")),
+ /* .shortName = */ muA("HistoryStats"),
/* .version = */ PLUGIN_MAKE_VERSION(0, 1, 5, 3),
/* .description = */ muA("Creates nice statistics using your message history.\r\n")
muA("(Requires Miranda IM ") MU_DO_BOTH(muA("0.6.7"), muA("0.6.7 Unicode")) muA(" or above.)"),
@@ -28,22 +27,8 @@ const PLUGININFOEX g_pluginInfoEx = {
/* .authorEmail = */ muA("miranda@dark-passage.de"),
/* .copyright = */ muA("2005-2007 by Martin Afanasjew (see README for further credits)"),
/* .homepage = */ muA("http://addons.miranda-im.org/details.php?action=viewfile&id=") MU_DO_BOTH(muA("2534"), muA("2535")),
- /* .flags = */ MU_DO_BOTH(0, UNICODE_AWARE),
- /* .replacesDefaultModule = */ 0,
- /* .uuid = */ MU_DO_BOTH(g_MPIDHistoryStatsA, g_MPIDHistoryStatsW),
-};
-
-const PLUGININFO g_pluginInfo = {
- /* .cbSize = */ sizeof(PLUGININFO),
- /* .shortName = */ g_pluginInfoEx.shortName,
- /* .version = */ g_pluginInfoEx.version,
- /* .description = */ g_pluginInfoEx.description,
- /* .author = */ g_pluginInfoEx.author,
- /* .authorEmail = */ g_pluginInfoEx.authorEmail,
- /* .copyright = */ g_pluginInfoEx.copyright,
- /* .homepage = */ g_pluginInfoEx.homepage,
- /* .flags = */ g_pluginInfoEx.flags,
- /* .replacesDefaultModule = */ g_pluginInfoEx.replacesDefaultModule,
+ /* .flags = */ UNICODE_AWARE,
+ /* .uuid = */ { 0xf184f5a0, 0xc198, 0x4454, { 0xa9, 0xb4, 0xf6, 0xe2, 0xfd, 0x53, 0x41, 0x33 } },
};
SettingsSerializer* g_pSettings = NULL;
@@ -53,9 +38,6 @@ bool g_bContactMenuExists = false;
bool g_bExcludeLock = false;
bool g_bConfigureLock = false;
-std::vector<HANDLE> g_hRegisteredServices;
-std::vector<HANDLE> g_hHookedEvents;
-
static HANDLE g_hMenuCreateStatistics = NULL;
static HANDLE g_hMenuShowStatistics = NULL;
static HANDLE g_hMenuConfigure = NULL;
@@ -72,12 +54,9 @@ static HANDLE g_hHistoryCopyContact = NULL;
* services (see m_historystats.h for details)
*/
-static int SvcIsExcluded(WPARAM wParam, LPARAM lParam)
+static INT_PTR SvcIsExcluded(WPARAM hContact, LPARAM lParam)
{
- HANDLE hContact = reinterpret_cast<HANDLE>(wParam);
-
- if (hContact)
- {
+ if (hContact) {
MirandaSettings db;
db.setContact(hContact);
@@ -89,12 +68,9 @@ static int SvcIsExcluded(WPARAM wParam, LPARAM lParam)
return 0;
}
-static int SvcSetExclude(WPARAM wParam, LPARAM lParam)
+static INT_PTR SvcSetExclude(WPARAM hContact, LPARAM lParam)
{
- HANDLE hContact = reinterpret_cast<HANDLE>(wParam);
-
- if (hContact)
- {
+ if (hContact) {
MirandaSettings db;
db.setContact(hContact);
@@ -150,14 +126,13 @@ static void MenuIconsChanged(LPARAM lParam)
* main menu related stuff
*/
-static int MenuCreateStatistics(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuCreateStatistics(WPARAM wParam, LPARAM lParam)
{
Statistic::run(*g_pSettings, Statistic::fromMenu, g_hInst);
-
return 0;
}
-static int MenuShowStatistics(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuShowStatistics(WPARAM wParam, LPARAM lParam)
{
if (g_pSettings->canShowStatistics())
{
@@ -175,10 +150,9 @@ static int MenuShowStatistics(WPARAM wParam, LPARAM lParam)
return 0;
}
-static int MenuConfigure(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuConfigure(WPARAM wParam, LPARAM lParam)
{
DlgConfigure::showModal();
-
return 0;
}
@@ -193,9 +167,9 @@ void AddMainMenu()
bool bInPopup = g_pSettings->m_ShowMainMenuSub;
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcCreateStatistics, MenuCreateStatistics);
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcShowStatistics , MenuShowStatistics );
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcConfigure , MenuConfigure );
+ CreateServiceFunction(con::SvcCreateStatistics, MenuCreateStatistics);
+ CreateServiceFunction(con::SvcShowStatistics, MenuShowStatistics);
+ CreateServiceFunction(con::SvcConfigure, MenuConfigure);
g_hMenuCreateStatistics = mu::clist::addMainMenuItem(
I18N(muT("Create statistics")), // MEMO: implicit translation
@@ -229,44 +203,32 @@ void AddMainMenu()
* contact menu related stuff
*/
-static int MenuToggleExclude(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuToggleExclude(WPARAM hContact, LPARAM lParam)
{
- HANDLE hContact = reinterpret_cast<HANDLE>(wParam);
-
- if (hContact)
- {
+ if (hContact) {
MirandaSettings db;
db.setContact(hContact);
db.setModule(con::ModHistoryStats);
if (db.readBool(con::SettExclude, false))
- {
db.delSetting(con::SettExclude);
- }
else
- {
db.writeBool(con::SettExclude, true);
- }
}
return 0;
}
#if defined(HISTORYSTATS_HISTORYCOPY)
-static int MenuHistoryCopy(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuHistoryCopy(WPARAM hContact, LPARAM lParam)
{
- HANDLE hContact = reinterpret_cast<HANDLE>(wParam);
-
if (hContact)
- {
g_hHistoryCopyContact = hContact;
- }
-
return 0;
}
-static int MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
+static INT_PTR MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
{
HANDLE hTarget = reinterpret_cast<HANDLE>(wParam);
@@ -278,9 +240,9 @@ static int MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
// ask user if this is really what he wants
ext::string strConfirm = ext::str(ext::kformat(i18n(muT("You're going to copy the complete history of #{source_name} (#{source_proto}) to #{target_name} (#{target_proto}). Afterwards, the target history will contain entries from both histories. There is no way to revert this operation. Be careful! This is a rather big operation and has the potential to damage your database. Be sure to have a backup of this database before performing this operation.\r\n\r\nAre you sure you would like to continue?")))
% muT("#{source_name}") * mu::clist::getContactDisplayName(g_hHistoryCopyContact)
- % muT("#{source_proto}") * utils::fromA(mu::proto::getContactBaseProto(g_hHistoryCopyContact))
+ % muT("#{source_proto}") * utils::fromA(GetContactProto(g_hHistoryCopyContact))
% muT("#{target_name}") * mu::clist::getContactDisplayName(hTarget)
- % muT("#{target_proto}") * utils::fromA(mu::proto::getContactBaseProto(hTarget)));
+ % muT("#{target_proto}") * utils::fromA(GetContactProto(hTarget)));
if (MessageBox(0, strConfirm.c_str(), i18n(muT("HistoryStats - Confirm")), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) != IDYES)
{
@@ -302,7 +264,7 @@ static int MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
while (hEvent)
{
- dbe.cbBlob = mu::db_event::getBlobSize(hEvent);
+ dbe.cbBlob = db_event_getBlobSize(hEvent);
if (blobBuffer < dbe.cbBlob)
{
@@ -310,24 +272,18 @@ static int MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
dbe.pBlob = reinterpret_cast<BYTE*>(realloc(dbe.pBlob, blobBuffer));
}
- if (mu::db_event::get(hEvent, &dbe) == 0)
- {
+ if (db_event_get(hEvent, &dbe) == 0) {
++dwCountSuccess;
// clear "first" flag
dbe.flags &= ~DBEF_FIRST;
if (mu::db_event::add(hTarget, &dbe) == NULL)
- {
++dwCountFailAdd;
- }
- }
- else
- {
- ++dwCountFailRead;
}
+ else ++dwCountFailRead;
- hEvent = mu::db_event::findNext(hEvent);
+ hEvent = db_event_findNext(hEvent);
}
free(dbe.pBlob);
@@ -349,13 +305,11 @@ static int MenuHistoryPaste(WPARAM wParam, LPARAM lParam)
}
#endif
-static int EventPreBuildContactMenu(WPARAM wParam, LPARAM lParam)
+static int EventPreBuildContactMenu(WPARAM hContact, LPARAM lParam)
{
- HANDLE hContact = reinterpret_cast<HANDLE>(wParam);
-
if (hContact)
{
- const mu_ansi* szProto = mu::proto::getContactBaseProto(hContact);
+ const mu_ansi* szProto = GetContactProto(hContact);
if ((!g_pSettings->m_ShowContactMenuPseudo && (!szProto || !(mu::protosvc::getCaps(szProto, PFLAGNUM_2) & ~mu::protosvc::getCaps(szProto, PFLAGNUM_5)))) ||
g_pSettings->m_HideContactMenuProtos.find(szProto) != g_pSettings->m_HideContactMenuProtos.end())
@@ -394,13 +348,11 @@ static int EventPreBuildContactMenu(WPARAM wParam, LPARAM lParam)
void AddContactMenu()
{
if (!g_pSettings->m_ShowContactMenu || g_bContactMenuExists)
- {
return;
- }
g_bContactMenuExists = true;
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcToggleExclude, MenuToggleExclude);
+ CreateServiceFunction(con::SvcToggleExclude, MenuToggleExclude);
g_hMenuToggleExclude = mu::clist::addContactMenuItem(
I18N(muT("Exclude from statistics")), // MEMO: implicit translation
@@ -410,8 +362,8 @@ void AddContactMenu()
con::SvcToggleExclude);
#if defined(HISTORYSTATS_HISTORYCOPY)
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcHistoryCopy , MenuHistoryCopy );
- g_hRegisteredServices << mu::_link::createServiceFunction(con::SvcHistoryPaste, MenuHistoryPaste);
+ CreateServiceFunction(con::SvcHistoryCopy, MenuHistoryCopy);
+ CreateServiceFunction(con::SvcHistoryPaste, MenuHistoryPaste);
g_hMenuHistoryCopy = mu::clist::addContactMenuItem(
I18N(muT("Copy history")), // MEMO: implicit translation
@@ -428,7 +380,7 @@ void AddContactMenu()
con::SvcHistoryPaste);
#endif
- g_hHookedEvents << mu::_link::hookEvent(ME_CLIST_PREBUILDCONTACTMENU, EventPreBuildContactMenu);
+ HookEvent(ME_CLIST_PREBUILDCONTACTMENU, EventPreBuildContactMenu);
}
/*
@@ -463,18 +415,12 @@ static int EventModulesLoaded(WPARAM wParam, LPARAM lParam)
g_pSettings->readFromDB();
// integrate into options dialog
- g_hHookedEvents << mu::_link::hookEvent(ME_OPT_INITIALISE, EventOptInitialise);
+ HookEvent(ME_OPT_INITIALISE, EventOptInitialise);
// integrate with icolib
IconLib::init();
IconLib::registerCallback(MenuIconsChanged, 0);
- // register with Updater plugin, if available
- if (mu::updater::_available())
- {
- mu::updater::registerFL(g_pluginFileListID, &g_pluginInfo);
- }
-
// integrate into main/contact menu, if selected
AddMainMenu();
AddContactMenu();
@@ -512,14 +458,6 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvRe
return TRUE;
}
-extern "C" __declspec(dllexport) const PLUGININFO* MirandaPluginInfo(DWORD mirandaVersion)
-{
- OutputDebugString(muT("HistoryStats: MirandaPluginInfo() was called.\n"));
-
- // MEMO: (don't) fail, if version is below minimum
- return &g_pluginInfo;
-}
-
extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
{
OutputDebugString(muT("HistoryStats: MirandaPluginInfoEx() was called.\n"));
@@ -528,19 +466,7 @@ extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD m
return &g_pluginInfoEx;
}
-extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces()
-{
- OutputDebugString(muT("HistoryStats: MirandaPluginInterfaces() was called.\n"));
-
- static const MUUID interfaces[] = {
- MIID_HISTORYSTATS,
- MIID_LAST,
- };
-
- return interfaces;
-}
-
-extern "C" __declspec(dllexport) int Load(PLUGINLINK* link)
+extern "C" __declspec(dllexport) int Load()
{
// init themeing api
ThemeAPI::init();
@@ -561,7 +487,7 @@ extern "C" __declspec(dllexport) int Load(PLUGINLINK* link)
}
// load "mu" system (includes version check)
- if (!mu::load(link))
+ if (!mu::load())
{
MessageBox(
0,
@@ -586,25 +512,17 @@ extern "C" __declspec(dllexport) int Load(PLUGINLINK* link)
g_bContactMenuExists = false;
// register provided services
- g_hRegisteredServices << mu::_link::createServiceFunction(MS_HISTORYSTATS_ISEXCLUDED, SvcIsExcluded);
- g_hRegisteredServices << mu::_link::createServiceFunction(MS_HISTORYSTATS_SETEXCLUDE, SvcSetExclude);
+ CreateServiceFunction(MS_HISTORYSTATS_ISEXCLUDED, SvcIsExcluded);
+ CreateServiceFunction(MS_HISTORYSTATS_SETEXCLUDE, SvcSetExclude);
// hook "modules loaded" to perform further initialization
- g_hHookedEvents << mu::_link::hookEvent(ME_SYSTEM_MODULESLOADED, EventModulesLoaded);
+ HookEvent(ME_SYSTEM_MODULESLOADED, EventModulesLoaded);
return 0;
}
extern "C" __declspec(dllexport) int Unload()
{
- // unhook previously hooked events
- std::for_each(g_hHookedEvents.begin(), g_hHookedEvents.end(), std::ptr_fun(mu::_link::unhookEvent));
- g_hHookedEvents.clear();
-
- // unregister previously registered services
- std::for_each(g_hRegisteredServices.begin(), g_hRegisteredServices.end(), std::ptr_fun(mu::_link::destroyServiceFunction));
- g_hRegisteredServices.clear();
-
// free global settings object
delete g_pSettings;
diff --git a/plugins/!NotAdopted/HistoryStats/main.h b/plugins/HistoryStats/src/main.h
index ac5274da1a..cc0292adb9 100644
--- a/plugins/!NotAdopted/HistoryStats/main.h
+++ b/plugins/HistoryStats/src/main.h
@@ -9,7 +9,6 @@
extern HINSTANCE g_hInst;
-extern const PLUGININFO g_pluginInfo;
extern const PLUGININFOEX g_pluginInfoEx;
extern SettingsSerializer* g_pSettings;
@@ -19,9 +18,6 @@ extern bool g_bContactMenuExists;
extern bool g_bExcludeLock;
extern bool g_bConfigureLock;
-extern std::vector<HANDLE> g_hRegisteredServices;
-extern std::vector<HANDLE> g_hHookedEvents;
-
void AddMainMenu();
void AddContactMenu();
diff --git a/plugins/!NotAdopted/HistoryStats/message.cpp b/plugins/HistoryStats/src/message.cpp
index b72f92bfda..b72f92bfda 100644
--- a/plugins/!NotAdopted/HistoryStats/message.cpp
+++ b/plugins/HistoryStats/src/message.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/message.h b/plugins/HistoryStats/src/message.h
index fe239c5be4..fe239c5be4 100644
--- a/plugins/!NotAdopted/HistoryStats/message.h
+++ b/plugins/HistoryStats/src/message.h
diff --git a/plugins/!NotAdopted/HistoryStats/mirandacontact.cpp b/plugins/HistoryStats/src/mirandacontact.cpp
index 385dac1f9d..367a36fb4e 100644
--- a/plugins/!NotAdopted/HistoryStats/mirandacontact.cpp
+++ b/plugins/HistoryStats/src/mirandacontact.cpp
@@ -26,7 +26,7 @@ void MirandaContact::fetchSlot(int i)
EventInfo& ei = ci.ei;
ei.hContact = ci.hContact;
- ei.dbe.cbBlob = mu::db_event::getBlobSize(ci.hEvent);
+ ei.dbe.cbBlob = db_event_getBlobSize(ci.hEvent);
ei.dbe.cbSize = sizeof(ei.dbe);
if (ei.dbe.cbBlob > ei.nAllocated)
@@ -35,16 +35,16 @@ void MirandaContact::fetchSlot(int i)
ei.dbe.pBlob = reinterpret_cast<PBYTE>(realloc(ei.dbe.pBlob, ei.dbe.cbBlob + 1));
}
- mu::db_event::get(ci.hEvent, &ei.dbe);
+ db_event_get(ci.hEvent, &ei.dbe);
stripMetaID(ei.dbe);
- ci.hEvent = mu::db_event::findNext(ci.hEvent);
+ ci.hEvent = db_event_next(ci.hEvent);
}
void MirandaContact::stripMetaID(DBEVENTINFO& dbe)
{
- if (dbe.szModule == m_strMetaProto)
+ if (dbe.szModule == META_PROTO)
{
mu_ansi* pTextBegin = reinterpret_cast<mu_ansi*>(dbe.pBlob);
@@ -78,7 +78,6 @@ MirandaContact::MirandaContact(const ext::string& strNick, const ext::string& st
, m_strGroup(strGroup)
, m_Sources(sources)
{
- m_strMetaProto = mu::metacontacts::_available() ? mu::metacontacts::getProtocolName() : muA("");
}
MirandaContact::~MirandaContact()
@@ -122,7 +121,7 @@ void MirandaContact::beginRead()
ContactInfo& ci = m_CIs[j];
ci.hContact = m_Sources[j];
- ci.hEvent = mu::db_event::findFirst(ci.hContact);
+ ci.hEvent = db_event_first(ci.hContact);
ci.ei.dbe.pBlob = NULL;
ci.ei.nAllocated = 0;
diff --git a/plugins/!NotAdopted/HistoryStats/mirandacontact.h b/plugins/HistoryStats/src/mirandacontact.h
index 10f07e6d09..c91f79853b 100644
--- a/plugins/!NotAdopted/HistoryStats/mirandacontact.h
+++ b/plugins/HistoryStats/src/mirandacontact.h
@@ -15,19 +15,19 @@ class MirandaContact
{
public:
struct EventInfo {
- HANDLE hContact;
+ MCONTACT hContact;
DBEVENTINFO dbe;
int nAllocated;
// int nDuplicates;
};
struct ContactInfo {
- HANDLE hContact;
+ MCONTACT hContact;
HANDLE hEvent;
EventInfo ei;
};
- typedef std::vector<HANDLE> SourceHandles;
+ typedef std::vector<MCONTACT> SourceHandles;
private:
// general info
@@ -36,9 +36,6 @@ private:
ext::string m_strGroup;
SourceHandles m_Sources;
- // internal data
- ext::a::string m_strMetaProto;
-
protected:
// reading messages
std::vector<ContactInfo> m_CIs;
diff --git a/plugins/!NotAdopted/HistoryStats/mirandahistory.cpp b/plugins/HistoryStats/src/mirandahistory.cpp
index 13810a0c16..2e37729fe3 100644
--- a/plugins/!NotAdopted/HistoryStats/mirandahistory.cpp
+++ b/plugins/HistoryStats/src/mirandahistory.cpp
@@ -11,19 +11,14 @@ void MirandaHistory::populateProtocols()
{
m_Protocols.clear();
- PROTOCOLDESCRIPTOR **protoList;
+ PROTOACCOUNT **protoList;
int protoCount;
if (mu::proto::enumProtocols(&protoCount, &protoList) == 0)
{
upto_each_(i, protoCount)
{
- if (protoList[i]->type != PROTOTYPE_PROTOCOL)
- {
- continue;
- }
-
- ext::a::string protoName = protoList[i]->szName;
+ ext::a::string protoName = protoList[i]->szModuleName;
Protocol& curProto = m_Protocols[protoName];
@@ -68,17 +63,17 @@ void MirandaHistory::makeContactsAvailable()
void MirandaHistory::readContacts()
{
bool bHandleMeta = mu::metacontacts::_available() && m_Settings.m_MetaContactsMode != Settings::mcmIgnoreMeta;
- ext::a::string strMetaProto = bHandleMeta ? mu::metacontacts::getProtocolName() : muA("");
+ ext::a::string strMetaProto = bHandleMeta ? META_PROTO : muA("");
MirandaSettings db;
- HANDLE hContact = mu::db_contact::findFirst();
- std::vector<HANDLE> sources;
-
+ std::vector<MCONTACT> sources;
+
+ MCONTACT hContact = db_find_first();
while (hContact)
{
db.setContact(hContact);
- const mu_ansi* pProtoName = mu::proto::getContactBaseProto(hContact);
+ const mu_ansi* pProtoName = GetContactProto(hContact);
// if something leads to ignorance of conact jump to end of
// processing this contact via 'break'
@@ -102,9 +97,7 @@ void MirandaHistory::readContacts()
// ignore because of filtered protocol?
if (m_Settings.m_ProtosIgnore.find(curProtoName) != m_Settings.m_ProtosIgnore.end())
- {
break;
- }
// init list of event sources
sources.clear();
@@ -131,7 +124,7 @@ void MirandaHistory::readContacts()
{
for (int i = 0; i < numSubs; ++i)
{
- HANDLE hSubContact = mu::metacontacts::getSubContact(hContact, i);
+ MCONTACT hSubContact = mu::metacontacts::getSubContact(hContact, i);
if (hSubContact)
{
@@ -144,10 +137,8 @@ void MirandaHistory::readContacts()
else
{
// ignore because of meta-contact?
- if (mu::metacontacts::getMetaContact(hContact))
- {
+ if (db_mc_getMeta(hContact))
break;
- }
}
}
@@ -165,7 +156,7 @@ void MirandaHistory::readContacts()
m_Contacts.push_back(pContact);
} while (false);
- hContact = mu::db_contact::findNext(hContact);
+ hContact = db_find_next(hContact);
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/mirandahistory.h b/plugins/HistoryStats/src/mirandahistory.h
index 6d344de891..6d344de891 100644
--- a/plugins/!NotAdopted/HistoryStats/mirandahistory.h
+++ b/plugins/HistoryStats/src/mirandahistory.h
diff --git a/plugins/HistoryStats/src/mirandasettings.cpp b/plugins/HistoryStats/src/mirandasettings.cpp
new file mode 100644
index 0000000000..34d8342d38
--- /dev/null
+++ b/plugins/HistoryStats/src/mirandasettings.cpp
@@ -0,0 +1,143 @@
+#include "_globals.h"
+#include "mirandasettings.h"
+
+
+MirandaSettings::MirandaSettings()
+ : m_hContact(0)
+{
+}
+
+bool MirandaSettings::readBool(const mu_ansi* szSetting, bool bDefault) const
+{
+ return (readByte(szSetting, bDefault ? 1 : 0) != 0);
+}
+
+int MirandaSettings::readByte(const mu_ansi* szSetting, int bDefault) const
+{
+ return db_get_b(m_hContact, m_strModule.c_str(), szSetting, bDefault);
+}
+
+int MirandaSettings::readWord(const mu_ansi* szSetting, int wDefault) const
+{
+ return db_get_w(m_hContact, m_strModule.c_str(), szSetting, wDefault);
+}
+
+int MirandaSettings::readDWord(const mu_ansi* szSetting, int dwDefault) const
+{
+ return db_get_dw(m_hContact, m_strModule.c_str(), szSetting, dwDefault);
+}
+
+ext::string MirandaSettings::readStr(const mu_ansi* szSetting, const mu_text* szDefault) const
+{
+ DBVARIANT dbv;
+ if (db_get_s(m_hContact, m_strModule.c_str(), szSetting, &dbv))
+ return szDefault;
+
+ ext::string str = (dbv.type != DBVT_ASCIIZ) ? szDefault : utils::fromUTF8(dbv.pszVal);
+ db_free(&dbv);
+ return str;
+}
+
+ext::string MirandaSettings::readStrDirect(const mu_ansi* szSetting, const mu_text* szDefault) const
+{
+ DBVARIANT dbv;
+
+ ZeroMemory(&dbv, sizeof(dbv));
+
+ dbv.type = DBVT_WCHAR;
+
+ if (db_get_s(m_hContact, m_strModule.c_str(), szSetting, &dbv, 0))
+ return szDefault;
+
+ ext::string str;
+
+ switch (dbv.type) {
+ case DBVT_ASCIIZ:
+ str = utils::fromA(dbv.pszVal);
+ break;
+
+ case DBVT_WCHAR:
+ str = utils::fromW(dbv.pwszVal);
+ break;
+
+ case DBVT_UTF8:
+ str = utils::fromUTF8(dbv.pszVal);
+ break;
+
+ default:
+ str = szDefault;
+ break;
+ }
+
+ db_free(&dbv);
+ return str;
+}
+
+void MirandaSettings::readTree(const mu_ansi* szSetting, const mu_text* szDefault, SettingsTree& value) const
+{
+ value.fromString(readStr(szSetting, szDefault));
+}
+
+void MirandaSettings::writeBool(const mu_ansi* szSetting, bool bValue) const
+{
+ writeByte(szSetting, bValue ? 1 : 0);
+}
+
+void MirandaSettings::writeByte(const mu_ansi* szSetting, int bValue) const
+{
+ db_set_b(m_hContact, m_strModule.c_str(), szSetting, bValue);
+}
+
+void MirandaSettings::writeWord(const mu_ansi* szSetting, int wValue) const
+{
+ db_set_w(m_hContact, m_strModule.c_str(), szSetting, wValue);
+}
+
+void MirandaSettings::writeDWord(const mu_ansi* szSetting, int dwValue) const
+{
+ db_set_dw(m_hContact, m_strModule.c_str(), szSetting, dwValue);
+}
+
+void MirandaSettings::writeStr(const mu_ansi* szSetting, const mu_text* szValue) const
+{
+ db_set_ts(m_hContact, m_strModule.c_str(), szSetting, szValue);
+}
+
+void MirandaSettings::writeStrDirect(const mu_ansi* szSetting, const mu_text* szValue) const
+{
+ db_set_ts(m_hContact, m_strModule.c_str(), szSetting, szValue);
+}
+
+void MirandaSettings::writeTree(const mu_ansi* szSetting, const SettingsTree& value) const
+{
+ writeStr(szSetting, value.toString().c_str());
+}
+
+bool MirandaSettings::settingExists(const mu_ansi* szSetting) const
+{
+ DBVARIANT dbv;
+ if (db_get_s(m_hContact, m_strModule.c_str(), szSetting, &dbv, 0))
+ return false;
+
+ db_free(&dbv);
+ return true;
+}
+
+bool MirandaSettings::delSetting(const mu_ansi* szSetting)
+{
+ return db_unset(m_hContact, m_strModule.c_str(), szSetting) == 0;
+}
+
+int MirandaSettings::enumSettingsProc(const mu_ansi* szSetting, LPARAM lParam)
+{
+ SetInserter* pInserter = reinterpret_cast<SetInserter*>(lParam);
+
+ *pInserter = szSetting;
+
+ return 0;
+}
+
+void MirandaSettings::enumSettings(SetInserter& insertIterator)
+{
+ mu::db_contact::enumSettings(m_hContact, m_strModule.c_str(), enumSettingsProc, reinterpret_cast<LPARAM>(&insertIterator));
+}
diff --git a/plugins/!NotAdopted/HistoryStats/mirandasettings.h b/plugins/HistoryStats/src/mirandasettings.h
index c584978ad5..827c9f4ac5 100644
--- a/plugins/!NotAdopted/HistoryStats/mirandasettings.h
+++ b/plugins/HistoryStats/src/mirandasettings.h
@@ -18,13 +18,7 @@ public:
typedef std::insert_iterator<SettingsSet> SetInserter;
private:
- typedef int (*fnGetSettingStr)(HANDLE, const mu_ansi*, const mu_ansi*, DBVARIANT*);
-
-private:
- static fnGetSettingStr m_pGetSettingStr;
-
-private:
- HANDLE m_hContact;
+ MCONTACT m_hContact;
ext::a::string m_strModule;
private:
@@ -35,8 +29,8 @@ public:
explicit MirandaSettings();
// contact/module management
- HANDLE getContact() const { return m_hContact; }
- void setContact(HANDLE hContact) { m_hContact = hContact; }
+ MCONTACT getContact() const { return m_hContact; }
+ void setContact(MCONTACT hContact) { m_hContact = hContact; }
const ext::a::string& getModule() const { return m_strModule; }
void setModule(const mu_ansi* module) { m_strModule = module; }
diff --git a/plugins/HistoryStats/src/mu_common.cpp b/plugins/HistoryStats/src/mu_common.cpp
new file mode 100644
index 0000000000..4ab9da142a
--- /dev/null
+++ b/plugins/HistoryStats/src/mu_common.cpp
@@ -0,0 +1,527 @@
+#include "_globals.h"
+#include "mu_common.h"
+
+#include <map>
+#include <set>
+
+namespace mu
+{
+ /*
+ * clist
+ */
+
+ namespace clist
+ {
+ HANDLE addMainMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, const mu_text* pszPopupName /* = NULL */, int popupPosition /* = 0 */, DWORD hotKey /* = 0 */)
+ {
+ // TODO: support for unicode-core with unicode-aware CList
+ CLISTMENUITEM mi;
+
+ ZeroMemory(&mi, sizeof(mi));
+
+ mi.cbSize = sizeof(mi);
+ mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
+ mi.flags = flags;
+ mi.position = position;
+ mi.hIcon = hIcon;
+ mi.pszService = const_cast<mu_ansi*>(pszService);
+ mi.pszPopupName = MU_DO_BOTH(const_cast<mu_ansi*>(pszPopupName), wideToAnsiDup(pszPopupName));
+ mi.popupPosition = popupPosition;
+ mi.hotKey = hotKey;
+
+ HANDLE res = Menu_AddMainMenuItem(&mi);
+
+ MU_DO_WIDE(freeAnsi(mi.pszName));
+ MU_DO_WIDE(freeAnsi(mi.pszPopupName));
+
+ return res;
+ }
+
+ HANDLE addContactMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, DWORD hotKey /* = 0 */, const mu_ansi* pszContactOwner /* = NULL */)
+ {
+ // TODO: support for unicode-core with unicode-aware CList
+ CLISTMENUITEM mi;
+
+ ZeroMemory(&mi, sizeof(mi));
+
+ mi.cbSize = sizeof(mi);
+ mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
+ mi.flags = flags;
+ mi.position = position;
+ mi.hIcon = hIcon;
+ mi.pszService = const_cast<mu_ansi*>(pszService);
+ mi.hotKey = hotKey;
+ mi.pszContactOwner = const_cast<mu_ansi*>(pszContactOwner);
+
+ HANDLE res = Menu_AddContactMenuItem(&mi);
+
+ MU_DO_WIDE(freeAnsi(mi.pszName));
+
+ return res;
+ }
+
+ int modifyMenuItem(HANDLE hMenuItem, DWORD toModify, const mu_text* pszName /* = NULL */, DWORD flags /* = 0 */, HICON hIcon /* = NULL */, DWORD hotKey /* = 0 */)
+ {
+ // TODO: support for unicode-core with unicode-aware CList
+ CLISTMENUITEM mi;
+
+ ZeroMemory(&mi, sizeof(mi));
+
+ mi.cbSize = sizeof(mi);
+ mi.pszName = MU_DO_BOTH(const_cast<mu_ansi*>(pszName), wideToAnsiDup(pszName));
+ mi.flags = toModify | flags;
+ mi.hIcon = hIcon;
+ mi.hotKey = hotKey;
+
+ int res = CallService(MS_CLIST_MODIFYMENUITEM, reinterpret_cast<WPARAM>(hMenuItem), reinterpret_cast<LPARAM>(&mi));
+
+ MU_DO_WIDE(freeAnsi(mi.pszName));
+
+ return res;
+ }
+
+ const mu_text* getContactDisplayName(MCONTACT hContact)
+ {
+ return reinterpret_cast<const mu_text*>(CallService(MS_CLIST_GETCONTACTDISPLAYNAME, hContact, GCDNF_UNICODE));
+ }
+
+ const mu_text* getStatusModeDescription(int nStatusMode)
+ {
+ return reinterpret_cast<const mu_text*>(CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, static_cast<WPARAM>(nStatusMode), GSMDF_UNICODE));
+ }
+ }
+
+ /*
+ * db
+ */
+
+ namespace db
+ {
+ int getProfilePath(int cbName, mu_text* pszName)
+ {
+ // TODO: support for unicode core (if supported)
+#if defined(MU_WIDE)
+ mu_ansi* pszNameAnsi = new mu_ansi[cbName];
+
+ int ret = CallService(MS_DB_GETPROFILEPATH, cbName, reinterpret_cast<LPARAM>(pszNameAnsi));
+
+ if (ret == 0)
+ {
+ ansiToWide(pszNameAnsi, pszName, cbName);
+ }
+
+ delete pszNameAnsi;
+
+ return ret;
+#else // MU_WIDE
+ return CallService(MS_DB_GETPROFILEPATH, cbName, reinterpret_cast<LPARAM>(pszName));
+#endif // MU_WIDE
+ }
+
+ int getProfileName(int cbName, mu_text* pszName)
+ {
+ // TODO: support for unicode core (if supported)
+#if defined(MU_WIDE)
+ mu_ansi* pszNameAnsi = new mu_ansi[cbName];
+
+ int ret = CallService(MS_DB_GETPROFILENAME, cbName, reinterpret_cast<LPARAM>(pszNameAnsi));
+
+ if (ret == 0)
+ {
+ ansiToWide(pszNameAnsi, pszName, cbName);
+ }
+
+ delete pszNameAnsi;
+
+ return ret;
+#else // MU_WIDE
+ return CallService(MS_DB_GETPROFILENAME, cbName, reinterpret_cast<LPARAM>(pszName));
+#endif // MU_WIDE
+ }
+
+ void setSafetyMode(bool safetyMode)
+ {
+ CallService(MS_DB_SETSAFETYMODE, BOOL_(safetyMode), 0);
+ }
+ }
+
+ /*
+ * db_time
+ */
+
+ namespace db_contact
+ {
+ int enumSettings(MCONTACT hContact, const mu_ansi* szModule, DBSETTINGENUMPROC pEnumProc, LPARAM lProcParam)
+ {
+ DBCONTACTENUMSETTINGS dbces;
+
+ dbces.pfnEnumProc = pEnumProc;
+ dbces.lParam = lProcParam;
+ dbces.szModule = szModule;
+ dbces.ofsSettings = 0;
+
+ return CallService(MS_DB_CONTACT_ENUMSETTINGS, hContact, reinterpret_cast<LPARAM>(&dbces));
+ }
+ }
+
+ namespace db_time
+ {
+ DWORD timestampToLocal(DWORD timestamp)
+ {
+ return static_cast<DWORD>(CallService(MS_DB_TIME_TIMESTAMPTOLOCAL, static_cast<WPARAM>(timestamp), 0));
+ }
+ }
+
+ /*
+ * icolib
+ */
+
+ namespace icolib
+ {
+ bool _available()
+ {
+ return true;
+ }
+
+ void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, const mu_ansi* szDefaultFile, int iDefaultIndex, int cx /* = 16 */, int cy /* = 16 */)
+ {
+ SKINICONDESC sid;
+
+ sid.cbSize = sizeof(sid);
+ sid.ptszSection = const_cast<mu_text*>(szSection);
+ sid.ptszDescription = const_cast<mu_text*>(szDescription);
+ sid.pszName = const_cast<mu_ansi*>(szIconName);
+ sid.pszDefaultFile = const_cast<mu_ansi*>(szDefaultFile);
+ sid.iDefaultIndex = iDefaultIndex;
+ sid.hDefaultIcon = NULL;
+ sid.cx = cx;
+ sid.cy = cy;
+ sid.flags = MU_DO_BOTH(0, SIDF_UNICODE);
+ Skin_AddIcon(&sid);
+ }
+
+ void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, HICON hDefaultIcon, int cx /* = 16 */, int cy /* = 16 */)
+ {
+ SKINICONDESC sid;
+
+ sid.cbSize = sizeof(sid);
+ sid.ptszSection = const_cast<mu_text*>(szSection);
+ sid.ptszDescription = const_cast<mu_text*>(szDescription);
+ sid.pszName = const_cast<mu_ansi*>(szIconName);
+ sid.pszDefaultFile = NULL;
+ sid.iDefaultIndex = 0;
+ sid.hDefaultIcon = hDefaultIcon;
+ sid.cx = cx;
+ sid.cy = cy;
+ sid.flags = MU_DO_BOTH(0, SIDF_UNICODE);
+ Skin_AddIcon(&sid);
+ }
+
+ HICON getIcon(const mu_ansi* szIconName)
+ {
+ return reinterpret_cast<HICON>(CallService(MS_SKIN2_GETICON, 0, reinterpret_cast<LPARAM>(szIconName)));
+ }
+ }
+
+ /*
+ * langpack
+ */
+
+ namespace langpack
+ {
+ const mu_text* translateString(const mu_text* szEnglish)
+ {
+ return reinterpret_cast<const mu_text*>(CallService(MS_LANGPACK_TRANSLATESTRING, MU_DO_BOTH(0, LANG_UNICODE), reinterpret_cast<LPARAM>(szEnglish)));
+ }
+
+ UINT getCodePage()
+ {
+ static UINT CodePage = -1;
+
+ if (CodePage == -1)
+ {
+ CodePage = ServiceExists(MS_LANGPACK_GETCODEPAGE) ? CallService(MS_LANGPACK_GETCODEPAGE, 0, 0) : CP_ACP;
+ }
+
+ return CodePage;
+ }
+ }
+
+ /*
+ * metacontacts [external]
+ */
+
+ namespace metacontacts
+ {
+ bool _available()
+ {
+ return true;
+ }
+
+ int getNumContacts(MCONTACT hMetaContact)
+ {
+ return CallService(MS_MC_GETNUMCONTACTS, hMetaContact, 0);
+ }
+
+ MCONTACT getSubContact(MCONTACT hMetaContact, int iContactNumber)
+ {
+ return CallService(MS_MC_GETSUBCONTACT, hMetaContact, iContactNumber);
+ }
+ }
+
+ /*
+ * opt
+ */
+
+ namespace opt
+ {
+ void addPage(WPARAM addInfo, const mu_text* pszGroup, const mu_text* pszTitle, const mu_text* pszTab, DLGPROC pfnDlgProc, const mu_ansi* pszTemplate, HINSTANCE hInstance, DWORD flags /* = ODPF_BOLDGROUPS */)
+ {
+ OPTIONSDIALOGPAGE odp = { sizeof(odp) };
+ odp.ptszTitle = const_cast<mu_text*>(pszTitle);
+ odp.pfnDlgProc = pfnDlgProc;
+ odp.pszTemplate = const_cast<mu_ansi*>(pszTemplate);
+ odp.hInstance = hInstance;
+ odp.ptszGroup = const_cast<mu_text*>(pszGroup);
+ odp.flags = flags | MU_DO_BOTH(0, ODPF_UNICODE);
+ odp.ptszTab = const_cast<mu_text*>(pszTab);
+ Options_AddPage(addInfo, &odp);
+ }
+ }
+
+ /*
+ * png
+ */
+
+ namespace png
+ {
+ bool _available()
+ {
+ return
+ true &&
+ ServiceExists(MS_DIB2PNG);
+ }
+
+ bool dibToPng(const BITMAPINFOHEADER* pBMIH, const BYTE* pDIData, BYTE* pImageData, long* pImageLen)
+ {
+ DIB2PNG info;
+
+ info.pbmi = const_cast<BITMAPINFO*>(reinterpret_cast<const BITMAPINFO*>(pBMIH));
+ info.pDiData = const_cast<BYTE*>(pDIData);
+ info.pResult = pImageData;
+ info.pResultLen = pImageLen;
+
+ return bool_(CallService(MS_DIB2PNG, 0, reinterpret_cast<LPARAM>(&info)));
+ }
+ }
+
+ /*
+ * proto
+ */
+
+ namespace proto
+ {
+ int enumProtocols(int* numProtocols, PROTOACCOUNT*** ppProtoDescriptors)
+ {
+ return ProtoEnumAccounts(numProtocols, ppProtoDescriptors);
+ }
+
+ const mu_ansi* getContactBaseProto(MCONTACT hContact)
+ {
+ return reinterpret_cast<const mu_ansi*>(CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0));
+ }
+ }
+
+ /*
+ * protosvc
+ */
+
+ namespace protosvc
+ {
+ DWORD getCaps(const mu_ansi* szProto, int flagNum)
+ {
+ return (DWORD)CallProtoService(szProto, PS_GETCAPS, static_cast<WPARAM>(flagNum), 0);
+ }
+
+ int getName(const mu_ansi* szProto, int cchName, mu_text* szName)
+ {
+ return CallProtoService(szProto, PS_GETNAME, static_cast<WPARAM>(cchName), reinterpret_cast<LPARAM>(szName));
+ }
+
+ HICON loadIcon(const mu_ansi* szProto, int whichIcon)
+ {
+ return reinterpret_cast<HICON>(CallProtoService(szProto, PS_LOADICON, static_cast<WPARAM>(whichIcon), 0));
+ }
+ }
+
+ /*
+ * skin
+ */
+
+ namespace skin
+ {
+ HICON loadIcon(int id)
+ {
+ return reinterpret_cast<HICON>(CallService(MS_SKIN_LOADICON, id, 0));
+ }
+ }
+
+ /*
+ * system
+ */
+
+ namespace system
+ {
+ DWORD getVersion()
+ {
+ return static_cast<DWORD>(CallService(MS_SYSTEM_GETVERSION, 0, 0));
+ }
+
+ int getVersionText(int cchVersion, mu_ansi* szVersion)
+ {
+ return CallService(MS_SYSTEM_GETVERSIONTEXT, cchVersion, reinterpret_cast<LPARAM>(szVersion));
+ }
+
+ int terminated()
+ {
+ return CallService(MS_SYSTEM_TERMINATED, 0, 0);
+ }
+ }
+
+ /*
+ * utils
+ */
+
+ namespace utils
+ {
+ int pathToRelative(const mu_text* pszPath, mu_text* pszNewPath)
+ {
+ return CallService(MU_DO_BOTH(MS_UTILS_PATHTORELATIVE, MS_UTILS_PATHTORELATIVEW), reinterpret_cast<WPARAM>(pszPath), reinterpret_cast<LPARAM>(pszNewPath));
+ }
+
+ int pathToAbsolute(const mu_text* pszPath, mu_text* pszNewPath)
+ {
+ return CallService(MU_DO_BOTH(MS_UTILS_PATHTOABSOLUTE, MS_UTILS_PATHTOABSOLUTEW), reinterpret_cast<WPARAM>(pszPath), reinterpret_cast<LPARAM>(pszNewPath));
+ }
+ }
+
+ /*
+ * core interface functions
+ */
+
+ bool load()
+ {
+ // check for version
+ if (!isMirandaVersionOk(system::getVersion()))
+ return false;
+
+ return true;
+ }
+
+ void unload()
+ {
+ }
+
+ DWORD getMinimalMirandaVersion()
+ {
+ // MEMO: version dependency check
+ return PLUGIN_MAKE_VERSION(0, 6, 7, 0);
+ }
+
+ bool isMirandaVersionOk(DWORD version)
+ {
+ return (version >= getMinimalMirandaVersion());
+ }
+
+ bool isMirandaUnicode()
+ {
+ if (system::getVersion() < PLUGIN_MAKE_VERSION(0, 4, 3, 33))
+ {
+ return false;
+ }
+
+ mu_ansi szVersion[256] = { 0 };
+
+ if (system::getVersionText(256, szVersion) != 0)
+ {
+ return false;
+ }
+
+ if (!strstr(szVersion, muA("Unicode")))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ /*
+ * string handling
+ */
+
+ mu_ansi* wideToAnsiDup(const mu_wide* pszWide, UINT uCP /* = CP_ACP */)
+ {
+ if (!pszWide)
+ {
+ return NULL;
+ }
+
+ int len = WideCharToMultiByte(uCP, 0, pszWide, -1, NULL, 0, NULL, NULL);
+ mu_ansi* result = reinterpret_cast<mu_ansi*>(malloc(sizeof(mu_ansi) * len));
+
+ if (!result)
+ {
+ return NULL;
+ }
+
+ WideCharToMultiByte(uCP, 0, pszWide, -1, result, len, NULL, NULL);
+ result[len - 1] = 0;
+
+ return result;
+ }
+
+ mu_wide* ansiToWideDup(const mu_ansi* pszAnsi, UINT uCP /* = CP_ACP */)
+ {
+ if (!pszAnsi)
+ {
+ return NULL;
+ }
+
+ int len = MultiByteToWideChar(uCP, 0, pszAnsi, -1, NULL, 0);
+ mu_wide* result = reinterpret_cast<mu_wide*>(malloc(sizeof(mu_wide) * len));
+
+ if (!result)
+ {
+ return NULL;
+ }
+
+ MultiByteToWideChar(uCP, 0, pszAnsi, -1, result, len);
+ result[len - 1] = 0;
+
+ return result;
+ }
+
+ mu_ansi* wideToAnsi(const mu_wide* pszWide, mu_ansi* pszRes, int maxLen, UINT uCP /* = CP_ACP */)
+ {
+ if (!pszWide)
+ {
+ return NULL;
+ }
+
+ WideCharToMultiByte(uCP, 0, pszWide, -1, pszRes, maxLen, NULL, NULL);
+
+ return pszRes;
+ }
+
+ mu_wide* ansiToWide(const mu_ansi* pszAnsi, mu_wide* pszRes, int maxLen, UINT uCP /* = CP_ACP */)
+ {
+ if (!pszAnsi)
+ {
+ return NULL;
+ }
+
+ MultiByteToWideChar(uCP, 0, pszAnsi, -1, pszRes, maxLen);
+
+ return pszRes;
+ }
+}
diff --git a/plugins/HistoryStats/src/mu_common.h b/plugins/HistoryStats/src/mu_common.h
new file mode 100644
index 0000000000..5c103743fd
--- /dev/null
+++ b/plugins/HistoryStats/src/mu_common.h
@@ -0,0 +1,291 @@
+#if !defined(HISTORYSTATS_GUARD_MU_COMMON_H)
+#define HISTORYSTATS_GUARD_MU_COMMON_H
+
+/*
+ * mu = miranda unified services
+ */
+
+#define _WIN32_WINDOWS 0x0500 // for WM_MOUSEWHEEL
+#define _WIN32_WINNT 0x0501 // for WM_THEMECHANGED
+
+#include <windows.h>
+#include <tchar.h>
+#include <stdio.h>
+
+/*
+ * include miranda headers
+ */
+
+#define MIRANDA_VER 0x0A00
+
+#include <newpluginapi.h>
+
+#include <m_awaymsg.h> // not used
+#include <m_button.h> // not used
+#include <m_chat.h> // not used
+#include <m_clc.h>
+#include <m_clist.h>
+#include <m_clistint.h> // not used
+#include <m_clui.h> // not used
+#include <m_contacts.h>
+#include <m_database.h>
+#include <m_email.h> // not used
+#include <m_file.h> // not used
+#include <m_findadd.h> // not used
+#include <m_fontservice.h> // not used
+#include <m_genmenu.h> // not used
+#include <m_history.h> // not used
+#include <m_icolib.h>
+#include <m_idle.h> // not used
+#include <m_ignore.h> // not used
+#include <m_langpack.h>
+#include <m_message.h> // not used
+#include <m_netlib.h> // not used
+#include <m_options.h>
+#include <m_png.h>
+#include <m_popup.h> // not used
+#include <m_protocols.h>
+#include <m_protomod.h> // not used
+#include <m_protosvc.h>
+#include <m_skin.h>
+#include <m_system.h>
+#include <m_system_cpp.h> // not used
+#include <m_url.h> // not used
+#include <m_userinfo.h> // not used
+#include <m_utils.h>
+
+#include <m_addcontact.h> // not used, depends on m_protosvc.h
+#include <m_icq.h> // depends on m_protosvc.h
+
+#include <m_metacontacts.h>
+#include <m_historystats.h> // our own header
+
+/*
+ * basic defines
+ */
+
+#if defined(_UNICODE)
+ #undef MU_ANSI
+ #define MU_WIDE
+#else
+ #define MU_ANSI
+ #undef MU_WIDE
+#endif
+
+/*
+ * helper macros to avoid many "#if defined(MU_WIDE) ... #else ... #endif" constructs
+ */
+
+#if defined(MU_WIDE)
+ #define MU_DO_BOTH(ansi, wide) wide
+ #define MU_DO_WIDE(wide) wide
+ #define MU_DO_ANSI(ansi) (void) 0
+#else
+ #define MU_DO_BOTH(ansi, wide) ansi
+ #define MU_DO_WIDE(wide) (void) 0
+ #define MU_DO_ANSI(ansi) ansi
+#endif
+
+/*
+ * common types mu_wide/mu_ansi/mu_text
+ */
+
+typedef wchar_t mu_wide;
+typedef char mu_ansi;
+typedef MU_DO_BOTH(char, wchar_t) mu_text;
+
+/*
+ * common macros for wrapping text
+ */
+
+#define muC(x) x
+#define muW(x) L##x
+#define muA(x) x
+#define muT(x) MU_DO_BOTH(muA(x), muW(x))
+
+/*
+ * helper functions
+ */
+
+namespace mu
+{
+ /*
+ * clist
+ */
+
+ namespace clist
+ {
+ HANDLE addMainMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, const mu_text* pszPopupName = NULL, int popupPosition = 0, DWORD hotKey = 0);
+ HANDLE addContactMenuItem(const mu_text* pszName, DWORD flags, int position, HICON hIcon, const mu_ansi* pszService, DWORD hotKey = 0, const mu_ansi* pszContactOwner = NULL);
+ int modifyMenuItem(HANDLE hMenuItem, DWORD toModify, const mu_text* pszName = NULL, DWORD flags = 0, HICON hIcon = NULL, DWORD hotKey = 0);
+ const mu_text* getContactDisplayName(MCONTACT hContact);
+ const mu_text* getStatusModeDescription(int nStatusMode);
+ }
+
+ /*
+ * db
+ */
+
+ namespace db
+ {
+ int getProfilePath(int cbName, mu_text* pszName);
+ int getProfileName(int cbName, mu_text* pszName);
+ void setSafetyMode(bool safetyMode);
+ }
+
+ /*
+ * db_contact
+ */
+
+ namespace db_contact
+ {
+ int enumSettings(MCONTACT hContact, const mu_ansi* szModule, DBSETTINGENUMPROC pEnumProc, LPARAM lProcParam);
+ int getCount();
+ }
+
+ /*
+ * db_time
+ */
+
+ namespace db_time
+ {
+ DWORD timestampToLocal(DWORD timestamp);
+ }
+
+ /*
+ * icolib
+ */
+
+ namespace icolib
+ {
+ bool _available();
+ void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, const mu_ansi* szDefaultFile, int iDefaultIndex, int cx = 16, int cy = 16);
+ void addIcon(const mu_text* szSection, const mu_text* szDescription, const mu_ansi* szIconName, HICON hDefaultIcon, int cx = 16, int cy = 16);
+ HICON getIcon(const mu_ansi* szIconName);
+ }
+
+ /*
+ * langpack
+ */
+
+ namespace langpack
+ {
+ int translateDialog(HWND hwndDlg, DWORD flags = 0, const int* ignoreControls = NULL);
+ const mu_text* translateString(const mu_text* szEnglish);
+ UINT getCodePage();
+ }
+
+ /*
+ * metacontacts [external]
+ */
+
+ namespace metacontacts
+ {
+ bool _available();
+ int getNumContacts(MCONTACT hMetaContact);
+ MCONTACT getSubContact(MCONTACT hMetaContact, int iContactNumber);
+ }
+
+ /*
+ * opt
+ */
+
+ namespace opt
+ {
+ void addPage(WPARAM addInfo, const mu_text* pszGroup, const mu_text* pszTitle, const mu_text* pszTab, DLGPROC pfnDlgProc, const mu_ansi* pszTemplate, HINSTANCE hInstance, DWORD flags = ODPF_BOLDGROUPS);
+ }
+
+ /*
+ * png
+ */
+
+ namespace png
+ {
+ bool _available();
+ bool dibToPng(const BITMAPINFOHEADER* pBMIH, const BYTE* pDIData, BYTE* pImageData, long* pImageLen);
+ }
+
+ /*
+ * proto
+ */
+
+ namespace proto
+ {
+ int enumProtocols(int* numProtocols, PROTOACCOUNT*** ppProtoDescriptors);
+ const mu_ansi* getContactBaseProto(MCONTACT hContact);
+ }
+
+ /*
+ * protosvc
+ */
+
+ namespace protosvc
+ {
+ DWORD getCaps(const mu_ansi* szProto, int flagNum);
+ int getName(const mu_ansi* szProto, int cchName, mu_text* szName);
+ HICON loadIcon(const mu_ansi* szProto, int whichIcon);
+ }
+
+ /*
+ * skin
+ */
+
+ namespace skin
+ {
+ HICON loadIcon(int id);
+ }
+
+ /*
+ * system
+ */
+
+ namespace system
+ {
+ DWORD getVersion();
+ int getVersionText(int cchVersion, mu_ansi* szVersion);
+ int terminated();
+ }
+
+ /*
+ * updater [external]
+ */
+
+ namespace updater
+ {
+ bool _available();
+ void registerFL(int fileID, const PLUGININFOEX* pluginInfo);
+ }
+
+ /*
+ * utils
+ */
+
+ namespace utils
+ {
+ int pathToRelative(const mu_text* pszPath, mu_text* pszNewPath);
+ int pathToAbsolute(const mu_text* pszPath, mu_text* pszNewPath);
+ }
+
+ /*
+ * core interface functions
+ */
+
+ bool load();
+ void unload();
+ DWORD getMinimalMirandaVersion();
+ bool isMirandaVersionOk(DWORD version);
+ bool isMirandaUnicode();
+
+ /*
+ * string handling
+ */
+
+ mu_ansi* wideToAnsiDup(const mu_wide* pszWide, UINT uCP = CP_ACP);
+ mu_wide* ansiToWideDup(const mu_ansi* pszAnsi, UINT uCP = CP_ACP);
+ mu_ansi* wideToAnsi(const mu_wide* pszWide, mu_ansi* pszRes, int maxLen, UINT uCP = CP_ACP);
+ mu_wide* ansiToWide(const mu_ansi* pszAnsi, mu_wide* pszRes, int maxLen, UINT uCP = CP_ACP);
+ inline void freeWide(mu_wide* pszWide) { free(pszWide); }
+ inline void freeAnsi(mu_ansi* pszAnsi) { free(pszAnsi); }
+}
+
+#endif // HISTORYSTATS_GUARD_MU_COMMON_H
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrl.cpp b/plugins/HistoryStats/src/optionsctrl.cpp
index dd0d077f26..dd0d077f26 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrl.cpp
+++ b/plugins/HistoryStats/src/optionsctrl.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrl.h b/plugins/HistoryStats/src/optionsctrl.h
index 40ec04df0e..40ec04df0e 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrl.h
+++ b/plugins/HistoryStats/src/optionsctrl.h
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrldefs.h b/plugins/HistoryStats/src/optionsctrldefs.h
index 0bc50b1b18..0bc50b1b18 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrldefs.h
+++ b/plugins/HistoryStats/src/optionsctrldefs.h
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl.cpp b/plugins/HistoryStats/src/optionsctrlimpl.cpp
index 0510fe1da6..46d63e8c58 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl.cpp
@@ -496,7 +496,7 @@ LRESULT OptionsCtrlImpl::onWMCreate(CREATESTRUCT* pCS)
}
// subclass tree view
- m_pfnOldTreeProc = reinterpret_cast<WNDPROC>(SetWindowLong(m_hTree, GWL_WNDPROC, reinterpret_cast<LONG>(staticTreeProc)));
+ m_pfnOldTreeProc = reinterpret_cast<WNDPROC>(SetWindowLong(m_hTree, GWLP_WNDPROC, reinterpret_cast<LONG>(staticTreeProc)));
// create/set state icons
staticInitStateImages();
@@ -517,7 +517,7 @@ void OptionsCtrlImpl::onWMDestroy()
}
// undo subclassing of tree view
- SetWindowLong(m_hTree, GWL_WNDPROC, reinterpret_cast<LONG>(m_pfnOldTreeProc));
+ SetWindowLong(m_hTree, GWLP_WNDPROC, reinterpret_cast<LONG>(m_pfnOldTreeProc));
m_pfnOldTreeProc = NULL;
// destroy tree view before invalidating 'this'
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl.h b/plugins/HistoryStats/src/optionsctrlimpl.h
index 43313ac195..43313ac195 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl.h
+++ b/plugins/HistoryStats/src/optionsctrlimpl.h
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_button.cpp b/plugins/HistoryStats/src/optionsctrlimpl_button.cpp
index ae1b8395ca..ae1b8395ca 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_button.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_button.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_check.cpp b/plugins/HistoryStats/src/optionsctrlimpl_check.cpp
index d6c2b99c56..d6c2b99c56 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_check.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_check.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_color.cpp b/plugins/HistoryStats/src/optionsctrlimpl_color.cpp
index 09814ca9ad..fa9eebce2d 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_color.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_color.cpp
@@ -55,7 +55,7 @@ void OptionsCtrlImpl::Color::onSelect()
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
if (hTempWnd = CreateWindowEx(
- 0, WNDCLASS_COLOURPICKER, NULL, dwStyle,
+ 0, _T(WNDCLASS_COLOURPICKER), NULL, dwStyle,
r.left, r.top, r.right - r.left, r.bottom - r.top,
m_pCtrl->m_hTree, reinterpret_cast<HMENU>(ccColor), g_hInst, NULL))
{
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_combo.cpp b/plugins/HistoryStats/src/optionsctrlimpl_combo.cpp
index a019bda875..a019bda875 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_combo.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_combo.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_datetime.cpp b/plugins/HistoryStats/src/optionsctrlimpl_datetime.cpp
index 9c703630ee..9c703630ee 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_datetime.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_datetime.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_edit.cpp b/plugins/HistoryStats/src/optionsctrlimpl_edit.cpp
index 8af65d71dd..8af65d71dd 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_edit.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_edit.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_group.cpp b/plugins/HistoryStats/src/optionsctrlimpl_group.cpp
index 0c389e517f..0c389e517f 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_group.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_group.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_item.cpp b/plugins/HistoryStats/src/optionsctrlimpl_item.cpp
index e46a154629..e46a154629 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_item.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_item.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_radio.cpp b/plugins/HistoryStats/src/optionsctrlimpl_radio.cpp
index 75491192af..75491192af 100644
--- a/plugins/!NotAdopted/HistoryStats/optionsctrlimpl_radio.cpp
+++ b/plugins/HistoryStats/src/optionsctrlimpl_radio.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/protocol.cpp b/plugins/HistoryStats/src/protocol.cpp
index e71340d800..e71340d800 100644
--- a/plugins/!NotAdopted/HistoryStats/protocol.cpp
+++ b/plugins/HistoryStats/src/protocol.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/protocol.h b/plugins/HistoryStats/src/protocol.h
index 6ea9a44a41..6ea9a44a41 100644
--- a/plugins/!NotAdopted/HistoryStats/protocol.h
+++ b/plugins/HistoryStats/src/protocol.h
diff --git a/plugins/!NotAdopted/HistoryStats/resource.h b/plugins/HistoryStats/src/resource.h
index d64b457a5f..d64b457a5f 100644
--- a/plugins/!NotAdopted/HistoryStats/resource.h
+++ b/plugins/HistoryStats/src/resource.h
diff --git a/plugins/!NotAdopted/HistoryStats/settings.cpp b/plugins/HistoryStats/src/settings.cpp
index 0a009f4355..67d395c332 100644
--- a/plugins/!NotAdopted/HistoryStats/settings.cpp
+++ b/plugins/HistoryStats/src/settings.cpp
@@ -364,14 +364,11 @@ bool Settings::manageFilterWords(HWND hParent, Column* pCol)
iter_each_(FilterSet, i, m_FilterWords)
{
+ Filter *F = (Filter*)i.operator->();
if (ReferencedFilters.find(i->getID()) != ReferencedFilters.end())
- {
- i->setRef(1);
- }
+ F->setRef(1);
else
- {
- i->setRef(0);
- }
+ F->setRef(0);
}
// init dialog
diff --git a/plugins/!NotAdopted/HistoryStats/settings.h b/plugins/HistoryStats/src/settings.h
index 9af8f1f30a..9af8f1f30a 100644
--- a/plugins/!NotAdopted/HistoryStats/settings.h
+++ b/plugins/HistoryStats/src/settings.h
diff --git a/plugins/!NotAdopted/HistoryStats/settingsserializer.cpp b/plugins/HistoryStats/src/settingsserializer.cpp
index 7703f241e2..669ddeb346 100644
--- a/plugins/!NotAdopted/HistoryStats/settingsserializer.cpp
+++ b/plugins/HistoryStats/src/settingsserializer.cpp
@@ -226,13 +226,12 @@ void SettingsSerializer::readFromDB()
// read filter attributes
settingsTree.setKey(strPrefix.c_str());
- Filter& curFilter = *(m_FilterWords.insert(Filter(settingsTree.readStr(con::KeyID, muT("")))).first);
+ Filter* curFilter = (Filter*)&(m_FilterWords.insert(Filter(settingsTree.readStr(con::KeyID, muT("")))).first);
- curFilter.setName(settingsTree.readStr(con::KeyName, muT("")));
- curFilter.setMode(settingsTree.readIntRanged(con::KeyMode, fwmWordsMatching, fwmFIRST, fwmLAST));
+ curFilter->setName(settingsTree.readStr(con::KeyName, muT("")));
+ curFilter->setMode(settingsTree.readIntRanged(con::KeyMode, fwmWordsMatching, fwmFIRST, fwmLAST));
int nNumWords = settingsTree.readInt(con::KeyNumWords, 0);
-
if (nNumWords > 0)
{
// read filter words
@@ -241,7 +240,7 @@ void SettingsSerializer::readFromDB()
upto_each_(j, nNumWords)
{
- curFilter.addWord(settingsTree.readStr(utils::intToString(j).c_str(), muT("")));
+ curFilter->addWord(settingsTree.readStr(utils::intToString(j).c_str(), muT("")));
}
}
}
diff --git a/plugins/!NotAdopted/HistoryStats/settingsserializer.h b/plugins/HistoryStats/src/settingsserializer.h
index 1840757f54..1840757f54 100644
--- a/plugins/!NotAdopted/HistoryStats/settingsserializer.h
+++ b/plugins/HistoryStats/src/settingsserializer.h
diff --git a/plugins/!NotAdopted/HistoryStats/settingstree.cpp b/plugins/HistoryStats/src/settingstree.cpp
index 6d4159d96f..6d4159d96f 100644
--- a/plugins/!NotAdopted/HistoryStats/settingstree.cpp
+++ b/plugins/HistoryStats/src/settingstree.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/settingstree.h b/plugins/HistoryStats/src/settingstree.h
index 5f7bc4b07f..5f7bc4b07f 100644
--- a/plugins/!NotAdopted/HistoryStats/settingstree.h
+++ b/plugins/HistoryStats/src/settingstree.h
diff --git a/plugins/!NotAdopted/HistoryStats/statistic.cpp b/plugins/HistoryStats/src/statistic.cpp
index 1fae408667..ca93c8c9fa 100644
--- a/plugins/!NotAdopted/HistoryStats/statistic.cpp
+++ b/plugins/HistoryStats/src/statistic.cpp
@@ -310,14 +310,14 @@ void Statistic::handleAddChat(Contact& contact, bool bOutgoing, DWORD localTimes
}
}
-BOOL CALLBACK Statistic::staticProgressProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK Statistic::staticProgressProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- Statistic* pStats = reinterpret_cast<Statistic*>(GetWindowLong(hDlg, GWL_USERDATA));
+ Statistic* pStats = reinterpret_cast<Statistic*>(GetWindowLong(hDlg, GWLP_USERDATA));
switch (msg)
{
case WM_INITDIALOG:
- mu::langpack::translateDialog(hDlg);
+ TranslateDialogDefault(hDlg);
SendMessage(hDlg, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
return TRUE;
@@ -629,7 +629,7 @@ bool Statistic::stepSortContacts()
}
ContactCompareBase cmpLast;
- ContactCompareStr cmpName(&cmpLast, Contact::getNick);
+ ContactCompareStr cmpName(&cmpLast, &Contact::getNick);
int cmpDepth = 3;
@@ -647,117 +647,115 @@ bool Statistic::stepSortContacts()
ContactCompareBase* pCmp = NULL;
ContactCompareBase* pPrev = &cmpName;
- for (int i = cmpDepth - 1; i >= 0; --i)
- {
- switch (m_Settings.m_Sort[i].by)
- {
- case Settings::skNick:
- pCmp = new ContactCompareStr(pPrev, Contact::getNick);
- break;
+ for (int i = cmpDepth - 1; i >= 0; --i) {
+ switch (m_Settings.m_Sort[i].by) {
+ case Settings::skNick:
+ pCmp = new ContactCompareStr(pPrev, &Contact::getNick);
+ break;
- case Settings::skProtocol:
- pCmp = new ContactCompareStr(pPrev, Contact::getProtocol);
- break;
+ case Settings::skProtocol:
+ pCmp = new ContactCompareStr(pPrev, &Contact::getProtocol);
+ break;
- case Settings::skGroup:
- pCmp = new ContactCompareStr(pPrev, Contact::getGroup);
- break;
+ case Settings::skGroup:
+ pCmp = new ContactCompareStr(pPrev, &Contact::getGroup);
+ break;
- case Settings::skBytesOut:
- pCmp = new ContactCompare<int>(pPrev, Contact::getOutBytes);
- break;
+ case Settings::skBytesOut:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getOutBytes);
+ break;
- case Settings::skBytesIn:
- pCmp = new ContactCompare<int>(pPrev, Contact::getInBytes);
- break;
+ case Settings::skBytesIn:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getInBytes);
+ break;
- case Settings::skBytesTotal:
- pCmp = new ContactCompare<int>(pPrev, Contact::getTotalBytes);
- break;
+ case Settings::skBytesTotal:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getTotalBytes);
+ break;
- case Settings::skMessagesOut:
- pCmp = new ContactCompare<int>(pPrev, Contact::getOutMessages);
- break;
+ case Settings::skMessagesOut:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getOutMessages);
+ break;
- case Settings::skMessagesIn:
- pCmp = new ContactCompare<int>(pPrev, Contact::getOutMessages);
- break;
+ case Settings::skMessagesIn:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getOutMessages);
+ break;
- case Settings::skMessagesTotal:
- pCmp = new ContactCompare<int>(pPrev, Contact::getTotalMessages);
- break;
+ case Settings::skMessagesTotal:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getTotalMessages);
+ break;
- case Settings::skChatsOut:
- pCmp = new ContactCompare<int>(pPrev, Contact::getOutChats);
- break;
+ case Settings::skChatsOut:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getOutChats);
+ break;
- case Settings::skChatsIn:
- pCmp = new ContactCompare<int>(pPrev, Contact::getInChats);
- break;
+ case Settings::skChatsIn:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getInChats);
+ break;
- case Settings::skChatsTotal:
- pCmp = new ContactCompare<int>(pPrev, Contact::getTotalChats);
- break;
+ case Settings::skChatsTotal:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getTotalChats);
+ break;
- case Settings::skChatDurationTotal:
- pCmp = new ContactCompare<DWORD>(pPrev, Contact::getChatDurSum);
- break;
+ case Settings::skChatDurationTotal:
+ pCmp = new ContactCompare<DWORD>(pPrev, &Contact::getChatDurSum);
+ break;
- case Settings::skTimeOfFirstMessage:
- pCmp = new ContactCompare<DWORD>(pPrev, Contact::getFirstTime);
- break;
+ case Settings::skTimeOfFirstMessage:
+ pCmp = new ContactCompare<DWORD>(pPrev, &Contact::getFirstTime);
+ break;
- case Settings::skTimeOfLastMessage:
- pCmp = new ContactCompare<DWORD>(pPrev, Contact::getLastTime);
- break;
+ case Settings::skTimeOfLastMessage:
+ pCmp = new ContactCompare<DWORD>(pPrev, &Contact::getLastTime);
+ break;
- case Settings::skBytesOutAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getOutBytesAvg);
- break;
+ case Settings::skBytesOutAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getOutBytesAvg);
+ break;
- case Settings::skBytesInAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getInBytesAvg);
- break;
+ case Settings::skBytesInAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getInBytesAvg);
+ break;
- case Settings::skBytesTotalAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getTotalBytesAvg);
- break;
+ case Settings::skBytesTotalAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getTotalBytesAvg);
+ break;
- case Settings::skMessagesOutAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getOutMessagesAvg);
- break;
+ case Settings::skMessagesOutAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getOutMessagesAvg);
+ break;
- case Settings::skMessagesInAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getOutMessagesAvg);
- break;
+ case Settings::skMessagesInAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getOutMessagesAvg);
+ break;
- case Settings::skMessagesTotalAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getTotalMessagesAvg);
- break;
+ case Settings::skMessagesTotalAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getTotalMessagesAvg);
+ break;
- case Settings::skChatsOutAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getOutChatsAvg);
- break;
+ case Settings::skChatsOutAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getOutChatsAvg);
+ break;
- case Settings::skChatsInAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getInChatsAvg);
- break;
+ case Settings::skChatsInAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getInChatsAvg);
+ break;
- case Settings::skChatsTotalAvg:
- pCmp = new ContactCompare<double>(pPrev, Contact::getTotalChatsAvg);
- break;
+ case Settings::skChatsTotalAvg:
+ pCmp = new ContactCompare<double>(pPrev, &Contact::getTotalChatsAvg);
+ break;
- case Settings::skChatDurationMin:
- pCmp = new ContactCompare<int>(pPrev, Contact::getChatDurMinForSort);
- break;
+ case Settings::skChatDurationMin:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getChatDurMinForSort);
+ break;
- case Settings::skChatDurationAvg:
- pCmp = new ContactCompare<int>(pPrev, Contact::getChatDurAvgForSort);
- break;
+ case Settings::skChatDurationAvg:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getChatDurAvgForSort);
+ break;
- case Settings::skChatDurationMax:
- pCmp = new ContactCompare<int>(pPrev, Contact::getChatDurMaxForSort);
- break;
+ case Settings::skChatDurationMax:
+ pCmp = new ContactCompare<int>(pPrev, &Contact::getChatDurMaxForSort);
+ break;
}
pCmp->setDir(m_Settings.m_Sort[i].asc);
@@ -781,9 +779,7 @@ bool Statistic::stepSortContacts()
bool Statistic::stepPreOmitContacts()
{
if (shouldTerminate())
- {
return false;
- }
iter_each_(std::vector<Column*>, i, m_ActiveCols)
{
@@ -796,21 +792,16 @@ bool Statistic::stepPreOmitContacts()
bool Statistic::stepOmitContacts()
{
if (!m_Settings.m_OmitContacts)
- {
return true;
- }
if (shouldTerminate())
- {
return false;
- }
m_pOmitted = new Contact(this, m_nNextSlot, muT(""), muT(""), muT(""), 0, 0);
prepareContactData(*m_pOmitted);
// omit depending on some value
- if (m_Settings.m_OmitByValue)
- {
+ if (m_Settings.m_OmitByValue) {
static const struct {
int type; // 0 = int, 1 = double, 2 = DWORD
double factor; // factor to multiply function output with
@@ -818,56 +809,51 @@ bool Statistic::stepOmitContacts()
double (Contact::*double_fn)() const;
DWORD (Contact::*DWORD_fn)() const;
} valueMap[] = {
- { 0, 1.0, Contact::getInBytes , 0 , 0 },
- { 0, 1.0, Contact::getOutBytes , 0 , 0 },
- { 0, 1.0, Contact::getTotalBytes , 0 , 0 },
- { 1, 604800.0, 0 , Contact::getInBytesAvg , 0 },
- { 1, 604800.0, 0 , Contact::getOutBytesAvg , 0 },
- { 1, 604800.0, 0 , Contact::getTotalBytesAvg , 0 },
- { 0, 1.0, Contact::getInMessages , 0 , 0 },
- { 0, 1.0, Contact::getOutMessages , 0 , 0 },
- { 0, 1.0, Contact::getTotalMessages, 0 , 0 },
- { 1, 604800.0, 0 , Contact::getInMessagesAvg , 0 },
- { 1, 604800.0, 0 , Contact::getOutMessagesAvg , 0 },
- { 1, 604800.0, 0 , Contact::getTotalMessagesAvg, 0 },
- { 0, 1.0, Contact::getInChats , 0 , 0 },
- { 0, 1.0, Contact::getOutChats , 0 , 0 },
- { 0, 1.0, Contact::getTotalChats , 0 , 0 },
- { 1, 604800.0, 0 , Contact::getInChatsAvg , 0 },
- { 1, 604800.0, 0 , Contact::getOutChatsAvg , 0 },
- { 1, 604800.0, 0 , Contact::getTotalChatsAvg , 0 },
- { 2, 1/3600.0, 0 , 0 , Contact::getChatDurSum },
+ { 0, 1.0, &Contact::getInBytes , 0 , 0 },
+ { 0, 1.0, &Contact::getOutBytes , 0 , 0 },
+ { 0, 1.0, &Contact::getTotalBytes , 0 , 0 },
+ { 1, 604800.0, 0 , &Contact::getInBytesAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getOutBytesAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getTotalBytesAvg , 0 },
+ { 0, 1.0, &Contact::getInMessages , 0 , 0 },
+ { 0, 1.0, &Contact::getOutMessages , 0 , 0 },
+ { 0, 1.0, &Contact::getTotalMessages, 0 , 0 },
+ { 1, 604800.0, 0 , &Contact::getInMessagesAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getOutMessagesAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getTotalMessagesAvg, 0 },
+ { 0, 1.0, &Contact::getInChats , 0 , 0 },
+ { 0, 1.0, &Contact::getOutChats , 0 , 0 },
+ { 0, 1.0, &Contact::getTotalChats , 0 , 0 },
+ { 1, 604800.0, 0 , &Contact::getInChatsAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getOutChatsAvg , 0 },
+ { 1, 604800.0, 0 , &Contact::getTotalChatsAvg , 0 },
+ { 2, 1/3600.0, 0 , 0 , &Contact::getChatDurSum },
};
int valueKey = m_Settings.m_OmitByValueData;
double fLimit = static_cast<double>(m_Settings.m_OmitByValueLimit) / valueMap[valueKey].factor;
- for (int i = m_Contacts.size() - 1; i >= 0; --i)
- {
+ for (int i = m_Contacts.size() - 1; i >= 0; --i) {
Contact& cur = *m_Contacts[i];
bool bDoOmit = false;
- switch (valueMap[valueKey].type)
- {
- case 0:
- bDoOmit = (static_cast<double>((cur.*valueMap[valueKey].int_fn)()) < fLimit);
- break;
+ switch (valueMap[valueKey].type) {
+ case 0:
+ bDoOmit = (static_cast<double>((cur.*valueMap[valueKey].int_fn)()) < fLimit);
+ break;
- case 1:
- bDoOmit = ((cur.*valueMap[valueKey].double_fn)() < fLimit);
- break;
+ case 1:
+ bDoOmit = ((cur.*valueMap[valueKey].double_fn)() < fLimit);
+ break;
- case 2:
- bDoOmit = (static_cast<double>((cur.*valueMap[valueKey].DWORD_fn)()) < fLimit);
- break;
+ case 2:
+ bDoOmit = (static_cast<double>((cur.*valueMap[valueKey].DWORD_fn)()) < fLimit);
+ break;
}
- if (bDoOmit)
- {
- if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals ||
- m_Settings.m_OmittedInExtraRow)
- {
+ if (bDoOmit) {
+ if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals || m_Settings.m_OmittedInExtraRow) {
m_pOmitted->merge(cur);
mergeContactData(*m_pOmitted, cur);
@@ -881,24 +867,17 @@ bool Statistic::stepOmitContacts()
}
if (shouldTerminate())
- {
return false;
- }
}
}
// omit depending on message time
- if (m_Settings.m_OmitByTime)
- {
- for (int i = m_Contacts.size() - 1; i >= 0; --i)
- {
+ if (m_Settings.m_OmitByTime) {
+ for (int i = m_Contacts.size() - 1; i >= 0; --i) {
Contact& cur = *m_Contacts[i];
- if (!cur.isFirstLastTimeValid() || (getTimeStarted() > cur.getLastTime() && getTimeStarted() - cur.getLastTime() > m_Settings.m_OmitByTimeDays * 86400))
- {
- if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals ||
- m_Settings.m_OmittedInExtraRow)
- {
+ if (!cur.isFirstLastTimeValid() || (getTimeStarted() > cur.getLastTime() && getTimeStarted() - cur.getLastTime() > m_Settings.m_OmitByTimeDays * 86400)) {
+ if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals || m_Settings.m_OmittedInExtraRow) {
m_pOmitted->merge(cur);
mergeContactData(*m_pOmitted, cur);
@@ -912,22 +891,16 @@ bool Statistic::stepOmitContacts()
}
if (shouldTerminate())
- {
return false;
- }
}
}
// omit depending on rank
- if (m_Settings.m_OmitByRank)
- {
- while (m_Contacts.size() > m_Settings.m_OmitNumOnTop)
- {
+ if (m_Settings.m_OmitByRank) {
+ while (m_Contacts.size() > m_Settings.m_OmitNumOnTop) {
Contact& cur = *m_Contacts.back();
- if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals ||
- m_Settings.m_OmittedInExtraRow)
- {
+ if (m_Settings.m_OmittedInTotals && m_Settings.m_CalcTotals || m_Settings.m_OmittedInExtraRow) {
m_pOmitted->merge(cur);
mergeContactData(*m_pOmitted, cur);
@@ -940,9 +913,7 @@ bool Statistic::stepOmitContacts()
m_Contacts.pop_back();
if (shouldTerminate())
- {
return false;
- }
}
}
@@ -952,14 +923,10 @@ bool Statistic::stepOmitContacts()
bool Statistic::stepCalcTotals()
{
if (!m_Settings.m_CalcTotals)
- {
return true;
- }
if (shouldTerminate())
- {
return false;
- }
m_pTotals = new Contact(this, m_nNextSlot, muT(""), muT(""), muT(""), 0, 0);
prepareContactData(*m_pTotals);
@@ -979,16 +946,13 @@ bool Statistic::stepCalcTotals()
stepProgress(true);
if (shouldTerminate())
- {
return false;
- }
}
// omitted contacts
setProgressLabel(true, i18n(muT("Omitted contacts")));
- if (m_Settings.m_OmitContacts && m_Settings.m_OmittedInTotals && m_bActuallyOmitted)
- {
+ if (m_Settings.m_OmitContacts && m_Settings.m_OmittedInTotals && m_bActuallyOmitted) {
m_pTotals->merge(*m_pOmitted);
mergeContactData(*m_pTotals, *m_pOmitted);
}
@@ -1016,9 +980,7 @@ bool Statistic::stepPostOmitContacts()
bool Statistic::stepTransformData()
{
if (shouldTerminate())
- {
return false;
- }
setProgressMax(true, m_Contacts.size() + 2);
@@ -1032,18 +994,14 @@ bool Statistic::stepTransformData()
stepProgress(true);
if (shouldTerminate())
- {
return false;
- }
}
// omitted contacts
setProgressLabel(true, i18n(muT("Omitted contacts")));
if (m_bActuallyOmitted)
- {
transformContactData(*m_pOmitted);
- }
stepProgress(true);
@@ -1051,21 +1009,16 @@ bool Statistic::stepTransformData()
setProgressLabel(true, i18n(muT("Totals")));
if (m_Settings.m_CalcTotals)
- {
transformContactData(*m_pTotals);
- }
stepProgress(true);
-
return true;
}
bool Statistic::stepWriteHTML()
{
if (shouldTerminate())
- {
return false;
- }
bool bInterrupted = false;
@@ -1083,8 +1036,7 @@ bool Statistic::stepWriteHTML()
ext::a::ofstream ofs(utils::toA(createFile(m_OutputFile)).c_str());
- if (!ofs.good())
- {
+ if (!ofs.good()) {
m_ErrorText = ext::str(ext::kformat(i18n(muT("HistoryStats couldn't open the output file (#{file}) for write access.\r\n\r\nPlease check the output filename you have chosen for correctness. Additionally, please check whether the file, folder, and/or disk is writable.")))
% muT("#{file}") * m_OutputFile);
return false;
@@ -1110,14 +1062,11 @@ bool Statistic::stepWriteHTML()
std::vector<ext::string> additionalCSS;
Column::IDProvider idProvider;
- iter_each_(std::vector<Column*>, col, m_ActiveCols)
- {
+ iter_each_(std::vector<Column*>, col, m_ActiveCols) {
Column::StyleList cssList = (*col)->outputGetAdditionalStyles(idProvider);
- iter_each_(Column::StyleList, css, cssList)
- {
- if (additionalCSSSelectors.find(css->first) == additionalCSSSelectors.end())
- {
+ iter_each_(Column::StyleList, css, cssList) {
+ if (additionalCSSSelectors.find(css->first) == additionalCSSSelectors.end()) {
additionalCSS.push_back(css->first + muT(" { ") + css->second + muT(" }"));
additionalCSSSelectors.insert(css->first);
}
@@ -1436,7 +1385,7 @@ bool Statistic::createStatistics()
return false;
}
- SetWindowLong(m_hWndProgress, GWL_USERDATA, reinterpret_cast<LONG>(this));
+ SetWindowLong(m_hWndProgress, GWLP_USERDATA, reinterpret_cast<LONG>(this));
/*
* Init progress dialog.
@@ -1536,16 +1485,16 @@ bool Statistic::createStatisticsSteps()
bool (Statistic::*stepFn)();
mu_text* stepMsg;
} stepsInfo[] = {
- { stepInit , I18N(muT("Initializing")) },
- { stepReadDB , I18N(muT("Reading database")) },
- { stepRemoveContacts , I18N(muT("Removing contacts")) },
- { stepSortContacts , I18N(muT("Sorting contacts")) },
- { stepPreOmitContacts , I18N(muT("Precollecting column data")) },
- { stepOmitContacts , I18N(muT("Limiting number of contacts")) },
- { stepCalcTotals , I18N(muT("Calculating totals")) },
- { stepPostOmitContacts, I18N(muT("Postcollecting column data")) },
- { stepTransformData , I18N(muT("Transforming data")) },
- { stepWriteHTML , I18N(muT("Creating HTML")) }
+ { &Statistic::stepInit , I18N(muT("Initializing")) },
+ { &Statistic::stepReadDB , I18N(muT("Reading database")) },
+ { &Statistic::stepRemoveContacts , I18N(muT("Removing contacts")) },
+ { &Statistic::stepSortContacts , I18N(muT("Sorting contacts")) },
+ { &Statistic::stepPreOmitContacts , I18N(muT("Precollecting column data")) },
+ { &Statistic::stepOmitContacts , I18N(muT("Limiting number of contacts")) },
+ { &Statistic::stepCalcTotals , I18N(muT("Calculating totals")) },
+ { &Statistic::stepPostOmitContacts, I18N(muT("Postcollecting column data")) },
+ { &Statistic::stepTransformData , I18N(muT("Transforming data")) },
+ { &Statistic::stepWriteHTML , I18N(muT("Creating HTML")) }
};
setProgressMax(false, array_len(stepsInfo));
@@ -1574,8 +1523,6 @@ DWORD WINAPI Statistic::threadProc(LPVOID lpParameter)
{
Statistic* pStats = reinterpret_cast<Statistic*>(lpParameter);
- // push to thread unwind stack
- mu::system::threadPush();
SetEvent(pStats->m_hThreadPushEvent);
// perform action
@@ -1595,10 +1542,6 @@ DWORD WINAPI Statistic::threadProc(LPVOID lpParameter)
delete pStats;
m_bRunning = false;
-
- // pop from thread unwind stack
- mu::system::threadPop();
-
return 0;
}
@@ -1616,11 +1559,11 @@ DWORD WINAPI Statistic::threadProcSteps(LPVOID lpParameter)
return (bSuccess ? 0 : 1);
}
-BOOL CALLBACK Statistic::staticConflictProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK Statistic::staticConflictProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_INITDIALOG)
{
- mu::langpack::translateDialog(hDlg);
+ TranslateDialogDefault(hDlg);
SendMessage(hDlg, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_HISTORYSTATS))));
diff --git a/plugins/!NotAdopted/HistoryStats/statistic.h b/plugins/HistoryStats/src/statistic.h
index 21dbd5acb5..ee312619be 100644
--- a/plugins/!NotAdopted/HistoryStats/statistic.h
+++ b/plugins/HistoryStats/src/statistic.h
@@ -158,11 +158,11 @@ private:
void handleAddChat(Contact& contact, bool bOutgoing, DWORD localTimestampStarted, DWORD duration);
// progress dialog handling
- static BOOL CALLBACK staticProgressProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticProgressProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
void setProgressMax(bool bSub, int max);
void setProgressLabel(bool bSub, const ext::string& label);
void stepProgress(bool bSub, int step = 1);
- static BOOL CALLBACK staticConflictProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ static INT_PTR CALLBACK staticConflictProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
// statistics creation steps
bool stepInit();
diff --git a/plugins/!NotAdopted/HistoryStats/themeapi.cpp b/plugins/HistoryStats/src/themeapi.cpp
index a15067bc66..a15067bc66 100644
--- a/plugins/!NotAdopted/HistoryStats/themeapi.cpp
+++ b/plugins/HistoryStats/src/themeapi.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/themeapi.h b/plugins/HistoryStats/src/themeapi.h
index fe3444a604..fe3444a604 100644
--- a/plugins/!NotAdopted/HistoryStats/themeapi.h
+++ b/plugins/HistoryStats/src/themeapi.h
diff --git a/plugins/!NotAdopted/HistoryStats/utf8buffer.h b/plugins/HistoryStats/src/utf8buffer.h
index 9d1b013d99..9d1b013d99 100644
--- a/plugins/!NotAdopted/HistoryStats/utf8buffer.h
+++ b/plugins/HistoryStats/src/utf8buffer.h
diff --git a/plugins/!NotAdopted/HistoryStats/utils.cpp b/plugins/HistoryStats/src/utils.cpp
index ba1cabc53f..ba1cabc53f 100644
--- a/plugins/!NotAdopted/HistoryStats/utils.cpp
+++ b/plugins/HistoryStats/src/utils.cpp
diff --git a/plugins/!NotAdopted/HistoryStats/utils.h b/plugins/HistoryStats/src/utils.h
index aa2e5a57a0..aa2e5a57a0 100644
--- a/plugins/!NotAdopted/HistoryStats/utils.h
+++ b/plugins/HistoryStats/src/utils.h
diff --git a/plugins/!NotAdopted/HistoryStats/utils/pattern.h b/plugins/HistoryStats/src/utils/pattern.h
index f8ce4996a7..f8ce4996a7 100644
--- a/plugins/!NotAdopted/HistoryStats/utils/pattern.h
+++ b/plugins/HistoryStats/src/utils/pattern.h
diff --git a/src/modules/metacontacts/meta_api.cpp b/src/modules/metacontacts/meta_api.cpp
index d7448d74ef..2cebf568be 100644
--- a/src/modules/metacontacts/meta_api.cpp
+++ b/src/modules/metacontacts/meta_api.cpp
@@ -28,7 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//wParam=(MCONTACT)hMetaContact
//lParam=0
//returns a handle to the default contact, or null on failure
-INT_PTR MetaAPI_GetDefault(WPARAM hMetaContact, LPARAM)
+
+static INT_PTR MetaAPI_GetDefault(WPARAM hMetaContact, LPARAM)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
if (cc == NULL)
@@ -44,7 +45,8 @@ INT_PTR MetaAPI_GetDefault(WPARAM hMetaContact, LPARAM)
//wParam=(MCONTACT)hMetaContact
//lParam=0
//returns a DWORD contact number, or -1 on failure
-INT_PTR MetaAPI_GetDefaultNum(WPARAM hMetaContact, LPARAM)
+
+static INT_PTR MetaAPI_GetDefaultNum(WPARAM hMetaContact, LPARAM)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
return (cc == NULL) ? -1 : cc->nDefault;
@@ -54,7 +56,8 @@ INT_PTR MetaAPI_GetDefaultNum(WPARAM hMetaContact, LPARAM)
//wParam=(MCONTACT)hMetaContact
//lParam=0
//returns a handle to the 'most online' contact
-INT_PTR MetaAPI_GetMostOnline(WPARAM hMetaContact, LPARAM)
+
+static INT_PTR MetaAPI_GetMostOnline(WPARAM hMetaContact, LPARAM)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
if (cc == NULL)
@@ -67,7 +70,8 @@ INT_PTR MetaAPI_GetMostOnline(WPARAM hMetaContact, LPARAM)
//wParam=(MCONTACT)hMetaContact
//lParam=0
//returns a DWORD representing the number of subcontacts for the given metacontact
-INT_PTR MetaAPI_GetNumContacts(WPARAM hMetaContact, LPARAM)
+
+static INT_PTR MetaAPI_GetNumContacts(WPARAM hMetaContact, LPARAM)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
return (cc == NULL) ? -1 : cc->nSubs;
@@ -77,7 +81,8 @@ INT_PTR MetaAPI_GetNumContacts(WPARAM hMetaContact, LPARAM)
//wParam=(MCONTACT)hMetaContact
//lParam=(DWORD)contact number
//returns a handle to the specified subcontact
-INT_PTR MetaAPI_GetContact(WPARAM hMetaContact, LPARAM lParam)
+
+static INT_PTR MetaAPI_GetContact(WPARAM hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
return (cc == NULL) ? 0 : Meta_GetContactHandle(cc, lParam);
@@ -87,7 +92,8 @@ INT_PTR MetaAPI_GetContact(WPARAM hMetaContact, LPARAM lParam)
//wParam=(MCONTACT)hMetaContact
//lParam=(DWORD)contact number
//returns 0 on success
-INT_PTR MetaAPI_SetDefaultContactNum(WPARAM hMetaContact, LPARAM lParam)
+
+static INT_PTR MetaAPI_SetDefaultContactNum(WPARAM hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
if (cc == NULL)
@@ -106,7 +112,8 @@ INT_PTR MetaAPI_SetDefaultContactNum(WPARAM hMetaContact, LPARAM lParam)
//wParam=(MCONTACT)hMetaContact
//lParam=(MCONTACT)hSubcontact
//returns 0 on success
-INT_PTR MetaAPI_SetDefaultContact(WPARAM hMetaContact, LPARAM lParam)
+
+static INT_PTR MetaAPI_SetDefaultContact(WPARAM hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(lParam);
if (cc == NULL)
@@ -127,7 +134,8 @@ INT_PTR MetaAPI_SetDefaultContact(WPARAM hMetaContact, LPARAM lParam)
//wParam=(MCONTACT)hMetaContact
//lParam=(DWORD)contact number
//returns 0 on success
-INT_PTR MetaAPI_ForceSendContactNum(WPARAM hMetaContact, LPARAM lParam)
+
+static INT_PTR MetaAPI_ForceSendContactNum(WPARAM hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
if (cc == NULL)
@@ -147,7 +155,8 @@ INT_PTR MetaAPI_ForceSendContactNum(WPARAM hMetaContact, LPARAM lParam)
//wParam=(MCONTACT)hMetaContact
//lParam=(MCONTACT)hSubcontact
//returns 0 on success (will fail if 'force default' is in effect)
-INT_PTR MetaAPI_ForceSendContact(WPARAM hMetaContact, LPARAM lParam)
+
+static INT_PTR MetaAPI_ForceSendContact(WPARAM hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
if (cc == NULL)
@@ -169,6 +178,7 @@ INT_PTR MetaAPI_ForceSendContact(WPARAM hMetaContact, LPARAM lParam)
//wParam=(MCONTACT)hMetaContact
//lParam=0
//returns 0 on success (will fail if 'force default' is in effect)
+
INT_PTR MetaAPI_UnforceSendContact(WPARAM hMetaContact, LPARAM lParam)
{
if (db_get_b(hMetaContact, META_PROTO, "ForceDefault", 0))
@@ -180,13 +190,14 @@ INT_PTR MetaAPI_UnforceSendContact(WPARAM hMetaContact, LPARAM 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=(MCONTACT)hMetaContact
-//lParam=0
-//returns 1(true) or 0(false) representing new state of 'force default'
+//
+// wParam=(MCONTACT)hMetaContact
+// lParam=0
+// returns 1(true) or 0(false) representing new state of 'force default'
+
INT_PTR MetaAPI_ForceDefault(WPARAM hMetaContact, LPARAM lParam)
{
// forward to menu function
@@ -200,6 +211,7 @@ INT_PTR MetaAPI_ForceDefault(WPARAM hMetaContact, LPARAM lParam)
// 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 INVALID_CONTACT_ID 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 hMetaContact, LPARAM lParam)
{
DBCachedContact *cc = CheckMeta(hMetaContact);
@@ -222,30 +234,49 @@ INT_PTR MetaAPI_GetForceState(WPARAM hMetaContact, LPARAM lParam)
return 0;
}
-// 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)
+
+static 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)
+
+static 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)
+
+static 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);
}
+
+void CreateApiServices()
+{
+ 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_GETFORCESTATE, MetaAPI_GetForceState);
+
+ CreateServiceFunction(MS_MC_CONVERTTOMETA, MetaAPI_ConvertToMeta);
+ CreateServiceFunction(MS_MC_ADDTOMETA, MetaAPI_AddToMeta);
+ CreateServiceFunction(MS_MC_REMOVEFROMMETA, MetaAPI_RemoveFromMeta);
+}
diff --git a/src/modules/metacontacts/meta_services.cpp b/src/modules/metacontacts/meta_services.cpp
index a12813f2ed..13c747b9cf 100644
--- a/src/modules/metacontacts/meta_services.cpp
+++ b/src/modules/metacontacts/meta_services.cpp
@@ -654,7 +654,7 @@ int Meta_SettingChanged(WPARAM hContact, LPARAM lParam)
// if the contact was forced, unforce it (which updates status)
if (db_get_dw(ccMeta->contactID, META_PROTO, "ForceSend", 0) == hContact)
- MetaAPI_UnforceSendContact((WPARAM)ccMeta->contactID, 0);
+ MetaAPI_UnforceSendContact(ccMeta->contactID, 0);
else {
// set status to that of most online contact
Meta_CopyContactNick(ccMeta, Meta_GetMostOnline(ccMeta));
@@ -1123,21 +1123,7 @@ void Meta_InitServices()
CreateProtoServiceFunction(META_FILTER, PSS_MESSAGE, MetaFilter_SendMessage);
// API services and events
- 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_GETFORCESTATE, MetaAPI_GetForceState);
-
- CreateServiceFunction(MS_MC_CONVERTTOMETA, MetaAPI_ConvertToMeta);
- CreateServiceFunction(MS_MC_ADDTOMETA, MetaAPI_AddToMeta);
- CreateServiceFunction(MS_MC_REMOVEFROMMETA, MetaAPI_RemoveFromMeta);
+ CreateApiServices();
CreateServiceFunction("MetaContacts/OnOff", Meta_OnOff);
CreateServiceFunction("MetaContacts/CListMessageEvent", Meta_ClistMessageEventClicked);
diff --git a/src/modules/metacontacts/meta_utils.cpp b/src/modules/metacontacts/meta_utils.cpp
index 6bd8690232..bd5049f35d 100644
--- a/src/modules/metacontacts/meta_utils.cpp
+++ b/src/modules/metacontacts/meta_utils.cpp
@@ -210,7 +210,6 @@ int Meta_SetNick(char *szProto)
BOOL Meta_Assign(MCONTACT src, MCONTACT dest, BOOL set_as_default)
{
char buffer[512], szId[40];
- WORD status;
MCONTACT most_online;
DBCachedContact *ccDest = CheckMeta(dest);
@@ -286,24 +285,18 @@ BOOL Meta_Assign(MCONTACT src, MCONTACT dest, BOOL set_as_default)
db_set_ts(dest, META_PROTO, buffer, cli.pfnGetContactDisplayName(src, 0));
// Get the status
- if (!szProto)
- status = ID_STATUS_OFFLINE;
- else
- status = db_get_w(src, szProto, "Status", ID_STATUS_OFFLINE);
+ WORD status = (!szProto) ? ID_STATUS_OFFLINE : db_get_w(src, szProto, "Status", ID_STATUS_OFFLINE);
// write the status
- strcpy(buffer, "Status");
- strcat(buffer, szId);
+ strcpy(buffer, "Status"); strcat(buffer, szId);
db_set_w(dest, META_PROTO, buffer, status);
// write the handle
- strcpy(buffer, "Handle");
- strcat(buffer, szId);
+ strcpy(buffer, "Handle"); strcat(buffer, szId);
db_set_dw(dest, META_PROTO, buffer, src);
// write status string
- strcpy(buffer, "StatusString");
- strcat(buffer, szId);
+ strcpy(buffer, "StatusString"); strcat(buffer, szId);
TCHAR *szStatus = cli.pfnGetStatusModeDescription(status, 0);
db_set_ts(dest, META_PROTO, buffer, szStatus);
@@ -858,10 +851,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
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));
+ strcpy(buff1, "Protocol"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "Protocol"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -874,10 +865,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
}
// swap the status
- strcpy(buff1, "Status");
- strcat(buff1, _itoa(contact_number1, buff12, 10));
- strcpy(buff2, "Status");
- strcat(buff2, _itoa(contact_number2, buff22, 10));
+ strcpy(buff1, "Status"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "Status"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -890,10 +879,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
}
// swap the status string
- strcpy(buff1, "StatusString");
- strcat(buff1, _itoa(contact_number1, buff12, 10));
- strcpy(buff2, "StatusString");
- strcat(buff2, _itoa(contact_number2, buff22, 10));
+ strcpy(buff1, "StatusString"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "StatusString"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -906,10 +893,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
}
// swap the login
- strcpy(buff1, "Login");
- strcat(buff1, _itoa(contact_number1, buff12, 10));
- strcpy(buff2, "Login");
- strcat(buff2, _itoa(contact_number2, buff22, 10));
+ strcpy(buff1, "Login"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "Login"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -924,10 +909,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
}
// swap the nick
- strcpy(buff1, "Nick");
- strcat(buff1, _itoa(contact_number1, buff12, 10));
- strcpy(buff2, "Nick");
- strcat(buff2, _itoa(contact_number2, buff22, 10));
+ strcpy(buff1, "Nick"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "Nick"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -943,10 +926,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
else db_unset(cc->contactID, 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));
+ strcpy(buff1, "CListName"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "CListName"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
@@ -962,10 +943,8 @@ int Meta_SwapContacts(DBCachedContact *cc, DWORD contact_number1, DWORD contact_
else db_unset(cc->contactID, 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));
+ strcpy(buff1, "Handle"); strcat(buff1, _itoa(contact_number1, buff12, 10));
+ strcpy(buff2, "Handle"); strcat(buff2, _itoa(contact_number2, buff22, 10));
ok1 = !Mydb_get(cc->contactID, META_PROTO, buff1, &dbv1);
ok2 = !Mydb_get(cc->contactID, META_PROTO, buff2, &dbv2);
if (ok1) {
diff --git a/src/modules/metacontacts/metacontacts.h b/src/modules/metacontacts/metacontacts.h
index 7a22e9e351..a75efbd1a7 100644
--- a/src/modules/metacontacts/metacontacts.h
+++ b/src/modules/metacontacts/metacontacts.h
@@ -124,24 +124,10 @@ 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);
+void CreateApiServices();
+INT_PTR MetaAPI_GetForceState(WPARAM, LPARAM);
+INT_PTR MetaAPI_ForceDefault(WPARAM hMetaContact, LPARAM);
+INT_PTR MetaAPI_UnforceSendContact(WPARAM hMetaContact, LPARAM);
// extended db get/write setting functions, that handle unicode
INT_PTR Mydb_get(MCONTACT hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv);