From 84820a7338aa363c94db86833c146e1bea872815 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 13 Nov 2018 22:39:10 +0300 Subject: Std* modules -> g_plugin --- src/core/stdclist/src/clistopts.cpp | 75 +++++++++++++++---------------- src/core/stdclist/src/cluiopts.cpp | 50 ++++++++++----------- src/core/stdclist/src/init.cpp | 4 +- src/core/stdmsg/src/globals.cpp | 4 +- src/core/stdmsg/src/msgdialog.cpp | 16 +++---- src/core/stdmsg/src/msglog.cpp | 2 +- src/core/stdmsg/src/msgoptions.cpp | 14 +++--- src/core/stduserinfo/src/contactinfo.cpp | 18 ++++---- src/core/stduserinfo/src/stdinfo.cpp | 10 ++--- src/core/stduseronline/src/useronline.cpp | 67 +++++++++++++-------------- 10 files changed, 128 insertions(+), 132 deletions(-) diff --git a/src/core/stdclist/src/clistopts.cpp b/src/core/stdclist/src/clistopts.cpp index e014d2c458..e6c503a285 100644 --- a/src/core/stdclist/src/clistopts.cpp +++ b/src/core/stdclist/src/clistopts.cpp @@ -32,7 +32,8 @@ static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP MCONTACT hContact = wParam; DBCONTACTWRITESETTING *ws = (DBCONTACTWRITESETTING *)lParam; if (hContact == NULL && ws != nullptr && ws->szModule != nullptr && ws->szSetting != nullptr && - strcmp(ws->szModule, "CList") == 0 && strcmp(ws->szSetting, "UseGroups") == 0 && IsWindowVisible(hwndDlg)) { + strcmp(ws->szModule, "CList") == 0 && strcmp(ws->szSetting, "UseGroups") == 0 && IsWindowVisible(hwndDlg)) + { CheckDlgButton(hwndDlg, IDC_DISABLEGROUPS, ws->value.bVal == 0 ? BST_CHECKED : BST_UNCHECKED); } } @@ -46,38 +47,38 @@ static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP TranslateDialogDefault(hwndDlg); SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)HookEventMessage(ME_DB_CONTACT_SETTINGCHANGED, hwndDlg, WM_USER + 1)); CheckDlgButton(hwndDlg, IDC_HIDEOFFLINE, - db_get_b(0, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("HideOffline", SETTING_HIDEOFFLINE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_HIDEEMPTYGROUPS, - db_get_b(0, "CList", "HideEmptyGroups", SETTING_HIDEEMPTYGROUPS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("HideEmptyGroups", SETTING_HIDEEMPTYGROUPS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DISABLEGROUPS, - db_get_b(0, "CList", "UseGroups", SETTING_USEGROUPS_DEFAULT) ? BST_UNCHECKED : BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_SORTBYNAME, !db_get_b(0, "CList", "SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) - && !db_get_b(0, "CList", "SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("UseGroups", SETTING_USEGROUPS_DEFAULT) ? BST_UNCHECKED : BST_CHECKED); + CheckDlgButton(hwndDlg, IDC_SORTBYNAME, !g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) + && !g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_SORTBYSTATUS, - db_get_b(0, "CList", "SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_SORTBYPROTO, - db_get_b(0, "CList", "SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CONFIRMDELETE, - db_get_b(0, "CList", "ConfirmDelete", SETTING_CONFIRMDELETE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("ConfirmDelete", SETTING_CONFIRMDELETE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_ONECLK, - db_get_b(0, "CList", "Tray1Click", SETTING_TRAY1CLICK_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("Tray1Click", SETTING_TRAY1CLICK_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_ALWAYSSTATUS, - db_get_b(0, "CList", "AlwaysStatus", SETTING_ALWAYSSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("AlwaysStatus", SETTING_ALWAYSSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_ALWAYSMULTI, - !db_get_b(0, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + !g_plugin.getByte("AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DONTCYCLE, - db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_SINGLE ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_SINGLE ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CYCLE, - db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_CYCLE ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_CYCLE ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_MULTITRAY, - db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DISABLEBLINK, - db_get_b(0, "CList", "DisableTrayFlash", 0) == 1 ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("DisableTrayFlash", 0) == 1 ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKTIME), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK)); EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKSPIN), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK)); EnableWindow(GetDlgItem(hwndDlg, IDC_STMSDELAY), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK)); - CheckDlgButton(hwndDlg, IDC_ICONBLINK, db_get_b(0, "CList", "NoIconBlink", 0) == 1 ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_ICONBLINK, g_plugin.getByte("NoIconBlink", 0) == 1 ? BST_CHECKED : BST_UNCHECKED); if (IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE)) { EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIMESPIN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIME), FALSE); @@ -93,9 +94,9 @@ static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP EnableWindow(GetDlgItem(hwndDlg, IDC_PRIMARYSTATUS), FALSE); } SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETRANGE, 0, MAKELONG(120, 1)); - SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETPOS, 0, MAKELONG(db_get_w(0, "CList", "CycleTime", SETTING_CYCLETIME_DEFAULT), 0)); + SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETPOS, 0, MAKELONG(g_plugin.getWord("CycleTime", SETTING_CYCLETIME_DEFAULT), 0)); { - ptrA szPrimaryStatus(db_get_sa(NULL, "CList", "PrimaryStatus")); + ptrA szPrimaryStatus(g_plugin.getStringA("PrimaryStatus")); int item = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_ADDSTRING, 0, (LPARAM)TranslateT("Global")); SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETITEMDATA, item, (LPARAM)0); @@ -114,7 +115,7 @@ static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETCURSEL, 0, 0); SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, IDC_BLINKTIME), 0); // set buddy SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETRANGE, 0, MAKELONG(0x3FFF, 250)); - SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETPOS, 0, MAKELONG(db_get_w(0, "CList", "IconFlashTime", 550), 0)); + SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETPOS, 0, MAKELONG(g_plugin.getWord("IconFlashTime", 550), 0)); return TRUE; case WM_COMMAND: @@ -145,35 +146,33 @@ static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP case 0: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: - db_set_b(0, "CList", "HideOffline", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_HIDEOFFLINE)); - db_set_b(0, "CList", "HideEmptyGroups", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_HIDEEMPTYGROUPS)); - db_set_b(0, "CList", "UseGroups", (BYTE)!IsDlgButtonChecked(hwndDlg, IDC_DISABLEGROUPS)); + g_plugin.setByte("HideOffline", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_HIDEOFFLINE)); + g_plugin.setByte("HideEmptyGroups", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_HIDEEMPTYGROUPS)); + g_plugin.setByte("UseGroups", (BYTE)!IsDlgButtonChecked(hwndDlg, IDC_DISABLEGROUPS)); g_bSortByStatus = IsDlgButtonChecked(hwndDlg, IDC_SORTBYSTATUS); g_bSortByProto = IsDlgButtonChecked(hwndDlg, IDC_SORTBYPROTO); - db_set_b(0, "CList", "SortByStatus", (BYTE)g_bSortByStatus); - db_set_b(0, "CList", "SortByProto", (BYTE)g_bSortByProto); - db_set_b(0, "CList", "ConfirmDelete", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_CONFIRMDELETE)); - db_set_b(0, "CList", "Tray1Click", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONECLK)); - db_set_b(0, "CList", "AlwaysStatus", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ALWAYSSTATUS)); - db_set_b(0, "CList", "AlwaysMulti", (BYTE)!IsDlgButtonChecked(hwndDlg, IDC_ALWAYSMULTI)); - db_set_b(0, "CList", "TrayIcon", + g_plugin.setByte("SortByStatus", (BYTE)g_bSortByStatus); + g_plugin.setByte("SortByProto", (BYTE)g_bSortByProto); + g_plugin.setByte("ConfirmDelete", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_CONFIRMDELETE)); + g_plugin.setByte("Tray1Click", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONECLK)); + g_plugin.setByte("AlwaysStatus", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ALWAYSSTATUS)); + g_plugin.setByte("AlwaysMulti", (BYTE)!IsDlgButtonChecked(hwndDlg, IDC_ALWAYSMULTI)); + g_plugin.setByte("TrayIcon", (BYTE)(IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE) ? SETTING_TRAYICON_SINGLE : (IsDlgButtonChecked(hwndDlg, IDC_CYCLE) ? SETTING_TRAYICON_CYCLE : SETTING_TRAYICON_MULTI))); - db_set_w(0, "CList", "CycleTime", - (WORD)SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_GETPOS, 0, 0)); - db_set_w(0, "CList", "IconFlashTime", - (WORD)SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_GETPOS, 0, 0)); - db_set_b(0, "CList", "DisableTrayFlash", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK)); - db_set_b(0, "CList", "NoIconBlink", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ICONBLINK)); + g_plugin.setWord("CycleTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_GETPOS, 0, 0)); + g_plugin.setWord("IconFlashTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_GETPOS, 0, 0)); + g_plugin.setByte("DisableTrayFlash", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK)); + g_plugin.setByte("NoIconBlink", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ICONBLINK)); { int cur = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETCURSEL, 0, 0); PROTOACCOUNT *pa = (PROTOACCOUNT*)SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETITEMDATA, cur, 0); if (pa == nullptr) - db_unset(NULL, "CList", "PrimaryStatus"); + g_plugin.delSetting("PrimaryStatus"); else - db_set_s(0, "CList", "PrimaryStatus", pa->szModuleName); + g_plugin.setString("PrimaryStatus", pa->szModuleName); } Clist_TrayIconIconsChanged(); diff --git a/src/core/stdclist/src/cluiopts.cpp b/src/core/stdclist/src/cluiopts.cpp index cff3b28933..f21a6b6fbd 100644 --- a/src/core/stdclist/src/cluiopts.cpp +++ b/src/core/stdclist/src/cluiopts.cpp @@ -29,10 +29,10 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); - CheckDlgButton(hwndDlg, IDC_BRINGTOFRONT, db_get_b(0, "CList", "BringToFront", SETTING_BRINGTOFRONT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ONTOP, db_get_b(0, "CList", "OnTop", SETTING_ONTOP_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TOOLWND, db_get_b(0, "CList", "ToolWindow", SETTING_TOOLWINDOW_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_MIN2TRAY, db_get_b(0, "CList", "Min2Tray", SETTING_MIN2TRAY_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_BRINGTOFRONT, g_plugin.getByte("BringToFront", SETTING_BRINGTOFRONT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_ONTOP, g_plugin.getByte("OnTop", SETTING_ONTOP_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TOOLWND, g_plugin.getByte("ToolWindow", SETTING_TOOLWINDOW_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_MIN2TRAY, g_plugin.getByte("Min2Tray", SETTING_MIN2TRAY_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); if (IsDlgButtonChecked(hwndDlg, IDC_TOOLWND)) EnableWindow(GetDlgItem(hwndDlg, IDC_MIN2TRAY), FALSE); @@ -47,17 +47,17 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L CheckDlgButton(hwndDlg, IDC_FADEINOUT, db_get_b(0, "CLUI", "FadeInOut", 0) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_AUTOSIZE, db_get_b(0, "CLUI", "AutoSize", 0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_DROPSHADOW, db_get_b(0, "CList", "WindowShadow", 0) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_ONDESKTOP, db_get_b(0, "CList", "OnDesktop", 0) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_DROPSHADOW, g_plugin.getByte("WindowShadow", 0) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_ONDESKTOP, g_plugin.getByte("OnDesktop", 0) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DISABLEDOCKING, db_get_b(0, "CLUI", "DockToSides", 1) ? BST_CHECKED : BST_UNCHECKED); SendDlgItemMessage(hwndDlg, IDC_MAXSIZESPIN, UDM_SETRANGE, 0, MAKELONG(100, 0)); SendDlgItemMessage(hwndDlg, IDC_MAXSIZESPIN, UDM_SETPOS, 0, db_get_b(0, "CLUI", "MaxSizeHeight", 75)); CheckDlgButton(hwndDlg, IDC_AUTOSIZEUPWARD, db_get_b(0, "CLUI", "AutoSizeUpward", 0) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_AUTOHIDE, - db_get_b(0, "CList", "AutoHide", SETTING_AUTOHIDE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + g_plugin.getByte("AutoHide", SETTING_AUTOHIDE_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); SendDlgItemMessage(hwndDlg, IDC_HIDETIMESPIN, UDM_SETRANGE, 0, MAKELONG(900, 1)); SendDlgItemMessage(hwndDlg, IDC_HIDETIMESPIN, UDM_SETPOS, 0, - MAKELONG(db_get_w(0, "CList", "HideTime", SETTING_HIDETIME_DEFAULT), 0)); + MAKELONG(g_plugin.getWord("HideTime", SETTING_HIDETIME_DEFAULT), 0)); EnableWindow(GetDlgItem(hwndDlg, IDC_HIDETIME), IsDlgButtonChecked(hwndDlg, IDC_AUTOHIDE)); EnableWindow(GetDlgItem(hwndDlg, IDC_HIDETIMESPIN), IsDlgButtonChecked(hwndDlg, IDC_AUTOHIDE)); EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC01), IsDlgButtonChecked(hwndDlg, IDC_AUTOHIDE)); @@ -69,13 +69,13 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSIZEUPWARD), FALSE); } { - ptrW wszTitle(db_get_wsa(NULL, "CList", "TitleText")); + ptrW wszTitle(g_plugin.getWStringA("TitleText")); if (wszTitle != nullptr) SetDlgItemText(hwndDlg, IDC_TITLETEXT, wszTitle); else SetDlgItemTextA(hwndDlg, IDC_TITLETEXT, MIRANDANAME); } - CheckDlgButton(hwndDlg, IDC_TRANSPARENT, db_get_b(0, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TRANSPARENT, g_plugin.getByte("Transparent", SETTING_TRANSPARENT_DEFAULT) ? BST_CHECKED : BST_UNCHECKED); if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENT)) { EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC11), FALSE); @@ -88,8 +88,8 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_SETRANGE, FALSE, MAKELONG(1, 255)); SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_SETRANGE, FALSE, MAKELONG(1, 255)); - SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_SETPOS, TRUE, db_get_b(0, "CList", "Alpha", SETTING_ALPHA_DEFAULT)); - SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_SETPOS, TRUE, db_get_b(0, "CList", "AutoAlpha", SETTING_AUTOALPHA_DEFAULT)); + SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_SETPOS, TRUE, g_plugin.getByte("Alpha", SETTING_ALPHA_DEFAULT)); + SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_SETPOS, TRUE, g_plugin.getByte("AutoAlpha", SETTING_AUTOALPHA_DEFAULT)); SendMessage(hwndDlg, WM_HSCROLL, 0x12345678, 0); return TRUE; @@ -145,29 +145,29 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L break; case WM_NOTIFY: if (((LPNMHDR)lParam)->code == PSN_APPLY) { - db_set_b(0, "CList", "OnTop", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONTOP)); - db_set_b(0, "CList", "ToolWindow", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TOOLWND)); - db_set_b(0, "CList", "BringToFront", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_BRINGTOFRONT)); + g_plugin.setByte("OnTop", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONTOP)); + g_plugin.setByte("ToolWindow", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TOOLWND)); + g_plugin.setByte("BringToFront", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_BRINGTOFRONT)); db_set_b(0, "CLUI", "FadeInOut", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_FADEINOUT)); db_set_b(0, "CLUI", "AutoSize", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTOSIZE)); db_set_b(0, "CLUI", "MaxSizeHeight", (BYTE)GetDlgItemInt(hwndDlg, IDC_MAXSIZEHEIGHT, nullptr, FALSE)); db_set_b(0, "CLUI", "AutoSizeUpward", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTOSIZEUPWARD)); - db_set_b(0, "CList", "AutoHide", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTOHIDE)); - db_set_w(0, "CList", "HideTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_HIDETIMESPIN, UDM_GETPOS, 0, 0)); - db_set_b(0, "CList", "Transparent", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENT)); - db_set_b(0, "CList", "Alpha", (BYTE)SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_GETPOS, 0, 0)); - db_set_b(0, "CList", "AutoAlpha", (BYTE)SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_GETPOS, 0, 0)); - db_set_b(0, "CList", "WindowShadow", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DROPSHADOW)); - db_set_b(0, "CList", "OnDesktop", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONDESKTOP)); + g_plugin.setByte("AutoHide", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTOHIDE)); + g_plugin.setWord("HideTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_HIDETIMESPIN, UDM_GETPOS, 0, 0)); + g_plugin.setByte("Transparent", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENT)); + g_plugin.setByte("Alpha", (BYTE)SendDlgItemMessage(hwndDlg, IDC_TRANSACTIVE, TBM_GETPOS, 0, 0)); + g_plugin.setByte("AutoAlpha", (BYTE)SendDlgItemMessage(hwndDlg, IDC_TRANSINACTIVE, TBM_GETPOS, 0, 0)); + g_plugin.setByte("WindowShadow", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DROPSHADOW)); + g_plugin.setByte("OnDesktop", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONDESKTOP)); db_set_b(0, "CLUI", "DockToSides", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DISABLEDOCKING)); db_set_b(0, "CLUI", "ShowCaption", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOWCAPTION)); db_set_b(0, "CLUI", "ShowMainMenu", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOWMAINMENU)); db_set_b(0, "CLUI", "ClientAreaDrag", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_CLIENTDRAG)); - db_set_b(0, "CList", "Min2Tray", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MIN2TRAY)); + g_plugin.setByte("Min2Tray", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MIN2TRAY)); { wchar_t title[256]; GetDlgItemText(hwndDlg, IDC_TITLETEXT, title, _countof(title)); - db_set_ws(0, "CList", "TitleText", title); + g_plugin.setWString("TitleText", title); SetWindowText(g_clistApi.hwndContactList, title); } @@ -218,7 +218,7 @@ static INT_PTR CALLBACK DlgProcCluiOpts(HWND hwndDlg, UINT msg, WPARAM wParam, L ShowWindow(g_clistApi.hwndContactList, IsDlgButtonChecked(hwndDlg, IDC_MIN2TRAY) ? SW_HIDE : SW_SHOW); if (IsDlgButtonChecked(hwndDlg, IDC_TRANSPARENT)) { SetWindowLongPtr(g_clistApi.hwndContactList, GWL_EXSTYLE, GetWindowLongPtr(g_clistApi.hwndContactList, GWL_EXSTYLE) | WS_EX_LAYERED); - SetLayeredWindowAttributes(g_clistApi.hwndContactList, RGB(0, 0, 0), (BYTE)db_get_b(0, "CList", "AutoAlpha", SETTING_AUTOALPHA_DEFAULT), LWA_ALPHA); + SetLayeredWindowAttributes(g_clistApi.hwndContactList, RGB(0, 0, 0), (BYTE)g_plugin.getByte("AutoAlpha", SETTING_AUTOALPHA_DEFAULT), LWA_ALPHA); } else SetWindowLongPtr(g_clistApi.hwndContactList, GWL_EXSTYLE, GetWindowLongPtr(g_clistApi.hwndContactList, GWL_EXSTYLE) & ~WS_EX_LAYERED); diff --git a/src/core/stdclist/src/init.cpp b/src/core/stdclist/src/init.cpp index 56106b19e9..2f959f87c6 100644 --- a/src/core/stdclist/src/init.cpp +++ b/src/core/stdclist/src/init.cpp @@ -107,8 +107,8 @@ static INT_PTR GetStatusMode(WPARAM, LPARAM) int CMPlugin::Load() { - g_bSortByStatus = db_get_b(0, "CList", "SortByStatus", SETTING_SORTBYSTATUS_DEFAULT); - g_bSortByProto = db_get_b(0, "CList", "SortByProto", SETTING_SORTBYPROTO_DEFAULT); + g_bSortByStatus = g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT); + g_bSortByProto = g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT); Clist_GetInterface(); coreCli = g_clistApi; diff --git a/src/core/stdmsg/src/globals.cpp b/src/core/stdmsg/src/globals.cpp index 98279aafb2..6d2b062c35 100644 --- a/src/core/stdmsg/src/globals.cpp +++ b/src/core/stdmsg/src/globals.cpp @@ -148,10 +148,10 @@ GlobalMessageData::GlobalMessageData() : void InitGlobals() { - int iOldValue = db_get_b(0, SRMMMOD, "HideNames", -1); + int iOldValue = g_plugin.getByte("HideNames", -1); if (iOldValue != -1) { g_dat.bShowNames = !iOldValue; - db_unset(0, SRMMMOD, "HideNames"); + g_plugin.delSetting("HideNames"); } if (!g_dat.bSendOnEnter && !g_dat.bSendOnDblEnter) diff --git a/src/core/stdmsg/src/msgdialog.cpp b/src/core/stdmsg/src/msgdialog.cpp index aef616e342..ba633deb1d 100644 --- a/src/core/stdmsg/src/msgdialog.cpp +++ b/src/core/stdmsg/src/msgdialog.cpp @@ -129,7 +129,7 @@ bool CSrmmWindow::OnInitDialog() SetTimer(m_hwnd, TIMERID_TYPE, 1000, nullptr); GetWindowRect(m_message.GetHwnd(), &m_minEditInit); - m_iSplitterY = (int)db_get_dw(g_dat.bSavePerContact ? m_hContact : 0, SRMMMOD, "splitterPos", m_minEditInit.bottom - m_minEditInit.top); + m_iSplitterY = g_plugin.getDword(g_dat.bSavePerContact ? m_hContact : 0, "splitterPos", m_minEditInit.bottom - m_minEditInit.top); SendMessage(m_hwnd, DM_UPDATESIZEBAR, 0, 0); m_avatar.Enable(false); @@ -280,7 +280,7 @@ void CSrmmWindow::OnDestroy() m_cmdList.destroy(); MCONTACT hContact = (g_dat.bSavePerContact) ? m_hContact : 0; - db_set_dw(hContact ? m_hContact : 0, SRMMMOD, "splitterPos", m_iSplitterY); + g_plugin.setDword(hContact ? m_hContact : 0, "splitterPos", m_iSplitterY); if (m_hFont) { DeleteObject(m_hFont); @@ -290,11 +290,11 @@ void CSrmmWindow::OnDestroy() WINDOWPLACEMENT wp = { sizeof(wp) }; GetWindowPlacement(m_hwnd, &wp); if (!m_windowWasCascaded) { - db_set_dw(hContact, SRMMMOD, "x", wp.rcNormalPosition.left); - db_set_dw(hContact, SRMMMOD, "y", wp.rcNormalPosition.top); + g_plugin.setDword(hContact, "x", wp.rcNormalPosition.left); + g_plugin.setDword(hContact, "y", wp.rcNormalPosition.top); } - db_set_dw(hContact, SRMMMOD, "width", wp.rcNormalPosition.right - wp.rcNormalPosition.left); - db_set_dw(hContact, SRMMMOD, "height", wp.rcNormalPosition.bottom - wp.rcNormalPosition.top); + g_plugin.setDword(hContact, "width", wp.rcNormalPosition.right - wp.rcNormalPosition.left); + g_plugin.setDword(hContact, "height", wp.rcNormalPosition.bottom - wp.rcNormalPosition.top); NotifyEvent(MSG_WINDOW_EVT_CLOSE); @@ -389,7 +389,7 @@ void CSrmmWindow::OnOptionsApplied(bool bUpdateAvatar) if (m_hBkgBrush) DeleteObject(m_hBkgBrush); - COLORREF colour = db_get_dw(0, SRMMMOD, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR); + COLORREF colour = g_plugin.getDword(SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR); m_hBkgBrush = CreateSolidBrush(colour); m_log.SendMsg(EM_SETBKGNDCOLOR, 0, colour); m_message.SendMsg(EM_SETBKGNDCOLOR, 0, colour); @@ -470,7 +470,7 @@ void CSrmmWindow::NotifyTyping(int mode) // Don't send to protocols that are offline // Don't send to users who are not visible and // Don't send to users who are not on the visible list when you are in invisible mode. - if (!db_get_b(m_hContact, SRMMMOD, SRMSGSET_TYPING, g_dat.bTypingNew)) + if (!g_plugin.getByte(m_hContact, SRMSGSET_TYPING, g_dat.bTypingNew)) return; if (!m_szProto) diff --git a/src/core/stdmsg/src/msglog.cpp b/src/core/stdmsg/src/msglog.cpp index 1fba3ccc7f..31454ddf13 100644 --- a/src/core/stdmsg/src/msglog.cpp +++ b/src/core/stdmsg/src/msglog.cpp @@ -488,7 +488,7 @@ void CSrmmWindow::StreamInEvents(MEVENT hDbEventFirst, int count, bool bAppend) #define RTFPICTHEADERMAXSIZE 78 void LoadMsgLogIcons(void) { - HBRUSH hBkgBrush = CreateSolidBrush(db_get_dw(0, SRMMMOD, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR)); + HBRUSH hBkgBrush = CreateSolidBrush(g_plugin.getDword(SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR)); BITMAPINFOHEADER bih = { sizeof(bih) }; bih.biBitCount = 24; diff --git a/src/core/stdmsg/src/msgoptions.cpp b/src/core/stdmsg/src/msgoptions.cpp index c410ccab8e..43c82f4885 100644 --- a/src/core/stdmsg/src/msgoptions.cpp +++ b/src/core/stdmsg/src/msgoptions.cpp @@ -61,16 +61,16 @@ bool LoadMsgDlgFont(int i, LOGFONT* lf, COLORREF * colour) if (colour) { mir_snprintf(str, "SRMFont%dCol", i); - *colour = db_get_dw(0, SRMMMOD, str, fontOptionsList[i].defColour); + *colour = g_plugin.getDword(str, fontOptionsList[i].defColour); } if (lf) { mir_snprintf(str, "SRMFont%dSize", i); - lf->lfHeight = (char)db_get_b(0, SRMMMOD, str, fontOptionsList[i].defSize); + lf->lfHeight = (char)g_plugin.getByte(str, fontOptionsList[i].defSize); lf->lfWidth = 0; lf->lfEscapement = 0; lf->lfOrientation = 0; mir_snprintf(str, "SRMFont%dSty", i); - int style = db_get_b(0, SRMMMOD, str, fontOptionsList[i].defStyle); + int style = g_plugin.getByte(str, fontOptionsList[i].defStyle); lf->lfWeight = style & DBFONTF_BOLD ? FW_BOLD : FW_NORMAL; lf->lfItalic = style & DBFONTF_ITALIC ? 1 : 0; lf->lfUnderline = 0; @@ -81,14 +81,14 @@ bool LoadMsgDlgFont(int i, LOGFONT* lf, COLORREF * colour) lf->lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; mir_snprintf(str, "SRMFont%d", i); - ptrW wszFontFace(db_get_wsa(0, SRMMMOD, str)); + ptrW wszFontFace(g_plugin.getWStringA(str)); if (wszFontFace == nullptr) wcsncpy_s(lf->lfFaceName, fontOptionsList[i].szDefFace, _TRUNCATE); else mir_wstrncpy(lf->lfFaceName, wszFontFace, _countof(lf->lfFaceName)); mir_snprintf(str, "SRMFont%dSet", i); - lf->lfCharSet = db_get_b(0, SRMMMOD, str, MsgDlgGetFontDefaultCharset(lf->lfFaceName)); + lf->lfCharSet = g_plugin.getByte(str, MsgDlgGetFontDefaultCharset(lf->lfFaceName)); } return true; } @@ -458,7 +458,7 @@ public: for (auto &hContact : Contacts()) { HANDLE hItem = clist.FindContact(hContact); - if (hItem && db_get_b(hContact, SRMMMOD, SRMSGSET_TYPING, defType)) + if (hItem && g_plugin.getByte(hContact, SRMSGSET_TYPING, defType)) clist.SetCheck(hItem, 1); } } @@ -474,7 +474,7 @@ public: for (auto &hContact : Contacts()) { HANDLE hItem = clist.FindContact(hContact); if (hItem) - db_set_b(hContact, SRMMMOD, SRMSGSET_TYPING, clist.GetCheck(hItem)); + g_plugin.setByte(hContact, SRMSGSET_TYPING, clist.GetCheck(hItem)); } } diff --git a/src/core/stduserinfo/src/contactinfo.cpp b/src/core/stduserinfo/src/contactinfo.cpp index d6373e2fba..779f362b1f 100644 --- a/src/core/stduserinfo/src/contactinfo.cpp +++ b/src/core/stduserinfo/src/contactinfo.cpp @@ -301,7 +301,7 @@ INT_PTR CALLBACK ContactDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP for (i = 0;; i++) { lvi.lParam = i; mir_snprintf(idstr, "Mye-mail%d", i); - if (db_get_ws(hContact, MODULENAME, idstr, &dbv)) + if (g_plugin.getWString(hContact, idstr, &dbv)) break; lvi.pszText = idstr2; mir_snwprintf(idstr2, TranslateT("Custom %d"), i + 1); @@ -362,7 +362,7 @@ INT_PTR CALLBACK ContactDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP for (i = 0;; i++) { lvi.lParam = i; mir_snprintf(idstr, "MyPhone%d", i); - if (db_get_ws(hContact, MODULENAME, idstr, &dbv)) + if (g_plugin.getWString(hContact, idstr, &dbv)) break; lvi.pszText = idstr2; mir_snwprintf(idstr2, TranslateT("Custom %d"), i + 1); @@ -476,10 +476,10 @@ INT_PTR CALLBACK ContactDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP break; for (i = 0;; i++) { mir_snprintf(idstr, szIdTemplate, i); - if (db_get_s(hContact, MODULENAME, idstr, &dbv)) break; + if (g_plugin.getString(hContact, idstr, &dbv)) break; db_free(&dbv); } - db_set_s(hContact, MODULENAME, idstr, szNewData); + g_plugin.setString(hContact, idstr, szNewData); SendMessage(hwndDlg, M_REMAKELISTS, 0, 0); } } @@ -489,13 +489,13 @@ INT_PTR CALLBACK ContactDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP DBVARIANT dbv; for (i = lvi.lParam;; i++) { mir_snprintf(idstr, szIdTemplate, i + 1); - if (db_get_s(hContact, MODULENAME, idstr, &dbv)) break; + if (g_plugin.getString(hContact, idstr, &dbv)) break; mir_snprintf(idstr, szIdTemplate, i); - db_set_s(hContact, MODULENAME, idstr, dbv.pszVal); + g_plugin.setString(hContact, idstr, dbv.pszVal); db_free(&dbv); } mir_snprintf(idstr, szIdTemplate, i); - db_unset(hContact, MODULENAME, idstr); + g_plugin.delSetting(hContact, idstr); SendMessage(hwndDlg, M_REMAKELISTS, 0, 0); } else if (hti.iSubItem - 2 == (nm->hdr.idFrom == IDC_PHONES)) { @@ -503,12 +503,12 @@ INT_PTR CALLBACK ContactDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP char szText[256], idstr[33]; DBVARIANT dbv; mir_snprintf(idstr, szIdTemplate, lvi.lParam); - if (db_get_s(hContact, MODULENAME, idstr, &dbv)) break; + if (g_plugin.getString(hContact, idstr, &dbv)) break; mir_strncpy(szText, dbv.pszVal, _countof(szText)); db_free(&dbv); if (IDOK != DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(nm->hdr.idFrom == IDC_PHONES ? IDD_ADDPHONE : IDD_ADDEMAIL), hwndDlg, nm->hdr.idFrom == IDC_PHONES ? EditUserPhoneDlgProc : EditUserEmailDlgProc, (LPARAM)szText)) break; - db_set_s(hContact, MODULENAME, idstr, szText); + g_plugin.setString(hContact, idstr, szText); SendMessage(hwndDlg, M_REMAKELISTS, 0, 0); } } diff --git a/src/core/stduserinfo/src/stdinfo.cpp b/src/core/stduserinfo/src/stdinfo.cpp index 7983a0f6ff..2bea6486fe 100644 --- a/src/core/stduserinfo/src/stdinfo.cpp +++ b/src/core/stduserinfo/src/stdinfo.cpp @@ -551,7 +551,7 @@ static INT_PTR CALLBACK NotesDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR HFONT hFont = CreateFontIndirect(&lf); SendDlgItemMessage(hwndDlg, IDC_ABOUT, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0)); - ptrW szNotes(db_get_wsa(lParam, MODULENAME, "MyNotes")); + ptrW szNotes(g_plugin.getWStringA(lParam, "MyNotes")); if (szNotes != nullptr) SetDlgItemText(hwndDlg, IDC_MYNOTES, szNotes); } @@ -574,11 +574,11 @@ static INT_PTR CALLBACK NotesDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR case PSN_APPLY: hContact = (MCONTACT)((LPPSHNOTIFY)lParam)->lParam; if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_MYNOTES))) { - char text[2048]; - GetDlgItemTextA(hwndDlg, IDC_MYNOTES, text, _countof(text)); - db_set_s(hContact, MODULENAME, "MyNotes", text); + wchar_t text[2048]; + GetDlgItemText(hwndDlg, IDC_MYNOTES, text, _countof(text)); + g_plugin.setWString(hContact, "MyNotes", text); } - else db_unset(hContact, MODULENAME, "MyNotes"); + else g_plugin.delSetting(hContact, "MyNotes"); break; } break; diff --git a/src/core/stduseronline/src/useronline.cpp b/src/core/stduseronline/src/useronline.cpp index ef241c3ac9..4cd44fe034 100644 --- a/src/core/stduseronline/src/useronline.cpp +++ b/src/core/stduseronline/src/useronline.cpp @@ -33,40 +33,37 @@ static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) return 0; int newStatus = cws->value.wVal; - int oldStatus = db_get_w(hContact, MODULENAME, "OldStatus", ID_STATUS_OFFLINE); - db_set_w(hContact, MODULENAME, "OldStatus", (WORD)newStatus); + int oldStatus = g_plugin.getWord(hContact, "OldStatus", ID_STATUS_OFFLINE); + g_plugin.setWord(hContact, "OldStatus", (WORD)newStatus); if (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; if (db_get_b(hContact, "CList", "Hidden", 0)) return 0; - if (newStatus == ID_STATUS_OFFLINE && oldStatus != ID_STATUS_OFFLINE) { - // Remove the event from the queue if it exists since they are now offline - int lastEvent = (int)db_get_dw(hContact, MODULENAME, "LastEvent", 0); - - if (lastEvent) { - g_clistApi.pfnRemoveEvent(hContact, lastEvent); - db_set_dw(hContact, MODULENAME, "LastEvent", 0); - } - } - if ((newStatus == ID_STATUS_ONLINE || newStatus == ID_STATUS_FREECHAT) && - oldStatus != ID_STATUS_ONLINE && oldStatus != ID_STATUS_FREECHAT) { - { - DWORD ticked = g_plugin.getDword(cws->szModule, GetTickCount()); - // only play the sound (or show event) if this event happens at least 10 secs after the proto went from offline - if (GetTickCount() - ticked > (1000*10)) { - wchar_t tooltip[256]; - mir_snwprintf(tooltip, TranslateT("%s is online"), Clist_GetContactDisplayName(hContact)); - - CLISTEVENT cle = {}; - cle.flags = CLEF_ONLYAFEW | CLEF_UNICODE; - cle.hContact = hContact; - cle.hDbEvent = uniqueEventId++; - cle.hIcon = Skin_LoadIcon(SKINICON_OTHER_USERONLINE, false); - cle.pszService = "UserOnline/Description"; - cle.szTooltip.w = tooltip; - g_clistApi.pfnAddEvent(&cle); - IcoLib_ReleaseIcon(cle.hIcon, 0); - db_set_dw(cle.hContact, MODULENAME, "LastEvent", (DWORD)cle.hDbEvent); - Skin_PlaySound(MODULENAME); - } + if (newStatus == ID_STATUS_OFFLINE && oldStatus != ID_STATUS_OFFLINE) { + // Remove the event from the queue if it exists since they are now offline + MEVENT lastEvent = g_plugin.getDword(hContact, "LastEvent"); + if (lastEvent) { + g_clistApi.pfnRemoveEvent(hContact, lastEvent); + g_plugin.setDword(hContact, "LastEvent", 0); + } + } + + if ((newStatus == ID_STATUS_ONLINE || newStatus == ID_STATUS_FREECHAT) && oldStatus != ID_STATUS_ONLINE && oldStatus != ID_STATUS_FREECHAT) { + DWORD ticked = g_plugin.getDword(cws->szModule, GetTickCount()); + // only play the sound (or show event) if this event happens at least 10 secs after the proto went from offline + if (GetTickCount() - ticked > (1000 * 10)) { + wchar_t tooltip[256]; + mir_snwprintf(tooltip, TranslateT("%s is online"), Clist_GetContactDisplayName(hContact)); + + CLISTEVENT cle = {}; + cle.flags = CLEF_ONLYAFEW | CLEF_UNICODE; + cle.hContact = hContact; + cle.hDbEvent = uniqueEventId++; + cle.hIcon = Skin_LoadIcon(SKINICON_OTHER_USERONLINE, false); + cle.pszService = "UserOnline/Description"; + cle.szTooltip.w = tooltip; + g_clistApi.pfnAddEvent(&cle); + IcoLib_ReleaseIcon(cle.hIcon, 0); + g_plugin.setDword(cle.hContact, "LastEvent", cle.hDbEvent); + Skin_PlaySound(MODULENAME); } } return 0; @@ -74,7 +71,7 @@ static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) static int UserOnlineAck(WPARAM, LPARAM lParam) { - ACKDATA * ack = (ACKDATA*) lParam; + ACKDATA * ack = (ACKDATA*)lParam; if (ack != nullptr && ack->szModule && ack->type == ACKTYPE_STATUS && ack->result == ACKRESULT_SUCCESS && ack->hProcess == (HANDLE)ID_STATUS_OFFLINE) { // if going from offline to any other mode, remember when it happened. g_plugin.setDword(ack->szModule, GetTickCount()); @@ -95,7 +92,7 @@ static int UserOnlineAccountsChanged(WPARAM eventCode, LPARAM lParam) { PROTOACCOUNT *pa = (PROTOACCOUNT*)lParam; - switch(eventCode) { + switch (eventCode) { case PRAC_ADDED: case PRAC_CHECKED: // reset the counter @@ -112,7 +109,7 @@ int LoadUserOnlineModule(void) HookEvent(ME_PROTO_ACK, UserOnlineAck); HookEvent(ME_SYSTEM_MODULESLOADED, UserOnlineModulesLoaded); HookEvent(ME_PROTO_ACCLISTCHANGED, UserOnlineAccountsChanged); - + g_plugin.addSound(MODULENAME, LPGENW("Alerts"), LPGENW("Online")); return 0; } -- cgit v1.2.3