diff options
author | George Hazan <george.hazan@gmail.com> | 2023-12-29 17:03:21 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-12-29 17:03:21 +0300 |
commit | 9536e0bb47b12ea2ae01ab070dd9f6aa5bb360c2 (patch) | |
tree | a6663fa7d5aa9afcb51fe1b914e457acdcf5fa8f /src/mir_app | |
parent | 28535b12d00c1ccfa98250dd2c7e87402545adba (diff) |
fixes #4085 (Удалить настройки невидимости)
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/mir_app.vcxproj | 1 | ||||
-rw-r--r-- | src/mir_app/mir_app.vcxproj.filters | 3 | ||||
-rw-r--r-- | src/mir_app/res/resource.rc | 13 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/modules.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/proto_interface.cpp | 5 | ||||
-rw-r--r-- | src/mir_app/src/proto_internal.cpp | 6 | ||||
-rw-r--r-- | src/mir_app/src/protocols.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/resource.h | 2 | ||||
-rw-r--r-- | src/mir_app/src/visibility.cpp | 289 |
11 files changed, 0 insertions, 325 deletions
diff --git a/src/mir_app/mir_app.vcxproj b/src/mir_app/mir_app.vcxproj index fa8e33adfb..4cecba6fe2 100644 --- a/src/mir_app/mir_app.vcxproj +++ b/src/mir_app/mir_app.vcxproj @@ -169,7 +169,6 @@ </ClCompile>
<ClCompile Include="src\usedIcons.cpp" />
<ClCompile Include="src\utils.cpp" />
- <ClCompile Include="src\visibility.cpp" />
<ClCompile Include="src\userInfo.cpp" />
<ClInclude Include="src\chat.h" />
<ClInclude Include="src\clc.h" />
diff --git a/src/mir_app/mir_app.vcxproj.filters b/src/mir_app/mir_app.vcxproj.filters index bcc2243516..b1c74d0b08 100644 --- a/src/mir_app/mir_app.vcxproj.filters +++ b/src/mir_app/mir_app.vcxproj.filters @@ -107,9 +107,6 @@ <ClCompile Include="src\utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="src\visibility.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
<ClCompile Include="src\pu_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc index 64f519d355..bc272747c6 100644 --- a/src/mir_app/res/resource.rc +++ b/src/mir_app/res/resource.rc @@ -297,19 +297,6 @@ BEGIN LTEXT "Typing",IDC_STATIC,241,178,66,8,SS_NOPREFIX | SS_CENTERIMAGE
END
-IDD_OPT_VISIBILITY DIALOGEX 0, 0, 313, 240
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- GROUPBOX "Visibility",IDC_STATIC,0,0,313,240
- CONTROL "",IDC_LIST,"CListControl",WS_TABSTOP | 0x1d0,8,14,297,183,WS_EX_CLIENTEDGE
- ICON IDI_ONLINE,IDC_VISIBLEICON,8,203,20,20,SS_CENTERIMAGE
- LTEXT "You are visible to this person even when in invisible mode",IDC_STATIC,26,209,279,8,SS_NOPREFIX | SS_CENTERIMAGE
- ICON IDI_INVISIBLE,IDC_INVISIBLEICON,8,218,20,20,SS_CENTERIMAGE
- LTEXT "You are never visible to this person",IDC_STATIC,26,224,279,8,SS_NOPREFIX | SS_CENTERIMAGE
-END
-
IDD_ICONINDEX DIALOGEX 0, 0, 219, 197
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 8f84e99e5e..4152581314 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -64,7 +64,6 @@ Button_SetSkin_IcoLib @24 ?SendContacts@PROTO_INTERFACE@@UAEHIHHPAI@Z @66 NONAME
?SendFile@PROTO_INTERFACE@@UAEPAXIPB_WPAPA_W@Z @67 NONAME
?SendMsg@PROTO_INTERFACE@@UAEHIIPBD@Z @68 NONAME
-?SetApparentMode@PROTO_INTERFACE@@UAEHIH@Z @70 NONAME
?SetAwayMsg@PROTO_INTERFACE@@UAEHHPB_W@Z @71 NONAME
?SetStatus@PROTO_INTERFACE@@UAEHH@Z @72 NONAME
?SetStatusText@CProtoIntDlgBase@@QAEXPB_W@Z @73 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 7eeea9080a..1adcdd89e3 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -64,7 +64,6 @@ Button_SetSkin_IcoLib @24 ?SendContacts@PROTO_INTERFACE@@UEAAHIHHPEAI@Z @66 NONAME
?SendFile@PROTO_INTERFACE@@UEAAPEAXIPEB_WPEAPEA_W@Z @67 NONAME
?SendMsg@PROTO_INTERFACE@@UEAAHIIPEBD@Z @68 NONAME
-?SetApparentMode@PROTO_INTERFACE@@UEAAHIH@Z @70 NONAME
?SetAwayMsg@PROTO_INTERFACE@@UEAAHHPEB_W@Z @71 NONAME
?SetStatus@PROTO_INTERFACE@@UEAAHH@Z @72 NONAME
?SetStatusText@CProtoIntDlgBase@@QEAAXPEB_W@Z @73 NONAME
diff --git a/src/mir_app/src/modules.cpp b/src/mir_app/src/modules.cpp index 199188a835..757fba4a6a 100644 --- a/src/mir_app/src/modules.cpp +++ b/src/mir_app/src/modules.cpp @@ -52,7 +52,6 @@ int LoadSkinIcons(void); int LoadSkinSounds(void);
int LoadSkinHotkeys(void);
int LoadUserInfoModule(void); // ui: user info
-int LoadVisibilityModule(void); // ui: visibility control
int LoadUtilsModule(void); // ui: utils (has a few window classes, like HyperLink)
int LoadCLCModule(void); // window class: CLC control
@@ -144,7 +143,6 @@ int LoadDefaultModules(void) // order becomes less important below here
if (LoadFindAddModule()) return 1;
if (LoadIgnoreModule()) return 1;
- if (LoadVisibilityModule()) return 1;
if (LoadIdleModule()) return 1;
return 0;
}
diff --git a/src/mir_app/src/proto_interface.cpp b/src/mir_app/src/proto_interface.cpp index 3d783df392..43a6f43c2e 100644 --- a/src/mir_app/src/proto_interface.cpp +++ b/src/mir_app/src/proto_interface.cpp @@ -262,11 +262,6 @@ int PROTO_INTERFACE::SendMsg(MCONTACT, MEVENT, const char*) return 0; // error
}
-int PROTO_INTERFACE::SetApparentMode(MCONTACT, int)
-{
- return 1; // error
-}
-
int PROTO_INTERFACE::SetStatus(int)
{
return 1; // you better declare it
diff --git a/src/mir_app/src/proto_internal.cpp b/src/mir_app/src/proto_internal.cpp index b876e221ea..9fc9c45fd7 100644 --- a/src/mir_app/src/proto_internal.cpp +++ b/src/mir_app/src/proto_internal.cpp @@ -215,12 +215,6 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (int)ProtoCallService(m_szModuleName, PSS_MESSAGE, 0, (LPARAM)&ccs);
}
- int SetApparentMode(MCONTACT hContact, int mode) override
- {
- CCSDATA ccs = { hContact, PSS_SETAPPARENTMODE, (WPARAM)mode, 0 };
- return (int)ProtoCallService(m_szModuleName, PSS_SETAPPARENTMODE, 0, (LPARAM)&ccs);
- }
-
int SetStatus(int iNewStatus) override
{
return (int)ProtoCallService(m_szModuleName, PS_SETSTATUS, iNewStatus, 0);
diff --git a/src/mir_app/src/protocols.cpp b/src/mir_app/src/protocols.cpp index 3da908709c..60e15595b3 100644 --- a/src/mir_app/src/protocols.cpp +++ b/src/mir_app/src/protocols.cpp @@ -67,7 +67,6 @@ static TServiceListItem serviceItems[] = { PSS_CONTACTS, 23 },
{ PSS_FILE, 24 },
{ PSS_MESSAGE, 25 },
- { PSS_SETAPPARENTMODE, 26 },
{ PS_SETSTATUS, 27 },
{ PSS_GETAWAYMSG, 28 },
{ PSR_AWAYMSG, 29 },
@@ -432,7 +431,6 @@ MIR_APP_DLL(INT_PTR) CallContactService(MCONTACT hContact, const char *szModule, }
return msgId;
}
- case 26: return (INT_PTR)ppi->SetApparentMode(hContact, wParam);
case 27: return (INT_PTR)ppi->SetStatus(wParam);
case 28: return (INT_PTR)ppi->GetAwayMsg(hContact);
case 29: return (INT_PTR)ppi->RecvAwayMsg(hContact, wParam, (PROTORECVEVENT *)lParam);
diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h index b7f4337a30..db1ba527c4 100644 --- a/src/mir_app/src/resource.h +++ b/src/mir_app/src/resource.h @@ -354,8 +354,6 @@ #define IDC_PAGETREE 1186
#define IDC_RUNNOW 1186
#define IDC_GETMORE 1200
-#define IDC_VISIBLEICON 1204
-#define IDC_INVISIBLEICON 1205
#define IDC_FILEICON 1206
#define IDC_ONLINEICON 1207
#define IDC_FILENAMES 1208
diff --git a/src/mir_app/src/visibility.cpp b/src/mir_app/src/visibility.cpp deleted file mode 100644 index 8dab94d294..0000000000 --- a/src/mir_app/src/visibility.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/*
-
-Miranda NG: the free IM client for Microsoft* Windows*
-
-Copyright (C) 2012-23 Miranda NG team (https://miranda-ng.org),
-Copyright (c) 2000-12 Miranda IM project,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "stdafx.h"
-
-static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentItem, int *groupChildCount)
-{
- int iconOn[2] = {1, 1};
- int childCount[2] = {0, 0};
-
- int typeOfFirst = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hFirstItem, 0);
- //check groups
- HANDLE hItem;
- if (typeOfFirst == CLCIT_GROUP)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hFirstItem);
-
- while (hItem) {
- HANDLE hChildItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if (hChildItem) SetListGroupIcons(hwndList, hChildItem, hItem, childCount);
- for (int i=0; i < _countof(iconOn); i++)
- if (iconOn[i] && SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i) == 0) iconOn[i] = 0;
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hItem);
- }
- //check contacts
- if (typeOfFirst == CLCIT_CONTACT)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hFirstItem);
- while (hItem) {
- for (int i = 0; i < _countof(iconOn); i++) {
- int iImage = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i);
- if (iconOn[i] && iImage == 0) iconOn[i] = 0;
- if (iImage != EMPTY_EXTRA_ICON)
- childCount[i]++;
- }
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hItem);
- }
- //set icons
- for (int i = 0; i < _countof(iconOn); i++) {
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hParentItem, MAKELPARAM(i, childCount[i] ? (iconOn[i] ? i + 1 : 0) : EMPTY_EXTRA_ICON));
- if (groupChildCount) groupChildCount[i] += childCount[i];
- }
-}
-
-static void SetAllChildIcons(HWND hwndList, HANDLE hFirstItem, int iColumn, int iImage)
-{
- int typeOfFirst = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hFirstItem, 0);
- //check groups
- HANDLE hItem;
- if (typeOfFirst == CLCIT_GROUP)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hFirstItem);
- while (hItem) {
- HANDLE hChildItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if (hChildItem)
- SetAllChildIcons(hwndList, hChildItem, iColumn, iImage);
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hItem);
- }
- //check contacts
- if (typeOfFirst == CLCIT_CONTACT)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hFirstItem);
- while (hItem) {
- int iOldIcon = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, iColumn);
- if (iOldIcon != EMPTY_EXTRA_ICON && iOldIcon != iImage)
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage));
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hItem);
- }
-}
-
-static void ResetListOptions(HWND hwndList)
-{
- SetWindowLongPtr(hwndList, GWL_STYLE, GetWindowLongPtr(hwndList, GWL_STYLE)|CLS_SHOWHIDDEN);
-}
-
-static void SetAllContactIcons(HWND hwndList)
-{
- for (auto &hContact : Contacts()) {
- HANDLE hItem = (HANDLE)SendMessage(hwndList, CLM_FINDCONTACT, hContact, 0);
- if (hItem == nullptr)
- continue;
-
- uint32_t flags;
- uint16_t status;
- char *szProto = Proto_GetBaseAccountName(hContact);
- if (szProto == nullptr) {
- flags = 0;
- status = 0;
- }
- else {
- flags = CallContactService(0, szProto, PS_GETCAPS, PFLAGNUM_1, 0);
- status = db_get_w(hContact, szProto, "ApparentMode", 0);
- }
-
- if (flags & PF1_INVISLIST)
- if (SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(0, 0)) == EMPTY_EXTRA_ICON)
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(0, status == ID_STATUS_ONLINE ? 1 : 0));
-
- if (flags & PF1_VISLIST)
- if (SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(1, 0)) == EMPTY_EXTRA_ICON)
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(1, status == ID_STATUS_OFFLINE ? 2 : 0));
- }
-}
-
-static INT_PTR CALLBACK DlgProcVisibilityOpts(HWND hwndDlg, UINT msg, WPARAM, LPARAM lParam)
-{
- static HICON hVisibleIcon, hInvisibleIcon;
- static HANDLE hItemAll;
-
- HIMAGELIST hIml;
-
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
-
- hIml = ImageList_Create(g_iIconSX, g_iIconSY, ILC_COLOR32 | ILC_MASK, 3, 3);
- ImageList_AddSkinIcon(hIml, SKINICON_OTHER_SMALLDOT);
- ImageList_AddSkinIcon(hIml, SKINICON_OTHER_VISIBLE_ALL);
- ImageList_AddSkinIcon(hIml, SKINICON_OTHER_INVISIBLE_ALL);
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)hIml);
- hVisibleIcon = ImageList_GetIcon(hIml, 1, ILD_NORMAL);
- SendDlgItemMessage(hwndDlg, IDC_VISIBLEICON, STM_SETICON, (WPARAM)hVisibleIcon, 0);
- hInvisibleIcon = ImageList_GetIcon(hIml, 2, ILD_NORMAL);
- SendDlgItemMessage(hwndDlg, IDC_INVISIBLEICON, STM_SETICON, (WPARAM)hInvisibleIcon, 0);
-
- ResetListOptions(GetDlgItem(hwndDlg, IDC_LIST));
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRACOLUMNS, 2, 0);
- {
- CLCINFOITEM cii = { sizeof(cii) };
- cii.flags = CLCIIF_GROUPFONT;
- cii.pszText = TranslateT("** All contacts **");
- hItemAll = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_ADDINFOITEM, 0, (LPARAM)&cii);
- }
- SetAllContactIcons(GetDlgItem(hwndDlg, IDC_LIST));
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, nullptr);
- return TRUE;
-
- case WM_SETFOCUS:
- SetFocus(GetDlgItem(hwndDlg, IDC_LIST));
- break;
-
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->idFrom) {
- case IDC_LIST:
- switch (((LPNMHDR)lParam)->code) {
- case CLN_NEWCONTACT:
- case CLN_LISTREBUILT:
- SetAllContactIcons(GetDlgItem(hwndDlg, IDC_LIST));
- __fallthrough;
-
- case CLN_CONTACTMOVED:
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, nullptr);
- break;
-
- case CLN_OPTIONSCHANGED:
- ResetListOptions(GetDlgItem(hwndDlg, IDC_LIST));
- break;
-
- case NM_CLICK:
- // Make sure we have an extra column
- NMCLISTCONTROL *nm = (NMCLISTCONTROL*)lParam;
- if (nm->iColumn == -1)
- break;
-
- // Find clicked item
- uint32_t hitFlags;
- HANDLE hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_HITTEST, (WPARAM)&hitFlags, MAKELPARAM(nm->pt.x, nm->pt.y));
- if (hItem == nullptr)
- break;
-
- // It was not a visbility icon
- if (!(hitFlags & CLCHT_ONITEMEXTRA))
- break;
-
- // Get image in clicked column (0 = none, 1 = visible, 2 = invisible)
- int iImage = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, 0));
- if (iImage == 0)
- iImage = nm->iColumn + 1;
- else if (iImage == 1 || iImage == 2)
- iImage = 0;
-
- // Get item type (contact, group, etc...)
- int itemType = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETITEMTYPE, (WPARAM)hItem, 0);
-
- // Update list, making sure that the options are mutually exclusive
- if (itemType == CLCIT_CONTACT) { // A contact
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, iImage));
- if (iImage && SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn ? 0 : 1, 0)) != EMPTY_EXTRA_ICON)
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn ? 0 : 1, 0));
- }
- else if (itemType == CLCIT_INFO) { // All Contacts
- SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage);
- if (iImage)
- SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn ? 0 : 1, 0);
- }
- else if (itemType == CLCIT_GROUP) { // A group
- hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if (hItem) {
- SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage);
- if (iImage)
- SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn ? 0 : 1, 0);
- }
- }
- // Update the all/none icons
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, nullptr);
-
- // Activate Apply button
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- }
- break;
-
- case 0:
- if (((LPNMHDR)lParam)->code == PSN_APPLY) {
- for (auto &hContact : Contacts()) {
- HANDLE hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_FINDCONTACT, hContact, 0);
- if (hItem == nullptr)
- continue;
-
- int set = 0;
- for (int i = 0; i < 2; i++) {
- int iImage = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(i, 0));
- if (iImage == i + 1) {
- ProtoChainSend(hContact, PSS_SETAPPARENTMODE, iImage == 1 ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE, 0);
- set = 1;
- break;
- }
- }
- if (!set)
- ProtoChainSend(hContact, PSS_SETAPPARENTMODE, 0, 0);
- }
- return TRUE;
- }
- }
- break;
-
- case WM_DESTROY:
- DestroyIcon(hVisibleIcon);
- DestroyIcon(hInvisibleIcon);
-
- hIml = (HIMAGELIST)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGELIST, 0, 0);
- ImageList_Destroy(hIml);
- break;
- }
- return FALSE;
-}
-
-static int VisibilityOptInitialise(WPARAM wParam, LPARAM)
-{
- OPTIONSDIALOGPAGE odp = {};
- odp.position = 850000000;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_VISIBILITY);
- odp.szTitle.a = LPGEN("Visibility");
- odp.szGroup.a = LPGEN("Contacts");
- odp.pfnDlgProc = DlgProcVisibilityOpts;
- odp.flags = ODPF_BOLDGROUPS;
- g_plugin.addOptions(wParam, &odp);
- return 0;
-}
-
-int LoadVisibilityModule(void)
-{
- HookEvent(ME_OPT_INITIALISE, VisibilityOptInitialise);
- return 0;
-}
|