diff options
Diffstat (limited to 'plugins/NewAwaySysMod')
-rw-r--r-- | plugins/NewAwaySysMod/src/AwaySys.cpp | 68 | ||||
-rw-r--r-- | 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"
|