From 1ac5dafa951f57dfca5cf0dd6e7d2eeeea2f6772 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 3 Jul 2015 08:43:58 +0000 Subject: - IDR_CONTEXT resource removed from all clists; - all menu control rewritten using Menu_* functions, thus making group & tray menu customizable in StdClist & Clist_Nicer; - major gdi resource leak fixed git-svn-id: http://svn.miranda-ng.org/main/trunk@14483 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Clist_nicer/res/addgroup.ico | Bin 1150 -> 0 bytes plugins/Clist_nicer/res/resource.rc | 42 ------- plugins/Clist_nicer/src/clistmenus.cpp | 23 +--- plugins/Clist_nicer/src/clisttray.cpp | 4 +- plugins/Clist_nicer/src/clui.cpp | 42 ++----- plugins/Clist_nicer/src/groupmenu.cpp | 216 ++++++--------------------------- plugins/Clist_nicer/src/resource.h | 2 - 7 files changed, 55 insertions(+), 274 deletions(-) delete mode 100644 plugins/Clist_nicer/res/addgroup.ico (limited to 'plugins/Clist_nicer') diff --git a/plugins/Clist_nicer/res/addgroup.ico b/plugins/Clist_nicer/res/addgroup.ico deleted file mode 100644 index 539c32fcd9..0000000000 Binary files a/plugins/Clist_nicer/res/addgroup.ico and /dev/null differ diff --git a/plugins/Clist_nicer/res/resource.rc b/plugins/Clist_nicer/res/resource.rc index 28fbc2cd53..e37a5911d5 100644 --- a/plugins/Clist_nicer/res/resource.rc +++ b/plugins/Clist_nicer/res/resource.rc @@ -537,7 +537,6 @@ END // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -IDI_ADDGROUP ICON "addgroup.ico" IDI_CLIST ICON "clist.ico" IDI_DELETE ICON "delete.ico" IDI_CLVM_OPTIONS ICON "options_clvm.ico" @@ -601,47 +600,6 @@ BEGIN END END -IDR_CONTEXT MENU -BEGIN - POPUP "Tray" - BEGIN - MENUITEM "&Hide/Show", 40038 - MENUITEM SEPARATOR - MENUITEM "E&xit", ID_TRAY_EXIT - END - POPUP "Nowhere" - BEGIN - MENUITEM "&New group", POPUP_NEWGROUP - MENUITEM SEPARATOR - MENUITEM "&Hide offline users", POPUP_HIDEOFFLINE - MENUITEM "Hide &offline users out here", POPUP_HIDEOFFLINEROOT - MENUITEM "Hide &empty groups", POPUP_HIDEEMPTYGROUPS - MENUITEM "Disable &groups", POPUP_DISABLEGROUPS - MENUITEM SEPARATOR - MENUITEM SEPARATOR - MENUITEM "Hide Miranda", POPUP_HIDEMIRANDA - END - POPUP "Group" - BEGIN - MENUITEM "&New subgroup", POPUP_NEWSUBGROUP - MENUITEM "&Hide offline users in here", POPUP_GROUPHIDEOFFLINE - MENUITEM SEPARATOR - MENUITEM "&Rename group", POPUP_RENAMEGROUP - MENUITEM "&Delete group", POPUP_DELETEGROUP - MENUITEM SEPARATOR - MENUITEM "Move marked contacts to this group", POPUP_MOVEMARKEDHERE, GRAYED - END - POPUP "Appearance" - BEGIN - MENUITEM "Show status icons", POPUP_SHOWSTATUSICONS - MENUITEM "Show metacontact protocol icons", POPUP_SHOWMETAICONS - MENUITEM SEPARATOR - MENUITEM "Show additional buttons", POPUP_BUTTONS - MENUITEM "Draw sunken frame", POPUP_FRAME - END -END - - ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO diff --git a/plugins/Clist_nicer/src/clistmenus.cpp b/plugins/Clist_nicer/src/clistmenus.cpp index abaf6cda54..61e0570f26 100644 --- a/plugins/Clist_nicer/src/clistmenus.cpp +++ b/plugins/Clist_nicer/src/clistmenus.cpp @@ -29,23 +29,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #pragma hdrstop -static HMENU hMainMenu, hMainStatusMenu; - -void InitIconLibMenuIcons(); extern IconItemT iconItem[]; - -void DestroyTrayMenu(HMENU hMenu) -{ - int i, cnt; - - cnt = GetMenuItemCount(hMenu); - for (i = 0; i < cnt; ++i) { - HMENU hSubMenu = GetSubMenu(hMenu, i); - if (hSubMenu == hMainStatusMenu || hSubMenu == hMainMenu) - RemoveMenu(hMenu, i--, MF_BYPOSITION); - } - DestroyMenu(hMenu); -} +void InitIconLibMenuIcons(); INT_PTR CloseAction(WPARAM, LPARAM) { @@ -384,13 +369,9 @@ int InitCustomMenus(void) CMenuItem mi; mi.position = 200000; mi.pszService = "CList/SetContactIgnore"; - mi.hIcolibItem = iconItem[1].hIcolib; + mi.hIcolibItem = iconItem[0].hIcolib; mi.name.a = LPGEN("&Contact list settings..."); Menu_AddContactMenuItem(&mi); - - hMainStatusMenu = (HMENU)Menu_GetStatusMenu(); - hMainMenu = Menu_GetMainMenu(); - return 0; } diff --git a/plugins/Clist_nicer/src/clisttray.cpp b/plugins/Clist_nicer/src/clisttray.cpp index d60405fecc..6ef9e834d1 100644 --- a/plugins/Clist_nicer/src/clisttray.cpp +++ b/plugins/Clist_nicer/src/clisttray.cpp @@ -24,9 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" -#define TRAYICON_ID_BASE 100 -#define TIM_CALLBACK (WM_USER+1857) -#define TIM_CREATE (WM_USER+1858) +#define TRAYICON_ID_BASE 100 extern HIMAGELIST hCListImages; diff --git a/plugins/Clist_nicer/src/clui.cpp b/plugins/Clist_nicer/src/clui.cpp index 80b01a7a48..ec0cf9dc97 100644 --- a/plugins/Clist_nicer/src/clui.cpp +++ b/plugins/Clist_nicer/src/clui.cpp @@ -73,7 +73,6 @@ void InitGroupMenus(); void FS_RegisterFonts(); void LoadExtraIconModule(); void RemoveFromTaskBar(HWND hWnd); -void DestroyTrayMenu(HMENU hMenu); extern LONG g_cxsmIcon, g_cysmIcon; @@ -778,6 +777,8 @@ static void GetButtonRect(HWND hwnd, RECT *rc) LRESULT CALLBACK ContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { + RECT rc; + switch (msg) { case WM_CREATE: { @@ -906,7 +907,7 @@ LRESULT CALLBACK ContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM l case WM_PAINT: { PAINTSTRUCT ps; - RECT rc, rcFrame, rcClient; + RECT rcFrame, rcClient; HDC hdc; HRGN rgn = 0; HDC hdcReal = BeginPaint(hwnd, &ps); @@ -1022,7 +1023,6 @@ skipbg: case WM_ENTERSIZEMOVE: { - RECT rc; POINT pt = { 0 }; GetWindowRect(hwnd, &g_PreSizeRect); @@ -1098,7 +1098,6 @@ skipbg: if (pcli->hwndContactList != 0) { SendMessage(hwnd, WM_ENTERSIZEMOVE, 0, 0); - RECT rc; GetWindowRect(hwnd, &rc); WINDOWPOS wp = { 0 }; wp.cx = rc.right - rc.left; @@ -1113,7 +1112,6 @@ skipbg: case WM_MOVE: if (!IsIconic(hwnd)) { - RECT rc; GetWindowRect(hwnd, &rc); if (!Docking_IsDocked(0, 0)) { @@ -1123,7 +1121,6 @@ skipbg: } cluiPos.right = rc.right - rc.left; if (cfg::dat.realTimeSaving) { - RECT rc; GetWindowRect(hwnd, &rc); // if docked, dont remember pos (except for width) @@ -1346,9 +1343,8 @@ skipbg: if (cfg::clcdat) { pcli->pfnGetRowByIndex(cfg::clcdat, cfg::clcdat->selection, &contact, NULL); - if (contact && contact->type == CLCIT_CONTACT) { + if (contact && contact->type == CLCIT_CONTACT) hContact = contact->hContact; - } } while (item) { if (item->uId == (DWORD)LOWORD(wParam)) { @@ -1438,26 +1434,17 @@ skipbg: case IDC_TBMENU: case IDC_TBTOPMENU: case IDC_STBTOPMENU: - { - RECT rc; - HMENU hMenu = Menu_GetMainMenu(); - GetButtonRect(GetDlgItem(hwnd, LOWORD(wParam)), &rc); - TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, rc.left, LOWORD(wParam) == IDC_TBMENU ? rc.top : rc.bottom, 0, hwnd, NULL); - } + GetButtonRect(GetDlgItem(hwnd, LOWORD(wParam)), &rc); + TrackPopupMenu(Menu_GetMainMenu(), TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, rc.left, LOWORD(wParam) == IDC_TBMENU ? rc.top : rc.bottom, 0, hwnd, NULL); return 0; case IDC_TBTOPSTATUS: case IDC_STBTOPSTATUS: case IDC_TBGLOBALSTATUS: - { - RECT rc; - HMENU hmenu = (HMENU)Menu_GetStatusMenu(); - GetButtonRect(GetDlgItem(hwnd, LOWORD(wParam)), &rc); - TrackPopupMenu(hmenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, rc.left, LOWORD(wParam) == IDC_TBGLOBALSTATUS ? rc.top : rc.bottom, 0, hwnd, NULL); - } + GetButtonRect(GetDlgItem(hwnd, LOWORD(wParam)), &rc); + TrackPopupMenu(Menu_GetStatusMenu(), TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, rc.left, LOWORD(wParam) == IDC_TBGLOBALSTATUS ? rc.top : rc.bottom, 0, hwnd, NULL); return 0; - case IDC_TBSOUND: case IDC_STBSOUND: cfg::dat.soundsOff = !cfg::dat.soundsOff; @@ -1613,10 +1600,8 @@ buttons_done: break; case WM_CONTEXTMENU: + GetWindowRect(pcli->hwndContactTree, &rc); { - RECT rc; - GetWindowRect(pcli->hwndContactTree, &rc); - // x/y might be -1 if it was generated by a kb click POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; if (pt.x == -1 && pt.y == -1) { @@ -1631,7 +1616,7 @@ buttons_done: if (PtInRect(&rc, pt)) { HMENU hMenu = Menu_BuildGroupMenu(); TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL); - DestroyTrayMenu(hMenu); + Menu_DestroyNestedMenu(hMenu); return 0; } GetWindowRect(pcli->hwndStatus, &rc); @@ -1640,7 +1625,7 @@ buttons_done: if (cfg::getByte("CLUI", "SBarRightClk", 0)) hMenu = Menu_GetMainMenu(); else - hMenu = (HMENU)Menu_GetStatusMenu(); + hMenu = Menu_GetStatusMenu(); TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL); return 0; } @@ -1924,12 +1909,9 @@ static INT_PTR CLN_ShowMainMenu(WPARAM, LPARAM) static INT_PTR CLN_ShowStatusMenu(WPARAM, LPARAM) { - HMENU hMenu; POINT pt; - - hMenu = (HMENU)Menu_GetStatusMenu(); GetCursorPos(&pt); - TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, pcli->hwndContactList, NULL); + TrackPopupMenu(Menu_GetStatusMenu(), TPM_TOPALIGN | TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, pcli->hwndContactList, NULL); return 0; } diff --git a/plugins/Clist_nicer/src/groupmenu.cpp b/plugins/Clist_nicer/src/groupmenu.cpp index a3be204ae6..29700f1415 100644 --- a/plugins/Clist_nicer/src/groupmenu.cpp +++ b/plugins/Clist_nicer/src/groupmenu.cpp @@ -27,34 +27,33 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// Group MENU ////////////////////////////// -HGENMENU hGroupMainMenuItemProxy; -HGENMENU hHideShowMainMenuItem; -HGENMENU hGroupStatusMenuItemProxy; -HGENMENU hAppearanceMenuItemProxy; -HGENMENU hEventAreaMenuItemProxy; +static HGENMENU hGroupMainMenuItemProxy; +static HGENMENU hHideShowMainMenuItem; +static HGENMENU hGroupStatusMenuItemProxy; +static HGENMENU hEventAreaMenuItemProxy; -static HMENU hMenuOldContext; - -HGENMENU hHideOfflineUsersMenuItem; -HGENMENU hHideOfflineUsersOutHereMenuItem; -HGENMENU hHideEmptyGroupsMenuItem; -HGENMENU hDisableGroupsMenuItem; -HGENMENU hNewGroupMenuItem; -HGENMENU hNewSubGroupMenuItem; +struct +{ + char *name; + int command, mask, position; + HGENMENU hMenu; +} +static hAppearanceItems[] = +{ + { LPGEN("Show status icons"), POPUP_SHOWSTATUSICONS, CLUI_FRAME_STATUSICONS, 10001 }, + { LPGEN("Show metacontact protocol icons"), POPUP_SHOWMETAICONS, CLUI_USEMETAICONS, 10002 }, + { LPGEN("Show additional buttons"), POPUP_BUTTONS, CLUI_FRAME_SHOWBOTTOMBUTTONS, 110001 }, + { LPGEN("Draw sunken frame"), POPUP_FRAME, CLUI_FRAME_CLISTSUNKEN, 110002 } +}; -void InitSubGroupMenus(void); +static HMENU hMenuOldContext; -INT_PTR GroupMenu_OnAddService(WPARAM wParam, LPARAM lParam) +static INT_PTR GroupMenu_OnAddService(WPARAM wParam, LPARAM lParam) { MENUITEMINFO *mii = (MENUITEMINFO*)wParam; if (mii == NULL) return 0; - if (hHideShowMainMenuItem == (HANDLE)lParam) { - mii->fMask |= MIIM_STATE; - mii->fState |= MFS_DEFAULT; - - } if (hGroupMainMenuItemProxy == (HANDLE)lParam) { mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = Menu_GetMainMenu(); @@ -64,65 +63,24 @@ INT_PTR GroupMenu_OnAddService(WPARAM wParam, LPARAM lParam) mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = Menu_GetStatusMenu(); } - if (hAppearanceMenuItemProxy == (HANDLE)lParam) { - hMenuOldContext = GetSubMenu(LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_CONTEXT)), 3); - TranslateMenu(hMenuOldContext); - - CheckMenuItem(hMenuOldContext, POPUP_FRAME, MF_BYCOMMAND | (cfg::dat.dwFlags & CLUI_FRAME_CLISTSUNKEN ? MF_CHECKED : MF_UNCHECKED)); - CheckMenuItem(hMenuOldContext, POPUP_BUTTONS, MF_BYCOMMAND | (cfg::dat.dwFlags & CLUI_FRAME_SHOWBOTTOMBUTTONS ? MF_CHECKED : MF_UNCHECKED)); - CheckMenuItem(hMenuOldContext, POPUP_SHOWMETAICONS, MF_BYCOMMAND | (cfg::dat.dwFlags & CLUI_USEMETAICONS ? MF_CHECKED : MF_UNCHECKED)); - CheckMenuItem(hMenuOldContext, POPUP_SHOWSTATUSICONS, MF_BYCOMMAND | (cfg::dat.dwFlags & CLUI_FRAME_STATUSICONS ? MF_CHECKED : MF_UNCHECKED)); - - mii->fMask |= MIIM_SUBMENU; - mii->hSubMenu = hMenuOldContext; - } return TRUE; } -INT_PTR HideGroupsHelper(WPARAM, LPARAM) -{ - int newVal = !(GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_HIDEEMPTYGROUPS); - cfg::writeByte("CList", "HideEmptyGroups", (BYTE)newVal); - SendMessage(pcli->hwndContactTree, CLM_SETHIDEEMPTYGROUPS, newVal, 0); - return 0; -} - -INT_PTR UseGroupsHelper(WPARAM, LPARAM) +static INT_PTR CommandHelper(WPARAM wParam, LPARAM) { - int newVal = !(GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_USEGROUPS); - cfg::writeByte("CList", "UseGroups", (BYTE)newVal); - SendMessage(pcli->hwndContactTree, CLM_SETUSEGROUPS, newVal,0); - return 0; -} - -INT_PTR HideOfflineRootHelper(WPARAM, LPARAM) -{ - SendMessage(pcli->hwndContactTree, CLM_SETHIDEOFFLINEROOT, !SendMessage(pcli->hwndContactTree, CLM_GETHIDEOFFLINEROOT, 0, 0), 0); + SendMessage(pcli->hwndContactList, WM_COMMAND, MAKELONG(wParam, BN_CLICKED), 1); return 0; } static int OnBuildGroupMenu(WPARAM, LPARAM) { - bool bEnabled = 0 != cfg::getByte("CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT); - Menu_EnableItem(hHideOfflineUsersMenuItem, bEnabled); - - bEnabled = 0 != SendMessage(pcli->hwndContactTree, CLM_GETHIDEOFFLINEROOT, 0, 0); - Menu_EnableItem(hHideOfflineUsersOutHereMenuItem, bEnabled); - - bEnabled = 0 != (GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_HIDEEMPTYGROUPS); - Menu_EnableItem(hHideEmptyGroupsMenuItem, bEnabled); - - bEnabled = 0 != (GetWindowLongPtr(pcli->hwndContactTree, GWL_STYLE) & CLS_USEGROUPS); - Menu_EnableItem(hDisableGroupsMenuItem, bEnabled); - - Menu_EnableItem(hGroupMainMenuItemProxy, bEnabled); - Menu_EnableItem(hAppearanceMenuItemProxy, bEnabled); + for (int i = 0; i < _countof(hAppearanceItems); i++) + Menu_SetChecked(hAppearanceItems[i].hMenu, (cfg::dat.dwFlags & hAppearanceItems[i].mask) != 0); return 0; } IconItemT iconItem[] = { - { LPGENT("New group"), "new_group", IDI_ADDGROUP }, - { LPGENT("Contact list"), "clist", IDI_CLIST } + { LPGENT("Contact list"), "clist", IDI_CLIST } }; void InitIconLibMenuIcons(void) @@ -133,24 +91,11 @@ void InitIconLibMenuIcons(void) void InitGroupMenus(void) { CreateServiceFunction("CLISTMENUSGroup/GroupMenuOnAddService", GroupMenu_OnAddService); - CreateServiceFunction("CLISTMENUSGroup/HideGroupsHelper", HideGroupsHelper); - CreateServiceFunction("CLISTMENUSGroup/UseGroupsHelper", UseGroupsHelper); - CreateServiceFunction("CLISTMENUSGroup/HideOfflineRootHelper", HideOfflineRootHelper); HookEvent(ME_CLIST_PREBUILDGROUPMENU, OnBuildGroupMenu); - InitSubGroupMenus(); - // add exit command to menu - GroupMenuParam gmp; - CMenuItem mi; - mi.position = 1900000; - mi.pszService = "CloseAction"; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_EXIT); - mi.name.a = LPGEN("E&xit"); - Menu_AddGroupMenuItem(&mi); - mi.position = 500; mi.pszService = MS_CLIST_SHOWHIDE; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_SHOWHIDE); @@ -175,114 +120,33 @@ void InitGroupMenus(void) mi.name.a = LPGEN("&Status"); hGroupStatusMenuItemProxy = Menu_AddGroupMenuItem(&mi); + // Appearance menu mi.position = 390100; - mi.hIcolibItem = iconItem[1].hIcolib; + mi.hIcolibItem = iconItem[0].hIcolib; mi.name.a = LPGEN("Appearance"); - hAppearanceMenuItemProxy = Menu_AddGroupMenuItem(&mi); + mi.root = Menu_AddGroupMenuItem(&mi); + + mi.hIcolibItem = NULL; + mi.pszService = "CLISTMENUSGroup/CommandHelper"; + CreateServiceFunction(mi.pszService, CommandHelper); + for (int i = 0; i < _countof(hAppearanceItems); i++) { + GroupMenuParam gmp; + gmp.wParam = hAppearanceItems[i].command; + mi.name.a = hAppearanceItems[i].name; + mi.position = hAppearanceItems[i].position; + hAppearanceItems[i].hMenu = Menu_AddGroupMenuItem(&mi, &gmp); + } + mi.root = NULL; mi.position = 400000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService = "Options/OptionsCommand"; mi.name.a = LPGEN("&Options..."); Menu_AddGroupMenuItem(&mi); - mi.position = 500000; + mi.position = 1000000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService = "CLN/About"; mi.name.a = LPGEN("&About the contact list..."); Menu_AddGroupMenuItem(&mi); - - mi.flags = 0; - mi.position = 100000; - mi.hIcolibItem = iconItem[0].hIcolib; - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.name.a = LPGEN("&New group"); - hNewGroupMenuItem = Menu_AddGroupMenuItem(&mi, &gmp); - - mi.position = 100001; - mi.hIcolibItem = NULL; - mi.hIcolibItem = NULL; - mi.pszService = MS_CLIST_SETHIDEOFFLINE; - mi.name.a = LPGEN("&Hide offline users"); - gmp.wParam = -1; - hHideOfflineUsersMenuItem = Menu_AddGroupMenuItem(&mi, &gmp); - - mi.position = 100002; - mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; - mi.name.a = LPGEN("Hide &offline users out here"); - hHideOfflineUsersOutHereMenuItem = Menu_AddGroupMenuItem(&mi); - - mi.position = 100003; - mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; - mi.name.a = LPGEN("Hide &empty groups"); - hHideEmptyGroupsMenuItem = Menu_AddGroupMenuItem(&mi); - - mi.position = 100004; - mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; - mi.name.a = LPGEN("Disable &groups"); - hDisableGroupsMenuItem = Menu_AddGroupMenuItem(&mi); -} - -//////////////////////////////SubGroup MENU///////////////////////// -HANDLE hSubGroupMainMenuItemProxy; -HANDLE hSubGroupStatusMenuItemProxy; -HANDLE hPreBuildSubGroupMenuEvent; -HGENMENU hHideOfflineUsersHereMenuItem; - -static int OnBuildSubGroupMenu(WPARAM wParam, LPARAM) -{ - ClcGroup *group = (ClcGroup*)wParam; - if (group != 0) // contact->group - Menu_ModifyItem(hHideOfflineUsersHereMenuItem, NULL, INVALID_HANDLE_VALUE, group->hideOffline ? CMIF_CHECKED : 0); - return 0; -} - -// wparam menu handle to pass to clc.c -INT_PTR GroupMenuExecProxy(WPARAM wParam, LPARAM) -{ - SendMessage(pcli->hwndContactTree, WM_COMMAND, wParam, 0); - return 0; -} - -void InitSubGroupMenus(void) -{ - CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy", GroupMenuExecProxy); - - HookEvent(ME_CLIST_PREBUILDSUBGROUPMENU, OnBuildSubGroupMenu); - - // add exit command to menu - GroupMenuParam gmp = {}; - - CMenuItem mi; - mi.position = 1000; - mi.hIcolibItem = iconItem[0].hIcolib; - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.name.a = LPGEN("&New subgroup"); - gmp.wParam = POPUP_NEWSUBGROUP; - hNewSubGroupMenuItem = Menu_AddSubGroupMenuItem(&mi, &gmp); - - mi.position = 1001; - mi.hIcolibItem = NULL; - mi.hIcolibItem = NULL; - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.name.a = LPGEN("&Hide offline users in here"); - gmp.wParam = POPUP_GROUPHIDEOFFLINE; - hHideOfflineUsersHereMenuItem = (HGENMENU)Menu_AddSubGroupMenuItem(&mi, &gmp); - - memset(&mi, 0, sizeof(mi)); - mi.position = 900001; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_RENAME); - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.name.a = LPGEN("&Rename group"); - gmp.wParam = POPUP_RENAMEGROUP; - Menu_AddSubGroupMenuItem(&mi, &gmp); - - mi.position = 900002; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_DELETE); - mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; - mi.name.a = LPGEN("&Delete group"); - gmp.wParam = POPUP_DELETEGROUP; - Menu_AddSubGroupMenuItem(&mi, &gmp); } - -//////////////////////////////END SubGroup MENU///////////////////////// diff --git a/plugins/Clist_nicer/src/resource.h b/plugins/Clist_nicer/src/resource.h index abb763ae2e..93b50e6938 100644 --- a/plugins/Clist_nicer/src/resource.h +++ b/plugins/Clist_nicer/src/resource.h @@ -10,13 +10,11 @@ #define IDD_OPTIONSDIALOG 101 #define IDD_CLNABOUT 102 #define IDD_OPT_CLIST 126 -#define IDI_ADDGROUP 143 #define IDI_CLIST 146 #define IDI_OPTIONS 163 #define IDI_DELETE 175 #define IDI_CLVM_OPTIONS 176 #define IDI_CLVM_SELECT 177 -#define IDR_CONTEXT 180 #define IDC_DROP 183 #define IDR_CLISTMENU 199 #define IDI_BLANK 200 -- cgit v1.2.3