From b0fe8b53b67d97a839e3e518882f0c8e839ffd9e Mon Sep 17 00:00:00 2001 From: sje Date: Wed, 17 Oct 2007 01:13:54 +0000 Subject: use 'GetActive', bug fixes for TempDefault db datatype git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@369 4f64403b-2f21-0410-a795-97e2b3489a10 --- meta2/core_functions.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'meta2/core_functions.cpp') diff --git a/meta2/core_functions.cpp b/meta2/core_functions.cpp index 6715c8e..8b27bbf 100644 --- a/meta2/core_functions.cpp +++ b/meta2/core_functions.cpp @@ -36,6 +36,23 @@ void Meta_Hide(bool hide) { } } +HANDLE Meta_GetActive(HANDLE hMeta) { + HANDLE hActive = 0; + if(DBGetContactSettingByte(hMeta, MODULE, "ForceDefault", 0)) + hActive = (HANDLE)MetaAPI_GetDefault((WPARAM)hMeta, 0); + if(!hActive) { + if((hActive = (HANDLE)DBGetContactSettingDword(hMeta, MODULE, "ForceSend", 0)) == 0) { + if((hActive = (HANDLE)DBGetContactSettingDword(hMeta, MODULE, "TempDefault", 0)) == 0) { + hActive = Meta_GetMostOnline(hMeta); + if(ContactStatus(hActive, ContactProto(hActive)) == ID_STATUS_OFFLINE) { + hActive = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_IMSENDOFFLINE); + } + } + } + } + return hActive; +} + HANDLE Meta_GetMostOnline(HANDLE hMeta) { return Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_1, PF1_IM); } @@ -81,7 +98,7 @@ HANDLE Meta_GetMostOnlineSupporting(HANDLE hMeta, int flag, int cap) { } void Meta_CalcStatus(HANDLE hMeta) { - HANDLE hSub = Meta_GetMostOnline(hMeta); + HANDLE hSub = Meta_GetActive(hMeta); char *proto = ContactProto(hSub); DBWriteContactSettingWord(hMeta, MODULE, "Status", ContactStatus(hSub, proto)); FireSubcontactsChanged(hMeta); -- cgit v1.2.3