summaryrefslogtreecommitdiff
path: root/plugins/StatusManager/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/StatusManager/src/main.cpp')
-rw-r--r--plugins/StatusManager/src/main.cpp105
1 files changed, 26 insertions, 79 deletions
diff --git a/plugins/StatusManager/src/main.cpp b/plugins/StatusManager/src/main.cpp
index 41455e029a..e1cdb19222 100644
--- a/plugins/StatusManager/src/main.cpp
+++ b/plugins/StatusManager/src/main.cpp
@@ -19,21 +19,6 @@
#include "stdafx.h"
-unsigned long mainThreadId = 0;
-
-HANDLE hMainThread = 0,
- hCSModuleLoadedHook,
- hGetProfileService,
- hGetProfileCountService,
- hGetProfileNameService,
- hStateChangedEvent;
-
-HANDLE hConnectionEvent = NULL,
- hStopRecon = NULL,
- hEnableProto = NULL,
- hIsProtoEnabled = NULL,
- hAnnounceStat = NULL;
-
HINSTANCE hInst;
int hLangpack = 0;
CLIST_INTERFACE *pcli;
@@ -74,19 +59,26 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD)
/////////////////////////////////////////////////////////////////////////////////////////
// interfaces
-extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_AUTOAWAY, MIID_LAST };
+MUUID Interfaces[2] = {0};
+MUUID miidAutoAway = MIID_AUTOAWAY;
+
+
+MUUID* GetInterfaces(void)
+{
+ if (IsSubPluginEnabled(AAAMODULENAME))
+ Interfaces[0] = miidAutoAway;
+ return Interfaces;
+};
+
+extern "C" __declspec(dllexport) MUUID* MirandaInterfaces = GetInterfaces();
/////////////////////////////////////////////////////////////////////////////////////////
// plugin's entry point
-INT_PTR StopReconnectingService(WPARAM wParam, LPARAM lParam);
-INT_PTR EnableProtocolService(WPARAM wParam, LPARAM lParam);
-INT_PTR IsProtocolEnabledService(WPARAM wParam, LPARAM lParam);
-INT_PTR AnnounceStatusChangeService(WPARAM wParam, LPARAM lParam);
-
-static INT_PTR SrvGetProfile(WPARAM wParam, LPARAM lParam)
+int OnModulesLoaded(WPARAM, LPARAM)
{
- return GetProfile((int)wParam, *(TSettingsList*)lParam);
+ HookEvent(ME_OPT_INITIALISE, CSubPluginsOptionsDlg::OnOptionsInit);
+ return 0;
}
extern "C" int __declspec(dllexport) Load(void)
@@ -94,48 +86,16 @@ extern "C" int __declspec(dllexport) Load(void)
mir_getLP(&pluginInfoEx);
pcli = Clist_GetInterface();
- //common
- InitCommonStatus();
+ HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
- /* KeepStatus */
- hCSModuleLoadedHook = HookEvent(ME_SYSTEM_MODULESLOADED, KSCSModuleLoaded);
-
- hConnectionEvent = CreateHookableEvent(ME_KS_CONNECTIONEVENT);
-
- hStopRecon = CreateServiceFunction(MS_KS_STOPRECONNECTING, StopReconnectingService);
- hEnableProto = CreateServiceFunction(MS_KS_ENABLEPROTOCOL, EnableProtocolService);
- hIsProtoEnabled = CreateServiceFunction(MS_KS_ISPROTOCOLENABLED, IsProtocolEnabledService);
- hAnnounceStat = CreateServiceFunction(MS_KS_ANNOUNCESTATUSCHANGE, AnnounceStatusChangeService);
-
- DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0);
- mainThreadId = GetCurrentThreadId();
-
- /* StartupStatus */
- hCSModuleLoadedHook = HookEvent(ME_SYSTEM_MODULESLOADED, SSCSModuleLoaded);
-
- if (db_get_b(NULL, SSMODULENAME, SETTING_SETPROFILE, 1) ||
- db_get_b(NULL, SSMODULENAME, SETTING_OFFLINECLOSE, 0))
- db_set_w(NULL, "CList", "Status", (WORD)ID_STATUS_OFFLINE);
-
- // docking
- if (db_get_b(NULL, SSMODULENAME, SETTING_SETDOCKED, 0)) {
- int docked = db_get_b(NULL, SSMODULENAME, SETTING_DOCKED, DOCKED_NONE);
- if (docked == DOCKED_LEFT || docked == DOCKED_RIGHT)
- docked = -docked;
-
- db_set_b(NULL, MODULE_CLIST, SETTING_DOCKED, (BYTE)docked);
- }
-
- // Create service functions; the get functions are created here; they don't rely on commonstatus
- hGetProfileService = CreateServiceFunction(MS_SS_GETPROFILE, SrvGetProfile);
- hGetProfileCountService = CreateServiceFunction(MS_SS_GETPROFILECOUNT, GetProfileCount);
- hGetProfileNameService = CreateServiceFunction(MS_SS_GETPROFILENAME, GetProfileName);
-
- LoadProfileModule();
+ InitCommonStatus();
- /* AdvancedAutoAway */
- hCSModuleLoadedHook = HookEvent(ME_SYSTEM_MODULESLOADED, AAACSModuleLoaded);
- hStateChangedEvent = CreateHookableEvent(ME_AAA_STATECHANGED);
+ if (IsSubPluginEnabled(KSMODULENAME))
+ KeepStatusLoad();
+ if (IsSubPluginEnabled(SSMODULENAME))
+ StartupStatusLoad();
+ if (IsSubPluginEnabled(AAAMODULENAME))
+ AdvancedAutoAwayLoad();
return 0;
}
@@ -145,22 +105,9 @@ extern "C" int __declspec(dllexport) Load(void)
extern "C" int __declspec(dllexport) Unload(void)
{
- UnhookEvent(hCSModuleLoadedHook);
-
- // StartupStatus
- DestroyHookableEvent(hConnectionEvent);
-
- if (hMainThread)
- CloseHandle(hMainThread);
- DestroyServiceFunction(hStopRecon);
- DestroyServiceFunction(hEnableProto);
- DestroyServiceFunction(hIsProtoEnabled);
- DestroyServiceFunction(hAnnounceStat);
-
- // StartupStatus
- DestroyServiceFunction(hGetProfileService);
- DestroyServiceFunction(hGetProfileCountService);
- DestroyServiceFunction(hGetProfileNameService);
+ KeepStatusUnload();
+ StartupStatusUnload();
+ AdvancedAutoAwayUnload();
return 0;
}