void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int32_t num, bool sort) { if (Friends.max_idx < 0) return; Friends.num_friends = tox_count_friendlist(m); realloc_friends(Friends.max_idx + 1); memset(&Friends.list[Friends.max_idx], 0, sizeof(ToxicFriend)); int i; for (i = 0; i <= Friends.max_idx; ++i) { if (Friends.list[i].active) continue; Friends.list[i].num = num; Friends.list[i].active = true; Friends.list[i].chatwin = -1; Friends.list[i].online = false; Friends.list[i].status = TOX_USERSTATUS_NONE; Friends.list[i].logging_on = (bool) user_settings->autolog == AUTOLOG_ON; tox_get_client_id(m, num, (uint8_t *) Friends.list[i].pub_key); update_friend_last_online(i, tox_get_last_online(m, i)); char tempname[TOX_MAX_NAME_LENGTH] = {0}; int len = get_nick_truncate(m, tempname, num); if (len == -1 || tempname[0] == '\0') { strcpy(Friends.list[i].name, UNKNOWN_NAME); Friends.list[i].namelength = strlen(UNKNOWN_NAME); } else { /* Enforce toxic's maximum name length */ snprintf(Friends.list[i].name, sizeof(Friends.list[i].name), "%s", tempname); Friends.list[i].namelength = strlen(Friends.list[i].name); } if (i == Friends.max_idx) ++Friends.max_idx; if (sort) sort_friendlist_index(); return; } }
void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int32_t num, bool sort) { if (max_friends_index < 0 || max_friends_index >= MAX_FRIENDS_NUM) return; int i; for (i = 0; i <= max_friends_index; ++i) { if (!friends[i].active) { friends[i].num = num; friends[i].active = true; friends[i].chatwin = -1; friends[i].online = false; friends[i].status = TOX_USERSTATUS_NONE; friends[i].logging_on = (bool) user_settings_->autolog == AUTOLOG_ON; tox_get_client_id(m, num, (uint8_t *) friends[i].pub_key); update_friend_last_online(i, tox_get_last_online(m, i)); char tempname[TOX_MAX_NAME_LENGTH] = {0}; int len = get_nick_truncate(m, tempname, num); if (len == -1 || tempname[0] == '\0') { strcpy(friends[i].name, UNKNOWN_NAME); friends[i].namelength = strlen(UNKNOWN_NAME); } else { /* Enforce toxic's maximum name length */ friends[i].namelength = len; snprintf(friends[i].name, sizeof(friends[i].name), "%s", tempname); } num_friends = tox_count_friendlist(m); if (i == max_friends_index) ++max_friends_index; if (sort) sort_friendlist_index(); return; } } }
void Core::checkLastOnline(int friendId) { const uint64_t lastOnline = tox_get_last_online(tox, friendId); if (lastOnline > 0) { emit friendLastSeenChanged(friendId, QDateTime::fromTime_t(lastOnline)); } }