diff options
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/utilities.cpp b/utilities.cpp index 92284d1..7badf39 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -90,6 +90,7 @@ void DeleteCListGroupsByName(TCHAR* szGroupName) DBWriteContactSettingByte(NULL, "CList", "ConfirmDelete",ConfirmDelete); } + void RemoveExcludedUsers() { HANDLE hContact; @@ -113,7 +114,16 @@ void RemoveExcludedUsers() plist = first; while(plist->hContact != INVALID_HANDLE_VALUE) { - CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0); + std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p",""); + UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0); + + if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){ + LogSpamToFile(plist->hContact, _T("Mark for delete")); + DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1); + }else{ + LogSpamToFile(plist->hContact, _T("Deleted")); + CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0); + }; tmp = plist; plist = plist->next; delete tmp; @@ -147,9 +157,18 @@ void RemoveTemporaryUsers() plist = first; while(plist->hContact != INVALID_HANDLE_VALUE) { - LogSpamToFile(plist->hContact, _T("Deleted")); - CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0); - tmp = plist; + std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p",""); + UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0); + + if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){ + LogSpamToFile(plist->hContact, _T("Mark for delete")); + DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1); + }else{ + LogSpamToFile(plist->hContact, _T("Deleted")); + CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0); + }; + + tmp = plist; plist = plist->next; delete tmp; } @@ -271,6 +290,7 @@ tstring GetContactUid(HANDLE hContact, tstring Protocol) { tstring Uid; TCHAR dUid[32]={0}; + char aUid[32]={0}; char *szProto = mir_utf8encodeW(Protocol.c_str()); CONTACTINFO ci; ZeroMemory((void *)&ci, sizeof(ci)); @@ -287,7 +307,14 @@ tstring GetContactUid(HANDLE hContact, tstring Protocol) mir_free((void *)ci.pszVal); break; case CNFT_DWORD: - _itow_s(ci.dVal,dUid,32,10); +#if defined(_MSC_VER) && _MSC_VER >= 1300 + + _itoa_s(ci.dVal,aUid,32,10); +#else + _itoa(ci.dVal,aUid,10); + +#endif + OemToChar(aUid, dUid); Uid=dUid; break; default: @@ -346,4 +373,6 @@ void LogSpamToFile(HANDLE hContact, tstring message) mir_free(buf); file.close(); -}
\ No newline at end of file + +} + |