summaryrefslogtreecommitdiff
path: root/meta2/core_functions.cpp
diff options
context:
space:
mode:
authorsje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-10-17 01:13:54 +0000
committersje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-10-17 01:13:54 +0000
commitb0fe8b53b67d97a839e3e518882f0c8e839ffd9e (patch)
treedd741355bd736b14931a5bd878b5bd8d9517b8fd /meta2/core_functions.cpp
parentad7c1f95b18a323357ad02cff8609ba55a72d3e3 (diff)
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
Diffstat (limited to 'meta2/core_functions.cpp')
-rw-r--r--meta2/core_functions.cpp19
1 files changed, 18 insertions, 1 deletions
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);