From 7f1c59f929275ac7536c17e10f7267026957ae8f Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Thu, 25 Jun 2015 12:41:45 +0000
Subject: crazy own menu creation system removed from MirOTR

git-svn-id: http://svn.miranda-ng.org/main/trunk@14379 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 plugins/MirOTR/src/mirotrmenu.cpp | 56 +++++++++++++--------------------------
 plugins/MirOTR/src/mirotrmenu.h   | 33 -----------------------
 2 files changed, 18 insertions(+), 71 deletions(-)

(limited to 'plugins/MirOTR/src')

diff --git a/plugins/MirOTR/src/mirotrmenu.cpp b/plugins/MirOTR/src/mirotrmenu.cpp
index f00c228042..8893296cff 100644
--- a/plugins/MirOTR/src/mirotrmenu.cpp
+++ b/plugins/MirOTR/src/mirotrmenu.cpp
@@ -16,38 +16,21 @@ MirOTRMenuExecParam,*lpMirOTRMenuExecParam;
 // MirOTR MENU
 ///////////////////////////////////////////
 
-static INT_PTR RemoveMirOTRMenuItem(WPARAM wParam, LPARAM)
+static HGENMENU AddMirOTRMenuItem(CLISTMENUITEM *mi)
 {
-	Menu_RemoveItem((HGENMENU)wParam);
-	return 0;
-}
-
-static INT_PTR AddMirOTRMenuItem(WPARAM, LPARAM lParam)
-{
-	MIROTRMENUITEM *mi=(MIROTRMENUITEM*)lParam;
-	if ( mi->cbSize != sizeof( MIROTRMENUITEM ))
-		return 0;
-
 	TMO_MenuItem tmi = { 0 };
 	tmi.flags = mi->flags;
 	tmi.hIcon = mi->hIcon;
 	tmi.hIcolibItem = mi->icolibItem;
 	tmi.position = mi->position;
 	tmi.name.t = mi->ptszName;
-	tmi.root = mi->root;
+	tmi.root = mi->hParentMenu;
 
-	//owner data
+	// owner data
 	lpMirOTRMenuExecParam cmep = ( lpMirOTRMenuExecParam )mir_calloc(sizeof(MirOTRMenuExecParam));
-	cmep->szServiceName = mir_strdup( mi->pszService );
+	cmep->szServiceName = mir_strdup(mi->pszService);
 	tmi.ownerdata = cmep;
-	return (INT_PTR)Menu_AddItem(hMirOTRMenuObject, &tmi);
-}
-
-static INT_PTR BuildMirOTRMenu(WPARAM hContact, LPARAM)
-{
-	HMENU hMenu = CreatePopupMenu();
-	Menu_Build(hMenu, hMirOTRMenuObject, hContact);
-	return (INT_PTR)hMenu;
+	return Menu_AddItem(hMirOTRMenuObject, &tmi);
 }
 
 //called with:
@@ -164,10 +147,13 @@ LRESULT CALLBACK PopupMenuWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
 
 void ShowOTRMenu(MCONTACT hContact, POINT pt)
 {
-	HMENU menu = (HMENU)CallService(MS_MIROTR_MENUBUILDMIROTR, hContact, 0);
+	HMENU hMenu = CreatePopupMenu();
+	Menu_Build(hMenu, hMirOTRMenuObject, hContact);
+
 	SetWindowLongPtr(hDummyPaintWin, GWLP_USERDATA, (LONG_PTR)hContact);
-	TrackPopupMenu(menu, 0, pt.x, pt.y, 0, hDummyPaintWin, 0);
-	DestroyMenu(menu);
+
+	TrackPopupMenu(hMenu, 0, pt.x, pt.y, 0, hDummyPaintWin, 0);
+	DestroyMenu(hMenu);
 }
 
 void InitMirOTRMenu(void)
@@ -186,56 +172,50 @@ void InitMirOTRMenu(void)
 	CreateServiceFunction("MIROTRMENUS/FreeOwnerDataMirOTRMenu", FreeOwnerDataMirOTRMenu);
 	CreateServiceFunction("MIROTRMENUS/OnAddMenuItemMirOTRMenu", OnAddMenuItemMirOTRMenu);
 
-	CreateServiceFunction(MS_MIROTR_ADDMIROTRMENUITEM, AddMirOTRMenuItem);
-	CreateServiceFunction(MS_MIROTR_MENUBUILDMIROTR, BuildMirOTRMenu);
-	CreateServiceFunction(MS_MIROTR_REMOVEMIROTRMENUITEM, RemoveMirOTRMenuItem);
-
 	hMirOTRMenuObject = Menu_AddObject("MirOTRMenu", LPGEN("MirOTR menu"), "MirOTRMenuCheckService", "MirOTRMenuExecService");
 	Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_FREE_SERVICE, "MIROTRMENUS/FreeOwnerDataMirOTRMenu");
 	Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_ONADD_SERVICE, "MIROTRMENUS/OnAddMenuItemMirOTRMenu");
 
 	// menu items
-	MIROTRMENUITEM mi = { 0 };
-	mi.cbSize = sizeof(mi);
-
+	CLISTMENUITEM mi = { 0 };
 	mi.flags = CMIF_DISABLED | CMIF_TCHAR;
 	mi.ptszName = LPGENT("OTR Status");
 	mi.position = 0;
-	hStatusInfoItem = (HGENMENU)AddMirOTRMenuItem(0, (LPARAM)&mi);
+	hStatusInfoItem = AddMirOTRMenuItem(&mi);
 
 	mi.flags = CMIF_TCHAR | CMIF_NOTPRIVATE | CMIF_NOTUNVERIFIED;
 	mi.ptszName = LANG_MENU_START;
 	mi.position = 100001;
 	mi.pszService = MS_OTR_MENUSTART;
 	mi.icolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED);
-	AddMirOTRMenuItem(0, (LPARAM)&mi);
+	AddMirOTRMenuItem(&mi);
 
 	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED;
 	mi.ptszName = LANG_MENU_REFRESH;
 	mi.position = 100002;
 	mi.pszService = MS_OTR_MENUREFRESH;
 	mi.icolibItem = IcoLib_GetIconHandle(ICON_FINISHED);
-	AddMirOTRMenuItem(0, (LPARAM)&mi);
+	AddMirOTRMenuItem(&mi);
 
 	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE;
 	mi.ptszName = LANG_MENU_STOP;
 	mi.position = 100003;
 	mi.pszService = MS_OTR_MENUSTOP;
 	mi.icolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE);
-	AddMirOTRMenuItem(0, (LPARAM)&mi);
+	AddMirOTRMenuItem(&mi);
 
 	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED;
 	mi.ptszName = LANG_MENU_VERIFY;
 	mi.position = 200001;
 	mi.pszService = MS_OTR_MENUVERIFY;
 	mi.icolibItem = IcoLib_GetIconHandle(ICON_PRIVATE);
-	AddMirOTRMenuItem(0, (LPARAM)&mi);
+	AddMirOTRMenuItem(&mi);
 
 	mi.flags = CMIF_TCHAR | CMIF_CHECKED;
 	mi.ptszName = LANG_MENU_TOGGLEHTML;
 	mi.position = 300001;
 	mi.pszService = MS_OTR_MENUTOGGLEHTML;
-	hHTMLConvMenuItem = (HGENMENU)AddMirOTRMenuItem(0, (LPARAM)&mi);
+	hHTMLConvMenuItem = AddMirOTRMenuItem(&mi);
 }
 
 void UninitMirOTRMenu(void)
diff --git a/plugins/MirOTR/src/mirotrmenu.h b/plugins/MirOTR/src/mirotrmenu.h
index e57e954745..d101caa38e 100644
--- a/plugins/MirOTR/src/mirotrmenu.h
+++ b/plugins/MirOTR/src/mirotrmenu.h
@@ -1,7 +1,4 @@
 #pragma once
-#define MS_MIROTR_ADDMIROTRMENUITEM		MODULENAME"/AddMirOTRMenuItem"
-#define MS_MIROTR_MENUBUILDMIROTR		MODULENAME"/MenuBuildMirOTR"
-#define MS_MIROTR_REMOVEMIROTRMENUITEM	MODULENAME"/RemoveMirOTRMenuItem"
 
 #define CMIF_NOTNOTPRIVATE		CMIF_NOTOFFLINE
 #define CMIF_NOTUNVERIFIED		CMIF_NOTONLINE
@@ -9,36 +6,6 @@
 #define CMIF_NOTFINISHED		CMIF_NOTOFFLIST
 #define CMIF_DISABLED			0x8000
 
-//add a new item to the MirOTR Menu
-//wParam=0
-//lParam=(LPARAM)(CLISTMENUITEM*)&mi
-//returns a handle to the new item, or NULL on failure
-//the service that is called when the item is clicked is called with
-//wParam=0, lParam=hContact
-//dividers are inserted every 100000 positions
-//pszContactOwner is ignored for this service.
-// 
-// WARNING: do not use Translate(TS) for p(t)szName or p(t)szPopupName as they
-// are translated by the core, which may lead to double translation.
-// Use LPGEN instead which are just dummy wrappers/markers for "lpgen.pl".
-typedef struct {
-	int cbSize;	            //size in bytes of this structure
-	union {
-	  char*  pszName;      //[TRANSLATED-BY-CORE] text of the menu item
-		TCHAR* ptszName;     //Unicode text of the menu item
-	};
-	int position;           //approx position on the menu. lower numbers go nearer the top
-	HGENMENU root;			//submenu where the item will be added, NULL for root
-	DWORD flags;            //set of MOMIF_* flags
-	union {
-		HICON hIcon;         //icon to put by the item. If this was not loaded from
-						   //a resource, you can delete it straight after the call
-		HANDLE icolibItem;   //set CMIF_ICONFROMICOLIB to pass this value
-	};
-	DWORD hotKey;           //keyboard accelerator, same as lParam of WM_HOTKEY,0 for none
-	char* pszService;       //name of service to call when the item gets selected
-} MIROTRMENUITEM;
-
 void InitMirOTRMenu(void);
 void UninitMirOTRMenu(void);
 
-- 
cgit v1.2.3