From ea9e4b0622f1c2ec9a3cc0b2b8bc5828108dd620 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 22 Feb 2014 21:22:34 +0000 Subject: NAS: icolib added git-svn-id: http://svn.miranda-ng.org/main/trunk@8225 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/NewAwaySysMod/src/AwaySys.cpp | 68 +++++++++++++++++++++-------------- plugins/NewAwaySysMod/src/Common.h | 1 + 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/plugins/NewAwaySysMod/src/AwaySys.cpp b/plugins/NewAwaySysMod/src/AwaySys.cpp index c4053d6c34..d3cac85120 100644 --- a/plugins/NewAwaySysMod/src/AwaySys.cpp +++ b/plugins/NewAwaySysMod/src/AwaySys.cpp @@ -59,19 +59,9 @@ int g_CSProtoCount = 0; // CommonStatus - StartupStatus and AdvancedAutoAway VAR_PARSE_DATA VarParseData; INT_PTR (*g_OldCallService)(const char *, WPARAM, LPARAM) = NULL; -static struct -{ - int Status, DisableReplyCtlID, DontShowDialogCtlID; -} StatusModeList[] = { - ID_STATUS_ONLINE, IDC_REPLYDLG_DISABLE_ONL, IDC_MOREOPTDLG_DONTPOPDLG_ONL, - ID_STATUS_AWAY, IDC_REPLYDLG_DISABLE_AWAY, IDC_MOREOPTDLG_DONTPOPDLG_AWAY, - ID_STATUS_NA, IDC_REPLYDLG_DISABLE_NA, IDC_MOREOPTDLG_DONTPOPDLG_NA, - ID_STATUS_OCCUPIED, IDC_REPLYDLG_DISABLE_OCC, IDC_MOREOPTDLG_DONTPOPDLG_OCC, - ID_STATUS_DND, IDC_REPLYDLG_DISABLE_DND, IDC_MOREOPTDLG_DONTPOPDLG_DND, - ID_STATUS_FREECHAT, IDC_REPLYDLG_DISABLE_FFC, IDC_MOREOPTDLG_DONTPOPDLG_FFC, - ID_STATUS_INVISIBLE, IDC_REPLYDLG_DISABLE_INV, IDC_MOREOPTDLG_DONTPOPDLG_INV, - ID_STATUS_ONTHEPHONE, IDC_REPLYDLG_DISABLE_OTP, IDC_MOREOPTDLG_DONTPOPDLG_OTP, - ID_STATUS_OUTTOLUNCH, IDC_REPLYDLG_DISABLE_OTL, IDC_MOREOPTDLG_DONTPOPDLG_OTL +static IconItem iconList[] = { + { LPGEN("Toggle On"), "on", IDI_SOE_DISABLED }, + { LPGEN("Toggle Off"), "off", IDI_SOE_ENABLED } }; PLUGININFOEX pluginInfo = { @@ -227,6 +217,23 @@ int IsAnICQProto(char *szProto) // wParam = iMode // lParam = (char*)szProto + +struct +{ + int Status, DisableReplyCtlID, DontShowDialogCtlID; +} +static StatusModeList[] = { + ID_STATUS_ONLINE, IDC_REPLYDLG_DISABLE_ONL, IDC_MOREOPTDLG_DONTPOPDLG_ONL, + ID_STATUS_AWAY, IDC_REPLYDLG_DISABLE_AWAY, IDC_MOREOPTDLG_DONTPOPDLG_AWAY, + ID_STATUS_NA, IDC_REPLYDLG_DISABLE_NA, IDC_MOREOPTDLG_DONTPOPDLG_NA, + ID_STATUS_OCCUPIED, IDC_REPLYDLG_DISABLE_OCC, IDC_MOREOPTDLG_DONTPOPDLG_OCC, + ID_STATUS_DND, IDC_REPLYDLG_DISABLE_DND, IDC_MOREOPTDLG_DONTPOPDLG_DND, + ID_STATUS_FREECHAT, IDC_REPLYDLG_DISABLE_FFC, IDC_MOREOPTDLG_DONTPOPDLG_FFC, + ID_STATUS_INVISIBLE, IDC_REPLYDLG_DISABLE_INV, IDC_MOREOPTDLG_DONTPOPDLG_INV, + ID_STATUS_ONTHEPHONE, IDC_REPLYDLG_DISABLE_OTP, IDC_MOREOPTDLG_DONTPOPDLG_OTP, + ID_STATUS_OUTTOLUNCH, IDC_REPLYDLG_DISABLE_OTL, IDC_MOREOPTDLG_DONTPOPDLG_OTL +}; + int StatusChanged(WPARAM wParam, LPARAM lParam) { LogMessage("MS_CLIST_SETSTATUSMODE called. szProto=%s, Status=%d", lParam ? (char*)lParam : "NULL", wParam); @@ -365,8 +372,8 @@ int PreBuildContactMenu(WPARAM hContact, LPARAM lParam) mi.flags = CMIM_ICON | CMIM_FLAGS | CMIF_TCHAR; switch (iAutoreply) { case VAL_USEDEFAULT: mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_DOT)); break; - case 0: mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_DISABLED)); break; - default: iAutoreply = 1; mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_ENABLED)); break; + case 0: mi.icolibItem = iconList[0].hIcolib; break; + default: iAutoreply = 1; mi.icolibItem = iconList[1].hIcolib; break; } CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)g_hToggleSOEContactMenuItem, (LPARAM)&mi); mi.flags = CMIM_FLAGS | CMIF_TCHAR | (iAutoreply == 1 ? CMIF_CHECKED : 0); @@ -409,11 +416,16 @@ INT_PTR ToggleSendOnEvent(WPARAM hContact, LPARAM lParam) CContactSettings(g_ProtoStates[hContact ? GetContactProto(hContact) : NULL].Status, hContact).Autoreply.Toggle(); if (hContact == NULL) { - int SendOnEvent = CContactSettings(g_ProtoStates[(LPSTR)NULL].Status).Autoreply; - CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_NAME | CMIF_TCHAR; - mi.ptszName = SendOnEvent ? DISABLE_SOE_COMMAND : ENABLE_SOE_COMMAND; + mi.flags = CMIM_ICON | CMIM_NAME | CMIF_TCHAR; + if (CContactSettings(g_ProtoStates[(LPSTR)NULL].Status).Autoreply) { + mi.ptszName = ENABLE_SOE_COMMAND; + mi.icolibItem = iconList[1].hIcolib; + } + else { + mi.ptszName = DISABLE_SOE_COMMAND; + mi.icolibItem = iconList[0].hIcolib; + } CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)g_hToggleSOEMenuItem, (LPARAM)&mi); } @@ -443,11 +455,13 @@ static int Create_TopToolbar(WPARAM wParam, LPARAM lParam) int SendOnEvent = CContactSettings(g_ProtoStates[(char*)NULL].Status).Autoreply; if (ServiceExists(MS_TTB_REMOVEBUTTON)) { TTBButton ttbb = { sizeof(ttbb) }; - ttbb.hIconUp = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_DISABLED)); - ttbb.hIconDn = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_ENABLED)); + ttbb.name = LPGEN("Toggle autoreply on/off");; + ttbb.hIconHandleUp = iconList[0].hIcolib; + ttbb.hIconHandleDn = iconList[1].hIcolib; ttbb.pszService = MS_AWAYSYS_AUTOREPLY_TOGGLE; - ttbb.dwFlags = TTBBF_SHOWTOOLTIP; - ttbb.name = "Toggle autoreply on/off"; + ttbb.dwFlags = TTBBF_SHOWTOOLTIP | TTBBF_ASPUSHBUTTON | TTBBF_VISIBLE; + ttbb.pszTooltipDn = LPGEN("Toggle autoreply off"); + ttbb.pszTooltipUp = LPGEN("Toggle autoreply on"); g_hTopToolbarbutton = TopToolbar_AddButton(&ttbb); CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)g_hTopToolbarbutton, SendOnEvent ? TTBST_PUSHED : TTBST_RELEASED); @@ -736,7 +750,7 @@ int MirandaLoaded(WPARAM wParam, LPARAM lParam) CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 1000020000; mi.flags = CMIF_TCHAR | CMIF_NOTOFFLINE; - mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(SendOnEvent ? IDI_SOE_ENABLED : IDI_SOE_DISABLED)); + mi.icolibItem = iconList[SendOnEvent ? 1 : 0].hIcolib; mi.ptszName = SendOnEvent ? DISABLE_SOE_COMMAND : ENABLE_SOE_COMMAND; mi.pszService = MS_AWAYSYS_AUTOREPLY_TOGGLE; g_hToggleSOEMenuItem = Menu_AddMainMenuItem(&mi); @@ -773,12 +787,12 @@ int MirandaLoaded(WPARAM wParam, LPARAM lParam) mi.popupPosition = 1000020000; mi.position = 1000020000; - mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_ENABLED)); + mi.icolibItem = iconList[1].hIcolib; mi.ptszName = LPGENT("On"); mi.pszService = MS_AWAYSYS_AUTOREPLY_ON; g_hAutoreplyOnContactMenuItem = Menu_AddContactMenuItem(&mi); - mi.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SOE_DISABLED)); + mi.icolibItem = iconList[0].hIcolib; mi.ptszName = LPGENT("Off"); mi.pszService = MS_AWAYSYS_AUTOREPLY_OFF; g_hAutoreplyOffContactMenuItem = Menu_AddContactMenuItem(&mi); @@ -823,6 +837,8 @@ extern "C" int __declspec(dllexport) Load(void) if (db_get_s(NULL, "KnownModules", "New Away System", (char*)NULL) == NULL) db_set_s(NULL, "KnownModules", "New Away System", MOD_NAME); + Icon_Register(g_hInstance, MOD_NAME, iconList, SIZEOF(iconList), "nas"); + InitCommonControls(); InitOptions(); // must be called before we hook CallService diff --git a/plugins/NewAwaySysMod/src/Common.h b/plugins/NewAwaySysMod/src/Common.h index daeee41e9d..f76248db0c 100644 --- a/plugins/NewAwaySysMod/src/Common.h +++ b/plugins/NewAwaySysMod/src/Common.h @@ -54,6 +54,7 @@ #include "m_utils.h" #include "m_system_cpp.h" #include "m_history.h" +#include "m_icolib.h" #include "m_message.h" #include "m_userinfo.h" #include "m_icq.h" -- cgit v1.2.3