Michael Müller : aclui: Add icons to the users list.
Alexandre Julliard
julliard at winehq.org
Thu Mar 4 15:53:38 CST 2021
Module: wine
Branch: master
Commit: fe7d44dfa38657bd9151a8b28592ac457e1a067a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=fe7d44dfa38657bd9151a8b28592ac457e1a067a
Author: Michael Müller <michael at fds-team.de>
Date: Sun Feb 28 10:27:47 2021 -0600
aclui: Add icons to the users list.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/aclui/Makefile.in | 2 +-
dlls/aclui/aclui.rc | 5 +++++
dlls/aclui/aclui_main.c | 34 +++++++++++++++++++++++++++++++++-
dlls/aclui/user_icons.bmp | Bin 0 -> 2730 bytes
4 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/aclui/Makefile.in b/dlls/aclui/Makefile.in
index f93e5da6c8d..1eac32f0700 100644
--- a/dlls/aclui/Makefile.in
+++ b/dlls/aclui/Makefile.in
@@ -1,6 +1,6 @@
MODULE = aclui.dll
IMPORTLIB = aclui
-IMPORTS = comctl32 user32 advapi32
+IMPORTS = comctl32 user32 advapi32 gdi32
EXTRADLLFLAGS = -mno-cygwin -Wb,--prefer-native
diff --git a/dlls/aclui/aclui.rc b/dlls/aclui/aclui.rc
index 5cc808811ca..1228c2ab15b 100644
--- a/dlls/aclui/aclui.rc
+++ b/dlls/aclui/aclui.rc
@@ -40,3 +40,8 @@ BEGIN
| WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP,
5, 115, 230, 95, WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE
END
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/* @makedep: user_icons.bmp */
+IDB_USER_ICONS BITMAP user_icons.bmp
diff --git a/dlls/aclui/aclui_main.c b/dlls/aclui/aclui_main.c
index 199e7295adc..01e3476b97f 100644
--- a/dlls/aclui/aclui_main.c
+++ b/dlls/aclui/aclui_main.c
@@ -55,6 +55,7 @@ struct security_page
unsigned int user_count;
HWND dialog;
+ HIMAGELIST image_list;
};
static HINSTANCE aclui_instance;
@@ -110,11 +111,12 @@ static void add_user(struct security_page *page, PSID sid)
user->name = name;
user->sid = sid;
- item.mask = LVIF_PARAM | LVIF_TEXT;
+ item.mask = LVIF_PARAM | LVIF_TEXT | LVIF_IMAGE;
item.iItem = -1;
item.iSubItem = 0;
item.pszText = name;
item.lParam = (LPARAM)user;
+ item.iImage = (sid_type == SidTypeGroup || sid_type == SidTypeWellKnownGroup) ? 0 : 1;
SendMessageW(GetDlgItem(page->dialog, IDC_USERS), LVM_INSERTITEMW, 0, (LPARAM)&item);
}
@@ -160,6 +162,30 @@ static void init_users(struct security_page *page)
}
}
+static HIMAGELIST create_image_list(UINT resource, UINT width, UINT height, UINT count, COLORREF mask_color)
+{
+ HIMAGELIST image_list;
+ HBITMAP image;
+ INT ret;
+
+ if (!(image_list = ImageList_Create(width, height, ILC_COLOR32 | ILC_MASK, 0, count)))
+ return NULL;
+ if (!(image = LoadBitmapW(aclui_instance, MAKEINTRESOURCEW(resource))))
+ {
+ ImageList_Destroy(image_list);
+ return NULL;
+ }
+
+ ret = ImageList_AddMasked(image_list, image, mask_color);
+ DeleteObject(image);
+ if (ret == -1)
+ {
+ ImageList_Destroy(image_list);
+ return NULL;
+ }
+ return image_list;
+}
+
static void security_page_free(struct security_page *page)
{
unsigned int i;
@@ -169,6 +195,8 @@ static void security_page_free(struct security_page *page)
free(page->users);
LocalFree(page->sd);
+ if (page->image_list)
+ ImageList_Destroy(page->image_list);
if (page->security)
ISecurityInformation_Release(page->security);
free(page);
@@ -199,6 +227,10 @@ static void security_page_init_dlg(HWND hwnd, struct security_page *page)
column.cx = rect.right - rect.left;
SendMessageW(control, LVM_INSERTCOLUMNW, 0, (LPARAM)&column);
+ if (!(page->image_list = create_image_list(IDB_USER_ICONS, 18, 18, 2, RGB(255, 0, 255))))
+ return;
+ SendMessageW(control, LVM_SETIMAGELIST, LVSIL_SMALL, (LPARAM)page->image_list);
+
init_users(page);
if (page->user_count)
diff --git a/dlls/aclui/user_icons.bmp b/dlls/aclui/user_icons.bmp
new file mode 100644
index 00000000000..29259e2724c
Binary files /dev/null and b/dlls/aclui/user_icons.bmp differ
More information about the wine-cvs
mailing list