From 35df0639c0bd3ad7f1a7f73604b859e100a6c50c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 24 Nov 2017 22:25:19 +0300 Subject: GMailNotifier: major rework to Miranda Netlib functions --- plugins/GmailNotifier/src/main.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'plugins/GmailNotifier/src/main.cpp') diff --git a/plugins/GmailNotifier/src/main.cpp b/plugins/GmailNotifier/src/main.cpp index 451c125205..ff6946fadc 100644 --- a/plugins/GmailNotifier/src/main.cpp +++ b/plugins/GmailNotifier/src/main.cpp @@ -15,10 +15,11 @@ HINSTANCE hInst; int hLangpack; UINT hTimer; HANDLE hMirandaStarted, hOptionsInitial; +HNETLIBUSER hNetlibUser; NOTIFYICONDATA niData; optionSettings opt; -int acc_num = 0; -Account *acc; + +OBJLIST g_accs(1); BOOL optionWindowIsOpen = FALSE; short ID_STATUS_NONEW; @@ -99,6 +100,12 @@ extern "C" int __declspec(dllexport) Load() pd.type = PROTOTYPE_VIRTUAL; Proto_RegisterModule(&pd); + NETLIBUSER nlu = {}; + nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS | NUF_NOHTTPSOPTION | NUF_UNICODE; + nlu.szSettingsModule = MODULE_NAME; + nlu.szDescriptiveName.w = TranslateT("Gmail Notifier connection"); + hNetlibUser = Netlib_RegisterUser(&nlu); + CreateProtoServiceFunction(MODULE_NAME, PS_GETCAPS, GetCaps); CreateProtoServiceFunction(MODULE_NAME, PS_GETSTATUS, GetStatus); CreateProtoServiceFunction(MODULE_NAME, PS_GETNAME, GetName); @@ -127,13 +134,13 @@ extern "C" int __declspec(dllexport) Load() BuildList(); ID_STATUS_NONEW = opt.UseOnline ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; - for (int i = 0; i < acc_num; i++) - db_set_dw(acc[i].hContact, MODULE_NAME, "Status", ID_STATUS_NONEW); + for (int i = 0; i < g_accs.getCount(); i++) + db_set_dw(g_accs[i].hContact, MODULE_NAME, "Status", ID_STATUS_NONEW); hTimer = SetTimer(nullptr, 0, opt.circleTime * 60000, TimerProc); hMirandaStarted = HookEvent(ME_SYSTEM_MODULESLOADED, OnMirandaStart); hOptionsInitial = HookEvent(ME_OPT_INITIALISE, OptInit); - + CreateServiceFunction(MODULE_NAME "/MenuCommand", PluginMenuCommand); CMenuItem mi; @@ -155,9 +162,13 @@ extern "C" int __declspec(dllexport) Unload(void) { if (hTimer) KillTimer(nullptr, hTimer); - for (int i = 0; i < acc_num; i++) - DeleteResults(acc[i].results.next); - free(acc); + + for (int i = 0; i < g_accs.getCount(); i++) + DeleteResults(g_accs[i].results.next); + g_accs.destroy(); + + Netlib_CloseHandle(hNetlibUser); + UnhookEvent(hMirandaStarted); UnhookEvent(hOptionsInitial); return 0; -- cgit v1.2.3