diff options
author | George Hazan <ghazan@miranda.im> | 2020-06-29 18:03:10 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-06-29 18:03:10 +0300 |
commit | 8b654ebcea0e70b228513b45bedfda08042cfb7b (patch) | |
tree | 4a4cfa3ea1d819694f359cd058a83320ed7e2dcd | |
parent | ee16115cdef84af098a62a6ce46515af6a109d12 (diff) |
"Load server history" menu items gathered in one stub not to create zillions of duplicate menu items
-rw-r--r-- | include/m_protosvc.h | 7 | ||||
-rw-r--r-- | protocols/Discord/src/menus.cpp | 8 | ||||
-rw-r--r-- | protocols/Discord/src/proto.cpp | 1 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/proto.cpp | 14 | ||||
-rw-r--r-- | protocols/SkypeWeb/res/Icons/sync_history.ico | bin | 5430 -> 0 bytes | |||
-rw-r--r-- | protocols/SkypeWeb/res/resource.rc | 1 | ||||
-rw-r--r-- | protocols/SkypeWeb/src/resource.h | 1 | ||||
-rw-r--r-- | protocols/SkypeWeb/src/skype_icons.cpp | 1 | ||||
-rw-r--r-- | protocols/SkypeWeb/src/skype_menus.cpp | 9 | ||||
-rw-r--r-- | protocols/SkypeWeb/src/skype_menus.h | 1 | ||||
-rw-r--r-- | protocols/SkypeWeb/src/skype_proto.cpp | 1 | ||||
-rw-r--r-- | src/mir_app/src/proto_interface.cpp | 23 |
12 files changed, 34 insertions, 33 deletions
diff --git a/include/m_protosvc.h b/include/m_protosvc.h index b44732fa18..134765700c 100644 --- a/include/m_protosvc.h +++ b/include/m_protosvc.h @@ -565,6 +565,13 @@ struct PROTOFILERESUME #define PS_MENU_REVOKEAUTH "/RevokeAuth"
///////////////////////////////////////////////////////////////////////////////
+// Gets called when a user clicks the "Load server history" menu item
+// wParam = hContact
+// lParam = 0
+
+#define PS_MENU_LOADHISTORY "/LoadServerHistory"
+
+///////////////////////////////////////////////////////////////////////////////
// SENDING SERVICES
// these should be called with CallContactService()
diff --git a/protocols/Discord/src/menus.cpp b/protocols/Discord/src/menus.cpp index 1a47a62ebe..434e99792b 100644 --- a/protocols/Discord/src/menus.cpp +++ b/protocols/Discord/src/menus.cpp @@ -180,13 +180,5 @@ void CDiscordProto::InitMenus() mi.hIcolibItem = Skin_GetIconHandle(SKINICON_CHAT_JOIN); m_hMenuToggleSync = Menu_AddContactMenuItem(&mi, m_szModuleName); - mi.pszService = "/LoadHistory"; - CreateProtoService(mi.pszService, &CDiscordProto::OnMenuLoadHistory); - SET_UID(mi, 0x6EF11AD6, 0x6111, 0x4E29, 0xBA, 0x8B, 0xA7, 0xB2, 0xE0, 0x22, 0xE1, 0x90); - mi.name.a = LPGEN("Load server history"); - mi.position = -200001004; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_HISTORY); - Menu_AddContactMenuItem(&mi, m_szModuleName); - HookProtoEvent(ME_CLIST_PREBUILDCONTACTMENU, &CDiscordProto::OnMenuPrebuild); } diff --git a/protocols/Discord/src/proto.cpp b/protocols/Discord/src/proto.cpp index 097dd3e2fe..3eb222f68e 100644 --- a/protocols/Discord/src/proto.cpp +++ b/protocols/Discord/src/proto.cpp @@ -63,6 +63,7 @@ CDiscordProto::CDiscordProto(const char *proto_name, const wchar_t *username) : CreateProtoService(PS_SETMYAVATAR, &CDiscordProto::SetMyAvatar); CreateProtoService(PS_MENU_REQAUTH, &CDiscordProto::RequestFriendship); + CreateProtoService(PS_MENU_LOADHISTORY, &CDiscordProto::OnMenuLoadHistory); CreateProtoService(PS_VOICE_CAPS, &CDiscordProto::VoiceCaps); diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp index 7a468d414c..615dbfd8f5 100644 --- a/protocols/ICQ-WIM/src/proto.cpp +++ b/protocols/ICQ-WIM/src/proto.cpp @@ -62,12 +62,15 @@ CIcqProto::CIcqProto(const char *aProtoName, const wchar_t *aUserName) : // services CreateProtoService(PS_CREATEACCMGRUI, &CIcqProto::CreateAccMgrUI); + CreateProtoService(PS_GETAVATARCAPS, &CIcqProto::GetAvatarCaps); CreateProtoService(PS_GETAVATARINFO, &CIcqProto::GetAvatarInfo); CreateProtoService(PS_GETMYAVATAR, &CIcqProto::GetAvatar); + CreateProtoService(PS_SETMYAVATAR, &CIcqProto::SetAvatar); + + CreateProtoService(PS_MENU_LOADHISTORY, &CIcqProto::OnMenuLoadHistory); CreateProtoService(PS_GETUNREADEMAILCOUNT, &CIcqProto::GetEmailCount); CreateProtoService(PS_GOTO_INBOX, &CIcqProto::GotoInbox); - CreateProtoService(PS_SETMYAVATAR, &CIcqProto::SetAvatar); // events HookProtoEvent(ME_CLIST_GROUPCHANGE, &CIcqProto::OnGroupChange); @@ -125,15 +128,6 @@ void CIcqProto::OnModulesLoaded() gcr.pszModule = m_szModuleName; Chat_Register(&gcr); - CMenuItem mi(&g_plugin); - SET_UID(mi, 0xffe2c8fc, 0x9c4d, 0x4faf, 0xa2, 0x34, 0x3d, 0x19, 0x43, 0x0d, 0x31, 0x04); - mi.pszService = "/LoadHistory"; - mi.name.a = LPGEN("Load server history"); - mi.position = -200001004; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_HISTORY); - Menu_AddContactMenuItem(&mi, m_szModuleName); - CreateProtoService(mi.pszService, &CIcqProto::OnMenuLoadHistory); - HookProtoEvent(ME_USERINFO_INITIALISE, &CIcqProto::OnUserInfoInit); } diff --git a/protocols/SkypeWeb/res/Icons/sync_history.ico b/protocols/SkypeWeb/res/Icons/sync_history.ico Binary files differdeleted file mode 100644 index d6ac6546f2..0000000000 --- a/protocols/SkypeWeb/res/Icons/sync_history.ico +++ /dev/null diff --git a/protocols/SkypeWeb/res/resource.rc b/protocols/SkypeWeb/res/resource.rc index bfd65f1872..97dd7297eb 100644 --- a/protocols/SkypeWeb/res/resource.rc +++ b/protocols/SkypeWeb/res/resource.rc @@ -28,7 +28,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT // remains consistent on all systems.
IDI_SKYPE ICON "Icons\\skype.ico"
IDI_CONFERENCE ICON "Icons\\conference.ico"
-IDI_SYNCHISTORY ICON "Icons\\sync_history.ico"
IDI_BLOCKUSER ICON "Icons\\user_block.ico"
IDI_UNBLOCKUSER ICON "Icons\\user_unblock.ico"
IDI_CALL ICON "Icons\\call.ico"
diff --git a/protocols/SkypeWeb/src/resource.h b/protocols/SkypeWeb/src/resource.h index 194e0275f5..031daa51b0 100644 --- a/protocols/SkypeWeb/src/resource.h +++ b/protocols/SkypeWeb/src/resource.h @@ -13,7 +13,6 @@ #define IDD_GC_CREATE 111
#define IDD_GC_INVITE 112
#define IDI_CONFERENCE 114
-#define IDI_SYNCHISTORY 117
#define IDI_BLOCKUSER 118
#define IDI_UNBLOCKUSER 119
#define IDI_CALL 120
diff --git a/protocols/SkypeWeb/src/skype_icons.cpp b/protocols/SkypeWeb/src/skype_icons.cpp index ded5516548..b99a12baa3 100644 --- a/protocols/SkypeWeb/src/skype_icons.cpp +++ b/protocols/SkypeWeb/src/skype_icons.cpp @@ -21,7 +21,6 @@ static IconItem iconList[] = {
{ LPGEN("Protocol icon"), "main", IDI_SKYPE },
{ LPGEN("Create new chat icon"), "conference", IDI_CONFERENCE },
- { LPGEN("Sync history icon"), "synchistory", IDI_SYNCHISTORY },
{ LPGEN("Block user icon"), "user_block", IDI_BLOCKUSER },
{ LPGEN("Unblock user icon"), "user_unblock", IDI_UNBLOCKUSER },
{ LPGEN("Incoming call icon"), "inc_call", IDI_CALL },
diff --git a/protocols/SkypeWeb/src/skype_menus.cpp b/protocols/SkypeWeb/src/skype_menus.cpp index 31fffc92f6..a0d96be1ca 100644 --- a/protocols/SkypeWeb/src/skype_menus.cpp +++ b/protocols/SkypeWeb/src/skype_menus.cpp @@ -40,7 +40,6 @@ int CSkypeProto::OnPrebuildContactMenu(WPARAM hContact, LPARAM) Menu_ShowItem(ContactMenuItems[CMI_BLOCK], true);
Menu_ShowItem(ContactMenuItems[CMI_UNBLOCK], isCtrlPressed || isBlocked);
- Menu_ShowItem(ContactMenuItems[CMI_GETSERVERHISTORY], true);
return 0;
}
@@ -61,14 +60,6 @@ void CSkypeProto::InitMenus() CMenuItem mi(&g_plugin);
mi.flags = CMIF_UNICODE;
- mi.pszService = MODULE"/GetHistory";
- mi.name.w = LPGENW("Get server history");
- mi.position = CMI_POSITION + CMI_GETSERVERHISTORY;
- mi.hIcolibItem = g_plugin.getIconHandle(IDI_SYNCHISTORY);
- SET_UID(mi, 0xc9a64e98, 0x9257, 0x4b52, 0x98, 0xdd, 0x7f, 0x56, 0xb3, 0x90, 0xe3, 0xde);
- ContactMenuItems[CMI_GETSERVERHISTORY] = Menu_AddContactMenuItem(&mi);
- CreateServiceFunction(mi.pszService, GlobalService<&CSkypeProto::GetContactHistory>);
-
mi.pszService = MODULE"/BlockContact";
mi.name.w = LPGENW("Block contact");
mi.position = CMI_POSITION + CMI_BLOCK;
diff --git a/protocols/SkypeWeb/src/skype_menus.h b/protocols/SkypeWeb/src/skype_menus.h index 61f4560e49..a6d1e9449a 100644 --- a/protocols/SkypeWeb/src/skype_menus.h +++ b/protocols/SkypeWeb/src/skype_menus.h @@ -22,7 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. enum
{
- CMI_GETSERVERHISTORY,
CMI_BLOCK,
CMI_UNBLOCK,
CMI_MAX // this item shall be the last one
diff --git a/protocols/SkypeWeb/src/skype_proto.cpp b/protocols/SkypeWeb/src/skype_proto.cpp index e590729a4e..3a423559ef 100644 --- a/protocols/SkypeWeb/src/skype_proto.cpp +++ b/protocols/SkypeWeb/src/skype_proto.cpp @@ -38,6 +38,7 @@ CSkypeProto::CSkypeProto(const char* protoName, const wchar_t* userName) : CreateProtoService(PS_MENU_REQAUTH, &CSkypeProto::OnRequestAuth); CreateProtoService(PS_MENU_GRANTAUTH, &CSkypeProto::OnGrantAuth); + CreateProtoService(PS_MENU_LOADHISTORY, &CSkypeProto::GetContactHistory); HookProtoEvent(ME_OPT_INITIALISE, &CSkypeProto::OnOptionsInit); HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CSkypeProto::OnDbEventRead); diff --git a/src/mir_app/src/proto_interface.cpp b/src/mir_app/src/proto_interface.cpp index c4b978a13f..d72b71fb4c 100644 --- a/src/mir_app/src/proto_interface.cpp +++ b/src/mir_app/src/proto_interface.cpp @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" -static HGENMENU hReqAuth = nullptr, hGrantAuth = nullptr, hRevokeAuth = nullptr; +static HGENMENU hReqAuth = nullptr, hGrantAuth = nullptr, hRevokeAuth = nullptr, hServerHist = nullptr; ///////////////////////////////////////////////////////////////////////////////////////// // protocol constructor & destructor @@ -281,11 +281,22 @@ static INT_PTR __cdecl stubRevokeAuth(WPARAM hContact, LPARAM) return 0; } -static int __cdecl ProtoPrebuildContactMenu(WPARAM, LPARAM) +static INT_PTR __cdecl stubLoadHistory(WPARAM hContact, LPARAM) +{ + const char *szProto = Proto_GetBaseAccountName(hContact); + if (szProto) + ProtoCallService(szProto, PS_MENU_LOADHISTORY, hContact, 0); + return 0; +} + +static int __cdecl ProtoPrebuildContactMenu(WPARAM hContact, LPARAM) { Menu_ShowItem(hReqAuth, false); Menu_ShowItem(hGrantAuth, false); Menu_ShowItem(hRevokeAuth, false); + + const char *szProto = Proto_GetBaseAccountName(hContact); + Menu_ShowItem(hRevokeAuth, ProtoServiceExists(szProto, PS_MENU_LOADHISTORY)); return 0; } @@ -317,5 +328,13 @@ void InitProtoMenus(void) mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_REVOKE); hRevokeAuth = Menu_AddContactMenuItem(&mi); + SET_UID(mi, 0xd15b841d, 0xb0fc, 0x4ab5, 0x96, 0x94, 0xcf, 0x6c, 0x6e, 0x99, 0x4b, 0x3c); // {D15B841D-B0FC-4AB5-9694-CF6C6E994B3C} + mi.pszService = "Proto/Menu/LoadHistory"; + mi.name.a = LPGEN("Load server history"); + mi.position = -200001004; + mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_HISTORY); + hServerHist = Menu_AddContactMenuItem(&mi); + CreateServiceFunction(mi.pszService, stubLoadHistory); + HookEvent(ME_CLIST_PREBUILDCONTACTMENU, ProtoPrebuildContactMenu); } |