From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/facebook/theme.cpp | 196 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 protocols/facebook/theme.cpp (limited to 'protocols/facebook/theme.cpp') diff --git a/protocols/facebook/theme.cpp b/protocols/facebook/theme.cpp new file mode 100644 index 0000000000..7bc62a2317 --- /dev/null +++ b/protocols/facebook/theme.cpp @@ -0,0 +1,196 @@ +/* + +Facebook plugin for Miranda Instant Messenger +_____________________________________________ + +Copyright © 2009-11 Michal Zelinka, 2011-12 Robert Pösel + +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, see . + +*/ + +#include "common.h" + +extern OBJLIST g_Instances; + +struct +{ + const char* name; + char* descr; + int defIconID; + const char* section; +} +static const icons[] = +{ + { "facebook", LPGEN("Facebook Icon"), IDI_FACEBOOK }, + { "mind", LPGEN("Mind"), IDI_MIND }, + { "removeFriend", LPGEN("Remove from server"), IDI_REMOVEFRIEND }, + { "addFriend", LPGEN("Request friendship"), IDI_ADDFRIEND }, + + { "homepage", LPGEN("Visit Profile"), 0, "core_main_2" }, +}; + +static HANDLE hIconLibItem[SIZEOF(icons)]; + +// TODO: uninit +void InitIcons(void) +{ + TCHAR szFile[MAX_PATH]; + GetModuleFileName(g_hInstance, szFile, SIZEOF(szFile)); + + char setting_name[100]; + char section_name[100]; + + SKINICONDESC sid = {0}; + sid.cbSize = sizeof(SKINICONDESC); + sid.ptszDefaultFile = szFile; + sid.cx = sid.cy = 16; + sid.pszName = setting_name; + sid.pszSection = section_name; + sid.flags = SIDF_PATH_TCHAR; + + for (int i=0; i( CallService(MS_PROTO_GETCONTACTBASEPROTO, + reinterpret_cast(hContact),0) ); + if(!proto) + return 0; + + for(int i=0; i +INT_PTR GlobalService(WPARAM wParam,LPARAM lParam) +{ + FacebookProto *proto = GetInstanceByHContact(reinterpret_cast(wParam)); + return proto ? (proto->*Fcn)(wParam,lParam) : 0; +} + +static int PrebuildContactMenu(WPARAM wParam,LPARAM lParam) +{ + ShowContactMenus(false); + + FacebookProto *proto = GetInstanceByHContact(reinterpret_cast(wParam)); + return proto ? proto->OnPrebuildContactMenu(wParam,lParam) : 0; +} + +HANDLE hHookPreBuildMenu,sVisitProfile,sAddFriend,sRemoveFriend; +void InitContactMenus() +{ + hHookPreBuildMenu = HookEvent(ME_CLIST_PREBUILDCONTACTMENU,PrebuildContactMenu); + + CLISTMENUITEM mi = {sizeof(mi)}; + mi.flags = CMIF_ICONFROMICOLIB; + + mi.position=-2000006000; + mi.icolibItem = GetIconHandle("homepage"); + mi.pszName = GetIconDescription("homepage"); + mi.pszService = "FacebookProto/VisitProfile"; + sVisitProfile = CreateServiceFunction(mi.pszService,GlobalService<&FacebookProto::VisitProfile>); + g_hMenuItems[1] = reinterpret_cast( + CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi) ); + + mi.position=-2000006000; + mi.icolibItem = GetIconHandle("removeFriend"); + mi.pszName = GetIconDescription("removeFriend"); + mi.pszService = "FacebookProto/RemoveFriend"; + sRemoveFriend = CreateServiceFunction(mi.pszService,GlobalService<&FacebookProto::RemoveFriend>); + g_hMenuItems[2] = reinterpret_cast( + CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi) ); + + mi.position=-2000006000; + mi.icolibItem = GetIconHandle("addFriend"); + mi.pszName = GetIconDescription("addFriend"); + mi.pszService = "FacebookProto/AddFriend"; + sAddFriend = CreateServiceFunction(mi.pszService,GlobalService<&FacebookProto::AddFriend>); + g_hMenuItems[3] = reinterpret_cast( + CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi) ); +} + +void UninitContactMenus() +{ + for(size_t i=0; i(g_hMenuItems[i]), + reinterpret_cast(&item)); + } +} -- cgit v1.2.3