INT_PTR CAimProto::GetMyAwayMsg(WPARAM wParam, LPARAM lParam) { char** msgptr = get_status_msg_loc(wParam ? wParam : m_iStatus); if (msgptr == NULL) return 0; return (lParam & SGMA_UNICODE) ? (INT_PTR)mir_utf8decodeW(*msgptr) : (INT_PTR)mir_utf8decodeA(*msgptr); }
int __cdecl CAimProto::SetAwayMsg(int status, const TCHAR* msg) { char** msgptr = get_status_msg_loc(status); if (msgptr == NULL) return 1; char* nmsg = mir_utf8encodeT(msg); mir_free(*msgptr); *msgptr = nmsg; switch (status) { case ID_STATUS_FREECHAT: status = ID_STATUS_ONLINE; break; case ID_STATUS_DND: case ID_STATUS_OCCUPIED: case ID_STATUS_ONTHEPHONE: #ifdef ALLOW_BUSY status = ID_STATUS_OCCUPIED; break; #endif case ID_STATUS_OUTTOLUNCH: case ID_STATUS_NA: status = ID_STATUS_AWAY; break; } if (state == 1 && status == m_iStatus) { if (!_strcmps(last_status_msg, nmsg)) return 0; mir_free(last_status_msg); last_status_msg = mir_strdup(nmsg); aim_set_statusmsg(hServerConn, seqno, nmsg); aim_set_away(hServerConn, seqno, nmsg, status == ID_STATUS_AWAY || status == ID_STATUS_OCCUPIED); } return 0; }